// JavaScript Document
// Show and Hide Layers For Error Message
function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
	if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
	obj.visibility=v; }
}
//This Is The AJAX NEEDED VARIABLES
var xmlHttp;


var siteHeaderUrl = "/tiles/tile_header.jsp";
var requestCARTADD = '/content/orderfiles/modify_CartProduct.jsp?action=add&productCode=';
var requestCARTADDALL = '/content/orderfiles/modify_CartProduct.jsp?action=addAll';
var requestCARTREMOVE = '/content/orderfiles/modify_CartProduct.jsp?action=remove&productCode=';
//var requestADDURL = '/content/orderfiles/modify_ads.jsp?productCode=';
//var requestREMOVEURL = '/content/orderfiles/modify_ads.jsp?removeItem=';
//var requestSITEURL = '/content/orderfiles/modify_CartProduct.jsp?allproducts=';
var requestLOGIN = '/content/orderfiles/login_site.jsp?email=';
var requestNewUser = '/content/orderfiles/newUser.jsp?';
var requestReturnUser = '/content/orderfiles/returningUserLogin.jsp?';
var requestUserInfo = '/content/orderfiles/updateUserInfo.jsp?';
var requestConfirmInfo = '/content/orderfiles/terms.jsp?';
var requestConfirmTerm = '/content/orderfiles/termsSubmit.jsp?';
var requestItemLock = '/content/orderfiles/modify_CartProduct.jsp?itemLock=';
var requestResetUser = "/content/orderfiles/resetUser.jsp";


var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
var is_opera = ((navigator.userAgent.indexOf("Opera 6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0;
//netscape, safari, mozilla behave the same???
var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;


function enterKeyPress(event, theFunction){
	if(event.keyCode==13 || event.which==13){
		theFunction(); return false;
	}
}
function siteLogin(){
	document.login.submit();
}

//This is the Ajax Add Items Code
function add_product(code){
	if (code.length > 0){
		var url = requestCARTADD + code;
		xmlHttp = GetXmlHttpObject(handlerModifyProducts);
		xmlHttp_Get(xmlHttp, url);
	}
	else {
		document.getElementById('CartAds').innerHTML = 'Item Could Not Be Added';
		document.getElementById('CartItems').innerHTML = 'Item Could Not Be Added';
	}
}
function add_all_products(){
	var url = requestCARTADDALL;
	xmlHttp = GetXmlHttpObject(handlerModifyProducts);
	xmlHttp_Get(xmlHttp, url);
}
//This is the Ajax REMOVE Items Code
function remove_product(code){
	if (code.length > 0){
		var url = requestCARTREMOVE + code;
		xmlHttp = GetXmlHttpObject(handlerModifyProducts);
		xmlHttp_Get(xmlHttp, url);
	}
	else {
		document.getElementById('CartAds').innerHTML = 'Item Could Not Be Added';
		document.getElementById('CartItems').innerHTML = 'Item Could Not Be Added';
	}
}
function handlerModifyProducts(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		cartAdsContent = getInnerContentFromTag(str, "CartAds");
		cartItemsContent = getInnerContentFromTag(str, "CartItems");
		document.getElementById('CartAds').innerHTML = cartAdsContent;
		document.getElementById('CartItems').innerHTML = cartItemsContent;
	}
}
function itemLock(strName){
	if (strName.length > 0){
		var url = requestItemLock + strName;
		xmlHttp = GetXmlHttpObject(handlerModifyProducts);
		xmlHttp_Get(xmlHttp, url);
	} else {
		document.getElementById('CartAds').innerHTML = 'Item Could Not Be Added';
		document.getElementById('CartItems').innerHTML = 'Item Could Not Be Added';
	}
}

//This is the controls for the AJAX Site Login Actions
function LoginCheck(){
	var emailControl = document.getElementById("email");
	var email = emailControl.value;
	// check whether email is valid
	if ( emailCheck(email) == false){
		emailControl.focus;
		//alert("invalid email address");
		return;
	}
	if (email.length > 0){
		var url = requestLOGIN + encodeURIComponent(email);
		xmlHttp = GetXmlHttpObject(LoginChangeHandler);
		xmlHttp_Get(xmlHttp, url);
	} else {
		document.getElementById('OrderForm').innerHTML = 'Could Not Be Logged In <br /> <a href=?>Try Again</a>';
	}
}
function LoginChangeHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var returnText = xmlHttp.responseText;
		orderFormElement = document.getElementById('OrderForm');

		userInformationContent = getInnerContentFromTag(returnText, "UserInformation");
		orderFormElement.innerHTML = userInformationContent;
		evaluateScripts(orderFormElement);
	}
}

