﻿/*
JavaScript objects to represent Phone and handle PhoneCatalogue
Browser detect, need's a little work
*/
var ie;
var errContainer="div";
var frmEl=null;

if (navigator.appVersion.indexOf("MSIE")!=-1) {
	ie = true;
} else {
	ie = false;
}


function ajaxSubmit() {
	var activeFrmEl = document.forms['newsletterReg'];
	if (ie) {
		activeFrmEl.attachEvent('onsubmit', function(){processForm(activeFrmEl)}, false);
	} else {
		activeFrmEl.addEventListener('submit', processForm, false);
	}
	activeFrmEl.onsubmit = function() { return false; }
}

function ajaxSubmit1() {
	var activeFrmEl = document.forms['newsletteriPad'];
	if (ie) {
		activeFrmEl.attachEvent('onsubmit', function(){processForm(activeFrmEl)}, false);
	} else {
		activeFrmEl.addEventListener('submit', processForm, false);
	}
	activeFrmEl.onsubmit = function() { return false; }
}

function processForm(frm){
	if(!ie)
		frmEl=this;
	else
		frmEl=frm;
	if(validateForm()){
		sendPosEmail();
	}
}



function sendPosEmail () {
	var page = "scripts/newsletter_reg.php";
	var objInput = frmEl.elements;
	var stuff ="";
	for (var i=0; i<objInput.length; i++) {
		if(i>0) stuff+='&';
		if (objInput[i].type=="text") {
					stuff+=objInput[i].name+'='+cleanString(objInput[i].value);
		}else if(objInput[i].type=="radio"){
			if(objInput[i].checked)
				stuff+=objInput[i].name+'='+objInput[i].value;
		}
	}
	if(frmEl.elements['ipad']!=null)
		stuff+="&ipad=1"
	stuff+='&form_submitted=true';

	showContactTimer(); // quickly begin the load bar
	//success.style.display = 'none'; // hide the success bar (incase this is a multi-email

	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	loadXMLPosDoc(page,stuff);
}

function showContactTimer () {
	var msg = '<img src="images/ajax-loaderb.gif" alt="Sending..." title="Send Email" /> Sending Data...';
	displayStatusmsg(frmEl,msg);
	sentTimer = setTimeout("hideContactTimer()",1000);
}

function hideContactTimer () {
	var status = grabPosXML("status");
	var msg = grabPosXML("confirmation");
	if ( status == 'NOTOK' ) {
		displayStatusmsg(frmEl,msg);
	} else 	if ( status == 'OK' ) {
		displayStatusmsg(frmEl,msg);
		if (ie) {
			frmEl.removeEvent('onsubmit', processForm, false);
		} else {
			frmEl.removeEventListener('submit', processForm, false);
		}
	}
}


function ajaxFunction(){
	var ajaxRequest; // The variable that makes Ajax possible!

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	return ajaxRequest;
}
var pos; // variable for posting information
function loadXMLPosDoc(url,posData) {

    // branch for native XMLHttpRequest object
    pos = ajaxFunction();
    if (pos) {
        pos.onreadystatechange = processPosChange;
        pos.open("POST", url, true);
				pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        pos.send(posData);
    }

}

function grabPosXML(tagName) {
	if (pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0]) {
		var resp = pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
		return resp;
	} else {
		displayStatusmsg(frmEl,'Error submitting the form, please try again.');
		return false;
	}
}

function processPosChange() {
    // page loaded "complete"
    if (pos.readyState == 4) {
        // page is "OK"
        if (pos.status == 200) {
			if ( grabPosXML("status") == 'NOTOK' ) {
				displayStatusmsg(frmEl,grabPosXML("confirmation"));
			}
		}
	}
}

function validateForm(){
	var errorDiv = document.getElementById(frmEl.id+'_statusMessage');
	errorDiv.className = 'errorMessage';
	//alert(frmEl.name);
	errorDiv.innerHTML = '';
	var nlEmail=frmEl.elements['nl_email'];
	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
	if (!email.test(nlEmail.value) || nlEmail.value == '') {
		displayErrorMessage(frmEl, nlEmail);
		return false;
	}
	return true;

}

function displayErrorMessage (frm, el) {
    var errorMsg = '';
    errorMsg = 'Please enter a <span class="strong">valid</span> email address.';
    var errorDiv = document.getElementById(frm.id+'_statusMessage');
		errorDiv.className = 'errorMessage';
		errorDiv.innerHTML = errorMsg;
		Fat.fade_element(errorDiv.id, 30, 500, '#ffffff', null);
		el.focus();
    Fat.fade_all();
}

function resetbg(el) {
	el.style.backgroundColor = '';
}

function displayStatusmsg(frm,msg) {
	if (document.getElementById(frm.id+'_statusMessage')) {
		var statusDiv = document.getElementById(frm.id+'_statusMessage');
		Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
		statusDiv.innerHTML = msg;
  } else {
		var statusDiv = document.createElement(errContainer);
		statusDiv.id = frm.id+'_statusMessage';
		statusDiv.innerHTML = msg;
		frm.insertBefore(statusDiv, frm.childNodes[0]);
		Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
	}
}

function cleanString(str1) {
	str1 = str1.replace(/&/g,"**am**");
	str1 = str1.replace(/=/g,"**eq**");
	str1 = str1.replace(/\+/g,"**pl**");
	return str1;
}

function unCleanString(str1) {
	str1 = str1.replace(/\*\*am\*\*/g,"&");
	str1 = str1.replace(/\*\*eq\*\*/g,"=");
	str1 = str1.replace(/\*\*pl\*\*/g,"+");
	str1 = str1.replace(/\*\*nl\*\*/g,"<br />");
	return str1;
}
