/*
** Layers API
*/


// Configurable Directives
var positionAnchoringIdent = 'container';
var overlayOpacity = 0.6;

var layerSets = {
	'In Progress Layer':{
		isActive:true,
		animate:true,
		overlayer:true,
		init: function() {
			
		},
		activate: function() {
			var contentObj = document.getElementById('workInProgressContent');
			contentObj.innerHTML = "";
			var contentAdd = Builder.node('div', [
				Builder.node('h2', {className:'popoverMainTitle'}, 'For more details about these projects, please contact me.'),
				Builder.node('div', {className:'spacer height20'}),
				Builder.node('p', {className:'popoverContentBlock'}, 'I can be reached at:'),
				Builder.node('p', {className:'popoverContentBlock'}, [
					Builder.node('span', {style:'font-style:normal; color:#666666'}, '(917) 701-0102'),
					Builder.node('span', ' or '),
					Builder.node('span', {style:'font-style:normal; color:#000000;'}, [
						Builder.node('a', {style:'font-style:normal; color:#666666;', href:'mailto:wan'+'dalau'+'.01@'+'gmail'+'.c'+'om'}, 'wan'+'dalau'+'.01@'+'gmail'+'.c'+'om'),
					]),
				]),
			]);
			contentObj.appendChild(contentAdd);
		},
		layerIdent:'workInProgressLayer',
		layerClass:'popoverLayerWrap',
		closeButton:true,
		headerCopy:'I\'m working on the details',
		bodyCopy:Array('It\'s much more interesting to have me tell it in person anyways','I can be contacted at:','(917) 701-0102 or wanda@wandalau.com'),
		bodyIdent:'workInProgressContent',
		bodyCopyAlignment:'left'
	}
};


/*
** *************************** **
** Do Not Edit Below This Line **
** *************************** **
*/

