

var schedulicityTopBody = document.body;
var schedulicityTopDocument = document;

var topIsAccessible = false;

try
{
    var testAccess = top.document;
    testAccess = top.document.body;
    topIsAccessible = true;
}
catch(e){}

if( topIsAccessible )
{
    schedulicityTopDocument = top.document;
    schedulicityTopBody = top.document.body;
}
else if( top != self )
{
    var doc = document;
    var temp = window;

    while( temp.parent != null )
    {
        if( temp == top) 
            break;
        
        if( temp.document.body.nodeName == "BODY")
        {
            doc = temp.document;
        }
        
        temp = temp.parent;
    }
    
    schedulicityTopDocument = doc;
    schedulicityTopBody = doc.body;
}

var schedulicityNs = {};
schedulicityNs.topOffset = 240;
schedulicityNs.widgetContainerMinHeight = 680;
schedulicityNs.shielded = false;
schedulicityNs.displayModes = { older : 0, current : 1 };
schedulicityNs.displayMode = /MSIE [678]/.test(navigator.userAgent) ? schedulicityNs.displayModes.older : schedulicityNs.displayModes.current;

schedulicityNs.getPageSize = function()
{
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = schedulicityTopBody.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (schedulicityTopBody.scrollHeight > schedulicityTopBody.offsetHeight){ // all but Explorer Mac
		xScroll = schedulicityTopBody.scrollWidth;
		yScroll = schedulicityTopBody.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = schedulicityTopBody.offsetWidth;
		yScroll = schedulicityTopBody.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (schedulicityTopDocument.documentElement && schedulicityTopDocument.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = schedulicityTopDocument.documentElement.clientWidth;
		windowHeight = schedulicityTopDocument.documentElement.clientHeight;
	} else if (schedulicityTopBody) { // other Explorers
		windowWidth = schedulicityTopBody.clientWidth;
		windowHeight = schedulicityTopBody.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

schedulicityNs.createWidget = function()
{
    var widget = schedulicityTopDocument.createElement("table");
    var widgetStyle = widget.style;

    widget.cellPadding = 0;
    widget.cellSpacing = 0;
    widgetStyle.margin = "0px";
    widgetStyle.padding = "0px";
    widgetStyle.position = "absolute";
    widgetStyle.top = "0px";
    widgetStyle.left = "0px";
    widgetStyle.color = "white";
    widgetStyle.zIndex = 2000000005;
    widgetStyle.border = "medium none";
    
    widgetStyle.height = schedulicityNs.getPageHeight();
    
    widgetStyle.width = "100%";
    widgetStyle.display = "none";
    widget.id = "elementInFrontOfShield";
    
    var row = widget.insertRow(0);
    row.style.verticalAlign = "inherit";
    row.style.margin = "0px";
    row.style.padding = "0px";
    
    var cell = row.insertCell(0);
    cell.vAlign = "middle";
    cell.align = "center";
    cell.style.height = "100%";
    cell.style.width = "100%";
    cell.style.verticalAlign = "middle";
    cell.style.textAlign = "center";
    cell.style.margin = "0px";
    cell.style.padding = "0px";
    
    try
    {
        widgetStyle.display = "table";
        row.style.display = "table-row";
        cell.style.display = "table-cell";
    }
    catch(e) {}
    
    var schedulicityWidgetHtml = '<div style="position: relative;">';
    schedulicityWidgetHtml += '<iframe src="http://www.schedulicity.com/Scheduling/Embed/Embed.aspx?business=EECPFL&popup=1" allowtransparency="true" frameborder="0" style="border: none; width: 674px; height: 526px; z-index: 1; visibility: hidden;" onload="this.style.visibility=\'visible\';" id="schedulicityEmbeddableMainFrame"></iframe>';
    schedulicityWidgetHtml += '<img src="http://www.schedulicity.com/Images/CloseXOnWhite.gif" id="schedulicityEmbeddableCloseButton" alt="Close" style="visibility: hidden; position: absolute; top: 34px; right: 50%; margin-right: -306px; z-index: 3; cursor: pointer;" />';
    schedulicityWidgetHtml += '</div>';

    cell.innerHTML = schedulicityWidgetHtml;

    cell.getElementsByTagName('img')[0].onclick = schedulicityNs.lowerShield;

    // insert the initial loader into div as the back-most element
    var schedulicityLoadingFrame = schedulicityTopDocument.getElementById('schedulicityLoadingFrame');
    cell.childNodes[0].insertBefore(schedulicityLoadingFrame, cell.childNodes[0].childNodes[0]);
    
    if (schedulicityTopBody.childNodes.length > 0)
        schedulicityTopBody.insertBefore(widget, schedulicityTopBody.childNodes[1]);
        
    schedulicityNs.showCloseButton();
    //document.body.appendChild(widget);

    return widget;
}

schedulicityNs.getPageHeight = function()
{
    if( schedulicityTopDocument.all ) // ie
        return schedulicityTopDocument.documentElement.offsetHeight + "px";
    else
    {
        if( top != self )
            return schedulicityNs.widgetContainerMinHeight + "px";
        else
            return top.window.innerHeight + "px";
        //return schedulicityTopBody.clientHeight + "px";
        //return schedulicityTopDocument.documentElement;
    }
        //return schedulicityNs.getPageSize()[3] + 'px';
        //return top.window.innerHeight + "px";
}

//schedulicityNs.getPageWidth = function()
//{
//    if( schedulicityTopDocument.all ) // ie
//        return schedulicityTopDocument.documentElement.offsetWidth + "px";
//    else
//        return schedulicityTopBody.clientWidth + "px";
//        //return top.window.innerWidth + "px";
//}

schedulicityNs.showCloseButton = function()
{
    // now that it's in the dom, show the close button
    schedulicityTopDocument.getElementById('schedulicityEmbeddableCloseButton').style.visibility = 'visible';
}

schedulicityNs.createShield = function()
{
    var div = schedulicityTopDocument.createElement("div");
    div.style.position = "fixed";
    div.style.top = "0px";
    div.style.left = "0px";
    
    if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        div.style.position = "absolute";
    }
    
    // check for no OBJECTs 
    
    {
        div.style.filter = "Alpha(Opacity=55)";
        div.style.MozOpacity = ".55";
        div.style.opacity = ".55";
        div.style.backgroundColor = "#000";
    }
    
    div.style.zIndex = 2000000003;
    div.style.width = "100%";
    div.style.height = "100%";
    
    div.style.display = "none";
    div.id = "schedulicityShield";

    // append to body as first child
    if (schedulicityTopBody.childNodes.length > 0)
        schedulicityTopBody.insertBefore(div, schedulicityTopBody.childNodes[0]);
    //document.body.appendChild(div);
    
    return div;
}

schedulicityNs.repositionTabAndOverlay = function()
{
    var scrollTop = schedulicityTopDocument.documentElement.scrollTop || schedulicityTopBody.scrollTop;
    
    schedulicityTopDocument.getElementById('scheduleNowTab').style.top = (scrollTop + schedulicityNs.topOffset) + 'px';
    
    var shield = schedulicityTopDocument.getElementById('schedulicityShield');
    
    if( shield )
        shield.style.top = scrollTop + 'px';
    
    schedulicityNs.repositionShieldedElement();
}

schedulicityNs.repositionShieldedElement = function()
{
    var scrollTop = schedulicityTopDocument.documentElement.scrollTop || schedulicityTopBody.scrollTop;
    var scrollHeight = schedulicityTopDocument.documentElement.scrollHeight || schedulicityTopBody.scrollHeight;
    
    var elementInFrontOfShield = schedulicityTopDocument.getElementById('elementInFrontOfShield');
    if( elementInFrontOfShield )
    {   
        //if( scrollTop < parseInt(schedulicityNs.getPageHeight()) )
            //elementInFrontOfShield.style.top = scrollTop + 'px';
        
    }
    
    if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        var shieldElement = schedulicityTopDocument.getElementById('schedulicityShield');
        
        if( shieldElement )
        {
            var pageSize = schedulicityNs.getPageSize();
            
            //var scrollBarVisible = schedulicityTopBody.scrollHeight > schedulicityTopBody.offsetHeight;
            //var shieldWidth = schedulicityNs.getPageWidth();
            //var shieldHeight = schedulicityNs.getPageHeight();
            
            shieldElement.style.top = '0px';
            shieldElement.style.width = pageSize[0] + 'px';
            shieldElement.style.height = pageSize[1] + 'px';
            
            //elementInFrontOfShield.style.top = (scrollTop + schedulicityNs.topOffset) + 'px';
            
            
        }
    }
    
}

schedulicityNs.createScheduleNowButton = function()
{
    var temp = schedulicityTopDocument.createElement( "div" );
    
    //temp.innerHTML = "<img style='position: fixed; _position: absolute;' />";
    
    var img = schedulicityTopDocument.createElement("img");
    //var img = temp.getElementsByTagName('img')[0];
    
    img.src = "http://www.schedulicity.com/Images/ScheduleNowVertical.png";
    img.id = "scheduleNowTab";
    img.alt = "Schedule Now";
    img.style.position = "fixed";
    img.style.top = schedulicityNs.topOffset + 'px';
    img.style.right = "0px";
    img.style.zIndex = 2000000001;
    img.style.cursor = "pointer";
    
    
    if( false )
    {
        img.onclick = function() { window.open('http://www.schedulicity.com/Scheduling/SelectService.aspx?business=EECPFL'); };
    }
    else
    {
        img.onclick = schedulicityNs.raiseShield;
    }
    
    if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        img.style.position = 'absolute';
        img.style.top = schedulicityNs.topOffset + 'px';
        window.onscroll = schedulicityNs.repositionTabAndOverlay;
    }
    else
    {
        window.onscroll = schedulicityNs.repositionShieldedElement;
    }
    
    schedulicityTopBody.insertBefore(img, schedulicityTopBody.childNodes[0]);
}

