// JavaScript Document

/* extends a js object */
function abnJsExtendObject(d, s)
{
	for (p in s)
	{
		d[p] = s[p];
	}
	return d;
}

/* attaches an event to an object */
function abnJsAttachEvent(obj,evt,fnc)
{
	if(window.addEventListener)
	{
		obj.addEventListener(evt, fnc, false);
	}
	else if(window.attachEvent)
	{
		obj.attachEvent('on'+evt, fnc);
	}
	else if (obj.getElementById && evt=='load')
	{
		obj.onload = fnc;
	}
}

/* gets an element from the DOM based on it's className */
document.getElementsByClassName = function(cls,n,t)
{
	if(cls=='')
	{
		return '';
	}
	var rtn = [];
	n=n===null?document:n;
	t=t===null?'*':t;
	var els = n.getElementsByTagName ? n.getElementsByTagName(t) : document.all;
	els = (!els||!els.length ) && document.all ? document.all : els;
	if(cls==null){return els;}
	for (var i=0,j=0; i < els.length; i++)
	{
		if(els[i].className.match("(^|\\s)"+cls+"(\\s|$)"))
		{
			rtn[j++] = els[i];
		}
	}
	return rtn;
};

/* hide elements by recognizing the classname */
function hideElements(className)
{
	var objects = document.getElementsByClassName(className,null,null);
	for(var i=0; i<objects.length; i++)
	{
		objects[i].style.display = "none";
	}
}

/* show elements by recognizing the classname */
function showElements(className)
{
	var objects = document.getElementsByClassName(className,null,null);
	for(var i=0; i<objects.length; i++)
	{
		objects[i].style.display = "block";
	}	
}

/* copy attribute "ALT" to "TITLE", specially for FireFox */
function setTitlesForImages()
{
	theObjects = document.getElementsByTagName("IMG");

	for(var i=0; i<theObjects.length; i++)
	{
		if(theObjects[i].alt!="")
		{
			theObjects[i].title = theObjects[i].alt;
		}
		else
		{
			theObjects[i].alt = " ";
		}
	}
	
	theObjects = document.getElementsByTagName("INPUT");
	
	for(var i=0; i<theObjects.length; i++)
	{
		if(theObjects[i].src!="")
		{
			theObjects[i].title = theObjects[i].alt;
		}
	}
}

/*fix for flickering background images in IE 6*/
function fixIE6flicker()
{
	var m = document.uniqueID /*IE*/ 
	&& document.compatMode /*>=IE6*/ 
	&& !window.XMLHttpRequest /*<=IE6*/ 
	&& document.execCommand ; 
	try
	{ 
		if(!!m)
		{ 
			m("BackgroundImageCache", false, true) /* = IE6 only */ 
		} 
	}
	catch(oh)
	{}; 	
}

function jsfDisplayDiv(formElement, formValue, displayDiv) {
	var valMatch;
	valMatch = eval("(document.getElementById('" + formElement + "').value) == '" + formValue + "'");
	if (valMatch) {
		document.getElementById(displayDiv).style.display = "block";
		abnJsAttachEvent(document.getElementById(formElement + "Val"),'blur', function(){validateTextBox(formElement + "Val");});
	} else {
		document.getElementById(displayDiv).style.display = "none";
	}
}

