var pc_region;
function el_get(el){
	el=document.getElementById(el);
	return el;
}
function el_val(el){
	el=document.getElementById(el).value;
	return el;
}
function el_i(el){
	el=parseInt(document.getElementById(el).value);
	return el;
}
function el_fi(ID)
{   tVal=el_get(ID).value;
	return parseInt( tVal.replace(/[^0-9]*/g, ""), 10 );
}
function nm_val(el){
	el=document.getElementsByName(el)[0].value;
	return el;
}

function build_sepString(){
var sep=arguments[0];var retSepStr="";
for(var i=1; i<arguments.length; i++) 
		{retSepStr+=arguments[i]+sep;}
		return retSepStr;
}	

function build_sepStringChk(){
var sep=arguments[0];var retSepStr="";
for(var i=1; i<arguments.length; i++) 
		{
			if(el_get(arguments[i]).checked){retSepStr+=el_val(arguments[i])+sep;}
		}
		return retSepStr;
}
function $type(obj){
	if (obj === null || obj === undefined) return false;
	var type = typeof obj;
	if (type == 'object'){
		if (obj.htmlElement) return 'element';
		if (obj.push) return 'array';
		if (obj.nodeName){
			switch (obj.nodeType){
				case 1: return 'element';
				case 3: return obj.nodeValue.test(/\S/) ? 'textnode' : 'whitespace';
			}
		}
	}
	return type;
};
function show_step(){
	if(arguments[0]!="none"){el_get(arguments[0]).style.display="block";}
	for(var i=1; i<arguments.length; i++) 
		{el_get(arguments[i]).style.display="none";}
}

function show_all(){
	for(var i=0; i<arguments.length; i++) 
		{el_get(arguments[i]).style.display="block";}
}
function hide_all(){
	for(var i=0; i<arguments.length; i++) 
		{el_get(arguments[i]).style.display="none";}
}
function hide_grp(name)
{alert("Start");

	var controls = document.getElementsByName(name);
	
	for( var i = 0 ; i < controls.length ; i++ )
	{alert(controls[i].getAttribute("id"));

	}
	

}

function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

function isRadioChk(name)
{
	var controls = document.getElementsByName(name);
	
	for( var i = 0 ; i < controls.length ; i++ )
	{alert(i);
		if( controls[i].checked )
		{
			return true;
		}
	}
	
	return false;
}

function radio_val(name){
	var controls = document.getElementsByName(name);
	
	for( var i = 0 ; i < controls.length ; i++ )
	{
		if( controls[i].checked )
		{
			return controls[i].value;
		}
	}
	
	return "na";
}
function radio_sel(id){
//var controls = [{id:'lumpSum', label:'lumpSum_lbl'}]; 
var m = document.getElementsByName(id);
   //alert(m.length);
	for (var i = 0; i < m.length; i++) { 
		//var c = el_get(controls[i].id); 
		//alert(m[i].value);
		if(m[i].checked){return true;}
		//if (c.checked){return true;}
	}
return false;
}
function highlite(id){
for(var i=0; i<arguments.length; i++){el_get(arguments[i]).style.background=errCol;}
}
function lowlite(){
for(var i=0; i<arguments.length; i++){el_get(arguments[i]).style.background=errNone;}
}
function errlite(id){
el_get(id).style.background=errCol;
lbl=id+'_lbl';
el_get(lbl).className='errfiledhead';
}
function errMulti(){
el_get(arguments[0]).className='errfiledhead';
for(var i=1; i<arguments.length; i++){el_get(arguments[i]).style.background=errCol;}
}
function errMultiClear(){
el_get(arguments[0]).className='filedhead';
for(var i=1; i<arguments.length; i++){el_get(arguments[i]).style.background=errNone;}
}
function show_err(id,message){
el_get(id).style.background=errCol;
lbl=id+'_lbl';err_div=id+'_err';
el_get(lbl).className='errfiledhead';
el_get(err_div).innerHTML=message;
	}
function clr_err(id){
el_get(id).style.background=errNone;
lbl=id+'_lbl';err_div=id+'_err';
el_get(lbl).className='filedhead';
el_get(err_div).innerHTML='';
	}	
