
/*------------------------------
globalNav Animation functions js +
gNContact form functions
Author: Andy Sherman
Created: 02/12/09
Mod: 04/05/09
-------------------------------*/

/*-------------------------------------------------------------------
globalNav Animate in/out with form specific show/hide dependencies
--------------------------------------------------------------------*/
function gNAnimate(formType,btnID) {
	jQuery(document).ready(function() {
		//add id hash
		formType = "#" + formType;
		btnID = "#" + btnID
		//var for gNactive state html
		var gNActHtml = '<span class="gNOpenState"></span>';
		
		//check if formRequested is visible
		if($(formType).css("display") =="block") {
			//formRequested is visible
			if($("#globalNavCont").css("marginTop") =="-149px") {//closed
				//globalNav closed
				//open global nav
				$("#globalNavCont").animate({"marginTop": "0px"}, "slow");
				//attach active gN button state and animate it in
				//attach html
				$(btnID).append(gNActHtml);
				//animate active span in
				//$("span.gNOpenState").animate({"height": "10px"}, "slow");
			}else{
				//globalNav is open
				//close form because this is call to close [form was already visible and nav was open]
				$("#globalNavCont").animate({"marginTop": "-149px"}, "slow");
				$('span.gNOpenState').remove();
				//$("span.gNOpenState").animate({"height": "0px"}, "slow");
			}	
		//requestedForm NOT visible
		}else {
			//formRequested is hidden
			if($("#globalNavCont").css("marginTop") =="-149px") {//closed
				//formRequested is not visible and menu closed
				//show requested form
				$(formType).css({"display":"block"});
				if(formType == "#gNContactForm") {
					$("#gNSearchForm").css({"display":"none"});
				}else{
					$("#gNContactForm").css({"display":"none"});
				}
				//open globalNav
				$("#globalNavCont").animate({"marginTop": "0px"}, "slow");
				//attach active gN button state and animate it in
				//attach html
				$(btnID).append(gNActHtml);
			}else{
				//globalNav is open and form is not visible
				//show form [do Not Animate form as already open]
				$(formType).css({"display":"block"});
				$('span.gNOpenState').remove();
				$(btnID).append(gNActHtml);
				if(formType == "#gNContactForm") {
					$("#gNSearchForm").css({"display":"none"});
				}else{
					$("#gNContactForm").css({"display":"none"});
				}
			}
		}
		//set focus to first form element in gN
		var formArr = $(formType +' input');
		$(formArr[0]).focus();
		
	//documentReady end
	});
}

/*---------------------------------------
gN form onFocus/onBlur styling
- finds all type elements and adds event
---------------------------------------*/

jQuery(document).ready(function() {
	$('#gNContactForm input,#gNContactForm textarea').focus(function() {		
		if($(this).attr("type") != "button") {
			//if this is not a button apply style
			$(this).css({"background": "#C4C6C6"});
		}
	})
	$('#gNContactForm input,#gNContactForm textarea').blur(function() {
		if($(this).attr("type") !="button") {
			//if this is not a button apply style
			$(this).css({"background": "#6A6B6B"});
		}
	})
	$('##gNSearchForm input').focus(function() {
		$(this).css({"background": "#C4C6C6"});
	})
	$('##gNSearchForm input').blur(function() {
		$(this).css({"background": "#6A6B6B"});
	})
});

