// JavaScript Document
/**************************************************************************************************************************
	File: Arrow.js
	Author: Greg Kolinski
	Created Date: 6/3/2010	
	Updated By:	
	Update Date: 
	Description: A Collection of Javascript Functions for use in the system
	Uses: 
*************************************************************************************************************************/
/*********************
	Name: addDOMLoadEvent
	Purpose: event to check if the DOM is loaded use by adding addDOMLoadEvent(something); into code.
	Parameters: fn
	Returns: 
*********************/
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;

            // kill the timer
            clearInterval(load_timer);

            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();

        if (!load_events[0]) 
		{
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);
         
            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) 
			{ // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }
        load_events.push(func);
    }
})();

/*********************
	Name: SwitchPics1
	Purpose: 
	Parameters: 
	Returns: 
*********************/
function SwitchPics1()
{
	if(document.getElementById("Pics1").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "inline"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics2").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "inline"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics3").style.display == "inline")
	{	
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "inline"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics4").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "inline"
	}
	else if(document.getElementById("Pics5").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "inline"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else
	{
		document.getElementById("Pics1").style.display = "inline"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	var t=setTimeout("SwitchPics2()",3000);
}

/*********************
	Name: SwitchPics2
	Purpose: 
	Parameters: 
	Returns: 
*********************/
function SwitchPics2()
{
	if(document.getElementById("Pics1").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "inline"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics2").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "inline"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics3").style.display == "inline")
	{	
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "inline"
		document.getElementById("Pics5").style.display = "none"
	}
	else if(document.getElementById("Pics4").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "none"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "inline"
	}
	else if(document.getElementById("Pics5").style.display == "inline")
	{
		document.getElementById("Pics1").style.display = "inline"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	else
	{
		document.getElementById("Pics1").style.display = "inline"
		document.getElementById("Pics2").style.display = "none"
		document.getElementById("Pics3").style.display = "none"
		document.getElementById("Pics4").style.display = "none"
		document.getElementById("Pics5").style.display = "none"
	}
	var t=setTimeout("SwitchPics1()",3000);
}

/*****************************************************
	   Name: emailFieldFocus
	Purpose: Place Cursor in Field 
	 Params:
	Returns: 
*****************************************************/
function emailFieldFocus()
{
	document.SendEmail_frm.Name.focus();
	document.SendEmail_frm.Name.select();
}
/*****************************************************
	   Name: checkRequiredField
	Purpose: Validates an input field for data
	 Params: elem = document.getElementById("ElementID");
	Returns: T/F
*****************************************************/
function checkRequiredField(elem) 
{
	return elem.value.length > 0;
}

/*****************************************************
	   Name: checkValidEmail
	Purpose: Validates an email address using a regular expression 
	 Params: elem = document.getElementById("ElementID");
	Returns: T/F
*****************************************************/
function checkValidEmail(elem) 
{
	var emailRegex = /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i;  
	//var emailRegex = /^[a-zA-Z0-9\.?'_-]+@[a-zA-Z0-9\.?-]+\.[a-zA-Z]{2,6}$/;  
	return emailRegex.test(elem.value);
}

/*****************************************************
	   Name: checkValidPhone
	Purpose: Validates a phone number using a regular expression an formats it  
	 Params: elem = document.getElementById("ElementID");
	Returns: T/F
*****************************************************/
function checkValidPhone(elem) 
{
	var phRegex = /(\d{3}).*(\d{3}).*(\d{4})/.exec(elem.value);
	// If it is valid - force it into the specific format:(123) 456-7890
	if ( phRegex !== null )
	{
		elem.value = "(" + phRegex[1] + ") " + phRegex[2] + "-" + phRegex[3];
		return phRegex !== null;
	}
}

/*****************************************************
	   Name: validateContactForm
	Purpose: Validates input fields on the Contact Us form
	 Params:
	Returns: T/F
*****************************************************/
function validateContactForm()
{
	var name = document.getElementById("Name"); // Input Element
	var email = document.getElementById("Email"); // Input Element
	var phone = document.getElementById("Phone"); // Input Element
	var subject = document.getElementById("Subject"); // Input Element
	var message = document.getElementById("Message"); // Input Element
	var valid = true;
	
	errMsg = document.getElementById("NmErr"); //blank <td>
	errMsg.innerHTML = "";
	errMsg = document.getElementById("EmErr"); //blank <td>
	errMsg.innerHTML = "";
	errMsg = document.getElementById("PhErr"); //blank <td>
	errMsg.innerHTML = "";
	errMsg = document.getElementById("SbErr"); //blank <td>
	errMsg.innerHTML = "";
	errMsg = document.getElementById("MgErr"); //blank <td>
	errMsg.innerHTML = "";
	
	//Name
	if(!checkRequiredField(name)) 
	{ // show error message
		errMsg = document.getElementById("NmErr"); // display text in <td>
		errMsg.innerHTML = name.getAttribute("name")+" is blank";
		valid = false;
	}
	//Email
	if(!checkRequiredField(email)) 
	{ // show error message
		errMsg = document.getElementById("EmErr"); // display text in <td>
		errMsg.innerHTML = email.getAttribute("name")+" is blank";
		valid = false;
	}
	else if(!checkValidEmail(email)) 
	{ // show error message
		errMsg = document.getElementById("EmErr"); // display text in <td>
		errMsg.innerHTML = "Format is invalid";
		valid = false;
	}
	//Phone
	if(phone.value.length > 0)
	{	
		if(!checkValidPhone(phone)) 
		{// show error message
				errMsg = document.getElementById("PhErr"); // display text in <td>
				errMsg.innerHTML = "Format is invalid";
				valid = false;
		}
	}
	//Subject
	if(!checkRequiredField(subject)) 
	{ // show error message
		errMsg = document.getElementById("SbErr"); // display text in <td>
		errMsg.innerHTML = subject.getAttribute("name")+" is blank";
		valid = false;
	}
	//Message
	if(!checkRequiredField(message)) 
	{ // show error message
		errMsg = document.getElementById("MgErr"); // display text in <td>
		errMsg.innerHTML = message.getAttribute("name")+" is blank";
		valid = false;
	}
	
	return valid;
}

/******************************************************************************************************************
													 AJAX
******************************************************************************************************************/
/*****************************************************
	   Name: SwitchPage()
	Purpose: AJAX Function for switching page content
	 Params: str, a value to designate a page
	Returns: 
*****************************************************/
function SwitchPage(str)
{
	var xmlhttp;
	// Create the XMLHTTP Object
	if (window.XMLHttpRequest)
  	{	// code for IE7+, Firefox, Chrome, Opera, Safari
  		xmlhttp=new XMLHttpRequest();
  	}
	else
  	{	// code for IE6, IE5
  		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  	}

	// POST/Form Data
	xmlhttp.open("POST","Apiec_AJAXPageSwitch.php",true);
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	xmlhttp.send("btnVal="+str);
	
	// XML Response Object
	//xmlDoc=xmlhttp.responseXML;
	//xmlresponse=xmlDoc.getElementsByTagName("RESPONSE");
	//document.getElementById("Switch").innerHTML=xmlresponse;
	
	xmlhttp.onreadystatechange=function()
  	{
  		if (xmlhttp.readyState==4 && xmlhttp.status==200)
    	{
			// Text/HTML Reponse
    		document.getElementById("Switch").innerHTML=xmlhttp.responseText;
    	}
  	} 

}
