var popupOpener = "";
function showGenericInfoPopup(event, launchObject, isClick) {	
	obj = Event.element(event);
	
	if(launchObject.id != popupOpener){
		popupOpener = launchObject.id;
		if($('genericInfoPopup').visible()){
	    	$('genericInfoPopup').hide();
		}
	}
	
	$('genericInfoPopupBody').innerHTML = $(launchObject.id + 'PopupContent').innerHTML;
    
    var topOffset = $(launchObject.id).cumulativeOffset().top;
    var leftOffset = $(launchObject.id).cumulativeOffset().left;
    var infoPopupTopOffset = $('genericInfoPopup').getHeight();
    var infoPopupLeftOffset = $('genericInfoPopup').getWidth();
    
    topOffset = topOffset - infoPopupTopOffset - 15;
    leftOffset = leftOffset + 8;
    
    if(topOffset <= 0){
    	topOffset = 5;
    	leftOffset = leftOffset + 10;
    }
    
    if(leftOffset <= 0){
    	leftOffset = 5;
    }
    
    $('genericInfoPopup').setStyle({
      top: topOffset + "px",
      left: leftOffset + "px"
    });
    
    if(isClick){
    	Effect.Appear($('genericInfoPopup'), {duration: 0.2});
	} else {
		document.onmousemove=followmouse;
		setTimeout("showGenericInfoPopupPostAction()", 750);
	}
}

function showGenericInfoPopupPostAction(){
	offset = Element.cumulativeOffset(obj);
	if((offset.left <= trueXCoord) && (trueXCoord <= (offset.left + obj.offsetWidth + 1)) && (offset.top <= trueYCoord)  && (trueYCoord <= (offset.top + obj.offsetHeight + 1))){	
		Effect.Appear($('genericInfoPopup'), {duration: 0.2});
	}
}

function hideGenericInfoPopup(){
	if($('genericInfoPopup') != null){
		new Effect.Fade($('genericInfoPopup'), {duration: 0.2});
	}
}


/***********************************/
/*** Generic Content Replacement ***/
/***********************************/
var targetDivId;

function fillTargetDiv(event, launchObject, targetDivId, isClick) {	
	obj = Event.element(event);
	targetDiv = targetDivId;
	
	if(launchObject.id != popupOpener){
		popupOpener = launchObject.id;
		if($(targetDiv).visible()){
	    	$(targetDiv).hide();
		}
	}
	
	$(targetDiv).innerHTML = $(launchObject.id + 'Content').innerHTML;
    
    if(isClick){
    	Effect.Appear($(targetDiv), {duration: 0.2});
	} else {
		document.onmousemove=followmouse;
		setTimeout("fillTargetDivPostAction()", 250);
	}
}

function fillTargetDivPostAction(){
	offset = Element.cumulativeOffset(obj);
	if((offset.left <= trueXCoord) && (trueXCoord <= (offset.left + obj.offsetWidth + 1)) && (offset.top <= trueYCoord)  && (trueYCoord <= (offset.top + obj.offsetHeight + 1))){	
		Effect.Appear($(targetDiv), {duration: 0.2});
	}
}

/****************************/
/*** Simple Image Changer ***/
/****************************/
var simpleImageChangerIndex = -1;
var simpleImageChangerImageId;
var simpleImageChangerDefaultSpeed = 0.5;
var simpleImageChangerSpeed;

function simpleImageChangerPrevious(replacementImageId, speed){
	if(speed != null && speed != ''){
		simpleImageChangerSpeed = speed;
	} else {
		simpleImageChangerSpeed = simpleImageChangerDefaultSpeed
	}
	
	if($(replacementImageId) != null){
		simpleImageChangerImageId = replacementImageId;
		new Effect.Fade(simpleImageChangerImageId, {queue: 'front', duration: simpleImageChangerSpeed, to: 0.01})
		setTimeout('changePreviousSimpleImageChanger()', parseInt((simpleImageChangerSpeed * 1000) + 200));
	}
}

function simpleImageChangerNext(replacementImageId, speed){
	if(speed != null && speed != ''){
		simpleImageChangerSpeed = speed;
	} else {
		simpleImageChangerSpeed = simpleImageChangerDefaultSpeed
	}
	
	if($(replacementImageId) != null){
		simpleImageChangerImageId = replacementImageId;
		new Effect.Fade(simpleImageChangerImageId, {queue: 'front', duration: simpleImageChangerSpeed, to: 0.01})
		setTimeout('changeNextSimpleImageChanger()', parseInt((simpleImageChangerSpeed * 1000) + 200));
	}
}