var layerMaker = {
	init: function() {
		layerMaker.rebuildTheDarkness();
		for(var x in layerSets) {
			if(layerSets[x]['isActive'] == true) {
				layerMaker.construct(layerSets[x]);
				if(layerSets[x]['init']) {
					layerSets[x].init();
				}
			}
		}
	},
	
	activate: function(layerName, activatedObj) {
		toggleSelect("hide");
		toggleFlash("hide");
		if(layerSets[layerName]['overlayer'] == true) {
			layerMaker.rebuildTheDarkness();
			new Effect.Appear(document.getElementById('overlayer'), {duration:0.25, from: 0.0, to: overlayOpacity});
		}
		if(layerSets[layerName]['activate']) {
			layerSets[layerName].activate(activatedObj);
		}
		layerMaker.setPosition(layerName);
		
		new Effect.Appear(document.getElementById(layerSets[layerName].layerIdent), {duration:0.75});
	},
	
	continueBtn: function() {
		
	},
	
	deactivate: function() {
		for(var layer in layerSets) {
			if(document.getElementById(layerSets[layer]['layerIdent'])) {
				workingObj = document.getElementById(layerSets[layer]['layerIdent']);
				new Effect.Fade(workingObj, {duration:0.25});
			}
		}
		new Effect.Fade(document.getElementById('overlayer'), {duration:0.25});
		toggleSelect("show");
		toggleFlash("show");
	},
	
	setPosition: function(layerName) {

		var layerObj = document.getElementById(layerSets[layerName]['layerIdent']);
		var workingElem = positionAnchoringIdent;
		var curtop = 0;
		var curleft = 0;
		var xScroll, yScroll;
		var windowWidth, windowHeight;
		var objWidth = getStyle(layerObj, "width");
		var objHeight = getStyle(layerObj, "height");
		
		if(workingElem.offsetParent) {
			curleft = workingElem.offsetLeft;
			curtop = workingElem.offsetTop;
			while (workingElem = workingElem.offsetParent) {
				curleft += workingElem.offsetLeft;
				curtop += workingElem.offsetTop;
			}
		}
		
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;	
		}
	
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		xChange = parseInt(windowWidth)/2 - parseInt(objWidth)/2;
		yChange = parseInt("175px") + parseInt(yScroll);
		layerObj.style.top = parseInt(curtop) + parseInt(yChange) + "px";
		layerObj.style.left = parseInt(curleft) + parseInt(xChange) + "px";
	},
	
	/* ====================== ==
	** The __construct method ==
	*/
	construct: function(layerObj) {
		var objBody = document.getElementsByTagName("body").item(0);
		
		if(document.getElementById(layerObj['layerIdent'])) {
			objBody.removeChild(document.getElementById(layerObj['layerIdent']));
		}
		
		var popoverWrap = Builder.node('div', {id:layerObj['layerIdent'], className:layerObj['layerClass'], style:'display:none; position:absolute;'});
		objBody.appendChild(popoverWrap);
		
		
		var popoverTopArea = Builder.node('div', {className:'popoverTopArea'}, [
			Builder.node('h3', {className:'closePopoverBtn'}, [
				Builder.node('a', {onclick:'layerMaker.deactivate(); return false;'}, [
					Builder.node('span', {className:'headerMessage'}, 'Close Button')
				]),
			]),
		]);
		popoverWrap.appendChild(popoverTopArea);
		
		if(!layerObj['bodyIdent']) {
			layerObj['bodyIdent'] = "";
		}
		if(layerObj['headerImage']) {
			var popoverContentArea = Builder.node('div', {id:layerObj['bodyIdent'], className:'popoverContentArea'}, [
				Builder.node('h2', {className:'popoverMainTitle'}, [
					Builder.node('span', {className:'headerMessage'}, layerObj['headerCopy'])
				]),
			]);
		} else {
			var popoverContentArea = Builder.node('div', {id:layerObj['bodyIdent'], className:'popoverContentArea'}, [
				Builder.node('h2', {className:'popoverMainTitle'}, layerObj['headerCopy']),
			]);
		}
		if(layerObj['bodyCopyAlignment']) {
			popoverContentArea.style.textAlign = layerObj['bodyCopyAlignment'];
		}
		popoverWrap.appendChild(popoverContentArea);
		
		if(layerObj['bodyCopy']) {
			if(typeof(layerObj['bodyCopy']) == "string") {
				bodyObj = Builder.node('p', {className:'popoverContentBlock'}, layerObj['bodyCopy']);
				popoverContentArea.appendChild(bodyObj);
			} else {
				var bodyObj = new Array();
				for(var b=0; b<layerObj['bodyCopy'].length; b++) {
					bodyObj[b] = Builder.node('p', {className:'popoverContentBlock'}, layerObj['bodyCopy'][b]);
					popoverContentArea.appendChild(bodyObj[b]);
				}
			}
			
		}
		
		
		if(layerObj['formArea']) {
			if(typeof(layerObj['formArea']) == "function") {
				layerObj.formArea();
			} 
		}
		
		
		if(layerObj['buttonArea']) {
			var popoverButtonArea = Builder.node('div', {className:'popoverBtnArea'});
			popoverContentArea.appendChild(popoverButtonArea);
			buttonObjs = new Array();
			for(var i=0; i<layerObj['buttonArea'].length; i++) {
				switch(layerObj['buttonArea'][i]) {
					case "cancel":
						buttonObjs[i] = Builder.node('h3', {className:'cancelButton'}, [
							Builder.node('a', {onclick:'layerMaker.deactivate(); return false;'}, [
								Builder.node('span', {className:'headerMessage'}, 'Cancel Button')
							]),
						]);
						popoverButtonArea.appendChild(buttonObjs[i]);
						break;
					case "continue":
						if(layerObj['continueBtnId']) {
							workingIdent = layerObj['continueBtnId'];
						} else {
							workingIdent = "";
						}
						buttonObjs[i] = Builder.node('h3', {className:'continueButton'}, [
							Builder.node('a', {id:workingIdent, onclick:'layerMaker.continueBtn();'}, [
								Builder.node('span', {className:'headerMessage'}, 'Continue Button')
							]),
						]);
						popoverButtonArea.appendChild(buttonObjs[i]);
						break;
					case "close":
						buttonObjs[i] = Builder.node('h3', {className:'closeButton'}, [
							Builder.node('a', {onclick:'layerMaker.deactivate(); return false;'}, [
								Builder.node('span', {className:'headerMessage'}, 'Close Button')
							]),
						]);
						popoverButtonArea.appendChild(buttonObjs[i]);
						break;
					case "send":
						buttonObjs[i] = Builder.node('h3', {className:'sendButton'}, [
							Builder.node('a', [
								Builder.node('span', {className:'headerMessage'}, 'Send Button')
							]),
						]);
						popoverButtonArea.appendChild(buttonObjs[i]);
						break;
					case "sendemail":
						buttonObjs[i] = Builder.node('h3', {className:'sendButton', onclick:'submitEmailThisPage();'}, [
							Builder.node('a', [
								Builder.node('span', {className:'headerMessage'}, 'Send Button')
							]),
						]);
						popoverButtonArea.appendChild(buttonObjs[i]);
						break;
				}
			}
		}		
		
		var popoverBottomArea = Builder.node('div', {className:'popoverBottomArea'});
		popoverWrap.appendChild(popoverBottomArea);
		
	},
	
	rebuildTheDarkness: function() {
		var objBody = document.getElementsByTagName("body").item(0);
		
		if(document.getElementById('overlayer')) {
			objBody.removeChild(document.getElementById('overlayer'));
		}		
		
		var overLayer = Builder.node('div', {id:'overlayer', style:'position:absolute; top:0px; left:0px; display:none; background-color:#000000; z-index:9999;'});
		objBody.appendChild(overLayer);
		
		var arrayPageSize = getPageSize();
		overLayer.style.width = "100%";
		overLayer.style.height = arrayPageSize[1]+"px";
		overLayer.onclick = function() { layerMaker.deactivate(); return false; };
	}
};

function toggleFlash(action) {
	switch(action) {
		case "show":
			var status = "visible"
			break;
		case "hide":
			var status = "hidden";
			break;
		default:
			var status = "visible";
			break;
	}
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = status;
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = status;
	}
}

function toggleSelect(action) {
	switch(action) {
		case "show":
			var status = "visible"
			break;
		case "hide":
			var status = "hidden";
			break;
		default:
			var status = "visible";
			break;
	}
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = status;
	}
}

function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height and/or width less then height of the viewport
	if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; }
	if(xScroll < windowWidth){ pageWidth = xScroll; } else { pageWidth = windowWidth; }

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		try{
			strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		}
		catch(e){
			// Used to prevent an error in IE 5.0
		}
	}
	return strValue;
}
