// Do some browser detection
var ua = navigator.userAgent.toLowerCase();
var macie = ua.indexOf("msie") != -1 && ua.indexOf("mac") != -1? true:false;

/********************************************************************************
 
Name:     Flash plugin detect
 
*********************************************************************************/
var flashdetect = false;
function fnFlashDetect() {
 if (navigator.plugins && navigator.plugins.length) {
  for (x=0; x < navigator.plugins.length; x++) {
   if (navigator.plugins[x].name.indexOf('Shockwave Flash') != -1) {
     flashdetect = true;      
    break;
   }
  }
 }
 else if (window.ActiveXObject) {
  for (x = 2; x <= 20; x++) {
   try {
    oFlash = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + x + "');");
    if(oFlash) {
     flashdetect = true;  
    }
   }
   catch(e) {}
  }
 }
}
fnFlashDetect(); // run on file load; 
	
/********************************************************************************
 
Name:     Flash embed
Description:  Writeout flash code. Fixes Eolas update for IE as well.
@param swf  String path to swf file
@param width     Number value of movie width
@param height    Number value of movie height
@param alternateContent String of HTML to be served if flash is not installed
 
*********************************************************************************/
 
flash = new Object();
flash.insert = function(swf,width,height,alternateContent) {
	swf = swf.replace(/\./g,"%2E") // encode periods as %2e	
 if(flashdetect) {
 	flashObject = '<embed src="'+swf+'" menu="false" quality="high" width="'+width+'px" height="'+height+'px" type="application/x-shockwave-flash" salign="T" pluginspage="http://www.macromedia.com/go/getflashplayer" />'

 	document.getElementById("noFlashContent").style.display = "none";
	document.getElementById("flashContent").style.display = "block";
 	document.write(flashObject);  
 }
 

}


/********************************************************************************

Name: 				Call Back initialisation
Description:		Hide/show/validate form fields
*********************************************************************************/

	
//function initCallBack(custType, drpEnquiry, accountNum, topUpAmt){
function initCallBack(custType, custRadioN, custRadioY){
	
	var newCust = document.getElementById(custRadioN);	
	var existCust= document.getElementById(custRadioY);	
	var sSend;

	if (custType == "NEW"){
		newCust.checked = "checked";
		existCust.checked = "";
		sSend = "True";
	}else{
		newCust.checked = "";
		existCust.checked = "checked";
		sSend = "False";
	}
	
	vFPCust(sSend, arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]);
	
	// now set values 
	var enqTypeElem = document.getElementById(arguments[3]);
	var enqTypeVal = arguments[8];
	for (i=0;i<	enqTypeElem.length;i++){
		if (enqTypeVal == enqTypeElem.options[i].value){
			enqTypeElem.selectedIndex = i;
			break;
		}
	}


	var topUpElem    = document.getElementById(arguments[5]);
	
	if(topUpElem != null){
		if (enqTypeVal == "TOP"){
	      topUpElem.disabled = false;
	      topUpElem.className = "show formRow";
	   }else{
	      topUpElem.disabled = true;
	   	   topUpElem.className = "hide";
	   	}
	}	
}


/*
Comma format a number
*/
function addCommas(nStr) {
	nStr += '';
	x = nStr.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;
}

/**
Format number
*/
function fnFormat(obj) {

	var val 					= 	obj.value;
	var formattedValue 	= 	val.replace(/[^0-9.]/g,''); 			// Only allow numbers and period
	if (formattedValue != ''){
		if (!isNaN(formattedValue)){
		
			var anumber = Number(formattedValue);
			obj.value				= 	addCommas(anumber.toFixed(2));
		}
	}
	
}


