/*------------------------------------
*  General Javascript functions for getnewclientsnow.com
*  Version: April 18, 2008
*  Author:  webmeadow
*  Email:  aaron@webmeadow.com
*
*  Functions:
*	loadImages -- Preloads images for rollovers
*	imageRestore -- Restores image for rollover
*	findObj -- Gets image to swap
*	swapImage -- Shows new image for rollover
*	switchInput -- Shows and Hides Password input fields
*	validateContactForm -- Validates Contact Form
*	Hide and Show -- Hides and Shows sections of content
*	Pausing up-down scroller -- Scrolls Testimonials and Challenges
*
*-------------------------------------*/

function loadImages() {
	var d=document; if(d.images){ if(!d.p) d.p=new Array();
	var i,j=d.p.length,a=loadImages.arguments;
	for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){
			d.p[j]=new Image; d.p[j++].src=a[i];
		}
	}
}

function imageRestore() { 
	var i,x,a=document.sr;
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function findObj(n, d) {
	var p,i,x;  
	if(!d) d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) x=d.all[n];
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n);
	return x;
}

function swapImage() {
	var i,j=0,x,a=swapImage.arguments;
	document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=findObj(a[i]))!=null){
		document.sr[j++]=x;
		if(!x.oSrc) x.oSrc=x.src;
		x.src=a[i+2];
	}
}


// Switch Input box on main page from "password" to "password_text" when in use
function switchInput(inputID){
	if (inputID){
		document.getElementById('password_text').style.display="none";
		document.getElementById('password').style.display=  "block";
		document.getElementById('password').focus();
	} else {
		document.getElementById('password').style.display=  "none";
		document.getElementById('password_text').style.display="block";
	}
}

// Show and Hide Call content
function toggleContent(content_label1) {

	// Hide or show based on current state
	if (document.getElementById(content_label1).style.display == 'none') {
		document.getElementById(content_label1).style.display = 'block';
	} else {
		document.getElementById(content_label1).style.display = 'none';
	}
}


// Validate Contact Form
function validateContactForm(form_name){
	// initialize variables
	var send = true;

	// reset error displays
	document.getElementById('name_error').style.display="none";
	document.getElementById('email_error').style.display="none";
	document.getElementById('phone_error').style.display="none";
	

	// check input
	if (form_name.name.value.length == 0) {
		document.getElementById('name_error').style.display="block";
		form_name.name.focus();
		send = false;
	}

	// check phone number 
	if (form_name.phone.value.length == 0) {
		document.getElementById('phone_error').style.display="block";
		form_name.phone.focus();
		send = false;	
	}
	
	// set email check variables
	email_value = form_name.email_address.value;
	at_symbol = email_value.indexOf("@");
	dot_symbol = email_value.lastIndexOf(".");

	if (form_name.email_address.value.length == 0) {
		document.getElementById('email_error').style.display="block";
		form_name.email_address.focus();
		send = false;
	} else {
		if (at_symbol == -1 || dot_symbol == -1) {
			document.getElementById('email_error').style.display="block";
			form_name.email_address.focus();
			send = false;
		}
		/* if (at_symbol < dot_symbol ) {
			document.getElementById('email_error').style.display="block";
			form_name.email_address.focus();
			send = false;
		} */
		if (at_symbol - dot_symbol == 1 ) {
			document.getElementById('email_error').style.display="block";
			form_name.email_address.focus();
			send = false;
		}		
	}
	
	return send;
}