schedulicityNs.raiseShield = function()
{
    if( schedulicityNs.shielded ) // shield already up
        return;
        
    var shield = schedulicityNs.createShield();
    var elementInFrontOfShield = schedulicityNs.createWidget();

    shield.style.display = 'block'; // show the shield
    elementInFrontOfShield.style.display = ''; // show the element in front
 
    if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
        schedulicityNs.repositionTabAndOverlay();
    else
        schedulicityNs.repositionShieldedElement();

    schedulicityTopDocument.documentElement.scrollTop = 0;
    schedulicityTopBody.scrollTop = 0;
    
    // hide flash objects
    //if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        var objectElements = schedulicityTopDocument.getElementsByTagName('object');
        for( var i = 0; i < objectElements.length; i++ )
        {
            var objectElement = objectElements[i];
            objectElement.previousVisibility = objectElement.style.visibility;
            
            objectElement.style.visibility = 'hidden';
        }
        
        objectElements = schedulicityTopDocument.getElementsByTagName('embed');
        for( var i = 0; i < objectElements.length; i++ )
        {
            var objectElement = objectElements[i];
            objectElement.previousVisibility = objectElement.style.visibility;
            
            objectElement.style.visibility = 'hidden';
        }
    }
    
    // on window resize
    if (window.addEventListener)
        window.addEventListener('resize', schedulicityNs.resize, false);
    else if (window.attachEvent)
        window.attachEvent('onresize', schedulicityNs.resize);
        
    schedulicityNs.shielded = true;
}