/**
Validate a form field function. Runs on event-handlers in HTML
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function v(input,output) {
    if (window.event) {
        if (window.event.keyCode == 9) {
            return;
        }
    }
	// Target <label>	
	var targetLabel	= document.getElementById(output); 
	
	// Build <em> tags in labels if they are missing 
	if(!targetLabel.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLabel.appendChild(myEm);
	}	
	
	// Set output target
	var outputTarget = targetLabel.getElementsByTagName("em")[0];

	// Value	
	var elementValue = input.value;
	
	
	
	// Loop through arguments (1st argument in array is the input object itself so start at second).
	//	Arguments are in pairs of regEx followed by a string error message if the regEx returns false.
	//	Loop exits after first regEx false.	
	for(i=2;i<arguments.length;i+=2) {
		if(arguments[i].test(elementValue)) {
			outputTarget.className 	= "tick";
			outputTarget.innerHTML 	= "&nbsp;";
		} else {
			outputTarget.className 	= "cross";
			outputTarget.innerHTML 	= " "+arguments[(i+1)]; 
			break;
		}			
	}


}



/**
Validate other title
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vTitleOther(output,text1,text2,msg) {

	// Target <legend>	
	var targetLegend	= document.getElementById(output); 

	// Build <em> tags in labels if they are missing 
	if(!targetLegend.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLegend.appendChild(myEm);				
	}	
	// Set output target
	var outputTarget = targetLegend.getElementsByTagName("em")[0];

	
	if ((document.getElementById(text1).value == "Other") && (text2.value == "")){
		outputTarget.className 	= "cross";
		outputTarget.innerHTML 	= " "+msg; 
	}
	else{
		outputTarget.className 	= "tick";
		outputTarget.innerHTML 	= "&nbsp;";
	} 

}

/**
Validate telephone numbers
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vTel(regEx,output,text1,text2,msg) {

	// Target <legend>	
	var targetLegend	= document.getElementById(output); 
			
	// Build <em> tags in labels if they are missing 
	if(!targetLegend.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLegend.appendChild(myEm);				
	}	
	
	// Set output target
	var outputTarget = targetLegend.getElementsByTagName("em")[0];
	
	var tel =  regEx.test(document.getElementById(text1).value)? true:false;
	var mob =  regEx.test(document.getElementById(text2).value)? true:false;
	
	if(tel || mob) {
		outputTarget.className 	= "tick";
		outputTarget.innerHTML 	= "&nbsp;";
	} else {
		outputTarget.className 	= "cross";
		outputTarget.innerHTML 	= " "+msg; 
	}
	
	
}

/**
Check that the running total is between the correct amounts
*/
function vCheckTotal(target1,target2,msg, output)
{
    var iTotal=0;
    
	// Targets 	
	var targetLabel1	= document.getElementById(target1); 
	var targetLabel2	= document.getElementById(target2); 
    
	// Build <em> tags in labels if they are missing 
	if(!targetLabel1.getElementsByTagName("em")[0]) {
		var myEm1 = document.createElement("em");		
		targetLabel1.appendChild(myEm1);				
	}	
    
	// Build <em> tags in labels if they are missing 
	if(!targetLabel2.getElementsByTagName("em")[0]) {
		var myEm2 = document.createElement("em");		
		targetLabel2.appendChild(myEm2);				
	}	

    var outputTarget1 = targetLabel1.getElementsByTagName("em")[0];
    var outputTarget2 = targetLabel2.getElementsByTagName("em")[0];
    
    for (i=4;i<arguments.length;i++){
        var iValue 	= document.getElementById(arguments[i]).value.replace(/[^0-9.]/g,''); // Only allow numbers 
        if (!isNaN(parseFloat(iValue))){
            iTotal += parseFloat(iValue);
        }
    }
    
   document.getElementById(output).value = iTotal;
   document.getElementById(output).value = "\u00A3 "+Math.round(iTotal*100)/100;
	fnFormat(document.getElementById(output));
	document.getElementById(output).value = "\u00A3 "+document.getElementById(output).value;

    
    if(iTotal >= 5000 && iTotal <= 100000) {
        outputTarget1.className 	= "tick";
        outputTarget1.innerHTML 	= "&nbsp;";
        outputTarget2.className 	= "tick";
        outputTarget2.innerHTML 	= "&nbsp;";
    } else {
        outputTarget1.className 	= "cross";
        outputTarget1.innerHTML 	= " "+msg; 
        outputTarget2.className 	= "cross";
        outputTarget2.innerHTML 	= " "+msg; 
    }
    
}


