var form_Changed = false;

function window_onbeforeunload(){
	if (form_Changed) window.event.returnValue = "You have made changes to this form but have tried to leave it without submitting it properly.  If you click OK you will lose your changes.";
}

window.onbeforeunload = window_onbeforeunload;

function window_validate_onload(){
	var elems = document.all.tags("INPUT");
	for (var i = 0; i < elems.length; i++){
		elems(i).onkeyup = onchange;
		elems(i).onchange = onchange;
	}
	elems = document.all.tags("CHECKBOX");
	for (var i = 0; i < elems.length; i++){
		elems(i).onkeyup = onchange;
		elems(i).onclick = onchange
	}
	elems = document.all.tags("TEXTAREA");
	for (var i = 0; i < elems.length; i++){
		elems(i).onkeyup = onchange;
		elems(i).onchange = onchange
	}
	elems = document.all.tags("SELECT");
	for (var i = 0; i < elems.length; i++)
		elems(i).onchange = onchange;
}

function onchange(){
	form_Changed = true;
}

window.onload = window_validate_onload;	
	
function noenter() {
	return !(window.event && window.event.keyCode == 13);
}
	
function writemail(a,b,c) {
	document.write(a+"@"+b+"."+c)
}
function numbersonly() {
	return !(window.event && (window.event.keyCode < 46 || window.event.keyCode > 57) );
}

function charsleft(myid){
	if (myid.value.length>myid.maxlength){
		return false;
	}
}

function display_image(imge)
{
	img=eval(imge)
	document.write("<img src='"+img.src+"' width="+img.w+" height="+img.h+" border=0 alt="+imge+" name='"+imge+"'>")	
}

function display_image1(imge,caption)
{
	img=eval(imge)
	document.write("<img src='"+img.src+"' width="+img.w+" height="+img.h+" border=0 alt='"+caption+"' name='"+imge+"'>")	
}

function change_image(img,newimge)
{
  newimg=eval(newimge)
  if(newimg.complete)
  	document.images[img].src=newimg.src
}

function makeRemote(url,name,w,h,scroll){
remote = window.open(url,name,"left="+(width-w)/2+",top=20,width="+w+",height="+h+",toolbar=no,menubar=no,status=no,scrollbars="+scroll+",resizable=no");
if (remote.opener == null) remote.opener = window;
remote.focus()
}

function keyToUpperCase(field, evt) {
  if (document.all) {
    var c = event.keyCode;
    var C = String.fromCharCode(c).toUpperCase().charCodeAt(); 
    event.keyCode = C;
    return true;
  }
  else 
    return true;
}

function checknum(field)
{ 
	if (isNaN(field.value)) 
	{
		 alert("Number of bedrooms must be a number")
		 field.value=""
		field.focus()
		return false;
	}
return true
}

function checkcost(field)
{ 
	if (isNaN(field.value)) 
	{
		 alert("Adaptation cost must be a number")
		 field.value=""
		field.focus()
		return false;
	}
return true
}

function checkphone(field)
{
	if (field.value=="")return true
         if (field.value.match("^[0-9 - +]*$")==null) 
	{
		alert("Invalid Phone No")
		field.value=""
		field.focus()
		return false
	}
  return true
}

function testpc1(src) {
	if(src=="")return true
	pc1="^[a-zA-Z]{1,2}[1-9]([0-9]{0,1}|[a-zA-Z]{0,1})$"
	if(src.match(pc1)==null)return false;
	return true
}

function testpc2(src) {
	if(src=="")return true
	pc2="^[0-9]{0,1}[a-zA-Z]{2}$"
	if(src.match(pc2)==null)return false;
	return true
}

function checkpc1(objName) {
if (testpc1(objName.value) == false) {
alert("Invalid Postcode");
objName.value=""
objName.focus();
return false;
}
else {
return true;
   }
}

function checkpc2(objName) {
if (testpc2(objName.value) == false) {
alert("Invalid Postcode");
objName.value=""
objName.focus();
return false;
}
else {
return true;
   }
}

function emailCheck (emailStr) {
if(emailStr=="")return true

/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	//alert("Email address seems incorrect (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    //alert("The username doesn't seem to be valid.")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	  //      alert("Destination IP address is invalid!")
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	//alert("The domain name doesn't seem to be valid.")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
  // alert("The address must end in a three-letter domain, or two letter country.")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!"
   //alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!
return true;
}

function test(src) {
			if(src=="")return true
			emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[a-zA-Z]$"
			if(src.match(emailReg)==null)return false;
			return true
	}

function checkemail(objName) {
if (emailCheck(objName.value) == false) {
var temp = objName.value
alert("Check the email address");
objName.value=""
objName.focus();
objName.select();
objName.value=temp;
return false;
}
else {
return true;
   }
}

function checkdate(objName) {
var datefield = objName;
if (chkdate(objName) == false) {
datefield.select();
alert("Invalid date format - Valid formats are:\n dd/mm/yy\n dd/mm/yyyy\n dd-mm-yy\n dd-mm-yyyy\n dd.mm.yy\n dd.mm.yyyy");
datefield.value=""
datefield.focus();
return false;
}
else {
return true;
   }
}
function chkdate(objName) {
//var strDatestyle = "US"; //United States date style
var strDatestyle = "EU";  //European date style
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
strDate = datefield.value;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
 else return false
}
if (strYear.length == 2) {
 if(strYear<'30')strYear = '20' + strYear;
 else strYear = '19' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
err = 3;
return false;
 }
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDay.length==1) strDay='0'+strDay
if (strMonth.length==1) strMonth='0'+strMonth
datefield.value = strDay + "/" + strMonth + "/" + strYear;

return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}


/* For forms using the credit card logo */
function selectCard(i) {
	if (document.forms.appform3){
	document.forms.appform3.card_type.selectedIndex=i;
	document.forms.appform3.card_number.focus();
	}
}
