 	function gsnGoX(tUrl){
    if(tUrl.indexOf("?")<0)
      document.location.href=tUrl+'?gsnsessionid='+gsnsessionid;
    else
      document.location.href=tUrl+'&gsnsessionid='+gsnsessionid;					
	}
	
	// Post data and return javascript with ajax
  function gsnGoX4(jsUrl, data){
    // popdown();	
    if(jsUrl){
// alert(jsUrl);
// alert(data);
      gsnSendJsRequest(jsUrl,data,"post");
    }
  }	

  function gsnGetXMLHTTPObject(){
    //instantiate new XMLHTTP object
    var objhttp=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
    if(!objhttp){return};
    // assign event handler
    objhttp.onreadystatechange=displayStatus;
    return objhttp;
  }

  function gsnSendRequest(url,data,method,header){
    // get XMLHTTP object
    objhttp=gsnGetXMLHTTPObject();
    // set default values
    if(!url){url='default_url.htm'};
    if(!data){data='defaultdata=defaultvalue'};
    if(!method){method='get'};
    if(!header){header='Content-Type:text/html; charset=iso-8859-1'};
    // open socket connection in asyncronous mode
    objhttp.open(method,url,true);
    // send header
    objhttp.setRequestHeader(header.split(':')[0],header.split(':')[1]);
    // send data
    objhttp.send(data);
    // return xmlhttp object
    return objhttp;
  }
	
  function gsnGetXMLHTTPObjectJs(){
    //instantiate new XMLHTTP object
    var objhttpjs=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
    if(!objhttpjs){return};
    // assign event handler
    objhttpjs.onreadystatechange=gsnJsExecute;
    return objhttpjs;
  }

  function gsnSendJsRequest(url,data,method,header){
    // get XMLHTTP object
    objhttpjs=gsnGetXMLHTTPObjectJs();
    // set default values
    if(!url){url='default_url.htm'};
    if(!data){data='defaultdata=defaultvalue'};
    if(!method){method='get'};
    if(!header){header='Content-Type:text/html; charset=iso-8859-1'};
    // open socket connection in asyncronous mode
    objhttpjs.open(method,url,true);
    // send header
    objhttpjs.setRequestHeader(header.split(':')[0],header.split(':')[1]);
    // send data
    objhttpjs.send(data);
    // return xmlhttp object
    return objhttpjs;
  }	
	
  function gsnJsExecute(){
    if(objhttpjs.readyState==4){
// alert(objhttpjs.responseText);		
      old=document.getElementById("jsId");
      if (old) document.body.removeChild(old);

      js=document.createElement("script");
      js.defer=true;
      js.id="jsId";
      js.type="text/javascript";
      js.text=objhttpjs.responseText;
      document.body.appendChild(js);						
    }
  }	
		
  function gsnCollectionToArray(col) {
    arr=new Array();
    for(i=0;i<col.length;i++)
      arr[arr.length]=col[i];
    return arr;
  }

  function gsnCollate(frm) {
    xml=gsnConcatXml(frm);
		return "<?xml version='1.0' encoding='ISO-8859-1'?><xml>"+xml+"</xml>";
  }
	
  function gsnConcatXml(obj){
    xmlstr="";
    elems=obj.getElementsByTagName("input");
    inputs=gsnCollectionToArray(elems);
    for(i=0;i<inputs.length;i++){		
      type="";
      name="";
			value="";
      if(inputs[i].type=="text"){
        name=inputs[i].name?inputs[i].name:"unknown";
        type="text";	
        value=escape(inputs[i].value);
        xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
      }
      else if(inputs[i].type=="password"){
        name=inputs[i].name?inputs[i].name:"unknown";
        type="password";				
        value=escape(inputs[i].value);				
        xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
      }			
      else if(inputs[i].type=="checkbox"){
        if(inputs[i].checked){
          name=inputs[i].name?inputs[i].name:"unknown";
          type="checkbox";					
          value=escape(inputs[i].value);					
          xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
        }
      }
      else if(inputs[i].type=="radio"){
        if(inputs[i].checked){
          name=inputs[i].name?inputs[i].name:"unknown";
          type="radio";					
          value=escape(inputs[i].value);					
          xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
        }
      }
      else if(inputs[i].type=="hidden"){
        name=inputs[i].name?inputs[i].name:"unknown";
        type="hidden";				
        value=escape(inputs[i].value);				
        xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
      }			
      else if(inputs[i].type=="file"){
        name=inputs[i].name?inputs[i].name:"unknown";
        type="file";
        value=escape(inputs[i].value);
        if(value){
          xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
        }
      }
    }
		
    elems=obj.getElementsByTagName("textarea");
    inputs=gsnCollectionToArray(elems);
    for(i=0;i<inputs.length;i++){
      name=inputs[i].name?inputs[i].name:"unknown";
      type="textarea";
      value=escape(inputs[i].value);
      xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
    }
		
    elems=obj.getElementsByTagName("select");
    inputs=gsnCollectionToArray(elems);
    for(i=0;i<inputs.length;i++){
      sel=inputs[i];
      for(j=0;j<sel.options.length;j++){
        if(sel.options[j].selected){
          name=sel.name?sel.name:"unknown";
          type="select";
          value=escape(sel.options[j].value);
          xmlstr+="<"+name+" type='"+type+"'>"+value+"</"+name+">";
        }
      }
    }
    // xmlstr="<?xml version='1.0' encoding='ISO-8859-1'?><xml>"+xmlstr+"</xml>";
    return xmlstr;
  }
	
  function gsnSubmitLoan(ftype){
    xml="";
    if(ftype==1){ // Lease
      // atype=document.getElementById("assettypeLease").options[document.getElementById("assettypeLease").selectedIndex].value;
			acat=document.getElementById("assetcatLease").options[document.getElementById("assetcatLease").selectedIndex].value;
      // if((atype==5)||(atype==7)||(atype==15)){ // Vehicle
      if(acat==2){ // Vehicle			
        ltype=document.getElementById("leasetypeVehicle").options[document.getElementById("leasetypeVehicle").selectedIndex].value;
        if(ltype==1){ // Finance Lease
          divs=new Array("comuse","header","Lease","VehicleLeaseType","FinanceLease","leaselenders");
        }
        else{
          divs=new Array("comuse","header","Lease","VehicleLeaseType","OperatingLease","leaselenders");
        }
      }
      else{
        divs=new Array("comuse","header","Lease","NonVehicle");
      }
    }
    else if(ftype==2){ // LOC
      divs=new Array("comuse","header","LOC");
    }
    else if(ftype==4){ // Working Capital
      divs=new Array("comuse","header","LOC");
    }		
    else{ // Loan
      divs=new Array("comuse","header","LOAN");
		}
		
    for(k=0;k<divs.length;k++){
      ele=document.getElementById(divs[k]);
			xml+=gsnConcatXml(ele);
    }
		xml="<?xml version='1.0' encoding='ISO-8859-1'?><xml>"+xml+"</xml>";
		return xml;
  }
	
  // Begin javascript functions for login
  function gsnFormLoginValidate(fm){
    if(fm.user.value.length == 0) {
      alert("Oops! You need to enter a username");
      fm.user.focus();
      return false;
    }
    else if(fm.password.value.length == 0) {
      fm.password.focus();
      alert("Oops! You need to enter a password");
      return false;
    }
    return true;
  }
	
  // Begin javascript functions for validation
  function validateEmail(email){	
    // var emailFilter=/^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/;
    var emailFilter=/^(?:\w+\.?)*\w+@(?:[\w\-]+\.)+\w+$/;
    if(emailFilter.test(email))
      return true;
    else
      return false;
	}

  function checkNumericValue(obj,name,limit){
    if((parseFloat(obj.value)<0)||(parseFloat(obj.value)>limit)){
      alert("Value for "+name+" must be between 0 and "+limit+"%");
      obj.value="0";
      obj.focus();
      return false;
	  }
    return true;
  }
	
  function gsnValidateSiteForm(fm){
    msg = new String();	
    
    if(!clientdirty)
      msg="These details have already been submitted";
    else if(!fm.clientName.value.length)
      msg="Please provide a client name";				
    else if(!fm.tradingName.value.length)
      msg="Please provide a trading name";	
    else if(fm.legalStatus.value==0)
      msg="Please specify the legal status";				
    else if(!fm.IRDNumber.value.length)
      msg="Please provide an IRD Number";	
    else if(!fm.NatureofBusiness.value.length)
      msg="Please provide the nature of business";				
    else if(!fm.MailingAddress1.value.length)
      msg="Please provide a mailing address";	
    // else if(!fm.MailingAddress2.value.length)
    //   msg="Please provide a mailing suburb";	
    else if(!fm.MailingAddress3.value.length)
      msg="Please provide a mailing postcode";							
    else if(!fm.MailingAddressCity.value.length)
      msg="Please provide a mailing city";
    else if(!fm.MainContactFirstName.value.length)
      msg="Please provide a contact first name";
    else if(!fm.MainContactLastName.value.length)
      msg="Please provide a contact last name";
    else if(!fm.MainContactPosition.value.length)
      msg="Please provide a contact position";
    else if(!fm.phone.value.length)
      msg="Please provide a contact work phone";
    else if(!fm.fax.value.length)
      msg="Please provide a contact fax number";
    else if(!fm.email.value.length)
      msg="Please provide a contact email address";	
    else if(!validateEmail(fm.email.value))
      msg="Please provide a valid email address";							
												
		if(msg.length){
			alert(msg);
      return false;
    }

		clientdirty=false;
    return true;
  }
	
  function gsnValidateFinancierForm(fm){
    msg = new String();	
    
    if(!clientdirty)
      msg="These details have already been submitted";
    else if(!fm.clientName.value.length)
      msg="Please provide a legal name";	
		else if(!fm.MailingAddress1.value.length)
      msg="Please provide a mailing address";	
		// else if(!fm.MailingAddress2.value.length)
    //   msg="Please provide a mailing suburb";	
		else if(!fm.MailingAddress3.value.length)
      msg="Please provide a mailing postcode";							
		else if(!fm.MailingAddressCity.value.length)
      msg="Please provide a mailing city";
		else if(!fm.MainContactFirstName.value.length)
      msg="Please provide a contact first name";
		else if(!fm.MainContactLastName.value.length)
      msg="Please provide a contact last name";
		else if(!fm.MainContactPosition.value.length)
      msg="Please provide a contact position";
		else if(!fm.phone.value.length)
      msg="Please provide a contact work phone";
		else if(!fm.fax.value.length)
      msg="Please provide a contact fax number";
		else if(!fm.email.value.length)
      msg="Please provide a contact email";
    else if(!validateEmail(fm.email.value))
      msg="Please provide a valid email address";				
		else if(!fm.url.value.length)
      msg="Please provide a website";			
												
		if(msg.length){
			alert(msg);
      return false;
    }

		clientdirty=false;
    return true;
  }	
	
  function gsnValidateUserForm(fm){
    msg = new String();	
    
    if(!clientdirty)
      msg="These details have already been submitted";
    else if(!fm.MainContactFirstName.value.length)
      msg="Please provide a first name";	
		else if(!fm.MainContactLastName.value.length)
      msg="Please provide a last name";	
		else if(!fm.Username.value.length)
      msg="Please provide a username";	
		else if((!fm.Password.value.length)||(fm.Password.value.length<6))
      msg="Please provide a password of more than six characters";
		else if((!fm.ConfirmPassword.value.length)||(fm.ConfirmPassword.value.length<6))
      msg="Password and confirmation do not match";
		else if(fm.Password.value!=fm.ConfirmPassword.value)
      msg="Password and confirmation do not match";													
		else if(!fm.email.value.length)
      msg="Please provide an email address";
    else if(!validateEmail(fm.email.value))
      msg="Please provide a valid email address";					

		if(msg.length){
			alert(msg);
      return false;
    }

		clientdirty=false;
    return true;
  }	

  function gsnValidateClientForm(fm){
    msg = new String();	
    
    if(!clientdirty)
      msg="These details have already been submitted";
    else if(!fm.tradingName.value.length)
      msg="Please provide a trading name";
    else if(!fm.IRDNumber.value.length)
      msg="Please provide an IRD Number";
		else if(!fm.TradingAddressCity.value.length)
      msg="Please provide a contact city";		
		else if(!fm.MainContactFirstName.value.length)
      msg="Please provide a contact first name";	
		else if(!fm.MainContactLastName.value.length)
      msg="Please provide a contact last name";
		else if(!fm.phone.value.length)
      msg="Please provide a contact work phone";
		else if(!fm.Privacy.checked)
      msg="Please sign the privacy declaration";			
												
		if(msg.length){
			alert(msg);
      return false;
    }

		clientdirty=false;
    return true;
  }
	
  function gsnValidateQuoteForm(fm,action){
    msg = new String();	
    fintypeid=0;
    assettypeid=0;
    leasetypeid=0;
    loantypeid=0;		
    leaseterm1=0;
    leaseterm2=0;
    assetcost1=0;
    assetcost2=0;
    assetdeposit1=0;
    assetdeposit2=0;
    brokeragecalc1=0;
    brokeragecalc2=0;
    residual1=0;
    amountfinanced=0;
    annualkms1=0;
    annualkms2=0;
    assetdesc1="";
		purposeofloan="";
    vehicletype1="";
    vehicletype2="";
		vehicleaccessories1="";
    vehicleaccessories2="";
    provider=0;
		comments="";
    count=0;
		
    fintypeid=fm.finType.options[fm.finType.selectedIndex].value;
    if(action=="edit")
      status=document.getElementById("quotestatusid").value;
      // status=fm.finStatus.options[fm.finStatus.selectedIndex].value;
    else
      status=0;
    if(!loandirty)
      msg="These details have already been submitted";
    else if((action=="edit")&&(!fm.reference.value.length)&&(status==3))
      msg="Please provide a lender reference number";      
    else if(fm.existing.options[fm.existing.selectedIndex].value==0)			
      msg="Please select a client";	
    else if((fm.Day.selectedIndex==0)&&(fm.Month.selectedIndex==0)&&(fm.Year.selectedIndex==0))		
      msg="Please select a required by date";
    else if(fintypeid==0)			
      msg="Please select a finance type";	

		if(msg.length){
			alert(msg);
      return false;
    }
/*		
    elems=fm.getElementsByTagName("select");
    inputs=gsnCollectionToArray(elems);
    for(i=0;i<inputs.length;i++){
      if(inputs[i].options){			
        if(inputs[i].name=="assettype"){
          if(inputs[i].value>0)
            assettypeid=inputs[i].value;
        }
        else if(inputs[i].name=="leasetype"){
          if(inputs[i].value>0)
            leasetypeid=inputs[i].value;
        }
        else if(inputs[i].name=="LeaseTerm1a"){
          if(inputs[i].value>0)
            leaseterm1=inputs[i].value;
        }
        else if(inputs[i].name=="LeaseTerm2a"){
          if(inputs[i].value>0)
            leaseterm2=inputs[i].value;
        }				
      }
      // alert(inputs[i].name + ' ' + inputs[i].value);
    }

    elems=fm.getElementsByTagName("input");
    inputs=gsnCollectionToArray(elems);
    for(i=0;i<inputs.length;i++){
      if(inputs[i].name=="vehicleType1"){
        if(inputs[i].value.length)
          vehicletype1=inputs[i].value;
      }		
      else if(inputs[i].name=="assetCost1"){
        if(inputs[i].value.length)
          assetcost1=inputs[i].value;
      }
      else if(inputs[i].name=="assetDeposit1"){
        if(inputs[i].value.length)
          assetdeposit1=inputs[i].value;
      }
      else if(inputs[i].name=="BrokerageCalc1"){
        if(inputs[i].value.length)
          brokeragecalc1=inputs[i].value;
      }
      else if(inputs[i].name=="Residual1"){
        if(inputs[i].value.length)
          residual1=inputs[i].value;
      }
      else if(inputs[i].name=="vehicleAnnualKms1"){
        if(inputs[i].value.length)
          annualkms1=inputs[i].value;
      }											
    }
*/		
    if(fintypeid==1){ // Lease
      // assettypeid=document.getElementById("assettypeLease").options[document.getElementById("assettypeLease").selectedIndex].value;
      assetcatid=document.getElementById("assetcatLease").options[document.getElementById("assetcatLease").selectedIndex].value;

      // if(assettypeid==5){ // Car lease
      if(assetcatid==2){ // Vehicle	
        leasetypeid=document.getElementById("leasetypeVehicle").options[document.getElementById("leasetypeVehicle").selectedIndex].value;	
				
        if(leasetypeid==0){
          msg="Please select a lease type";
        }
				else if(leasetypeid==1){ // Finance Lease
          vehicletype1=document.getElementById("vehicleType1Fin").value;
          vehicleaccessories1=document.getElementById("vehicleAccessories1Fin").value;
          assetcost1=document.getElementById("assetCost1Fin").value;
          assetdeposit1=document.getElementById("assetDeposit1Fin").value;
          // brokeragepc1=document.getElementById("BrokeragePC1Fin").value;
          brokeragecalc1=document.getElementById("BrokerageCalc1Fin").value;
          comments=document.getElementById("CommentsFin").value;					
          count=document.getElementById("vfcount").value;
          if(count>1){
            vehicletype2=document.getElementById("vehicleType2Fin").value;
            vehicleaccessories2=document.getElementById("vehicleAccessories2Fin").value;
            assetcost2=document.getElementById("assetCost2Fin").value;
            assetdeposit2=document.getElementById("assetDeposit2Fin").value;
            brokeragepc2=document.getElementById("BrokeragePC2").value;						
            brokeragecalc2=document.getElementById("BrokerageCalc2Fin").value;					
          }

          if(!vehicletype1.length)
            msg="Please provide a vehicle description";		
          else if(!vehicleaccessories1.length)
            msg="Please specify vehicle accessories";									
          else if(!assetcost1.length)
            msg="Please provide an estimated cost";
          else if(!assetdeposit1.length)
            msg="Please provide a deposit";
/*
          else if(brokeragepc1.length)
            if(parseFloat(brokeragepc1.value)<0)
              msg="Brokerage may not be negative";						
					  else if(parseFloat(brokeragepc1.value)>3.0)
              msg="Brokerage may not be more than 3.0%";
*/
          else if(!brokeragecalc1.length)
            msg="Please provide a brokerage figure";
          else if(!comments.length)
            msg="Please provide a comment";

          if((!msg.length)&&(count>1)){
            if((vehicletype2.length)||(vehicleaccessories2.length)||(assetcost2.length)||(assetdeposit2.length)||(brokeragecalc2.length)){
              if(!vehicletype2.length)
                msg="Please provide a second vehicle description";
              else if(!vehicleaccessories2.length)
                msg="Please specify second vehicle accessories";
              else if(!assetcost2.length)
                msg="Please provide a second vehicle estimated cost";								
              else if(!assetdeposit2.length)
                msg="Please provide a second vehicle deposit";
              else if(!brokeragecalc2.length)
                msg="Please provide a second vehicle brokerage figure";													
            }
          }						
        }
				else{
          vehicletype1=document.getElementById("vehicleType1Oper").value;
          vehicleaccessories1=document.getElementById("vehicleAccessories1Oper").value;
          annualkms1=document.getElementById("vehicleAnnualKms1").value;
          assetcost1=document.getElementById("assetCost1Oper").value;
          comments=document.getElementById("CommentsFin").value;	
          count=document.getElementById("vocount").value;

          if(count>1){
            vehicletype2=document.getElementById("vehicleType2Oper").value;
            vehicleaccessories2=document.getElementById("vehicleAccessories2Oper").value;
            annualkms2=document.getElementById("vehicleAnnualKms2").value;
            assetcost2=document.getElementById("assetCost2Oper").value;					
          }

          if(!vehicletype1.length)
            msg="Please provide a vehicle description";
          else if(!vehicleaccessories1.length)
            msg="Please specify vehicle accessories";
          else if(!annualkms1.length)
            msg="Please specify annual kilometers";						
          else if(!assetcost1.length)
            msg="Please provide an estimated cost";					
          else if(!comments.length)
            msg="Please provide a comment";

          if((!msg.length)&&(count>1)){
            if((vehicletype2.length)||(vehicleaccessories2.length)||(annualkms2.length)||(assetcost2.length)){
              if(!vehicletype2.length)
                msg="Please provide a second vehicle description";
              else if(!vehicleaccessories2.length)
                msg="Please specify second vehicle accessories";
              else if(!annualkms2.length)
                msg="Please specify second vehicle annual kilometers";
              else if(!assetcost2.length)
                msg="Please provide a second vehicle estimated cost";													
            }
          }
				}
      }
      else{ // Non car lease
        assetdesc1=document.getElementById("assetDescNonVehicle").value;
        leasetypeid=document.getElementById("leaseTypeNonVehicle").options[document.getElementById("leaseTypeNonVehicle").selectedIndex].value;
        leaseterm1=document.getElementById("LeaseTermNonVehicle1a").options[document.getElementById("LeaseTermNonVehicle1a").selectedIndex].value;				
        assetcost1=document.getElementById("assetCostNonVehicle").value;
        // assetdeposit1=document.getElementById("assetDepositNonVehicle").value;
        // brokeragepc1=document.getElementById("BrokeragePC1").value;				
        brokeragecalc1=document.getElementById("BrokerageCalcNonVehicle").value;
        comments=document.getElementById("CommentsNonVehicle").value;
				
        if(leasetypeid==0)
          msg="Please provide a lease type";
        else if(leaseterm1==0)
          msg="Please provide at least one lease term"; 					
        else if(!assetdesc1.length)
          msg="Please provide an asset description"; 
        else if(!assetcost1.length)
          msg="Please provide an asset cost";
        // else if(!assetdeposit1.length)
        //   msg="Please provide a deposit";
        else if(!brokeragecalc1.length)
          msg="Please provide a brokerage figure";
        else if(!comments.length)
          msg="Please provide a comment";					
			
        if(!msg.length){ // Check lender selected
          provider=document.getElementById("leaseProvider").value;
          if(provider==0)
            msg="Please select a Loan Provider";				
        }
      }      
/*
        if(fm.lenders!=null){		
          if(fm.lenders.length){
            cnt=0;		
            for(idx=0;idx<fm.lenders.length;idx++){		
              if(fm.lenders[idx].checked){
                cnt=cnt+1;
              }								
            }
			      if(cnt==0)
              msg="Please select at least one lender";
          }
          else{
            if(!fm.lenders.checked)
              msg="Please select a lender";						
          }
        }
        else if(fm.financierid!=null){
          if(fm.financierid.length){
            cnt=0;		
            for(idx=0;idx<fm.financierid.length;idx++){		
              if(fm.financierid[idx].checked){
                cnt=cnt+1;
              }								
            }
			      if(cnt==0)
              msg="Please select at least one lender";
          }
          else{
            if(!fm.financierid.checked)
              msg="Please select a lender";						
          }
        }
        else if(fm.financierid==null){
          msg="Quote cannot be created without a lender";          
        }
      }
*/
    }
    else if(fintypeid==2){ // LOC
      // brokeragepc1=document.getElementById("BrokeragePC1").value;
      brokeragecalc1=document.getElementById("BrokerageCalcLoc").value;
			purposeofloan=document.getElementById("PurposeofLoanLoc").value;
      comments=document.getElementById("CommentsLoc").value;			
      if(!fm.creditMaximum.value.length)
        msg="Please provide a loan amount";	
      else if(!brokeragecalc1.length)
        msg="Please provide a brokerage figure";
      else if(!purposeofloan.length)
        msg="Please provide a loan purpose";
      else if(!comments.length)
        msg="Please provide a comment";

      if(!msg.length){
        provider=document.getElementById("LOCProvider").options[document.getElementById("LOCProvider").selectedIndex].value;
        if(provider==0)
          msg="Please select a LOC Provider";				
      }
    }
    else if(fintypeid==4){ // Working Capital
      // brokeragepc1=document.getElementById("BrokeragePC1").value;
      brokeragecalc1=document.getElementById("BrokerageCalcLoc").value;
			purposeofloan=document.getElementById("PurposeofLoanLoc").value;
      comments=document.getElementById("CommentsLoc").value;			
      if(!fm.creditMaximum.value.length)
        msg="Please provide a loan amount";	
      else if(!brokeragecalc1.length)
        msg="Please provide a brokerage figure";
      else if(!purposeofloan.length)
        msg="Please provide a loan purpose";
      else if(!comments.length)
        msg="Please provide a comment";

      if(!msg.length){
        provider=document.getElementById("LOCProvider").options[document.getElementById("LOCProvider").selectedIndex].value;
        if(provider==0)
          msg="Please select a Working Capital Provider";				
      }
    }
    else if(fintypeid==3){ // Loan
      loantypeid=fm.loantype.options[fm.loantype.selectedIndex].value;
      assettypeid=document.getElementById("assettypeloan").value;
      assetdesc1=document.getElementById("assetdescLoan").value;
      assetcost1=document.getElementById("assetCostLoan").value;
      assetdeposit1=document.getElementById("assetDepositLoan").value;
      // brokeragepc1=document.getElementById("BrokeragePC1Loan").value;
      brokeragecalc1=document.getElementById("BrokerageCalcLoan").value;	
      amountfinanced=document.getElementById("amountFinancedLoan").value;
      comments=document.getElementById("CommentsLoan").value;			

      if(loantypeid==0)
        msg="Please select a loan type";
      else if(assettypeid==0)
        msg="Please select an asset type";	
      else if(!assetdesc1.length)
        msg="Please provide an asset description";										
      else if(!assetcost1.length)
        msg="Please provide an asset cost";
      else if(!assetdeposit1.length)
        msg="Please provide a deposit";
      else if(!brokeragecalc1.length)
        msg="Please provide a brokerage figure";				
      else if(!amountfinanced.length)
        msg="Please provide an amount financed";			
      else if(!comments.length)
        msg="Please provide a comment";				

      if(!msg.length){
        provider=document.getElementById("loanProvider").options[document.getElementById("loanProvider").selectedIndex].value;
        if(provider==0)
          msg="Please select a Loan Provider";				
      }
    }
		
		if(msg.length){
			alert(msg);
      return false;
    }				
				
    loandirty=false;			
    return true;
  }	
		
  function gsnValidateLoanForm(fm){
    return true;
  }	
	
  function gsnValidateSoFPForm(fm){
    msg = new String();	

    if(!sofpdirty)
      msg="These details have already been submitted";
    else if(!fm.FirstName.value.length)
      msg="Please provide a first name";			
		else if(!fm.Surname.value.length)
      msg="Please provide a last name";				
		else if(!fm.address1.value.length)
      msg="Please provide an address";	
		// else if(!fm.address2.value.length)
    //   msg="Please provide a suburb";
		else if(!fm.city.value.length)
      msg="Please provide a city";
    else if(fm.Residence.options[fm.Residence.selectedIndex].value==0)
      msg="Please select a residence";
		else if(!fm.NoofYears.value.length)
      msg="Please provide number of years at current address";
    else if(!fm.YearsAtPrevious.value.length)
      msg="Please provide years at previous address";
    else if(!fm.Occupation.value.length)
      msg="Please provide your occupation";
    else if(!fm.phone.value.length)
      msg="Please provide a phone";
/*			
    else if(!fm.Asset1.value.length)
      msg="Please provide a value for Land and Buildings";
    else if(!fm.Asset2.value.length)
      msg="Please provide a value for Other Property value";
    else if(!fm.Asset3.value.length)
      msg="Please provide a value for Vehicles";
    else if(!fm.Asset4.value.length)
      msg="Please provide a value for Investments";	
    else if(!fm.Asset5.value.length)
      msg="Please provide a value for Bank";		
    else if(!fm.Asset6.value.length)
      msg="Please provide a value for Other";

    else if(!fm.Lia1.value.length)
      msg="Please provide a value for Mortgages";		
    else if(!fm.Lia2.value.length)
      msg="Please provide a value for Loans";		
    else if(!fm.Lia3.value.length)
      msg="Please provide a value for Credit/Store Cards";		
    else if(!fm.Lia4.value.length)
      msg="Please provide a value for Overdraft";		
    else if(!fm.Lia5.value.length)
      msg="Please provide a value for Other";																				

    else if(!fm.Income1.value.length)
      msg="Please provide a value for Gross Personal Income";
    else if(!fm.Income2.value.length)
      msg="Please provide a value for Rental Income";
    else if(!fm.Income3.value.length)
      msg="Please provide a value for Investment Income";
    else if(!fm.Income4.value.length)
      msg="Please provide a value for Other";	
    else if(!fm.Income5.value.length)
      msg="Please provide a value for Drawings/Profit";		

    else if(!fm.Exp1.value.length)
      msg="Please provide a value for Mortgate/Rent";
    else if(!fm.Exp2.value.length)
      msg="Please provide a value for Loans/OD";
    else if(!fm.Exp3.value.length)
      msg="Please provide a value for Credit/Store Cards";
    else if(!fm.Exp4.value.length)
      msg="Please provide a value for Living Expenses";	
*/
		else if(fm.Relationship.length>0){	
      cnt=0;
      for(idx=0;idx<fm.Relationship.length;idx++){		
        if(fm.Relationship[idx].checked)				
          cnt=cnt+1;
      }
			if(cnt==0)
        msg="Please select at least one relationship";
    }
		
		if(msg.length){
			alert(msg);
      return false;
    }				
				
    sofpdirty=false;
    return true;
  }
	
  function validateRateForm(fm){
    return true;
  }

  // Begin javascript functions for cookies
  function gsnGetCookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
      return null;
    }
    if (start == -1) return null;
    var end = document.cookie.indexOf( ";", len );
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len, end ));
  }
    
  function gsnSetCookie(name, value, expires, path, domain, secure) {
    // Set time, it's in milliseconds
    var today = new Date();
    today.setTime(today.getTime());
    /*
    if the expires variable is set, make the correct 
    expires time, the current script below will set 
    it for x number of days, to make it for hours, 
    delete * 24, for minutes, delete * 60 * 24
    */
    if (expires) {
      expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date(today.getTime() + (expires));

    document.cookie = name + "=" + escape(value) +
    ((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
    ((path) ? ";path=" + path : "") + 
    ((domain) ? ";domain=" + domain : "") +
    ((secure) ? ";secure" : "");
  }
    
  function gsnDeleteCookie(name, path, domain) {
    if (gsnGetCookie(name)) document.cookie = name + "=" +
      ((path) ? ";path=" + path : "") +
      ((domain) ? ";domain=" + domain : "" ) +
      ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
  }
	
  function gsnCookiesEnabled(){
    var expDate = new Date();
    // Valid for five minutes
    expDate.setTime(expDate.getTime()+(60*1000*5));
    gsnSetCookie("TestCookie","Yes",expDate,"/","","");
    test=gsnGetCookie("TestCookie");	
    if ((test)&&(test=="Yes" )){
      return true;
    }
    else{
      return false;
    }
  }
	