/**
Validate loan amount
*/
function vLoan(textBox,output,msg) {

	// Target <label>	
	var targetLabel	= document.getElementById(output); 
			
	// Build <em> tags in labels if they are missing 
	if(!targetLabel.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLabel.appendChild(myEm);				
	}	
	
	// Set output target
	var outputTarget = targetLabel.getElementsByTagName("em")[0];
	
	var iValue 		= textBox.value.replace(/[^0-9.]/g,''); // Only allow numbers and period
	iValue = parseFloat(iValue)	
	if(iValue >= 10000 && iValue <= 150000) {
		outputTarget.className 	= "tick";
		outputTarget.innerHTML 	= "&nbsp;";
	} else {
		outputTarget.className 	= "cross";
		outputTarget.innerHTML 	= " "+msg; 
	}
	
	
}

/**
Validate top up loan amount
*/
function vTopUpLoan(textBox,output,msg) {

	// Target <label>	
	var targetLabel = document.getElementById(output); 
			
	// Build <em> tags in labels if they are missing 
	if(!targetLabel.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLabel.appendChild(myEm);				
	}	
	
	// Set output target
	var outputTarget = targetLabel.getElementsByTagName("em")[0];
	
	if(textBox.value != '') {
	   var iValue 		= textBox.value.replace(/[^0-9.]/g,''); // Only allow numbers and period
	   iValue = parseFloat(iValue);		
		if(iValue > 0 && iValue <= 100000) {
			outputTarget.className 	= "tick";
			outputTarget.innerHTML 	= "&nbsp;";
		} else {
			outputTarget.className 	= "cross";
			outputTarget.innerHTML 	= " "+msg; 
		}
	}
	
	
}


/**
Validate borrowing reason
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vReason(input, output) {

	// Target <label>	
	var targetElement		= document.getElementById(output); 
	var targetTextarea 	= targetElement.getElementsByTagName("textarea")[0];
	
	// Value	
	var elementValue = input.value;
		
	// Loop through arguments (1st argument in array is the input object itself so start at second).
	//	Arguments are in pairs of regEx followed by a string error message if the regEx returns false.
	//	Loop exits after first regEx false.	
	
	for(i=2;i<arguments.length;i+=2) {
		if(arguments[i].test(elementValue)) {
		   targetElement.className = "show formRow";
		   targetTextarea.disabled = false;
		} else {			
			targetElement.className = "hide";
		   targetTextarea.disabled = true;
			break;
		}			
	}	
	
	
}

/**
Validate borrowing reason
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vReasonTxt(input, output) {

	// Target <label>	
	var targetElement		= document.getElementById(output); 
	
	// Value	
	var elementValue = input.value;
		
	// Loop through arguments (1st argument in array is the input object itself so start at second).
	//	Arguments are in pairs of regEx followed by a string error message if the regEx returns false.
	//	Loop exits after first regEx false.	
	
	for(i=2;i<arguments.length;i+=2) {
		if(arguments[i].test(elementValue)) {
		   targetElement.className = "show formRow";
		} else {			
			targetElement.className = "hide";
			break;
		}			
	}	
	
	
}



/**
Validate borrowing reason
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vOther(input1, input2, output, maxlen, lenerror) {

	// Target <label>	
	var targetLabel	= document.getElementById(output); 
	
	// Build <em> tags in labels if they are missing 
	if(!targetLabel.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLabel.appendChild(myEm);
	}	
	
	// Set output target
	var outputTarget = targetLabel.getElementsByTagName("em")[0];

	// Value	1
	var element1Value = document.getElementById(input1).value;	
	var element2Value = document.getElementById(input2).value;
	
	// test borrowing reason is other
	if (arguments[5].test(element1Value)){
	   
	   if (arguments[6].test(element2Value)){
	      if (element2Value.length <= 200){
			   outputTarget.className 	= "tick";
			   outputTarget.innerHTML 	= "&nbsp;";
			}
			else{
			   outputTarget.className 	= "cross";
			   outputTarget.innerHTML 	= " "+arguments[4]; 			
			}
		} else {
			outputTarget.className 	= "cross";
			outputTarget.innerHTML 	= " "+arguments[7]; 
	   }
	}
	
	// if ou
}


/**
Validate top-up loan comment
@param				targ		object reference of the input being validated
@param[n...]		regEx		A regular expression to test
@param[n+1...]		string	Error message if preceeding regEx is not met
*/
function vComment(input, output, maxlen, lenerror) {

	// Target <label>	
	var targetLabel	= document.getElementById(output); 
	
	// Build <em> tags in labels if they are missing 
	if(!targetLabel.getElementsByTagName("em")[0]) {
		var myEm = document.createElement("em");		
		targetLabel.appendChild(myEm);
	}	
	
	// Set output target
	var outputTarget = targetLabel.getElementsByTagName("em")[0];

	// Input Value	
	var elementValue = input.value;	

	// test reg exp then check length
	
   if (arguments[4].test(elementValue)){
      if (elementValue.length <= 200){
		   outputTarget.className 	= "tick";
		   outputTarget.innerHTML 	= "&nbsp;";
		}
		else{
		   outputTarget.className 	= "cross";
		   outputTarget.innerHTML 	= " "+arguments[3]; 			
		}
	} else {
		outputTarget.className 	= "cross";
		outputTarget.innerHTML 	= " "+arguments[5]; 
   }
	
}


