function calculateCosting() {
	with (CalculateCostsForm) {
		StartCost=0;
		Multiple=5;
		NumberOfLines=Lines.value;
		Remainder=Math.ceil(NumberOfLines/500);
		if (Remainder<3) Remainder=3;
		
		if (Remainder>10) {
			StartCost=25;
			Multiple=2.50;
		}
		if (Remainder>100) {
			StartCost=50;
			Multiple=2.25;
		}
		if (Remainder>159) {
			StartCost=89.75;
			Multiple=2;
		}
		if (Remainder>180) {
			StartCost=134.75;
			Multiple=1.75;
		}
		if (Remainder>200) {
			Price2Pay.value='Call for price';
		} else {
			Price=StartCost+Remainder*Multiple;
			Price=format_number(Price,2);
			Price2Pay.value='£'+Price;
		}
	}
}
function format_number(p,d) {
  var r;
  if(p<0){p=-p;r=format_number2(p,d);r="-"+r;}
  else   {r=format_number2(p,d);}
  return r;
}
function format_number2(pnumber,decimals) {
  var strNumber = new String(pnumber);
  var arrParts = strNumber.split('.');
  var intWholePart = parseInt(arrParts[0],10);
  var strResult = '';
  if (isNaN(intWholePart))
    intWholePart = '0';
  if(arrParts.length > 1)
  {
    var decDecimalPart = new String(arrParts[1]);
    var i = 0;
    var intZeroCount = 0;
     while ( i < String(arrParts[1]).length )
     {
       if( parseInt(String(arrParts[1]).charAt(i),10) == 0 )
       {
         intZeroCount += 1;
         i += 1;
       }
       else
         break;
    }
    decDecimalPart = parseInt(decDecimalPart,10)/Math.pow(10,parseInt(decDecimalPart.length-decimals-1)); 
    Math.round(decDecimalPart); 
    decDecimalPart = parseInt(decDecimalPart)/10; 
    decDecimalPart = Math.round(decDecimalPart); 

    //If the number was rounded up from 9 to 10, and it was for 1 'decimal' 
    //then we need to add 1 to the 'intWholePart' and set the decDecimalPart to 0. 

    if(decDecimalPart==Math.pow(10, parseInt(decimals)))
    { 
      intWholePart+=1; 
      decDecimalPart="0"; 
    } 
    var stringOfZeros = new String('');
    i=0;
    if( decDecimalPart > 0 )
    {
      while( i < intZeroCount)
      {
        stringOfZeros += '0';
        i += 1;
      }
    }
    decDecimalPart = String(intWholePart) + "." + stringOfZeros + String(decDecimalPart); 
    var dot = decDecimalPart.indexOf('.');
    if(dot == -1)
    {
      decDecimalPart += '.'; 
      dot = decDecimalPart.indexOf('.'); 
    } 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  else
  {
    var dot; 
    var decDecimalPart = new String(intWholePart); 

    decDecimalPart += '.'; 
    dot = decDecimalPart.indexOf('.'); 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  return strResult;
}

function CheckEditForms() {
	for (a=0;a<arguments.length;a++) {//cycle through passed arguments
		var ProblemField=AlertMessage=false;
		cleanText=arguments[a].name.replace(/_/g," ");//show text box name cleanly (greedy)
		
		if ( arguments[a].value=='' ) {//if empty
			AlertMessage="Please complete the '"+cleanText+"' Field.";
			ProblemField=true;
		}
		//if email field and no '.' or '@'
		if (arguments[a].name=='Email' && (arguments[a].value.indexOf('@')==-1 || arguments[a].value.indexOf('.')==-1)) {
			AlertMessage="Please enter a valid Email Address.";
			ProblemField=true;
		}
		if (arguments[a].type=='checkbox' && !arguments[a].checked) {
			AlertMessage="You must tick the '"+cleanText+"' box.";
			ProblemField=true;
		}
		
		if (ProblemField) {
			alert(AlertMessage);//display warning
			arguments[a].focus();//go to field
			return false;//fail
		}
	}//end for
	return true;//if all ok exec
}//end CheckEditForms

function SelectAllCheckboxes() {
	for (a=0;a<document.forms[1].length;a++) {//cycle through passed arguments
		document.forms[1].elements[a].checked=true;//only using form[1] because the search form exists already
	}
}

function validateIntegerNumbers(textBox) {//Allow only integers
	string=textBox.value;//get value of passed field
    if (!string) return false;//if nothing fail
    var Chars = "0123456789";//allowable characters
	SLength=string.length;//get field length

    for (i=0;i<SLength;i++) {//go through chars one at a time
       	if (Chars.indexOf(string.charAt(i)) == -1) {//if character not found in allowable characters
		  textBox.value=string.substring(0,SLength-1);//delete the last entered character
          alert("Please use ONLY integers.\n12,500 should be entered as 12500.\nExamples: 5, 94, 54327");//warning
		  return false;//fail
		}
    }
    return true;//if all ok exec
}

function validateFPNumbers(textBox) {//Allow only floating point numbers
	string=textBox.value;//get value of passed field
    if (!string) return false;//if nothing fail
    var Chars = "0123456789.";//allowable characters '.' for floating point numbers
	SLength=string.length;//get field length

    for (i=0;i<SLength;i++) {//go through chars one at a time
       	if (Chars.indexOf(string.charAt(i)) == -1) {//if character not found in allowable characters
		  textBox.value=string.substring(0,SLength-1);//delete the last entered character
          alert("Please use ONLY floating point numbers.\nExamples: 1.3, 5, 29.34");//warning
		  return false;//fail
		}
    }
    return true;//if all ok exec
}

function PopWin(URL,H,W) {
	window.open(URL,'Popped',"Height="+H+",Width="+W+",scrollbars,resizable,status");
}

function Expand(Did) {
	if (document.getElementById) {
		document.getElementById(Did).style.display=(document.getElementById(Did).style.display=='none')?'block':'none';
	}
	else if (document.all) {
		document.all[Did].style.display=(document.all[Did].style.display=='none')?'block':'none';
	}
}

function validatePhoneNumber(textBox) {//Allow only integers

	if (textBox) {
		ThisString=escape(textBox.value);
	
		rExp = /,/gi;
		ThisString = ThisString.replace(rExp,"");
	
		rExp = /%0D%0A/gi;
		ThisString = ThisString.replace(rExp,',');//\r\n
	
		rExp = /%09/gi;
		ThisString = ThisString.replace(rExp,'');
	
		rExp = /[^0-9,]/gi;
		ThisString = ThisString.replace(rExp,'');
	
		rExp = /,,/gi;
		ThisString = ThisString.replace(rExp,",");
	
		rExp = /,/gi;
		ThisString = ThisString.replace(rExp,"%0D%0A");
	
		textBox.value = unescape(ThisString);
	}
	
	if (ThisString=='' || !textBox) {
		document.getElementById('UserFileUpload').encoding="multipart/form-data";	
	}
}

function attachEvents( ElementID, Event, FunctionName ) {
	var el = document.getElementById( ElementID );

	if ( el.addEventListener ){
		el.addEventListener( Event , FunctionName , false);
		return true;
	} else if ( el.attachEvent ){
		var r = el.attachEvent( 'on' + Event , FunctionName );
		return r;
	} else {
		eval( "el.on" + Event + " = " + FunctionName + ";" );
		return true;
	}
	return false;
}

function ajaxFunction( ElementID, url, showLoading ) {  
	var xmlHttp;
  	try {    // Firefox, Opera 8.0+, Safari    
		xmlHttp=new XMLHttpRequest();    
	}
	catch (e) {    // Internet Explorer    
		try {      
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");      
		}
    	catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");        
			}
      		catch (e) {
				alert("Your browser does not support AJAX!");        
				return false;        
			}
		}
	}
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			document.getElementById(ElementID).innerHTML=xmlHttp.responseText;
    	} else {
			if ( showLoading ) document.getElementById(ElementID).innerHTML = '<div class="AjaxLoading">Loading...</div>';
		}
	}
    xmlHttp.open("POST",url,true);
    xmlHttp.send(null);
}