function errclear(id){
el_get(id).style.background=errNone;
lbl=id+'_lbl';
el_get(lbl).className='filedhead';
}
function errlbl(id){
lbl=id+'_lbl';
el_get(lbl).className='errfiledhead';
}
function errclearlbl(id){
lbl=id+'_lbl';
el_get(lbl).className='filedhead';
}
function isChecked(id){
if(el_get(id).checked){return true;}else{return false;}
}
function disable_control(){
		for(var i=0; i<arguments.length; i++) 
		{el_get(arguments[i]).disabled=true;}
}
function enable_control(){
		for(var i=0; i<arguments.length; i++) 
		{el_get(arguments[i]).disabled=false;}
}
function addCommas( numberString )
{
	numberString += '';
	numberString=numberString.replace(/-/g, "");
	x = numberString.replace(/[^0-9.\-]*/g, "").split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1))
	{
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}

	return x1 + x2;
}

function addCommasToNumberTextbox(id)
{
	id.value =addCommas( id.value );
}
function addCommasToCurrencyTextbox(id)
{
	id.value = "£" + addCommas( id.value );
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	var ck = name+"="+value+expires+"; path=/";
	// if (days != -1) alert('Cookie\n' + ck + '\ncreated');
	document.cookie = ck;
}

function alertsubscribe(){
theForm=document.getElementById('alertnews');
theForm.submit();}

function pcloc(pcode){
var ukpc='AL,B ,BA,BB,BD,BH,BL,BN,BR,BS,BT,CA,CB,CF,CH,CM,CO,CR,CT,CV,CW,DA,DE,DH,DL,DN,DT,DY,E ,EC,EN,EX,FY,GL,GU,HA,HD,HG,HP,HR,HU,HX,IG,IP,KT,L ,LA,LD,LE,LL,LN,LS,LU,M ,ME,MK,N ,NE,NG,NN,NP,NR,NW,OL,OX,PE,PL,PO,PR,RG,RH,RM,S ,SA,SE,SG,SK,SL,SM,SN,SO,SP,SR,SS,ST,SW,SY,TA,TF,TN,TQ,TR,TS,TW,UB,W ,WA,WC,WD,WF,WN,WR,WS,WV,YO';
var scpc="AB,DD,DG,EH,FK,G ,HS,IV,KA,KW,KY,ML,PA,PH,TD,ZE";
var nipc="BT";var cipc="JE,GY";var impc="IM";
var pcregion=""
var regr=/[^a-zA-Z]/;
valid_address=/^([a-zA-Z]+){2,25}$/;	var valid_Name=/^\D{2,25}$/;
var region=pcode.substr(0, 2);region=region.replace(regr, "");region=region.toUpperCase();

if(region.length<2){region=region + " ";}
if (ukpc.indexOf(region)!=-1){pcregion="EWI";}//alert("UK");
if (scpc.search(region)!=-1){pcregion="SC";}//alert("Scotland");
//if (nipc.indexOf(region)!=-1){alert("Northern Ireland");pcregion="NI";}
if (cipc.search(region)!=-1){pcregion="CI";}//alert("Channel Isles");
if (impc.indexOf(region)!=-1){pcregion="IM";}//alert("IOM");

return pcregion;
}

function chk_select(nl_val,ID){
if(el_get(ID).value!=nl_val){return true;}else{return false;}
}

function input_err(id,msg){
el_get(id).innerHTML=msg;
//show_all(id);
}
function hide_input_err(id){
el_get(id).innerHTML="";
hide_all(id);
}
function chk_grp(){
	for(var i=0; i<arguments.length; i++){if(el_get(arguments[i]).checked){return true;}}return false;
}


function read_xml(text){

try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }

return xmlDoc;
}
function get_str_data(str_body,str_start,str_end){
	var str_lenth=str_start.length;
	st_index=str_body.lastIndexOf(str_start);en_index=str_body.lastIndexOf(str_end);
	var ret_str=str_body.substring(st_index+str_lenth,en_index);
return ret_str;
}
function get_tab_data(str_body,str_id){
	var str_start="<"+str_id+">";
	var str_end="</"+str_id+">";
	var str_lenth=str_start.length;
	st_index=str_body.lastIndexOf(str_start);en_index=str_body.lastIndexOf(str_end);
	var ret_str=str_body.substring(st_index+str_lenth,en_index);
return ret_str;
}
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function trim_input(el){
input_val=trim(el_get(el).value);el_get(el).value=input_val;
return input_val;
 }

function trimInput(sStr)
{
//return str.replace(/^\s*|\s*$/,"");

while (sStr.substring(0,1) == ' ')
{
sStr = sStr.substring(1, sStr.length);
}
while (sStr.substring(sStr.length-1, sStr.length) == ' ')
{
sStr = sStr.substring(0,sStr.length-1);
}
return sStr;
}

