﻿// echannel search | Javascript Library

var domElementMask = null;
var domElementOverlay = null;
var domElementShadow = null;
var domElementSubMask = null;

function render( myWidth, myHeight, myName, URI )
{
    renderMask();
    renderOverlay(myWidth,myHeight,myName);

    renderLoader();
    
    // delay request by half a second
    requestData.delay(.5, URI, false);
}

function renderMask()
{
    // create new mask element if not already existing
    if($('myMask') == null)
    {
        domElementMask = new Element('div', {id:'myMask'});

        // insert mask
        document.body.appendChild(domElementMask);
    }
    
    if($('wrapper-columns'))
    {
	    // find highest masking region
	    if(document.body.scrollHeight > $('wrapper-columns').scrollHeight)
	        maskHeight = document.body.scrollHeight;
	        else
	        maskHeight = $('wrapper-columns').scrollHeight;
    }
    else if($('wrapper'))
    {
    	// find highest masking region
	    if(document.body.scrollHeight > $('wrapper').scrollHeight)
	        maskHeight = document.body.scrollHeight;
	        else
	        maskHeight = $('wrapper').scrollHeight;
    }
    
    // set mask styles
    domElementMask.setStyle({backgroundColor:'black', opacity:0.5, position:'absolute', top:'0px', left:'0px', width:(document.body.scrollWidth + 'px'), height:(maskHeight + 'px'), display:'block', zIndex:50});
}

/*
 * renderSubMask();
 *
 * Renders a mask over a given Sub-Element of the page, as opposed to entire client window
 *
 * @param myName (string) Name of the new mask to be created
 * @param hideMe (string) ID of the DOM Element to mask
 *
 */
function renderSubMask( myName, hideMe )
{
    if(hideMe == null || !hideMe)
    {
        return false;
    }
    
    if($(myName) == null || !$(myName))
    {
        domElementSubMask = new Element('div', {id:myName});
        
        // insert submask
        document.body.appendChild(domElementSubMask);
    }
    
    // find masking region attributes
    if($(hideMe) == null || !$(hideMe))
    {
        $(myName).remove();
        
        return false;
    }
    else
    {
        domElementSubMask.setStyle({backgroundColor:'white', opacity:0.9, position:'absolute', top:($(hideMe).style.top), left:($(hideMe).style.left), width:($(hideMe).scrollWidth + 'px'), height:($(hideMe).style.height), display:'block', zIndex:($(hideMe).style.zIndex + 1)});
    }
}

function renderOverlay( myWidth, myHeight, myName, myZIndex )
{
    
    if(myZIndex == null || !myZIndex)
    {
        myZIndex = 51;
    }
    
    // create new shadow element if not already existing
    if($((myName + 'shadow')) == null)
    {
        domElementShadow = new Element('div', {id:(myName + 'shadow')});
        
        // insert shadow element
        document.body.appendChild(domElementShadow);
    }
    
    // create new overlay element if not already existing
    if($(myName) == null)
    {
        domElementOverlay = new Element('div', {id:myName,name:myName});
        
        // insert overlay element
        document.body.appendChild(domElementOverlay);
    }
    
    // set styles
    domElementShadow.setStyle({backgroundColor:'white', opacity:0.2, position:'absolute', top:(((document.body.clientHeight/2)-(myHeight/2)-5) + 'px'), left:(((document.body.clientWidth/2)-(myWidth/2)-5) + 'px'), width:((myWidth+10) + 'px'), height:((myHeight+10) + 'px'), display:'block', zIndex:51});
    domElementOverlay.setStyle({backgroundColor:'white', position:'absolute', top:(((document.body.clientHeight/2)-(myHeight/2)) + 'px'), left:(((document.body.clientWidth/2)-(myWidth/2)) + 'px'), width:((myWidth) + 'px'), height:((myHeight) + 'px'), overflow:'visible', zIndex:myZIndex});
}

function renderLoader()
{
    domLoader = new Element('img', {id:'myLoader',src:''});
    
    domLoader.setStyle({position:'absolute', top:(((document.body.clientHeight/2) - 10) + 'px'), left:(((document.body.clientWidth/2) - 12) + 'px'), display:'block', zIndex:100});
    
    document.body.appendChild(domLoader);
}