/***********************************************
* Hide and Show - © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

	var enablepersist="off" //Enable saving state of content structure using session cookies? (on/off)
	var collapseprevious="yes" //Collapse previously open content when opening present? (yes/no)
	
	//var contractsymbol='Read Less -' //HTML for contract symbol. For image, use: <img src="whatever.gif">
	//var expandsymbol='Read More +' //HTML for expand symbol.

	var contractsymbol='&nbsp;<img src="/images/red_arrow_down.gif" alt="arrow" />'
	var expandsymbol='&nbsp;<img src="/images/red_arrow.gif" alt="arrow" />'

	if (document.getElementById){
		document.write('<style type="text/css">')
		document.write('.switchcontent{display:none;}')
		document.write('</style>')
	}
	
	function getElementbyClass(rootobj, classname){
		var temparray=new Array()
		var inc=0
		var rootlength=rootobj.length
		for (i=0; i<rootlength; i++){
			if (rootobj[i].className==classname)
			temparray[inc++]=rootobj[i]
		}
		return temparray
	}
	
	function sweeptoggle(ec){
		var thestate=(ec=="expand")? "block" : "none"
		var inc=0
		while (ccollect[inc]){
			ccollect[inc].style.display=thestate
			inc++
		}
		revivestatus()
	}
	
	function contractcontent(omit){
		var inc=0
		while (ccollect[inc]){
		if (ccollect[inc].id!=omit)
			ccollect[inc].style.display="none"
			inc++
		}
	}


	function expandcontent(curobj, cid, doc_path){
		var spantags=curobj.getElementsByTagName("SPAN")
		var showstateobj=getElementbyClass(spantags, "showstate")
		if (ccollect.length>0){
			if (collapseprevious=="yes")
			contractcontent(cid)
			document.getElementById(cid).style.display=(document.getElementById(cid).style.display!="block")? "block" : "none"
			if (showstateobj.length>0){ //if "showstate" span exists in header
				if (collapseprevious=="no")
				showstateobj[0].innerHTML=(document.getElementById(cid).style.display=="block")? contractsymbol : expandsymbol
				else
				revivestatus()
			}
		}
	}
	
	function revivecontent(){
		contractcontent("omitnothing")
		selectedItem=getselectedItem()
		selectedComponents=selectedItem.split("|")
		for (i=0; i<selectedComponents.length-1; i++)
		document.getElementById(selectedComponents[i]).style.display="block"
	}
	
	function revivestatus(){
		var inc=0
		while (statecollect[inc]){
			if (ccollect[inc].style.display=="block")
			statecollect[inc].innerHTML=contractsymbol
			else
			statecollect[inc].innerHTML=expandsymbol
		inc++
		}
	}
	
	function get_cookie(Name) { 
		var search = Name + "="
		var returnvalue = "";
		if (document.cookie.length > 0) {
			offset = document.cookie.indexOf(search)
			if (offset != -1) { 
				offset += search.length
				end = document.cookie.indexOf(";", offset);
				if (end == -1) end = document.cookie.length;
				returnvalue=unescape(document.cookie.substring(offset, end))
			}
		}
		return returnvalue;
	}
	
	function getselectedItem(){
		if (get_cookie(window.location.pathname) != ""){
			selectedItem=get_cookie(window.location.pathname)
			return selectedItem
		}
		else
		return ""
	}
	
	function saveswitchstate(){
		var inc=0, selectedItem=""
		while (ccollect[inc]){
			if (ccollect[inc].style.display=="block")
			selectedItem+=ccollect[inc].id+"|"
			inc++
		}
		document.cookie=window.location.pathname+"="+selectedItem
	}
	
	function do_onload(){
		uniqueidn=window.location.pathname+"firsttimeload"
		var alltags=document.all? document.all : document.getElementsByTagName("*")
		ccollect=getElementbyClass(alltags, "switchcontent")
		statecollect=getElementbyClass(alltags, "showstate")
		if (enablepersist=="on" && ccollect.length>0){
			document.cookie=(get_cookie(uniqueidn)=="")? uniqueidn+"=1" : uniqueidn+"=0" 
			firsttimeload=(get_cookie(uniqueidn)==1)? 1 : 0 //check if this is 1st page load
			if (!firsttimeload)
			revivecontent()
		}
		if (ccollect.length>0 && statecollect.length>0)
		revivestatus()
	}
	
	if (window.addEventListener)
		window.addEventListener("load", do_onload, false)
	else if (window.attachEvent)
		window.attachEvent("onload", do_onload)
	else if (document.getElementById)
		window.onload=do_onload
	
	if (enablepersist=="on" && document.getElementById)
		window.onunload=saveswitchstate
		



/***********************************************
* Pausing up-down scroller- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
	
	function pausescroller(content, divId, divClass, delay){
		this.content=content //message array content
		this.tickerid=divId //ID of ticker div to display information
		this.delay=delay //Delay between msg change, in miliseconds.
		this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
		this.hiddendivpointer=1 //index of message array for hidden div
		document.write('<div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><div class="innerDiv" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="innerDiv" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div>')
		var scrollerinstance=this
		if (window.addEventListener) //run onload in DOM2 browsers
			window.addEventListener("load", function(){scrollerinstance.initialize()}, false)
		else if (window.attachEvent) //run onload in IE5.5+
			window.attachEvent("onload", function(){scrollerinstance.initialize()})
		else if (document.getElementById) //if legacy DOM browsers, just start scroller after 0.5 sec
			setTimeout(function(){scrollerinstance.initialize()}, 500)
	}

	// -------------------------------------------------------------------
	// initialize()- Initialize scroller method.
	// -Get div objects, set initial positions, start up down animation
	// -------------------------------------------------------------------

	pausescroller.prototype.initialize=function(){
		this.tickerdiv=document.getElementById(this.tickerid)
		this.visiblediv=document.getElementById(this.tickerid+"1")
		this.hiddendiv=document.getElementById(this.tickerid+"2")
		this.visibledivtop=parseInt(pausescroller.getCSSpadding(this.tickerdiv))
		//set width of inner DIVs to outer DIV's width minus padding (padding assumed to be top padding x 2)
		this.visiblediv.style.width=this.hiddendiv.style.width=this.tickerdiv.offsetWidth-(this.visibledivtop*2)+"px"
		this.getinline(this.visiblediv, this.hiddendiv)
		this.hiddendiv.style.visibility="visible"
		var scrollerinstance=this
		document.getElementById(this.tickerid).onmouseover=function(){scrollerinstance.mouseoverBol=1}
		document.getElementById(this.tickerid).onmouseout=function(){scrollerinstance.mouseoverBol=0}
		if (window.attachEvent) //Clean up loose references in IE
			window.attachEvent("onunload", function(){scrollerinstance.tickerdiv.onmouseover=scrollerinstance.tickerdiv.onmouseout=null})
		setTimeout(function(){scrollerinstance.animateup()}, this.delay)
	}


	// -------------------------------------------------------------------
	// animateup()- Move the two inner divs of the scroller up and in sync
	// -------------------------------------------------------------------

	pausescroller.prototype.animateup=function(){
		var scrollerinstance=this
		if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
			this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5+"px"
			this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5+"px"
			setTimeout(function(){scrollerinstance.animateup()}, 50)
		}
		else{
			this.getinline(this.hiddendiv, this.visiblediv)
			this.swapdivs()
		setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
		}
	}

	// -------------------------------------------------------------------
	// swapdivs()- Swap between which is the visible and which is the hidden div
	// -------------------------------------------------------------------

	pausescroller.prototype.swapdivs=function(){
		var tempcontainer=this.visiblediv
		this.visiblediv=this.hiddendiv
		this.hiddendiv=tempcontainer
	}

	pausescroller.prototype.getinline=function(div1, div2){
		div1.style.top=this.visibledivtop+"px"
		div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px"
	}

	// -------------------------------------------------------------------
	// setmessage()- Populate the hidden div with the next message before it's visible
	// -------------------------------------------------------------------

	pausescroller.prototype.setmessage=function(){
		var scrollerinstance=this
		if (this.mouseoverBol==1) //if mouse is currently over scoller, do nothing (pause it)
			setTimeout(function(){scrollerinstance.setmessage()}, 100)
		else{
			var i=this.hiddendivpointer
			var ceiling=this.content.length
			this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1
			this.hiddendiv.innerHTML=this.content[this.hiddendivpointer]
			this.animateup()
		}
	}

	pausescroller.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
	if (tickerobj.currentStyle)
		return tickerobj.currentStyle["paddingTop"]
	else if (window.getComputedStyle) //if DOM2
		return window.getComputedStyle(tickerobj, "").getPropertyValue("padding-top")
	else
		return 0
	}