function stripInput(Str,sStr){
	sStr=eval("/"+sStr+"/gi");
	Str=Str.replace(sStr, "");
	//tmpStr=tmpStr.replace(/-/gi, "");
	return Str;
	}


function UkPhoneNumber(field_val)
{
	// Get the phone number as a string from the text box
	var telephoneNumber = field_val;
	
	// Don't allow country codes to be included (assumes a leading "+")
	if ( telephoneNumber.match(/^\+.+$/) )
	{
		return 0;
	}

	if (telephoneNumber.match(/^\+?[0-9 ()-]+[0-9]$/) == null )
	{
		return 5;
	}

	// Remove everything but numeric digits from the telephone number to help validation
	telephoneNumber = telephoneNumber.replace(/[^0-9]*([0-9]*)/g, "$1");

	// Now check that it is 10 or 11 digits long
	if( telephoneNumber.match(/^[0-9]{10,11}$/) == null )
	{
		return 1;
	}

	// Now check that the first digit is 0
	if ( telephoneNumber.match(/^0[0-9]{9,10}$/) == null )
	{
		return 2;
	}

	// Finally check that the telephone number is appropriate.
	if ( telephoneNumber.match(/^(06|070)[0-9]+$/) )
	{
		return 3;
	}

	// Check that the telephone number is appropriate.
	if (telephoneNumber.match(/^(01|02|03|05|07|08)[0-9]+$/) == null )
	{
		return 4;
	}

	// Check for too many repeating digits
	if (telephoneNumber.match(/^\d*(\d)\1{7}\d*$/) )
	{
		return 4;
	}
	if (telephoneNumber.match(/^\+?[0-9 ()-]+[0-9]$/) == null )
	{
		return 4;
	}
	if (telephoneNumber== '01234567890' || telephoneNumber== '0123456789')
	{
		return 4;
	}	
	return -1;
}