function closeOverlay( myOverlay )
{
    domElementOverlay.remove();
    if($(myOverlay) != null || $(myOverlay))
        $(myOverlay).remove();
    domElementShadow.remove();
    domElementMask.remove()
}

function requestData( URI, repositionAfter )
{
    if(!URI) { return false; }
    
    // !IMPORTANT! make sure `evalScripts:true` so Google Analytics Tracking is registered correctly
    new Ajax.Updater(domElementOverlay.id, URI, {onComplete:function(response){ domElementOverlay.setStyle({height:((domElementOverlay.scrollHeight)) + 'px'}); domElementShadow.setStyle({height:((domElementOverlay.scrollHeight)+10) + 'px'}); domLoader.remove(); },evalScripts:true});
}

function submitData( event )
{
    var myForm = Event.element(event);

    if(myForm.tagName == 'FORM')
    {
        //if(validateForm(myForm))
        //{
            // !IMPORTANT! make sure `evalScripts:true` so Google Analytics Tracking is registered correctly
            new Ajax.Updater(domElementOverlay.id, myForm.action, {onComplete:function(response){ domElementOverlay.setStyle({height:((domElementOverlay.scrollHeight)) + 'px'}); domElementShadow.setStyle({height:((domElementOverlay.scrollHeight)+10) + 'px'}); }, evalScripts:true, parameters:Form.serialize(myForm)});
        //}
    }
}

function closeSlideshow()
{
    $('serps').remove();
    $('serpsshadow').remove();
    domElementSubMask.remove();
}

function renderSlideshow( myName, myParent, mySlide )
{
    if(!mySlide) { mySlide = 'first'; }
    
    renderSubMask((myParent + 'mask'), myParent);
    renderOverlay(100, 25, myName, 90);
    
    renderLoader();
    
    // determine maximum image size
    allowedHeight = 620;//(document.body.clientHeight-140);
    allowedWidth  = (document.body.clientWidth-10);
    
    resize.delay(2, myName);
    
    // request slideshow
    requestData.delay(3, '/includes/slideshow.inc.php?ss=' + myName + '&s=' + mySlide + '&w=' + allowedWidth + '&h=' + allowedHeight, false);
}

function resize(myName)
{
    // reposition slideshow
    $(myName).morph({top:((document.body.clientHeight/2)-300 + 'px'), left:((document.body.clientWidth/2)-360 + 'px'), width:'720px', height:'600px'});
    $((myName + 'shadow')).morph({top:((document.body.clientHeight/2)-305 + 'px'), left:((document.body.clientWidth/2)-365 + 'px'), width:'730px', height:'610px'});
}

function renderSlide( mySlideshow, myName, myWidth, myHeight)
{
    requestData('/includes/slideshow.inc.php?ss=' + mySlideshow + '&s=' + myName + '&w=' + myWidth + '&h=' + myHeight, false);
}

function repositionOverlay()
{
    var cookiedata = readCookie('imagesize');

    var imageSize = cookiedata.split('%2C');

    imageSize[1] = Number(imageSize[1])+42;
                       
    domElementShadow.setStyle({top:((document.body.clientHeight/2)-(imageSize[1]/2)-5) + 'px',left:((document.body.clientWidth/2)-(imageSize[0]/2)-5) + 'px',width:((Number(imageSize[0])+10) + 'px'),height:((Number(imageSize[1])+10) + 'px')});
    domElementOverlay.setStyle({top:((document.body.clientHeight/2)-(imageSize[1]/2)) + 'px',left:((document.body.clientWidth/2)-(imageSize[0]/2)) + 'px',width:((Number(imageSize[0])) + 'px'),height:((Number(imageSize[1])) + 'px')});
}

function readCookie(name) {

    var cookiename = name + "=";

    var ca = document.cookie.split(';');

    for(var i=0;i < ca.length;i++) {

    var c = ca[i];

    while (c.charAt(0)==' ') c = c.substring(1,c.length);

    if (c.indexOf(cookiename) == 0) return c.substring(cookiename.length,c.length);

    }

    return null;
}

function eventVerification()
{
	new Ajax.Updater('eventContent', '/eventverified.php', {evalScripts:true, parameters:Form.serialize($('formEventLogin'))});
}

function eventDownload(file)
{
	window.location = '/eventdownload.inc.php?file=' + file;
}

function casestudyDownload(file)
{
	window.location = '/casestudydownload.inc.php?file=' + file;
}