/**
Validate existing customer type
*/
function vFPCust(newCust) {
	// test reg exp then check length
   var enqTypeElem  = document.getElementById(arguments[1]);
   var accountElem  = document.getElementById(arguments[2]);
   var topUpElem    = document.getElementById(arguments[3]);
   var newHowFindElem  = document.getElementById(arguments[4]);
   var existHowFindElem  = document.getElementById(arguments[5]);


	if (newCust.toString() == "False"){

      enqTypeElem.options.length = 0;
      enqTypeElem.options[0] = new Option("Select a type", "");      
		enqTypeElem.options[1] = new Option("Further borrowing", "TOP");         
		enqTypeElem.options[2] = new Option("Customer services", "CUST");         
		enqTypeElem.options[3] = new Option("Jobs, Press, other", "GEN");
      
	  if(accountElem != null){
      	accountElem.disabled = false;
      	accountElem.className = "show formRow";
	  }
	  
	  if(topUpElem != null){    
	      if (enqTypeElem.value == "TOP"){
	         topUpElem.disabled = false;
	         topUpElem.className = "show formRow";
	      }else{
	         topUpElem.disabled = true;
	         topUpElem.className = "hide";
	      }
      }
      // redo dropdown
      newHowFindElem.disabled = true;
      newHowFindElem.className = "hide";
      existHowFindElem.disabled = false;
      existHowFindElem.className = "show formRow";
      
   }else {
      // New customers
      enqTypeElem.options.length = 0;
      enqTypeElem.options[0] = new Option("Select a type", "");
      enqTypeElem.options[1] = new Option("New loan", "NEW");
      enqTypeElem.options[2] = new Option("Jobs, Press, other", "GEN");         
      
      // hide account number and topuplaon
	  if(accountElem != null){
      	accountElem.className = "hide";
       	accountElem.disabled = true;
      }
	 
	  // hide top-up loan
	  if(topUpElem != null){
      	topUpElem.className = "hide";
      	topUpElem.disabled = true;
      }
	  
      // redo dropdown
      existHowFindElem.disabled = true;
      existHowFindElem.className = "hide";
      newHowFindElem.disabled = false;
      newHowFindElem.className = "show formRow";

      
   }
	
}

