/* --------------------------------------------------------------------------------------------------------
AUTHOR:			Ryan Marincovich
DATE CREATED:	2009.1.8
Client:			Bicycle Theory
File Purpose:	Common Javascript File
-------------------------------------------------------------------------------------------------------- */

// OVERLAY FUNCTIONS ----------------------------------------------
var isOverlayLoaded = false;
var contentFormHTML;
var overlayF2FObj;

// build overlay objects (run onload)
function buildOverlay() {
	mainOverlayObj = eval(doc + '"mainOverlay"' + sty);
	overlayBGObj = eval(doc + '"overlayBG"' + sty);
	overlayF2FObj = eval(doc + '"overlayF2F"' + sty);
	overlayContentObj = eval(doc + '"overlayContent"' + sty);
	overlayViewerWindowObj = document.getElementById('overlayBG');
	overlayViewerBodyObj = document.getElementById('container');
	windowHeight = overlayViewerWindowObj.offsetHeight;
	contentHeight = overlayViewerBodyObj.offsetHeight;
	overlayBGObj.height = Math.max(windowHeight, contentHeight) + "px";
	
	// set form html for use by other overlay functions
	contentFormObj = document.getElementById("overlayContent");
	contentFormHTML = contentFormObj.innerHTML;
	
	// set var to note objects are built and ready
	isOverlayLoaded = true;
}

window.addEvent('domready', function() {
	// set slide vars
	var slideElement = $('navigationSlider');
	
	var slideVar = new Fx.Slide(slideElement, {
		//Fx.Slide Options
		mode: 'vertical', //default is 'vertical'
		//Fx Options
		link: 'cancel'
	}).hide();
	
	//$('navigationSlider').slide('hide');
	$('navigationContainer').setStyle('visibility', 'visible');
	
	// show menu
	$('navigationButtonContainer').addEvent('mouseenter', function(){
		slideVar.slideIn();
	});
	
	// hide menu
	$('navigationContainer').addEvent('mouseleave', function(){
		slideVar.slideOut();
	});
	
});

// function to open f2f form overlay
function f2fOpen() {
	// get object again if overlay closed without reload
	overlayF2FObj = eval(doc + '"overlayF2F"' + sty);
	scroll(0, 0);
	mainOverlayObj.visibility = 'visible';
	overlayContentObj.visibility = 'visible';
	overlayF2FObj.display = 'block';
}
// function to close f2f form overlay
function f2fClose() {
	mainOverlayObj.visibility = 'hidden';
	overlayContentObj.visibility = 'hidden';
	overlayF2FObj.display = 'none';
}
function turnOnFormBG(which) {
	var objFormField = document.getElementById(which);
	objFormField.style.background = '#d1dbe1';
}
function turnOffFormBG(which, bgColor) {
	var objFormField = document.getElementById(which);
	if (objFormField.value == '' || objFormField.value == null) {
		objFormField.style.background = bgColor;
	} else {
		objFormField.style.background = '#d1dbe1';
	}
}

// project detail content
function projectDetailOpen(intResourceID, intFirstThumbID) {
	currGalleryImage = intFirstThumbID;
	overlayOpen(intResourceID, 'project');
}

// open overlay
function overlayOpen(intResourceID, strLayerType) {
	scroll(0, 0);
	mainOverlayObj.visibility = 'visible';
	overlayContentObj.visibility = 'visible';
	var objContentContainer = document.getElementById("overlayContent");
	objContentContainer.innerHTML = '';
	var strTargetHTML = '';
	if (strLayerType == 'client') {
		var url = "/who_we_serve/client-detail.php?intResourceID="+intResourceID;
	} else if (strLayerType == 'project') {
		var url = "/what_we_do/project-detail.php?intResourceID="+intResourceID;
	} else if (strLayerType == 'video') {
		var url = "/_page_templates/video-detail.php?intResourceID="+intResourceID;
		strTargetHTML = '<div id="videoFlashPlayer"></div>';
	} else if (strLayerType == 'game') {
		var url = "/_page_templates/game-detail.php?intResourceID="+intResourceID;
		strTargetHTML = '<div id="videoFrame"></div>';
	} else if (strLayerType == 'photos') {
		var url = "/_page_templates/gallery-detail.php?intResourceID="+intResourceID;
		strTargetHTML = '<div id="photoGalleryFrame"></div>';
	} else if (strLayerType == 'review') {
		var url = "/_page_templates/review-detail.php?intResourceID="+intResourceID;
	}
	objContentContainer.innerHTML = strTargetHTML;
	ajaxOpenDetails(intResourceID, url, objContentContainer);
}