var postcodeOutcodes = new Array();
postcodeOutcodes[0]="AB";
postcodeOutcodes[1]="DG";
postcodeOutcodes[2]="DD";
postcodeOutcodes[3]="FK";
postcodeOutcodes[4]="EH";
postcodeOutcodes[5]="KY";
postcodeOutcodes[6]="KA";
postcodeOutcodes[7]="IV";
postcodeOutcodes[8]="KW";
postcodeOutcodes[9]="PA";
postcodeOutcodes[10]="PH";
postcodeOutcodes[11]="ML";
postcodeOutcodes[12]="HS";
postcodeOutcodes[13]="ZE";
postcodeOutcodes[14]="CF";
postcodeOutcodes[15]="LD";
postcodeOutcodes[16]="LL";
postcodeOutcodes[17]="NP";
postcodeOutcodes[18]="SA";
postcodeOutcodes[19]="SY";
postcodeOutcodes[20]="BD";
postcodeOutcodes[21]="DH";
postcodeOutcodes[22]="DL";
postcodeOutcodes[23]="DN";
postcodeOutcodes[24]="HD";
postcodeOutcodes[25]="HG";
postcodeOutcodes[26]="HU";
postcodeOutcodes[27]="HX";
postcodeOutcodes[28]="LN";
postcodeOutcodes[29]="LS";
postcodeOutcodes[30]="NE";
postcodeOutcodes[31]="SR";
postcodeOutcodes[32]="TS";
postcodeOutcodes[33]="WF";
postcodeOutcodes[34]="YO";
postcodeOutcodes[35]="BB";
postcodeOutcodes[36]="BL";
postcodeOutcodes[37]="CA";
postcodeOutcodes[38]="CH";
postcodeOutcodes[39]="CW";
postcodeOutcodes[40]="FY";
postcodeOutcodes[41]="LA";
postcodeOutcodes[42]="M";
postcodeOutcodes[43]="OL";
postcodeOutcodes[44]="PR";
postcodeOutcodes[45]="SK";
postcodeOutcodes[46]="TF";
postcodeOutcodes[47]="WA";
postcodeOutcodes[48]="WN";
postcodeOutcodes[49]="B";
postcodeOutcodes[50]="CV";
postcodeOutcodes[51]="DE";
postcodeOutcodes[52]="DY";
postcodeOutcodes[53]="LE";
postcodeOutcodes[54]="NG";
postcodeOutcodes[55]="NN";
postcodeOutcodes[56]="ST";
postcodeOutcodes[57]="WS";
postcodeOutcodes[58]="WV";
postcodeOutcodes[59]="AL";
postcodeOutcodes[60]="CB";
postcodeOutcodes[61]="CM";
postcodeOutcodes[62]="CO";
postcodeOutcodes[63]="EN";
postcodeOutcodes[64]="IG";
postcodeOutcodes[65]="IP";
postcodeOutcodes[66]="LU";
postcodeOutcodes[67]="MK";
postcodeOutcodes[68]="NR";
postcodeOutcodes[69]="PE";
postcodeOutcodes[70]="RM";
postcodeOutcodes[71]="SG";
postcodeOutcodes[72]="SS";
postcodeOutcodes[73]="WD";
postcodeOutcodes[74]="BA";
postcodeOutcodes[75]="BH";
postcodeOutcodes[76]="BS";
postcodeOutcodes[77]="DT";
postcodeOutcodes[78]="EX";
postcodeOutcodes[79]="GL";
postcodeOutcodes[80]="HR";
postcodeOutcodes[81]="PL";
postcodeOutcodes[82]="TA";
postcodeOutcodes[83]="TQ";
postcodeOutcodes[84]="TR";
postcodeOutcodes[85]="WR";
postcodeOutcodes[86]="GU";
postcodeOutcodes[87]="HA";
postcodeOutcodes[88]="HP";
postcodeOutcodes[89]="OX";
postcodeOutcodes[90]="PO";
postcodeOutcodes[91]="RG";
postcodeOutcodes[92]="SL";
postcodeOutcodes[93]="SN";
postcodeOutcodes[94]="SO";
postcodeOutcodes[95]="SP";
postcodeOutcodes[96]="UB";
postcodeOutcodes[97]="BN";
postcodeOutcodes[98]="BR";
postcodeOutcodes[99]="CR";
postcodeOutcodes[100]="CT";
postcodeOutcodes[101]="DA";
postcodeOutcodes[102]="KT";
postcodeOutcodes[103]="ME";
postcodeOutcodes[104]="RH";
postcodeOutcodes[105]="SM";
postcodeOutcodes[106]="TN";
postcodeOutcodes[107]="TW";
postcodeOutcodes[108]="E";
postcodeOutcodes[109]="EC";
postcodeOutcodes[110]="N";
postcodeOutcodes[111]="NW";
postcodeOutcodes[112]="SE";
postcodeOutcodes[113]="SW";
postcodeOutcodes[114]="W";
postcodeOutcodes[115]="WC";
postcodeOutcodes[116]="G";
postcodeOutcodes[117]="TD";
postcodeOutcodes[118]="GY";
postcodeOutcodes[119]="JE";
postcodeOutcodes[120]="BT";
postcodeOutcodes[121]="IM";
postcodeOutcodes[122]="S";
postcodeOutcodes[123]="L";

function postcodeTest( postcode )
{	postcode=stripInput(postcode,"-");
	// Permitted letters depend upon their position in the postcode.
	var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
	var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
	var alpha3 = "[abcdefghjkstuw]";                                // Character 3
	var alpha4 = "[abehmnprvwxy]";                                  // Character 4
	var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5

	// Array holds the regular expressions for the valid postcodes
	var pcexp = new Array ();

	// Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	
	// Expression for postcodes: ANA NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

	// Expression for postcodes: AANA  NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

	// Assume we're not going to find a valid postcode
	var valid = false;
	
	// Check the string against the types of post codes
	for ( var i=0; i<pcexp.length; i++ )
	{
		if (pcexp[i].test(postcode))
		{
		  // The post code is valid - split the post code into component parts
		  pcexp[i].exec(postcode);
		  
		  // Copy it back into the original string, converting it to uppercase and
		  // inserting a space between the inward and outward codes
		  postcode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
		  
		  // Load new postcode back into the form element
		  valid = true;
		  
		  // Remember that we have found that the code is valid and break from loop
		  break;
		}
	}
  
	if( valid )
	{
		var postcodeOutcode = '';
		
		// Pull just the Outcode from the Postcode
		if( isFinite( postcode.charAt(1) ) )
		{
			postcodeOutcode = postcode.charAt(0);
		}
		else
		{
			postcodeOutcode = postcode.substring(0, 2);
		}

		// Check the Outcode is in the list
		for( index in postcodeOutcodes )
		{
			if( postcodeOutcode == postcodeOutcodes[index] )
			{
				// Appears valid
				return postcode;
			}
		}
	}

	// Is invalid
	return 0;
}
function isValidEmail(strEmail) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	if (strEmail.length < 5) { return false; }
	if (!strEmail.match(re)) { return false; }
	return true;
}