function requestPassword(email){

	var reqParams = "";
	reqParams += "email="+email;
	var url = "/content/request_password_ajax.jsp?" + reqParams;
	xmlHttp = GetXmlHttpObject(requestPasswordHandler);
	xmlHttp_Get(xmlHttp, url);
}
function requestPasswordHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		orderFormElement = document.getElementById('messageDiv');
		orderFormElement.innerHTML = str;
	}
}

function getInputValue(name){
	var obj = document.getElementById(name);
	if ( obj != null){
		return obj.value;
	}
	return "error";
}
function newUser(){
	var email = document.getElementById('email').value;
	var password = document.getElementById('password').value;
	var password2 = document.getElementById('password2').value;

	var reqParams = "";
	reqParams += "email="+encodeURIComponent(email) + "&";
	reqParams += "password="+encodeURIComponent(password) + "&";
	reqParams += "password2="+encodeURIComponent(password2) + "&";
	var url = requestNewUser + reqParams;
	xmlHttp = GetXmlHttpObject(newUserHandler);
	xmlHttp_Get(xmlHttp, url);
}
function newUserHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		orderFormElement = document.getElementById('OrderForm');
		orderFormElement.innerHTML = str;
		evaluateScripts(orderFormElement);
	}
}

function startOver(){
	var url = requestResetUser;
	xmlHttp = GetXmlHttpObject(startOverHandler);
	xmlHttp_Get(xmlHttp, url);
}

function startOverHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){
		var str = xmlHttp.responseText;
		document.getElementById('OrderForm').innerHTML = str;
	}
}

function returnUser(){
	var email = document.getElementById("email").value;
	var password =document.getElementById("password").value;
	var rememberElement =document.getElementById("remember");

	var reqParams = "";
	reqParams += "email="+encodeURIComponent(email) + "&";
	reqParams += "password="+encodeURIComponent(password) + "&";
	if ( rememberElement.checked == true)
		reqParams += "remember="+encodeURIComponent(rememberElement.value) + "&";

	var url = requestReturnUser + reqParams;
	xmlHttp = GetXmlHttpObject(returnUserHandler);
	xmlHttp_Get(xmlHttp, url);
}

function returnUserHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){
		var str = xmlHttp.responseText;
		var orderFormElement = document.getElementById('OrderForm');
		//orderFormElement.innerHTML = str;

		userInformationContent = getInnerContentFromTag(str, "UserInformation");
		cartItemsContent = getInnerContentFromTag(str, "CartItems");
		orderFormElement.innerHTML = userInformationContent;
		document.getElementById('CartItems').innerHTML = cartItemsContent;

		evaluateScripts(orderFormElement);
		reloadSiteHeader();
	}
}


function updateUserInfo(){
	var firstName = document.getElementById("firstName").value;
	var lastName = document.getElementById("lastName").value;
	var company_name = document.getElementById("company_name").value;
	var phone = document.getElementById("phone").value;
	var address1 = document.getElementById("address1").value;
	var address2 = document.getElementById("address2").value;
	var city = document.getElementById("city").value;
	var state_province = document.getElementById("state_province").value;
	var zip_postal_code = document.getElementById("zip_postal_code").value;
	var country = document.getElementById("country").value;
	var cardType = document.getElementById("cardType").value;
	var cardNumber = document.getElementById("cardNumber").value;
	var CVV = document.getElementById("CVV").value;
	var expireMonth = document.getElementById("expireMonth").value;
	var expireYear = document.getElementById("expireYear").value;

	var reqParams = "";
	reqParams += "firstName="+encodeURIComponent(firstName) + "&";
	reqParams += "lastName="+encodeURIComponent(lastName) + "&";
	reqParams += "company_name="+encodeURIComponent(company_name) + "&";
	reqParams += "phone="+encodeURIComponent(phone) + "&";
	reqParams += "address1="+encodeURIComponent(address1) + "&";
	reqParams += "address2="+encodeURIComponent(address2) + "&";
	reqParams += "city="+encodeURIComponent(city) + "&";
	reqParams += "state_province="+encodeURIComponent(state_province) + "&";
	reqParams += "zip_postal_code="+encodeURIComponent(zip_postal_code) + "&";
	reqParams += "country="+encodeURIComponent(country) + "&";
	reqParams += "cardType="+encodeURIComponent(cardType) + "&";
	reqParams += "cardNumber="+encodeURIComponent(cardNumber) + "&";
	reqParams += "CVV="+encodeURIComponent(CVV) + "&";
	reqParams += "expireMonth="+encodeURIComponent(expireMonth) + "&";
	reqParams += "expireYear="+encodeURIComponent(expireYear) + "&";


	var url = requestUserInfo + reqParams;
	xmlHttp = GetXmlHttpObject(userInfoHandler);
	xmlHttp_Get(xmlHttp, url);
}
function userInfoHandler()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		orderFormElement = document.getElementById('OrderForm');
		orderFormElement.innerHTML = str;
		evaluateScripts(orderFormElement);
		/*var scriptDiv = document.getElementById("script");
		if( scriptDiv != null){
			var scripts = scriptDiv.getElementsByTagName("script");
			for ( i = 0; i < scripts.length; i++){
				var script = scripts[i]
				eval(script.innerHTML);
			}
		}*/
	}
}