/**
Validate existing customer type
*/
function vEnqType(input) {
	// test reg exp then check length
		
   var topUpElem = document.getElementById(arguments[1]);

   var elementValue = input.value;
   if(topUpElem != null){
	   if (elementValue == "TOP"){
	         topUpElem.disabled = false;
	         topUpElem.className = "show formRow";
	   }else{
	      topUpElem.disabled = true;
	      topUpElem.className = "hide";
	   }	
	}
}





/**
check one input field out of a group has been entered
*/

function fnCheckOne(regEx, group, input, target){

	var aInputs = document.getElementById(group).getElementsByTagName("input");
	var bFound  = false;
	var aFirst;
	var targetLabel = document.getElementById(target);

    // Build <em> tags in labels if they are missing 
    if(!targetLabel.getElementsByTagName("em")[0]) {
        var myEm = document.createElement("em");		
        targetLabel.appendChild(myEm);
    }	

    // Set output target
    var outputTarget = targetLabel.getElementsByTagName("em")[0];
	
	for(i=0;i<aInputs.length;i++) {		
	    bFound = (regEx.test(aInputs[i].value) && aInputs[i].className != "readonly") ? true:false;
        if (bFound) break;
	}
	
	if (!bFound){
	    outputTarget.className 	= "cross";
        outputTarget.innerHTML 	= " "+arguments[4]; 			
    }
    else{
	    outputTarget.className 	= "tick";
       outputTarget.innerHTML 	= "&nbsp;"; 			
    }
}

/**
get values of all inputs inside "group" and total. output value to "targ"
*/
function fnTotal(group,targ) {
	var aInputs = document.getElementById(group).getElementsByTagName("input");
	var total = 0;
	
	for(i=0;i<aInputs.length;i++) {			
		if(/(totalMe)/.test(aInputs[i].className)) {				
			var val 	= aInputs[i].value.toString();	
			if(!isNaN(parseFloat(val))) {
				val 	 = val.replace(/[^0-9.]/g,''); // Only allow numbers
				total += parseFloat(val);
			}
		}
	}		
	document.getElementById(targ).value = "\u00A3 "+Math.round(total*100)/100;
	fnFormat(document.getElementById(targ));
	document.getElementById(targ).value = "\u00A3 "+document.getElementById(targ).value;
	
}

/*
Clean input values to be positive numbers
*/
function fnNum(forminput) {
	var val 	= forminput.value.toString();		// get input value
	val 		= val.replace(/[^0-9,]/g,''); 	    // remove all illegal characters
	val 		= val.replace(/,{2}/,',');			// only allow 1 comma seperator
	forminput.value = val;							// put clean value back into form
}


/**
*/
function fnMonthly(input,targ) {
	var val = input.value;
	//val = fnNum(val);
	val 		= val.replace(/,/g,''); 	// remove all illegal characters
	if(!isNaN(parseFloat(val))) {		
		document.getElementById(targ).value = Math.round(val/12*100)/100;
	}
	fnFormat(document.getElementById(targ));
}


/**
Return the pixel value of the viewport width 
*/
function clientWidth() {
	return self.screen.availWidth
}

function css() {
	availablewidth = clientWidth();	
	document.body.className = availablewidth < 1016? "small":"big";	
}




/* Function for rollovers */
function fnRollOver(targ) {
	if(!macie) {
		if(/(rollover|rollout)/g.test(targ.className.toString())) {
			targ.className = targ.className.toString().replace(/(rollover|rollout)/g,'rollover');
		}  else {
			targ.className = "rollover "+targ.className;			
		}	
	//alert(targ.className)	
	}
}

/* Function for rollouts  */
function fnRollOut(targ) {	
	if(!macie) {
	targ.className = targ.className.toString().replace(/(rollover)/g,'');	
	targ.className = targ.className.toString().replace(/(  )/g,'');		
	}
}

function fnPrint() {
	window.print();	
}


function fnLoanFormInit(form){
	
}
 	
	