/*
* Copyright © www.xardeau.com
*/

/**
* Global Variables
*/
var fadeUsed = false;
var fadeOutUsed = false;
var fadeInUsed = false;

var rhsPageWidth = 0;
var parentLeftOrg = 0;
var pagesInParent = 0;
var pageNumb = 0;
var lastPortDivShownId;
var firstPortOnPageFound = false;

function initPage(elementId, elementId2){
	glowUp(elementId);
	setClassName(elementId2, getElement(elementId2).className + " fadein");
	fadeIn(elementId2, 0, 500);
}
function initPageCont(divIdToShow, warnerId){
	var warner = getElement(warnerId);
	var divToShow = getElement(divIdToShow);
	warner.style.display = 'none';
	divToShow.style.display = 'block';
}
function initPagePort(parentId, pageClassName, javascriptId, navId){
	var nav = getElement(navId);
	nav.style.display = 'block';
	var parentLeftOrgString = getCalculatedProperty(parentId, 'left');
	var parentWidthOrgString = getCalculatedProperty(parentId, 'width');
	try{
		
		var javascriptElem = getElement(javascriptId);
		if(javascriptElem){
			javascriptElem.style.display = 'none';
		}
		
		parentLeftOrg = parseInt(parentLeftOrgString.substring(0, parentLeftOrgString.length-2));
		rhsPageWidth = parseInt(parentWidthOrgString.substring(0, parentWidthOrgString.length-2));
		
		var divElements = getElement(parentId).getElementsByTagName('div');
		for(var i=0;i<divElements.length;i++){
			var divElem = divElements[i];
			if(divElem.className.indexOf(pageClassName)>-1) pagesInParent++;
		}

		var divsDoc = document.getElementsByTagName('div');
		//Start with 1 to skip first portfolio
		for(var i=0;i<divsDoc.length;i++){
			var divElem = divsDoc[i];
			if(divElem.id.indexOf('form_port')>-1){
				if(firstPortOnPageFound){
					divElem.style.display = 'none';
				}else{
					lastPortDivShownId = divElem.id;
					firstPortOnPageFound = true;
				}
			}
		}


	}catch(error){
		//leave it. Paging disabled
	}
}

function glowUp(elementId){
	var element = getElement(elementId);
	var glowIndex = element.className.indexOf('_glow');
	if(glowIndex > -1){
		element.className = element.className.substring(0, glowIndex);
		fadeIn(elementId, 0);
	}
	setClassName(elementId, element.className + "_glow fadein");
}
function stopGlow(elementId){
	var element = getElement(elementId);
	var glowIndex = element.className.indexOf('_glow');
	if(glowIndex > -1){
		var newClassName = element.className.substring(0,element.className.indexOf("_glow fadein"));
		setClassName(elementId, newClassName);
		fadeOut(elementId, 0);
	}
}
function showPrevPortPage(parentId, navPrevId, navNextId){
	var parentLeftNow = getCalculatedProperty(parentId, 'left');
	var parentElem = getElement(parentId);
	var parentLeftNowInt = parseInt(parentLeftNow.substring(0,parentLeftNow.length-2));
	var newParentLeft = parentLeftNowInt + rhsPageWidth - parentLeftOrg;
	if(pageNumb > 0){
		pageNumb--;
		parentElem.style.left = newParentLeft + "px";
		//slide(parentId,parentLeftNowInt,newParentLeft);
		var navNextElem = getElement(navNextId);
		navNextElem.style.display = 'block';
	}
	if(pageNumb == 0){
		var navPrevElem = getElement(navPrevId);
		navPrevElem.style.display = 'none';
	}
}

