Event.observe(window, 'load', wireup);

var isIE = (navigator.appName == "Microsoft Internet Explorer")?true:false;
var isIE7 = (document.documentElement && typeof document.documentElement.style.maxHeight!="undefined")?true:false;
var isSafari = (document.childNodes)&&(!document.all)&&(!navigator.taintEnabled)&&(!navigator.accentColorName)?true:false;
if (isSafari) { 
	var browserVersion = window.navigator.userAgent.split('../index.html'); 
	browserVersion = browserVersion[browserVersion.length-1];
	var isSafari2 = (browserVersion < 500) ? true:false;
}
var mStatus; // open-close status of MY EQ Module (declaration here for IE6)
var cfStatus = false; // club finder presence
var prev_nav = null;
var currentXOR = null;
var overlayDest = '';
var currentSwapItem = 'tour';
var SwitchingBikes = false; // global
checkLoginEvent = null;
var loggedOn = false;   // for checkLogin quick check, destination will verify
var currentBubble = null;
//var currentfadeItem = 'tour';
var memberHomeClubID = null;
var memberHomeRegionID = null;
loginCallback = null;

// defaults, need to be embedded outside of ajax panel
var workoutCount = 0;
var personalTrainingCount = 0;

var useOverlay = true;


function wireup() {
	mStatus = false;
	toggler = $('mToggleDrawer');
	expandable = $('mExpandable');
	whiteWrapper = ($('container').className=="white")?true:false;
	Event.observe(document.body, 'click', function(event) {eventProcessor(event)});
}

