function MM_findObj(n, d) { //v4.01
  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=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function ValidForm(fId) {
  if(fId.qcode.value == "") { 
    alert("Please enter a quote reference");
		fId.qcode.focus();
		return false;
  } else {
    return true;
  }
}

function elmsSH() {
	if(document.getElementById('ddx').style.visibility = 'visible') {
		document.getElementById('ddx').style.visibility = 'hidden';
		//window.alert('was visible');
	} else {
		document.getElementById('ddx').style.visibility = 'visible';
		//window.alert('was hidden');
	}
	
	return;
}

function NLValidateForm(f) {
	var email = trimAll(f.email.value);
	var first_name = trimAll(f.first_name.value);
	var last_name = trimAll(f.last_name.value);
	
	// window.alert(email);
	
	if((email == null) || (email == "")) {
		alert("Please enter a valid email address");
		f.email.focus();
		return false;
	}
	else if (echeck(email) == false) {
		f.email.value = "";
		f.email.focus();
		return false;
	}
	else if(first_name == "" || first_name == 'Enter name') {
		alert("Please enter a subscriber first name");
		f.first_name.focus();
		return false;
	}
	else if(first_name.length < 2) { //check length >=2
		alert("Please enter a subscriber first name");
		f.last_name.focus();
		return false;
	}
	else if(last_name == "" || last_name == 'Enter surname') {
		alert("Please enter a subscriber surname");
		f.last_name.focus();
		return false;
	}
	else if(last_name.length < 3) { //check length >=3
		alert("Please enter a valid subscriber surname");
		f.last_name.focus();
		return false;
	}
	else {
		return true;
	}
}

function trimAll(sString)
{
	while (sString.substring(0,1) == ' ')
	{
	sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
	sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	var msg = "Your email address appears to be invalid\nPlease check and re-enter";
	
	if (str.indexOf(at)==-1) {
		alert(msg);
		return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
		alert(msg);
		return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
		alert(msg);
		return false;
	}

	if (str.indexOf(at,(lat+1))!=-1) {
		alert(msg);
		return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
		alert(msg);
		return false;
	}

	if (str.indexOf(dot,(lat+2))==-1) {
		alert(msg);
		return false;
	}

	if (str.indexOf(" ")!=-1) {
		alert(msg);
		return false;
	}

	return true;
}

var message="";
///////////////////////////////////
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if 
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers) 
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}
 
document.oncontextmenu=new Function("return false");

function checkAlertReg(f) {
	
	// email address and confirmation field
	if((f.alert_email.value == null) || (f.alert_email.value == "")) {
		alert("Please enter valid email address");
		f.alert_email.focus();
		return false;
	}
	else if(f.alert_email.value != f.confirm_alert_email.value) {
		alert("Your email and email confirmation differ. Please check and re-enter");
		f.alert_email.focus();
		return false;
	}
	else if (echeck(f.alert_email.value) == false) {
		f.alert_email.value = "";
		f.alert_email.focus();
		return false;
	}
	// password
	else if(trim(f.password.value.length < 5) || trim(f.password.value.length > 8)) {
		alert("Please enter a password between 5 and 8 characters in length.");
		f.password.focus();
		return false;
	}
	else if(f.password.value != f.confirm_password.value) {
		alert("Your password and password confirmation differ. Please check and re-enter");
		f.password.value = '';
		f.password.focus();
		return false;
	}
	else {
		return true;
	}
	
}

/* AJAX FUNCTIONS */

var ajaxDebugMode = false;
var ajaxTransportType = "POST";
var ajaxTargetID = "";
var ajaxFailureRedirect = "";
var ajaxRequests = new Array();
var f
var rtn = new Array();
var separator = '||';

function ajaxDebug(text) {
	if (ajaxDebugMode) {
		alert(text);
	}
}