/*----------------------
contact form validation
----------------------*/
function validate_form(formObj) {
	//alert(document.forms[formObj].elements.length);
	//jQuery(document).ready(function() {
		/*null allowed list -> designate fields that are NOT required*/
		var nullAllowList = new Array();
		nullAllowList[0] = "gNPhone1";
		nullAllowList[1] = "gNPhone2";
		nullAllowList[2] = "gNPhone3";
		nullAllowList[3] = "gNMsg";
		nullAllowList[4] = "hP";
		nullAllowList[5] = "newsCheck";
		nullAllowList[6] = "pageName";
		var nullAllow = false;
	
		for(i=0;i<=(document.forms[formObj].elements.length - 1);i++){		
			if(document.forms[formObj].elements[i].value==""){
				for(x=0;x<= nullAllowList.length;x++){
					if(document.forms[formObj].elements[i].name == nullAllowList[x]){
						nullAllow = true;
						//alert("this field is allowed to be null");
						break;
					}else{
						nullAllow = false;
						//alert("this field is NOT allowed to be null");
					}
				}
				if(nullAllow == false){
					document.forms[formObj].elements[i].focus();
					document.forms[formObj].elements[i].style.background="#ff0000";
					//document.forms[1].elements[i].parentNode.getElementsByTagName('label')[0].style.background="#0fffff";
					//document.forms[1].elements[i].parentNode.getElementsByTagName('label')[0].innerHTML += "<span class=\"formWarning\">field required</span>";
					document.forms[formObj].elements[i].parentNode.getElementsByTagName('label')[0].getElementsByTagName('span')[0].style.display="inline";

					return false;	
				}
			}
		}
		//returns true to variable in contactSubmit()
		return true;
//	});
}



/*------------------------------------------------------------
gN Contact AJAX data submission/reponse
- !! as of right now seems that changing attribute.type might not work (making this impossible)
- !! not implemented
-----------------------------------------------------------*/
function contactSubmit(){
	var valid = validate_form("gNContactForm");
	if(valid) {
		jQuery(document).ready(function() {
			//show sending msg
			$("#contactResponse").css("display", "block");
			$("#contactResponse span").text("Sending Data...");
			//disable submit button
			$('#contactSubBtn').attr("disabled", "disabled"); // To disable
			//$('#contactSubBtn').css("background","#333");
		
			//serialize form data
			var gNFormData = $("form#gNContactForm").serialize();//serialize from array into querystring values
			//$("#contactResponse").text(gNFormData); test of serialized data
	
			$.ajax({
				type: "POST",
				url: "/contactHandler.php",
				data: gNFormData,
				success: function(html){
					$("#contactResponse span").text(html);
					$('#contactSubBtn').removeAttr("disabled"); // To enable btn
					//start timers
					setTimeout("backToPositionMsg()",2000);
				}
			});	
		});
	}else {
		//alert("not valid");
	}
}

/*show back to position msg*/
function backToPositionMsg() {
	jQuery(document).ready(function() {
		$("#contactResponse span").text("Moving back to previous page position");
		$("#contactResponse").css("backgroundPosition", "bottom");
		setTimeout("backToPosition()",2000);
	});
}
/*move back to page position if was one*/
function backToPosition() {
	jQuery(document).ready(function() {
		//close form etc
		contactPostSubmit();
		//reset bg on message
		$("#contactResponse").css("backgroundPosition", "top");
		//clear form data
		clearFormData('gNContactForm');
		//move back to anchor position if content contact link
		self.location.hash = "#iwashere";
		//remove name from link
		$('#contentContainer').find('*[name="iwashere"]').removeAttr("name");
		
	});
}

/*executed post contact form submission*/
function contactPostSubmit() {
	jQuery(document).ready(function() {
		//logic in function evals and thus closes with params set
		gNAnimate('gNContactForm','gNContact');
		//hide feedback msg
		$("#contactResponse").css("display", "none");
		
		//!! need another time to initiate below after animate out complete - use jquery and stack the animations
		/*example below from : http://interactivevolcano.com/jquery-animation-timing
		$('#image1') . animate( { 'width' : 0 }, function() {
		    $('#image1').removeClass( 'animating' );
		}) . addClass('animating');
		*/
	});
}

function clearFormData(formObj) {
	jQuery(document).ready(function() {
		//var form = "#"+formObj;
		for(i=0;i<=(document.forms[formObj].elements.length - 1);i++){
			if($(document.forms[formObj].elements[i]).attr("type") != "button") {
				//if not submit btn
				document.forms[formObj].elements[i].value="";
			}
		}
	});
}