function showNextPortPage(parentId, navPrevId, navNextId){
	var parentLeftNow = getCalculatedProperty(parentId, 'left');
	var parentElem = getElement(parentId);
	var parentLeftNowInt = parseInt(parentLeftNow.substring(0,parentLeftNow.length-2));
	var newParentLeft = parentLeftNowInt - rhsPageWidth - parentLeftOrg;
	if(pageNumb < pagesInParent){
		pageNumb++;
		parentElem.style.left = newParentLeft + "px";
		//slide(parentId,parentLeftNowInt,newParentLeft);
		
		var navPrevElem = getElement(navPrevId);
		navPrevElem.style.display = 'block';
	}
	if(pageNumb+1 == pagesInParent){
		var navNextElem = getElement(navNextId);
		navNextElem.style.display = 'none';
	}
}
function showPortDiv(portDivId){
	var lastPortDivShown = getElement(lastPortDivShownId);
	var portDivElem = getElement(portDivId);
	
	if(lastPortDivShown && lastPortDivShownId != portDivId){
		hideDiv(lastPortDivShownId);
	}
	portDivElem.style.display = 'block';
	lastPortDivShownId = portDivId;
}
function hideDiv(divId){
	if(getElement(divId)){
		getElement(divId).style.display = 'none';
	}
}
function fadeIn(elementId, startVal, delay){
	if(elementId){
		var element = getElement(elementId);
		if(startVal == undefined){
			startVal = 40;
		}
		if(delay == undefined){
			delay = 0;
		}
		setOpacity(startVal, elementId);
		fade(elementId, startVal, 100, 500, delay, true);
	}
}

/**
*  fadeIn elements from 100 .. 0%
*/
function fadeOut(elementId, startVal){
	if(elementId){
		var element = getElement(elementId);
		if(startVal == undefined){
			startVal = 40;
		}
		setOpacity(startVal, elementId);
		fade(elementId, startVal, 100, 750, 0, false);
	}
}

function setClassName(elementId, name){
	getElement(elementId).className = name;
}

/**
* Get an HTML Element by its Id.
*/
function getElement(elementId){
	return document.getElementById(elementId);
}

/**
* Fade in/out function
* @param elementId. The id of the Element
* @param opacStart. The Start value (0 - 100)
* @param opacEnd. The End value(0 - 100)
* @param millisec. Time in milliseconds to work out the fade
* @param delay. Delay the fade
* @param fadeIn. Extra parameter to trigger the setOpacityIn (true) or setOpacityOut (false) function.
* The fadeIn parameter  can trigger nice effects depending on mouseover / mouseout = fadeIn / fadeOut = true / false
* You might want to fadeIn 2 different divs
*/
function fade(elementId, opacStart, opacEnd, millisec, delay, fadeIn) {
	if(!fadeUsed){
		fadeUsed = true;

	    //speed for each frame
	    var speed = Math.round(millisec / 100);
	    var timer = 0;

		if(delay  == undefined || delay == 0 || delay < 0){
			delay = 1;
		}

	    //determine the direction for the blending, if start and end are the same nothing happens
	    if(opacStart > opacEnd) {
			fadeEndStartValue = opacStart;
	        for(var i=opacStart; i >= opacEnd; i--) {
				if(fadeIn){
					setTimeout("setOpacityIn(" + i + ",'" + elementId + "')",(timer * speed) + delay);
				}else{
					setTimeout("setOpacityOut(" + i + ",'" + elementId + "')",(timer * speed) + delay);
				}
	            timer++;
	        }
	    } else if(opacStart < opacEnd) {
			fadeEndValue = opacEnd;
	        for(var i=opacStart; i <= opacEnd; i++) {
				if(fadeIn){
					setTimeout("setOpacityIn(" + i + ",'" + elementId + "')",(timer * speed) + delay);
				}else{
					setTimeout("setOpacityOut(" + i + ",'" + elementId + "')",(timer * speed) + delay);
				}
	            timer++;
	        }
	    }
		fadeUsed = false;
	}
}

/**
* change the opacity for different browsers
*/
function setOpacityOut(opacity, elementId) {
	if(!fadeOutUsed){
		fadeOutUsed = true;
		var element = getElement(elementId);
		//If not fading in, fade out ok
		if(element.className.indexOf('fadein')==-1){
			setOpacity(opacity, elementId);
		}
		fadeOutUsed = false;
	}
}/**
* change the opacity for different browsers
*/
function setOpacityIn(opacity, elementId) {
	if(!fadeInUsed){
		fadeInUsed = true;
		var element = getElement(elementId);
		//Only fade in when wanted
		if(element.className.indexOf('fadein')>-1){
			setOpacity(opacity, elementId);
		}
		fadeInUsed = false;
	}
}/**
* change the opacity for different browsers
*/
function setOpacity(opacity, elementId) {
	if(elementId){;
		var style = getElement(elementId).style;
		style.opacity = (opacity / 100);
		style.MozOpacity = (opacity / 100);
		style.KhtmlOpacity = (opacity / 100);
		style.filter = "alpha(opacity=" + opacity + ")";
	}
}