function changePreviousSimpleImageChanger(){
	if(simpleImageChangerIndex < 0){
		simpleImageChangerIndex = simpleImageChangerImages.length;
		$(simpleImageChangerImageId).src = simpleImageChangerImages[simpleImageChangerIndex-1];
		simpleImageChangerIndex = simpleImageChangerIndex - 1;
	} else if(simpleImageChangerIndex == 0){
		$(simpleImageChangerImageId).src = simpleImageChangerOriginal;
		simpleImageChangerIndex = simpleImageChangerImages.length; 
	} else if(simpleImageChangerImages[simpleImageChangerIndex-1] != null){
		$(simpleImageChangerImageId).src = simpleImageChangerImages[simpleImageChangerIndex-1];
		simpleImageChangerIndex = simpleImageChangerIndex - 1;
	}
	
	setTimeout('showNextSimpleImageChanger()', parseInt((simpleImageChangerSpeed * 1000) + 200));
}

function changeNextSimpleImageChanger(){
	if(simpleImageChangerIndex+1 < simpleImageChangerImages.length){
		$(simpleImageChangerImageId).src = simpleImageChangerImages[simpleImageChangerIndex+1];
		simpleImageChangerIndex = simpleImageChangerIndex + 1;
	} else if(simpleImageChangerIndex+1 == simpleImageChangerImages.length){
		$(simpleImageChangerImageId).src = simpleImageChangerOriginal;
		simpleImageChangerIndex = -1; 
	} else if(simpleImageChangerIndex == simpleImageChangerImages.length){
		$(simpleImageChangerImageId).src = simpleImageChangerImages[0];
		simpleImageChangerIndex = 0;
	}
	
	setTimeout('showNextSimpleImageChanger()', parseInt((simpleImageChangerSpeed * 1000) + 200));
}

function showNextSimpleImageChanger(){
	new Effect.Appear(simpleImageChangerImageId, {queue: 'front', duration: simpleImageChangerSpeed})
}







/*************************************/
/*** Auto Rotating Tab and Content ***/
/*************************************/
var tabDuration = 1.0;
var waitTime = 5000;
var clickWaitTime = 10000;
var tabLoading = false;
var inAutoRotate = true;

function loadTabFilmstrip(){
	var tabObjects = $$('.filmstripTabControl');
	if(tabObjects != null){
		for(var i = 0; i < tabObjects.length; i++){
			tabObjects[i].observe('click', loadTab);
		}
		setTimeout('loadNextTab()', waitTime);
	}
}

function loadNextTab(){
	if(!tabLoading && inAutoRotate){
		tabLoading = true;
		inAutoRotate = true;
		waitingForAutoRotate = false;
		var tabObjects = $$('.filmstripTabControl');
		var tabContentObjects = $$('.tabContent');
		for(var i = 0; i < tabObjects.length; i++){
			if(tabObjects[i].hasClassName('selectedTab')){
				tabObjects[i].removeClassName('selectedTab');
				Effect.Fade(tabContentObjects[i], {duration: tabDuration});
				if((i+1) < tabContentObjects.length){
					tabObjects[i+1].addClassName('selectedTab');
					Effect.Appear(tabContentObjects[i+1], {duration: tabDuration});
				} else {
					tabObjects[0].addClassName('selectedTab');
					Effect.Appear(tabContentObjects[0], {duration: tabDuration});
				}
				setTimeout('loadNextTab()', waitTime);
				break;
			}
		}
		setTimeout('setTabLoadingFalse()', tabDuration);
	}		
}

function loadTab(event){
	tabLoading = true;
	var clickedTab = event.findElement('DIV');
	var tabObjects = $$('.filmstripTabControl');
	var tabContentObjects = $$('.tabContent');
	for(var i = 0; i < tabObjects.length; i++){
		if(clickedTab.id != tabObjects[i].id){
			tabObjects[i].removeClassName('selectedTab');
			tabContentObjects[i].hide();
		}
	}	

	if(!clickedTab.hasClassName('selectedTab')){
		clickedTab.addClassName('selectedTab');
		Effect.Appear($(clickedTab.id + 'Content'), {duration: tabDuration});
	}
		
	if(inAutoRotate){
		inAutoRotate = false;
		setTimeout('setInAutoRotateTrue()', clickWaitTime);
		setTimeout('loadNextTab()', clickWaitTime + 100);
	}	
	setTimeout('setTabLoadingFalse()', tabDuration);
}


/* Used for setTimeout calls */
function setTabLoadingFalse(){
	tabLoading = false;	
}

function setInAutoRotateFalse(){
	inAutoRotate = false;	
}

function setInAutoRotateTrue(){
	inAutoRotate = true;	
}