function validateForm01(e) {
	var validate01 = validateTextBox("input02");
	var validate02 = validateTextBox("input03");
	var validate03 = validateTextBox("input05");
	var validate04 = validateTextBox("input06");
	var validate05 = validateTextBox("input07");
	var validate06 = validateSelect("jstOther", 1, 1);
	var validate07 = validateSelect("input11", 0, 0);
	var validate08 = validateRepeatField("input06", "input07");
	
	if (validate01 && validate02 && validate03 && validate04 && validate05 && validate06 && validate07) {
		document.forms[0].submit();
		return true;
	} else {
		e=e||window.event;
	if(e.stopPropogation) {e.stopPropogation();}
	  else {e.cancelBubble = true;}
	if(e.preventDefault) {e.preventDefault();}
	  else {e.returnValue = false;}  
		}  
}
function validateRepeatField(formElement1, formElement2) {
	if ((document.getElementById(formElement1).value != "") && (document.getElementById(formElement2).value != "")) {
		if (document.getElementById(formElement1).value != document.getElementById(formElement2).value) {
			displayError(formElement1);
			displayError(formElement2);
			return false;
		} else {
			removeError(formElement1);
			removeError(formElement2);
			return true;
		}
	} else {
		return true;
	}
}
function validateTextBox(formElement) {
	if (document.getElementById(formElement).value == "") {
		displayError(formElement);
		return false;
	} else {
		removeError(formElement);
		return true;
	}
}
function validateSelect(formElement, hasChild, isMandatory) {
	var validateChild = true;
	if (document.getElementById(formElement).selectedIndex <= 0) {
		displayError(formElement);
		return false;
	} else {
		
		if (hasChild && isMandatory) {
			if (document.getElementById(formElement+"Div").style.display=="block") {
				validateChild = validateTextBox(formElement+"Val");
			}
			
		}
		removeError(formElement);
		return (validateChild && true);
	}
}
function displayError(formElement) {
	var error01 = document.createElement("SPAN");
	error01.className = "abnContentStyle30e";
	error01.id = formElement + "Err";
	
	var error02 = document.createElement("IMG");
	error02.src="../../../_images/error.gif";
	
	error01.appendChild(error02);
	document.getElementById(formElement).parentNode.appendChild(error01);
}
function removeError(formElement) {
	if (document.getElementById(formElement+"Err")) {
		document.getElementById(formElement+"Err").parentNode.removeChild(document.getElementById(formElement+"Err"));
	}
}
function loadOnlineDemo()
{
	if ($$('jstFlashLightbox', document.body, 'A')[0] != undefined)
		var flaLocation = $$('jstFlashLightbox', document.body, 'A')[0].href+'../../_swf/tour.swf';
	else
		var flaLocation = window.location+'../../_swf/tour.swf';

	var fla = new HW.Flash();
	fla.src = [9,flaLocation];
	fla.id = "flashmovietour";
	fla.name = "flashmovietour";
	fla.swliveconnect = "true";		
	fla.src = [9,flaLocation];
	fla.height = 478;
	fla.width = 638;

	fla.load('jstOnlineDemoFlashContainer');

	
}
/* default way to load function on window load */
function abnJsLoad()
{
	
	fixIE6flicker();
	setTitlesForImages();
	hideElements("jstHide");
	showElements("jstShow");
	
	if(document.getElementById("jstOther")) {
		jsfDisplayDiv('jstOther', 'Other', 'jstOtherDiv');
		abnJsAttachEvent(document.getElementById("jstOther"),'change', function(){jsfDisplayDiv('jstOther', 'Other', 'jstOtherDiv');});
	}
	
	if(document.getElementById("jstSubmit")) {
		abnJsAttachEvent(document.getElementById("jstSubmit"),'click', function(e){validateForm01(e);});
		abnJsAttachEvent(document.getElementById("input02"),'blur', function(){validateTextBox("input02");});
		abnJsAttachEvent(document.getElementById("input03"),'blur', function(){validateTextBox("input03");});
		abnJsAttachEvent(document.getElementById("input05"),'blur', function(){validateTextBox("input05");});
		abnJsAttachEvent(document.getElementById("input06"),'blur', function(){validateTextBox("input06");});
		abnJsAttachEvent(document.getElementById("input07"),'blur', function(){validateTextBox("input07");});
		abnJsAttachEvent(document.getElementById("input06"),'blur', function(){validateRepeatField("input06", "input07");});
		abnJsAttachEvent(document.getElementById("input07"),'blur', function(){validateRepeatField("input06", "input07");});
		abnJsAttachEvent(document.getElementById("jstOther"),'change', function(){validateSelect("jstOther", 1, 1);});
		abnJsAttachEvent(document.getElementById("jstOtherVal"),'blur', function(){validateTextBox("jstOtherVal");});
		abnJsAttachEvent(document.getElementById("input11"),'change', function(){validateSelect("input11", 0, 0);});
	}

	if($$('jstFlashLightbox', document.body, 'A').length > 0){
		//attach GA tracking
		var arrLightBox = $$('jstFlashLightbox', document.body, 'A');
		for (var i=0; i<arrLightBox.length; i++) {
			arrLightBox[i].onclick = function(e){
				if(this.href.indexOf("https://") != -1){
					pageTracker._trackPageview(this.href.substring(this.href.indexOf("/",8)));
				}else{					
					pageTracker._trackPageview(this.href.substring(this.href.indexOf("/",7)));					
				}				
			}
		}		
		HW.LightBox.callback  = function(e){
			loadOnlineDemo();
			return false;
		}
		HW.LightBox.closeButton = '<img src="'+$$('jstFlashLightbox', document.body, 'A')[0].href+'../../_images/btn-online-demo-close.gif"/>';
	}else if (document.getElementById('jstOnlineDemoFlashContainer')){
			loadOnlineDemo();
		}	
}

abnJsAttachEvent(window,'load',abnJsLoad);