function eventProcessor(event){
	//if (Effect.Queue.effects.length > 0) return;
	var element = Event.element(event);
	
	var currentClassName = element.className;

	
	if (currentClassName.match("checkLogin") || element.parentNode != null && element.parentNode.className.match('checkLogin'))
	{
	    if (!loggedOn) // quick check first... destination pg will double check login status
	    {
		    ShowLoginOverlay(event);
		    event.stop();
		    return false;
		}
	}
	
	switch (element.id) {
		case 'mToggleDrawer':
		case 'lnkSignIn':
		    event.stop();
			toggleModule();
		break;

		case 'toggleClubFinder':
		    if (useOverlay) {
			    event.stop();
			    //element.style.backgroundPosition = "0 -80px";
    			
			    //Wire up Omniutre tag for region clicker      
                WriteTrackingJSSiteSection('/Clubs/ClubFinder/ToggleClubFinder', 'CLUBFINDER', '', '', '');
                
			    loadClubFinder();
			}			
		break;

		case 'clubMapClose':
			event.stop();
			
						
			//Wire up Omniutre tag for region clicker      
            WriteTrackingJSSiteSection('/Clubs/ClubFinder/CloseClubFinder', 'CLUBFINDER', '', '', '');
            
			CloseClubFinder();
		break;
		
		case 'backToMap':
			event.stop();

			
			//Wire up Omniutre tag for region clicker      
            WriteTrackingJSSiteSection('/Clubs/ClubFinder/BackToMap', 'CLUBFINDER', '', '', '');

			$('clubSelector').hide();
			$('map').show();
			$('key').show();
			$('backToMap').hide();
		break;
		
		case 'backToRegions':
			event.stop();
       
			$('ClubInfo').hide();
			$('main_container').show();
		break;
		
		case 'moduleSignOut':
			event.stop();
			
			//Wire up Omniutre tag for region clicker      
            WriteTrackingJSSiteSection('/MyEQ/Module/SignOut', 'MYEQ', '', '', '');
            
			DoLogout();
			break;
			
		case 'btn_signin':
			event.stop();
			
			//Wire up Omniutre tag for region clicker      
            WriteTrackingJSSiteSection('/MyEQ/Module/SignIn', 'MYEQ', '', '', '');
            
			checkLogin('mSignIn',false);
			break;
	}
	
		    
	
	if (currentClassName.match("exclusiveOr"))
	{
		//event.stop();
		
		if (currentXOR != null) 
		{
		    if (currentXOR.type == 'radio' && currentXOR.checked == true)
		        currentXOR.checked = false; 
		    
		    currentXOR.removeClassName('activated');
		}
		currentXOR = element;
		currentXOR.addClassName('activated');
		return;
	}
	
	else if (currentClassName.match("ScheduleGetClass"))
	{
		event.stop();
	    new Ajax.Updater('groupfitness_container', element.readAttribute('href'), 
		{ 
		    onComplete: function(){
		    // rewireup events
		    groupFitness();
		    quickClass();
    	    //if ($('subnav')) $('subnav').hide();
	 	    }
	    });
	}
	
	else if (currentClassName.match("goCalendar"))
	{
		event.stop();
		document.location.href="../MyEQ/default.html";
	}
	
	else if (currentClassName.match("getClub")) 
	{
		event.stop();
		var clubName = element.readAttribute('href');
		//$('clubSelector').hide();
		//$('region').hide();
		//if ($('detailRegion')) $('detailRegion').show();
		//if ($('clubDetail')) $('clubDetail').show();
		if ($('main_container') && $('main_container').visible()) $('main_container').hide();
		$('ClubInfo').show();
		new Ajax.Updater('ClubInfo', clubName, {method: 'get'});
		return true;
	}
	
	else if (currentClassName.match("ScheduleRegion"))
	{
		event.stop();
		if($$('#region a.regionActive')[0]) 
		    $$('#region a.regionActive')[0].removeClassName('regionActive');
		element.addClassName('regionActive');
	    new Ajax.Updater('region_results', element.readAttribute('href'));
	    //new Ajax.Updater('main_container', element.readAttribute('href'));
	    return true;
	}
	
	else if (currentClassName.match("ClubsRegion"))
	{
		event.stop();
	    alert(element.readAttribute('href'));
	    return false;
	}

	else if (currentClassName.match("overlayPanel"))
	{
		event.stop();
		if (currentClassName.match("reloadPage"))
		    createOverlay(element.href, '980', "ReloadPage();");
	    else
	        createOverlay(element.href, '980')
	    return false;
	}
	
	else if (currentClassName.match("overlayClose"))
	{
		event.stop();
	    closeOverlay();
	    return false;
	}
	
	else if (currentClassName.match("bookABikeLink"))
	{
		event.stop();
	    var linkBookType = "";
		if (Event.element(event).hasClassName('switch')) { linkBookType = "switch"; SwitchingBikes = true;}
		//createBikeOverlay(Event.element(event), linkBookType);				
		createBikeOverlay(Event.element(event).href, linkBookType);				
	}
	
	else if (currentClassName.match("bookABikeImage"))
	{
	    Event.stop(event);
	    var linkBookType = "";
		if (Event.element(event).hasClassName('switch')) { linkBookType = "switch"; SwitchingBikes = true;}
		createBikeOverlay(Event.element(event).parentNode.href, linkBookType);	
	}
	
	else if (currentClassName.match("cancelReservation"))
	{
		event.stop();
        ajaxCancelReservation(Event.element(event));		
	}


	else if (element.parentNode.className.match("swapnav"))
	{
		event.stop();
	    $$('#club_nav .active')[0].removeClassName('active');
        $(element.parentNode).addClassName('active');
        current = $(currentSwapItem);
        
        new Effect.Fade(current, { queue: 'front', afterFinish: function(n){ new Effect.Appear(element.href.match(/#(.*)/)[1], {queue: 'front'}); }});
        
	    currentSwapItem = element.href.match(/#(.*)/)[1];
	    
	    if (currentSwapItem != 'tour')     try{pauseSlideShow();}catch(err){}
	    else restartSlideShow();

        return false;
	}
	
	else if (element.parentNode.className.match("swapFade"))
	{
		event.stop();
	    $$('#club_nav .active')[0].removeClassName('active');
        $(element.parentNode).addClassName('active');
        current = $$('.panelActive')[0];
        
        
        new Effect.Fade(current, {duration:0.5, from: 1, to:0, queue: 'front', afterFinish: function(n)
        { 
            current.removeClassName('panelActive');
            newPanel = element.href.match(/#(.*)/)[1];
            new Effect.Appear(newPanel, {duration:0.5, from: 0, to:1, queue: 'end', afterFinish: function(n)
            {
                // mark new panel as active
                $(newPanel).addClassName('panelActive');
                // start/stop slideshow
                if (element.parentNode.className.match("StartSlideshow"))
                    start_slideshow();
                else
                    try{pauseSlideShow();}catch(err){}
                return false;
            }}); }
            
        });
        
	}
	
	//default
	return true;

}
function toggleModule() {
	if (whiteWrapper && $('btn_signin')) $('btn_signin').src="../images/cached/white/mSignIn.gif";
	var mBottom = $('mBottom');			
	// condition for logged in module
	if ($('myEq').hasClassName('in')) {
		if (mStatus) {
			// module bottom border logic
			if ((!isIE)&&(!whiteWrapper)) mBottom.style.background = "url(/images/cached/moduleBottom.png)";
			else if ((!isIE)&&(whiteWrapper)) mBottom.style.background = "url(/images/cached/white/moduleBottom.png)";
			else if((isIE)&&(whiteWrapper)) mBottom.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/cached/white/moduleBottom.png',sizingMethod='scale');";
			else mBottom.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/cached/moduleBottom.png',sizingMethod='scale');";
		
			Effect.SlideUp(expandable, {queue: {position: 'end', scope:'module', limit:2}});
			toggler.innerHTML = "Help";
			toggler.className = "open";
			mStatus = false;
			return;				
		}
		else{
			if (!isIE) mBottom.style.background = "url(/images/cached/moduleBottomBlack.png)";
			else mBottom.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/cached/moduleBottomBlack.png',sizingMethod='scale');";
			Effect.SlideDown(expandable, {queue: {position: 'end', scope:'module', limit:2}});
			toggler.innerHTML = "Close";
			toggler.className = "close";
			mStatus = true;
			return;
		}
	}
	// condition for logged out module
	else {
		if (mStatus) {
			Effect.SlideUp(expandable, {queue: {position: 'end', scope:'module', limit:2}});
			toggler.innerHTML = "Open";
			toggler.className = "open";
			mStatus = false;
			return;
		}
		else {
			Effect.SlideDown(expandable, {queue: {position: 'end', scope:'module', limit:2}});
			toggler.innerHTML = "Close";
			toggler.className = "close";
			mStatus = true;
			return;
		}
	}
}

function ShowMapBubble(elname)
{
    if (currentBubble) $(currentBubble).style.display = 'none';
    if (elname)
    {
        $(elname).style.display = 'block';
        currentBubble = elname;
    }
}

function createLoadingLayer(){
	
	if(!$('loadingLayerDiv')){
	
		var de = document.documentElement;
		if (window.innerHeight && window.scrollMaxY) var h = window.innerHeight + window.scrollMaxY;
		else if (window.innerHeight && (window.scrollMaxY == "0")) var h = window.innerHeight + window.scrollMaxY;
		else if ((de&&de.clientHeight) > (document.body.clientHeight + 40)) var h = de&&de.clientHeight;
		else var h = document.body.clientHeight + 40;
			
		loadingLayer = document.createElement('div');
		loadingLayer.id = "loadingLayerDiv";
		Element.extend(loadingLayer);
			
		loadingLayer.setStyle({
			position: 'absolute',
			top: '0',
			left : '0',
			backgroundColor : '#222',
			zIndex : '9000',
			display : 'none',
			width : '100%',
			height :  h+'px'
		});
		
		loadingLayerContent = document.createElement('div');
		Element.extend(loadingLayerContent);
		loadingLayer.appendChild(loadingLayerContent);
		
		loadingLayerContent.update('LOADING...');
		var loadingH = h/2;
		loadingLayerContent.setStyle({
			textAlign: 'center',
			fontSize: '40px',
			color: '#FFF',
			top: loadingH+'px',
			position: 'absolute',
			width: '400px',
			textAlign: 'center',
			left : ((de&&de.clientWidth - 400)/2)+'px'
		});
		document.body.appendChild(loadingLayer);
	}
}




/* clubfinder funcs */

function loadClubFinder(rid) {
    // ClubTour slideshow interferes with clubfinder events
    try{pauseSlideShow();}catch(err){}

	if (!cfStatus){
		new Ajax.Updater('cfLeft', '/Clubs/ClubFinder.aspx', {
			method: 'get',
			onComplete: function() {
				cfStatus = true;
				clubFinderDiv = $('clubFinder');
				initClubFinder(rid);
			}
		});
	}
	else toggleClubFinder();
	return;
}

function initClubFinder(rid)
{
    // wire up markers
    $$('#stage a', '#region a.getRegion').invoke('observe', 'click', function(event) 
    {
        //Wire up Omniutre tag for region clicker      
        WriteTrackingJSSiteSection(this.readAttribute('href').replace('.aspx', ''), 'CLUBFINDER', '', '', '');
        
        event.stop();
        GetMapRegion(this);
    });

    if(typeof rid == "string")
    {
        GetMapRegion(rid);
    }
    
    toggleClubFinder();
}


function toggleClubFinder() {	

	if (Effect.Queue.effects.length > 0) return;

	// toggle the club finder
	if (clubFinderDiv.visible()) 
	{
	    CloseClubFinder();
	    return;
	}
	
	// save current nav item to restore later
    if ($$('.nav_active')[0])
	    ($$('.nav_active')[0]).addClassName('prev_active');
	
	$('toggleClubFinder').addClassName('nav_active');
	
	if (isIE) $$('select').each(function(s){s.style.visibility = "hidden"}); // Hide select tags on IE6 due to overlay bug in IE
	
	// Safari 2.0.x fix
	if ((isSafari2) && ($('equinoxHp')))
		$('equinoxHp').style.visibility = "hidden";
			
    Effect.SlideDown(clubFinderDiv);
    $('clubsNavArrow').show();
	return;
}

function CloseClubFinder()
{
	if (Effect.Queue.effects.length > 0) return;
	
	// Safari 2.0.x fix
	if ((isSafari2) && ($('equinoxHp')))
		$('equinoxHp').style.visibility = "visible";
	
	Effect.SlideUp(clubFinderDiv,{
		afterFinish: function() {
			if (isIE) $$('select').each(function(s){s.style.visibility = "visible"}); // Restore select tags on IE6 due to overlay bug in IE
			
			$('toggleClubFinder').removeClassName('nav_active');
		    $('clubsNavArrow').hide();
		
			// restore previous active nav
		    if ($$('.prev_active')[0] != null) 
		        $$('.prev_active')[0].className = "nav_active";
	        
		    try{restartSlideShow();}catch(err){}
		}
	});
    return;
}

function GetMapRegion(el)
{
	$('backToMap').style.display = "block";
	
	// de-highlight previous
	if ($$('#region li a.active').length > 0) $$('#region li a.active')[0].removeClassName('active');
	
	// convert el from string to element if passed as string
	if(typeof el == "string")
	{
	    $$('#region li a.getRegion').each(function(theEl){
	        if(theEl.readAttribute('href').indexOf('='+el)>-1)
	        {
	            el = theEl;
	        }
	    });
	}
    
    el.addClassName('active');
    var newregion;
    newregion = el.readAttribute('href');
	    
	$('map').hide();
	$('key').hide();
	//if ($('clubSelector')) $('clubSelector').show();
	new Ajax.Updater('ClubsInRegion', newregion);
	return false;
}


/* EQ Module (and login overlay) */

/* Merge Organic changes carefully. Customized by X.F. */
function checkLogin(parentDiv, isOverlay)
{
    var u = $(parentDiv).select('input')[0].value;
    u = u.replace('&', '%26');
    var p = $(parentDiv).select('input')[1].value;
    p = p.replace('&', '%26');
    var r = $(parentDiv).select('input')[2].checked;
    var isEspot = false;
    if ( u == '' || u == 'Username' || u.length < 1 || p == '' || p == 'Password' || p.length < 1 )
        return false;
    else
    {
        //paul's nonsense.
        var qsParm = new Array();
        var query = window.location.search.substring(1);
        var parms = query.split('&');
        var isEspot = false;
        for (var i=0; i<parms.length; i++) {
            var pos = parms[i].indexOf('=');
            if (pos > 0) {
                var key = parms[i].substring(0,pos);
                var val = parms[i].substring(pos+1);
                qsParm[key] = val;
            }
            if(qsParm["from"] == "flypoint.dragnfly.com")
            {
                isEspot=true;
            }
        }
        var url = '/MyEQ/Module.aspx?a=login&u=' + u + '&p=' + p  + '&r=' + r + "&o=" + isOverlay;
        
        if (isOverlay)
        {
            $('overlayError').style.display = 'none';
        
            new Ajax.Request(url,{
                onSuccess: function(transport)
                {
                    //check returned JSON for success / failure
                    
                    loginResponse = transport.responseText.evalJSON();
                    
                    if(loginResponse.status == 'success'){
                        
                        //Login successful!
                        
                        closeOverlay(loginCallback);
                        
                        //redirected here from another pg?
                        if (getURLParam("dest") != "") {  document.location.href = getURLParam("dest"); return;}
                        // added by T.N.
                        else if ( overlayDest != '' ) { document.location.href = overlayDest; return; }
                        
                        RefreshModule();
                        e = checkLoginEvent;                        // get original event
                        e.element().removeClassName('checkLogin');  // complete, remove before resubmitting
                        
                        // no other class 'actions', forward to destination pg
                        if (e.element().className=='') {
                            /* This logic added by X.F. to handle span tags nested within links */
                            if (e.element().tagName == 'SPAN') {
                                
                                document.location.href = e.element().up().href;
                            }
                            else {
                                document.location.href = e.element().href;
                            }
                        }
                        else
                        {
                            // class 'actions' remaining, resubmit for remaining actions...
                            checkLoginEvent = null;                     // reset
                            //alert('continuing2');
                            if (loginCallback != null)
                                eval(loginCallback);
                            else
                                eventProcessor(e);                          // resubmit for remaining actions
                        }
                    }else{
                        //Login failed!
                        $('overlayError').style.display = 'block';
                    }
                },
                onFailure: function(transport){$('overlayError').style.display = 'block';}
                });
        }
        else
        {
            $('LoginError').style.display = 'none';
            
            new Ajax.Request(url,{
                //Per Jeff, successful login should go to MyEQ homepage
                //onSuccess: function(transport){$('myEQ_module').update(transport.responseText); WireUpModule();},
                onSuccess: function(transport){
                    loginResponse = transport.responseText.evalJSON();
                    //Paul's nonsense for WiFi!
                    if(loginResponse.status == 'success'){
                        if(isEspot){
                            document.location.href = '../MyEQ/defaultb3f2.html?from=flypoint.dragnfly.com';
                        }
                        else if (loginResponse.loginType == 'SpaCustomer') {
                            //Xavier's wacky spa service stuff
                            document.location.href = 'default.html';
                        }
                        else{
                            document.location.href = '../MyEQ/index.html';
                            }
                         
                    }else{
                        $('LoginError').style.display = 'block';
                    }
                },
                onFailure: function(transport){
                    $('LoginError').style.display = 'block';
                    }
                });
          }
    }
}

function DoLogout()
{
    var url = '/MyEQ/Module.aspx?a=logout';
    mStatus = false;
    
    //Open a new loading layer
    createLoadingLayer();
    new Effect.Appear(loadingLayer,	{ to:0.85, duration: 0.5, queue: {position:'end', scope: 'loadingQ'} });
    
    //new Ajax.Updater('myEQ_module',url, { onComplete: function(){ WireUpModule(); }});
    //new Ajax.Updater('myEQ_module',url, { onComplete: function(){ document.location.href = document.location.href; }});
    //new Ajax.Updater('myEQ_module',url, { onComplete: function(){ document.location.href = "/default.aspx"; }});
    
    document.location.href = '../index.html?a=logout';
}

function WireUpModule()
{
	toggler = document.getElementById('mToggleDrawer');
	expandable = document.getElementById('mExpandable');
	mStatus = false;
}

function ShowLoginOverlay(event)
{
    checkLoginEvent = event;
    createOverlay('/myeq/module.aspx?a=loginOverlay',605);
}

function ShowLoginOverlayCallback(callback)
{
    createOverlay('/myeq/module.aspx?a=loginOverlay',605, callback)   
}

function RefreshModule()
{
    //RunAfterPageLoaded(function(){new Ajax.Updater('myEQ_module','/MyEQ/Module.aspx', {evalScripts: true, onComplete: WireUpModule })});
    new Ajax.Updater('myEQ_module','/MyEQ/Module.aspx', {evalScripts: true, onComplete: WireUpModule });
}

function LoginFailed(isOverlay)
{
    if (isOverlay) $('overlayError').style.display = 'block';
    else
        $('LoginError').style.display = 'block';
}



/* Page Utilities */

function clearTextBox(elem, val) 
{
	if (elem.value == val) elem.value = "";
}

function fillTextBox(elem, val) 
{
	if (elem.value == "") elem.value = val;
}

function ReloadPage()
{
    location.href = location.href;
}

function getURLParam( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function PrintPage()
{
	if (window.print) 
		window.print();  
	else 
	{
		var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
		document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
		WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
	}
	
    //return false;
}

function RunAfterPageLoaded(f)
{
    Event.observe(window, 'load', f);
}

function HandleKeyPress(el,keycode,f)
{
    if (this.keyCode == keycode) alert(this.keyCode);
}

function SetSelectValue(el, value)
{
    
    for(x = 0; x < el.length; x++)
    {
        if (value == el.options[x].value)
            el.selectedIndex = x;
    }
}

function addZero(vNumber)
{ 
    return ((vNumber < 10) ? "0" : "") + vNumber 
} 

/* Someone commented out formatDate() (me?) so I'm gonna keep
   it that way until there's a problem.  There's a potential
   conflict with /js/lib/date.js - X.F. */
/*
function formatDate(vDate, vFormat)
{ 
    var vDay                      = addZero(vDate.getDate()); 
    var vMonth            = addZero(vDate.getMonth()+1); 
    var vYearLong         = addZero(vDate.getFullYear()); 
    var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
    var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
    var vHour             = addZero(vDate.getHours()); 
    var vMinute           = addZero(vDate.getMinutes()); 
    var vSecond           = addZero(vDate.getSeconds()); 
    var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
    vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
    return vDateString 
  } */

function ToggleElement(elname,state)
{
    try {
        e = document.getElementById(elname);
        
        if (state == null)  // default toggle on/off
            e.style.display = (e.style.display == 'none' || e.style.display =='' ) ? 'block':'none';
        else    // 'on' or 'off' passed?
            e.style.display = (state == 'on') ? 'block' : 'none';
    }
    
    catch(err){}
}

//createNewsOverlay(Event.element(event));
var OverlayPanelOpen = false;
var OverlayName = ''; //X.F.
var OverlayReturnUrl = location.href; //X.F.

function createOverlay(href, width, closeCallback)
{

    if (isIE)
        $$('select').each(function(n){n.hide();});  // hack for IE6
	
	if(!$('overlayPanelDiv')){
		
		overlayPanel = document.createElement('div');
		overlayPanel.id = "overlayPanelDiv"
		var de = document.documentElement;
		
		if (window.innerHeight && window.scrollMaxY) var h = window.innerHeight + window.scrollMaxY;
		else if (window.innerHeight && (window.scrollMaxY == "0")) var h = window.innerHeight + window.scrollMaxY;
		else if ((de&&de.clientHeight) > (document.body.clientHeight + 40)) var h = de&&de.clientHeight;
		else var h = document.body.clientHeight + 40;
		
		overlayPanel.style.position = 'absolute';
		overlayPanel.style.top = '0';
		overlayPanel.style.left = '0';
		overlayPanel.style.backgroundColor = '#222';
		overlayPanel.style.zIndex = '2000';
		overlayPanel.style.display = 'none';
		overlayPanel.style.width = '100%';
		overlayPanel.style.height =  h+'px';

		document.body.appendChild(overlayPanel);
		
		OverlayPanelOpen = true;

	}
	
	new Effect.Appear(overlayPanel,	{ to:0.85, duration: 0.5 ,afterFinish: createOverlayBox(href, width) });
	
	Event.observe(overlayPanel, 'click', function(event) {closeOverlay(closeCallback);});	
}

function createOverlayBox(href, width)
{
	if(!$('overlayBox')){	
		//alert(window.pageYOffset+" "+de.scrollTop+" "+document.body.scrollTop+" "+self.innerHeight+" "+(de&&de.clientHeight)+" "+document.body.clientHeight+" "+document.body.scrollHeight+" "+document.body.offsetHeight+" "+window.innerHeight+" "+window.scrollMaxY);
		overlayBoxDiv = document.createElement('div');
		overlayBoxDiv.id = "overlayBox"
		overlayBoxDiv.style.position = 'absolute';
		overlayBoxDiv.style.backgroundColor = '#000';
		overlayBoxDiv.style.zIndex = '3001';
		overlayBoxDiv.style.display = 'none';
		overlayBoxDiv.style.width = width + 'px';
		overlayBoxDiv.style.overflow =  'auto';
		
		document.body.appendChild(overlayBoxDiv);
	}
	
	var de = document.documentElement;
	overlayBoxDiv.style.top = (de.scrollTop+100)+"px";    // updated from +40
	overlayBoxDiv.style.left = ((de&&de.clientWidth - width)/2)+"px";
	
	new Effect.Appear(overlayBoxDiv,{ duration: 0.5,afterFinish: populateOverlayBox(href) }	);
}

function populateOverlayBox(href)
{
	new Ajax.Updater(overlayBoxDiv, href, {evalScripts: true});
}

function closeOverlay(closeCallback){
	new Effect.Fade(overlayBoxDiv,{ duration: 0.5, afterFinish: function(n)
	{
    	if (closeCallback != null)
    	{
    	    eval(closeCallback);
    	    OverlayPanelOpen = false;
    	}
    	else
    	{
		    new Effect.Fade(overlayPanel,{ duration: 0.5, afterFinish: function(n)
		    {
		        OverlayPanelOpen = false;
		        if (isIE)
                    $$('select').each(function(n){n.show();});  // hack for IE6
	        }	 
            });
        }
	}
	});
	
}

function RedirectEnterKey(e, enterFunction)
{
    var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;

    if (keyCode == 13)
    {
        e.cancelBubble = true;
        if (e.returnValue) e.returnValue = false;
        if (e.stopPropagation) e.stopPropagation();
        if (enterFunction) eval(enterFunction);
    } 
}

function wireUpInfoIcons()
{
    btns = $$('.infoBtn');
    
    lgbtns = $$('.infoBtnLg');
    
    for(i=0; i < btns.length;i++)
    {
        btns[i].observe('mouseover', function(event)
        {
            var source = Event.element(event);
            var dest = $($(source.id).getAttribute('bubble'));
            $(dest).clonePosition($(source),{setWidth: false, setHeight: false, offsetTop: -120});
            //$(dest).clonePosition($(source),{setWidth: false, setHeight: false, offsetTop: -140});
            ToggleElement(dest.id);
        });
        
        btns[i].observe('mouseout', function(event)
        {
            ToggleElement(Event.element(event).getAttribute('bubble'));
        });

    }
    
    for(i=0; i < lgbtns.length;i++)
    {
        lgbtns[i].observe('mouseover', function(event)
        {
            var source = Event.element(event);
            var dest = $($(source.id).getAttribute('bubble'));
            $(dest).clonePosition($(source),{setWidth: false, setHeight: false, offsetTop: -145});
            //$(dest).clonePosition($(source),{setWidth: false, setHeight: false, offsetTop: -140});
            ToggleElement(dest.id);
        });
        
        lgbtns[i].observe('mouseout', function(event)
        {
            ToggleElement(Event.element(event).getAttribute('bubble'));
        });

    }
}