function ajaxInitObj() {
	
	var xmlhttp, msxmlhttp, i;
	
	msxmlhttp = new Array(	'Msxml2.XMLHTTP.5.0',
									'Msxml2.XMLHTTP.4.0',
									'Msxml2.XMLHTTP.3.0',
									'Msxml2.XMLHTTP',
									'Microsoft.XMLHTTP'
								);
	
	for(i=0; i<msxmlhttp.length; i++) {
		try {
			xmlhttp = new ActiveXObject(msxmlhttp[i]);
		} catch (e) {
			xmlhttp = null;
		}
	}
	
	if(! xmlhttp && typeof XMLHttpRequest != "undefined") {
		xmlhttp = new XMLHttpRequest();
	}
	if(!xmlhttp) {
		ajaxDebug("Could not create connection object.");
	}
	
	return xmlhttp;
}

function getOffer(reference) {	
	var i = '';
	var q = '';
	var xml = '';
	
	q = 'reference=' + reference
	// window.alert(q);
	
	if(!q) {
		formReset(f);
		return false;
	}
	
	xml = ajaxInitObj();
	if(!xml) {
		formReset(f);
		return false;
	}
	
	xml.onreadystatechange=function() {
		if(xml.readyState==4) {
			var response = xml.responseText;
			if(response) {
				responseHandler(response);
				// window.alert(response);
			}
		}
	}
	xml.open('POST','/pa_handler.php',true);
	xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xml.send(q);
}

function getList() {
	var q = '';
	var xml = '';
	
	q = "action=getlist";
	// window.alert(q);
	
	xml = ajaxInitObj();
	if(!xml) {
		return false;
	}
	
	xml.onreadystatechange=function() {
		if(xml.readyState==4) {
			var response = xml.responseText;
			if(response) {
				responseHandler(response);
				// window.alert(response);
			}
		}
	}
	xml.open('POST','/pa_handler.php',true);
	xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xml.send(q);
}

function responseHandler(r) {

	// document.write(r);
	
	var idx = new Array();
	var rtn = new Array();
	
	rtn = r.split(separator);
	idx = rtn[rtn.length - 1].split(',');
	
	for(var i=0; i<idx.length; i++) {
		if(document.getElementById(idx[i]) != undefined) {
			document.getElementById(idx[i]).innerHTML = rtn[i];
		}
	}
}

function manageAlert(id,reference,action) {
	
	var q = '';
	var xml = '';
	
	switch(action) {
		case 'save':
			q = "reference=" + reference;
		break;
		case 'open':
			q = "alertID=" + id + "&reference=" + reference;
		break;
		default:
			q = "alertID=" + id;
	}
	
	q = q + "&action=" + action;
	
	switch(action) {
		case 'save':
		case 'update':
			var elmID = 'trigger_price';
			var elmVal = document.getElementById(elmID).value;
			// validate the new value
			checkValueField(elmID,elmVal);
			q = q + '&trigger_price=' + elmVal;
			// window.alert(q);
		break;
		default:
			//
	}
	
	xml = ajaxInitObj();
	
	if(!q || !xml) {
		return false;
	}
	
	xml.onreadystatechange=function() {
		if(xml.readyState==4) {
			var response = xml.responseText;
			if(response) {
				responseHandler(response);
				// window.alert(response);
			}
		}
	}
	xml.open('POST','/pa_handler.php',true);
	xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xml.send(q);
}

function checkValueField(id,val) {
	if(trimAll(val) == null || trimAll(val) == "") {
		alert("Please enter a trigger price in the form '123'\nEnter a value in whole pounds without any currency symbols.");
		return false;
	}
	else if(checkForNonInteger(val)) {
		alert("Please enter a trigger price in the form '123'\nEnter a value in whole pounds without any currency symbols.");
		return false;
	}
	else if(trimAll(val).length > 4) {
		alert("Please enter a trigger price in the form '123'\nThe value should be no greater than 9999.");
		return false;
	}
	else {
		// if validated then clear the value to an empty string
		document.getElementById(id).value = '';
		return true;
	}
	
}