function evaluateScripts(content){
	var scripts = content.getElementsByTagName("script");
	for ( i = 0; i < scripts.length; i++){
		var script = scripts[i]
		eval(script.innerHTML);
	}
}

function confirmInfo(){
	var url = requestConfirmInfo;
	xmlHttp = GetXmlHttpObject(confirmInfoHandler);
	xmlHttp_Get(xmlHttp, url);
}

function confirmInfoHandler(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		orderFormElement = document.getElementById('OrderForm');
		orderFormElement.innerHTML = str;

		evaluateScripts(orderFormElement);
	}
}

function confirmTerms(){

	var agreeElement = document.getElementById("agree");
	var initials = document.getElementById("initials").value;

	var reqParams = "";
	if ( agreeElement.checked == true)
		reqParams += "agree="+agreeElement.value + "&";
	reqParams += "initials="+initials + "&";

	var url = requestConfirmTerm + reqParams;
	xmlHttp = GetXmlHttpObject(confirmTermsHandler);
	xmlHttp_Get(xmlHttp, url);
}

function confirmTermsHandler(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		//alert(str);
		cartAdsElement = document.getElementById('CartAds');
		cartItemsElement = document.getElementById('CartItems');
		orderFormElement = document.getElementById('OrderForm');

		cartAdsContent = getInnerContentFromTag(str, "CartAds");
		cartItemsContent = getInnerContentFromTag(str, "CartItems");
		orderFormContent = getInnerContentFromTag(str, "OrderForm");

		//alert(cartAdsContent);
		//alert(cartItemsContent);
		//alert(orderFormContent);
		cartAdsElement.innerHTML = cartAdsContent;
		cartItemsElement.innerHTML = cartItemsContent;
		orderFormElement.innerHTML = orderFormContent;

		evaluateScripts(cartAdsElement);
		evaluateScripts(cartItemsElement);
		evaluateScripts(orderFormElement);
	}
}


function reloadSiteHeader(){
	var url = siteHeaderUrl;
	xmlHttp = GetXmlHttpObject(reloadSiteHeaderHandler);
	xmlHttp_Get(xmlHttp, url);
}

function reloadSiteHeaderHandler(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
		var str = xmlHttp.responseText;
		orderFormElement = document.getElementById('header');
		orderFormElement.innerHTML = str;
	}
}

function getInnerContentFromTag(src, tagName){
	var startPos = 0;
	var endPos = 0;
	startPos = src.indexOf("<"+tagName+">");
	if ( startPos <0)
		return "";
	endPos = src.indexOf("</"+tagName+">", startPos);
	if ( endPos <0 || endPos < startPos)
		return "";

	return src.substring(startPos, endPos);
}

function xmlHttp_Get(xmlhttp, url) {
	var path = "";
	var queryStr = "";
	var pos = url.indexOf("?");
	if ( pos == -1) {
		path = url;
		queryStr = "";
	} else {
		path = url.substring(0, pos);
		queryStr = url.substring(pos+1);
	}
	//queryStr = encodeURIComponent((queryStr);
	xmlhttp.open("POST",path,true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	xmlhttp.send(queryStr);
}

function GetXmlHttpObject(handler) {
	var objXmlHttp = null;    //Holds the local xmlHTTP object instance

	//Depending on the browser, try to create the xmlHttp object
	if (is_ie){
		//The object to create depends on version of IE
		//If it isn't ie5, then default to the Msxml2.XMLHTTP object
		var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';

		//Attempt to create the object
		try{
			objXmlHttp = new ActiveXObject(strObjName);
			objXmlHttp.onreadystatechange = handler;
		}
		catch(e){
		//Object creation errored
			alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled');
			return;
		}
	}
	else if (is_opera){
		//Opera has some issues with xmlHttp object functionality
		alert('Opera detected. The page may not behave as expected.');
		return;
	}
	else{
		// Mozilla | Netscape | Safari
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;
	}

	//Return the instantiated object
	return objXmlHttp;
}