schedulicityNs.resize = function(widget)
{
    schedulicityTopDocument.getElementById('elementInFrontOfShield').style.height = schedulicityNs.getPageHeight();
}

schedulicityNs.lowerShield = function()
{
    var shield = schedulicityTopDocument.getElementById('schedulicityShield');
    var elementInFrontOfShield = schedulicityTopDocument.getElementById('elementInFrontOfShield');

    // save the frame away for future use
    var schedulicityLoadingFrameHolder = schedulicityTopDocument.getElementById('schedulicityLoadingFrameHolder');
    var schedulicityLoadingFrame = schedulicityTopDocument.getElementById('schedulicityLoadingFrame');
    schedulicityLoadingFrameHolder.appendChild(schedulicityLoadingFrame);
    
    // reset flash objects
    //if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        var objectElements = schedulicityTopDocument.getElementsByTagName('object');
        for( var i = 0; i < objectElements.length; i++ )
        {
            var objectElement = objectElements[i];
            objectElement.style.visibility = objectElement.previousVisibility;
        }
        objectElements = schedulicityTopDocument.getElementsByTagName('embed');
        for( var i = 0; i < objectElements.length; i++ )
        {
            var objectElement = objectElements[i];
            objectElement.style.visibility = objectElement.previousVisibility;
        }
    }
    
    // clean up dom
    shield.parentNode.removeChild(shield);
    elementInFrontOfShield.parentNode.removeChild(elementInFrontOfShield);
    
    // on window resize
    if (window.removeEventListener)
        window.removeEventListener('resize', schedulicityNs.resize, false)
    else if (window.detachEvent)
        window.detachEvent('onresize', schedulicityNs.resize);
    
    schedulicityNs.shielded = false;
}

// create loader
schedulicityNs.createInitialLoader = function()
{
    var loader = schedulicityTopDocument.createElement('div');
    loader.id = 'schedulicityLoadingFrameHolder';
    loader.style.top = '-10000px';
    loader.style.left = '-10000px';
    loader.style.position = 'absolute';

    loader.innerHTML = '<iframe id="schedulicityLoadingFrame" src="http://www.schedulicity.com/Scheduling/Embed/Loading.aspx?business=EECPFL&popup=1" allowtransparency="true" frameborder="0" style="border: none; width: 674px; height: 526px; position: absolute; top: 0px; left: 0px; z-index: -1; left: 50%; margin-left: -337px; visibility: visible"></iframe>';

    if( schedulicityNs.displayMode == schedulicityNs.displayModes.older )
    {
        var iframe = loader.getElementsByTagName('iframe')[0];
        iframe.style.marginLeft = '0px';
        iframe.style.left = '';
    }

    //setTimeout( function() {
        schedulicityTopBody.insertBefore(loader, schedulicityTopBody.childNodes[0]);
    //}, 300 );
    //document.body.appendChild(loader);
}

schedulicityNs.onBodyLoad = function()
{
    
    if( !false )
        schedulicityNs.createInitialLoader();
        
    schedulicityNs.createScheduleNowButton();
}

if( false )
{
    schedulicityNs.onBodyLoad();
}
else
{
    if (window.addEventListener)
        window.addEventListener('load', schedulicityNs.onBodyLoad, false)
    else if (window.attachEvent)
        window.attachEvent('onload', schedulicityNs.onBodyLoad);
}    