// function to close client detail
function overlayClose() {
	var objContentContainer = document.getElementById("overlayContent");
	objContentContainer.innerHTML = contentFormHTML;
	overlayContentObj.visibility = 'hidden';
	mainOverlayObj.visibility = 'hidden';
}

// ajax function to show detail in overlay
function ajaxOpenDetails(intResourceID, url, layerObject) {
	var xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4) {
			layerObject.innerHTML += xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

// function to open photo gallery overlay
function photoGalleryOpen(intResourceID) {
	// open the overlay
	overlayOpen(intResourceID, 'photos');
	
	// get photo frame object
	var objGalleryContainer = document.getElementById("photoGalleryFrame");
	objGalleryContainer.innerHTML = '';
	// init html var and fill with content
	var strHTML = '';
	strHTML += '<div style="text-align:center; margin-bottom: 10px; display:none;">Photo Gallery ' + intResourceID + '</div>';
	strHTML += '<script type="text/javascript">';
	strHTML += '	AC_FL_RunContent(\'writeToID\',\'photoGalleryFrame\',\'codebase\',\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\',\'bgcolor\',\'#000000\',\'width\',\'640\',\'height\',\'480\',\'title\',\'Photo Gallery\',\'src\',\'/_framework/ctown_photos?intResourceID=' + intResourceID + '\',\'quality\',\'high\',\'pluginspage\',\'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\',\'movie\',\'/_framework/ctown_photos?intResourceID=' + intResourceID + '\');';
	strHTML += '<\/script>';
	strHTML += '<noscript>';
	strHTML += '	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="640" height="480" title="Photo Gallery">';
	strHTML += '		<param name="movie" value="/_framework/ctown_photos.swf?intResourceID=' + intResourceID + '" />';
	strHTML += '		<param name="quality" value="high" />';
	strHTML += '		<param name="bgcolor" value="#000000" />';
	strHTML += '		<embed src="/_framework/ctown_photos.swf?intResourceID=' + intResourceID + '" quality="high" bgcolor="#000000" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="640" height="480"></embed>';
	strHTML += '	</object>';
	strHTML += '</noscript>';
	// set frame html
	objGalleryContainer.innerHTML = strHTML;
	// eval all script that was set in html
	var x = objGalleryContainer.getElementsByTagName("script");
	for (var i=0; i < x.length; i++) {
		eval(x[i].text);
	}
}

// define function to start playing a video in a div obj without reloading the page
function videoOpen(intResourceID, strFlashSRC) {
	// open the overlay
	overlayOpen(intResourceID, 'video');
	
	// get frame objects
	var objVideoFrame = document.getElementById('videoFlashPlayer');
	objVideoFrame.innerHTML = '';
	// init html var and fill with content
	var strHTML = '';
	strHTML += '<div style="text-align:center; margin-bottom: 10px; display:none;">Playing: ' + strFlashSRC + '</div>';
	strHTML += '<script type="text/javascript">';
	strHTML += '	AC_FL_RunContent(\'writeToID\',\'videoFlashPlayer\',\'codebase\',\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\',\'width\',\'400\',\'height\',\'345\',\'wmode\',\'transparent\',\'title\',\'Video\',\'src\',\'/_framework/flash_video?strVideoFilename=' + strFlashSRC + '\',\'quality\',\'high\',\'pluginspage\',\'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\',\'movie\',\'/_framework/flash_video?strVideoFilename=' + strFlashSRC + '\');';
	strHTML += '<\/script>';
	strHTML += '<noscript>';
	strHTML += '	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="400" height="345" title="Video">';
	strHTML += '		<param name="movie" value="/_framework/flash_video.swf?strVideoFilename=' + strFlashSRC + '" />';
	strHTML += '		<param name="quality" value="high" />';
	strHTML += '		<param name="wmode" value="transparent" />';
	strHTML += '		<embed src="/_framework/flash_video.swf?strVideoFilename=' + strFlashSRC + '" quality="high" wmode="transparent" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="400" height="345"></embed>';
	strHTML += '	</object>';
	strHTML += '</noscript>';
	// set video frame html
	objVideoFrame.innerHTML = strHTML;
	// eval all script that was set in html
	var x = objVideoFrame.getElementsByTagName("script");
	for (var i=0; i < x.length; i++) {
		eval(x[i].text);
	}
}

var currGalleryImage = null;

function turnOnFirstImage(which) {
	if (currGalleryImage == null) {
		currGalleryImage = which;
	}
	eval(doc + '"galleryMain' + currGalleryImage + '"' + sty + ".visibility = \'visible\'");
	eval(doc + '"tinyThumbOn' + currGalleryImage + '"' + sty + ".visibility = \'visible\'");
}

function galleryNavOver(which) {
	if ((currGalleryImage != null) && (currGalleryImage != which)) {
		eval(doc + '"galleryMain' + currGalleryImage + '"' + sty + ".visibility = \'hidden\'");
		eval(doc + '"tinyThumbOn' + currGalleryImage + '"' + sty + ".visibility = \'hidden\'");
	}
	currGalleryImage = which;
	eval(doc + '"galleryMain' + currGalleryImage + '"' + sty + ".visibility = \'visible\'");
	eval(doc + '"tinyThumbOn' + currGalleryImage + '"' + sty + ".visibility = \'visible\'");
	window.status = " ";
}

// define function to start playing a video in a div obj without reloading the page
function gameOpen(intResourceID, strFlashSRC, intFlashWidth, intFlashHeight) {
	// open the overlay
	overlayOpen(intResourceID, 'game');
	
	// get frame objects
	var objVideoFrame = document.getElementById('videoFrame');
	objVideoFrame.innerHTML = '';
	// calculate off set for flash container
	var intMaxWidth = 480;
	var intStartLeftMargin = 40;
	var intFrameLeftMargin = (intMaxWidth - intFlashWidth) / 2 + intStartLeftMargin;
	
	// init html var and fill with content
	var strHTML = '';
	strHTML += '<div style="text-align:center; margin-bottom: 10px; display:none;">Playing: ' + strFlashSRC + '</div>';
	strHTML += '<div id="videoContent" style="left: ' + intFrameLeftMargin + 'px; width: ' + intFlashWidth + 'px; height: ' + intFlashHeight + 'px;">';
	strHTML += '<script type="text/javascript">';
	strHTML += '	AC_FL_RunContent(\'writeToID\',\'videoContent\',\'codebase\',\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\',\'width\',\'' + intFlashWidth + '\',\'height\',\'' + intFlashHeight + '\',\'wmode\',\'transparent\',\'title\',\'Video\',\'src\',\'' + strFlashSRC + '\',\'quality\',\'high\',\'pluginspage\',\'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\',\'movie\',\'' + strFlashSRC + '\');';
	strHTML += '<\/script>';
	strHTML += '<noscript>';
	strHTML += '	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="' + intFlashWidth + '" height="' + intFlashHeight + '" title="Video">';
	strHTML += '		<param name="movie" value="' + strFlashSRC + '.swf" />';
	strHTML += '		<param name="quality" value="high" />';
	strHTML += '		<param name="wmode" value="transparent" />';
	strHTML += '		<embed src="' + strFlashSRC + '.swf" quality="high" wmode="transparent" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="' + intFlashWidth + '" height="' + intFlashHeight + '"></embed>';
	strHTML += '	</object>';
	strHTML += '</noscript>';
	strHTML += '</div>';
	// set video frame html
	objVideoFrame.innerHTML = strHTML;
	// eval all script that was set in html
	var x = objVideoFrame.getElementsByTagName("script");
	for (var i=0; i < x.length; i++) {
		eval(x[i].text);
	}
}

// END OVERLAY FUNCTIONS ------------------------------------------

// UTILITY FUNCTIONS/DATA --------------------------------------------------

// sets cursor focus on the field given by param (formID.fieldID)
function formFocus(strFormAndFieldIDs) {
	if (isPageLoaded) {
		eval("document.forms." + strFormAndFieldIDs + ".focus();");
	} else {
		setTimeout("formFocus('" + strFormAndFieldIDs + "')", 100);
	}
}

// swap one or more images
function changeImages() {
	if (document.images) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			var argArray = arguments[i].split('.');
			var objName;
			if ((document.layers && argArray.length > 1) || argArray.length <= 1) {
				objName = eval("document." + arguments[i]);
			} else {
				objName = eval("document." + argArray[argArray.length - 1]);
			}
			objName.src = eval(changeImages.arguments[i+1] + ".src");
		}
	}
}

// dhtml layer variables for cross-browser compatability
if (document.layers) {	// Netscape 4
	doc = "document[";
	conDoc = "document";
	sty = "]";
	htm = ".document";
	cls = "].className";
} else if (document.getElementById) {	// NS 6 or IE 5 and up (W3C compliant browsers).
	doc = "document.getElementById(";
	conDoc = "document.getElementById(";
	sty = ").style";
	htm = ".document";
	cls = ").className";
} else if (document.all) {	// IE 4
	doc = "document.all[";
	conDoc = "document.all[";
	sty = "].style";
	htm = "";
	cls = "].className";
}