﻿// accept numbers only as input to an HTML form textbox...
function numbersonly(bffield, bfevent) {

    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (bfevent)
        key = bfevent.which;
    else
        return true;

    keychar = String.fromCharCode(key);

    // control keys
    if ((key==null) || (key==0) || (key==8) || 
        (key==9) || (key==13) || (key==27) )
        return true ;

    // numbers 
    else if ((("0123456789.").indexOf(keychar) > -1))
        return true ;

    else
        return false ;
}

function openHelpWindow(anchor) {
    window.open('../xhl/page_help.aspx?ref=fhl_rg_help#' + anchor, 'mini', 'scrollbars=yes, resizable=yes, width=600, height=700') ;
}

function endisableGroup(sender) {
	//debugger;
    var f = document.getElementById('aspnetForm') ;
    var util = 'GAS' ;
    
    if(sender.id == 'ctl00_MiddleContent_dontCompareElec')
        util = 'ELEC' ;
    
    for(i=0; i < f.elements.length; i++) {

        if(f[i].id.toUpperCase().indexOf(util) != -1 && f[i] != sender) {
            // f[i].disabled = sender.checked ;
            fadeItem(f[i], sender.checked) ;
        }
    }
    
    var txtSpend ;
    var ddlSpendPer ;
    var txtKwhPA ;
    var dontKnowUsage ;
    
    if(sender.name.indexOf('Gas') == -1) {
        txtSpend = document.getElementById('ctl00_MiddleContent_ElecSpend') ;
        ddlSpendPer = document.getElementById('ctl00_MiddleContent_ElecSpendFrequency') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_ElecKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowElecUsage') ;
    } else {
        txtSpend = document.getElementById('ctl00_MiddleContent_GasSpend') ;
        ddlSpendPer = document.getElementById('ctl00_MiddleContent_GasSpendFrequency') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_GasKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowGasUsage') ;
    }
    
    if(txtSpend.value != '') disableothers(txtSpend) ;
    if(txtKwhPA.value != '') disableothers(txtKwhPA) ;
    if(dontKnowUsage.checked) disableothers(dontKnowUsage) ;
    
    //dualFuelCheck() ;
    checkCanSubmit() ;
}

function showHideElement(target, display) {
    target.style.visibility = (display) ? '' : 'hidden' ;
}

function showHideNightUsage(sender, targetname) {
    
    var target ;
    
    if(document.getElementById)
        target = document.getElementById(targetname) ;

    showHideElement(target, sender.checked) ;
}

function disableothers(sender) {
    var txtSpend ;
    var ddlSpendPer ;
    var txtKwhPA ;
    var dontKnowUsage ;

    if(sender.name.indexOf('Gas') == -1) {
        txtSpend = document.getElementById('ctl00_MiddleContent_ElecSpend') ;
        ddlSpendPer = document.getElementById('ctl00_MiddleContent_ElecSpendFrequency') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_ElecKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowElecUsage') ;
    } else {
        txtSpend = document.getElementById('ctl00_MiddleContent_GasSpend') ;
        ddlSpendPer = document.getElementById('ctl00_MiddleContent_GasSpendFrequency') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_GasKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowGasUsage') ;
    }

	switch(sender.id) {
	    case 'ctl00_MiddleContent_ElecSpend' :
	    case 'ctl00_MiddleContent_GasSpend' :
	        if(sender.value != '') {
	            fadeItem(txtKwhPA, true) ;
	            fadeItem(dontKnowUsage, true) ;
	        } else {
	            fadeItem(txtKwhPA, false) ;
	            fadeItem(dontKnowUsage, false) ;
	        }
	        break ;
	        
	    case 'ctl00_MiddleContent_ElecKwhPA' :
	    case 'ctl00_MiddleContent_GasKwhPA' :
	        if(sender.value != '') {
	            fadeItem(txtSpend, true) ;
	            fadeItem(ddlSpendPer, true) ;
	            fadeItem(dontKnowUsage, true) ;
	        } else {
	            fadeItem(txtSpend, false) ;
	            fadeItem(ddlSpendPer, false) ;
	            fadeItem(dontKnowUsage, false) ;
	        }
	        break ;
	        
	    case 'ctl00_MiddleContent_dontKnowElecUsage' :
	    case 'ctl00_MiddleContent_dontKnowGasUsage' :
	        fadeItem(txtSpend, sender.checked) ;
	        fadeItem(ddlSpendPer, sender.checked) ;
	        fadeItem(txtKwhPA, sender.checked) ;
	        txtSpend.value = '' ;
	        txtKwhPA.value = '' ;
	        break ;
	}
}

function initForm() {

}

function fadeItem(target, disabled) {
	target.disabled = disabled ;
	if(target.type != 'checkbox' && target.type != 'radio')
	    target.style.backgroundColor = (disabled) ? '#DDDDDD' : 'white' ;
}

/**
*	Lee - Function no longer used.
*	
**/
function dualFuelCheck() {

    var dontCompareGas = document.getElementById('ctl00_MiddleContent_dontCompareGas') ;
    var dontCompareElec = document.getElementById('ctl00_MiddleContent_dontCompareElec') ;
/*atc
    var spnDualFuel = document.getElementById('spnDualFuel') ;
    var chkDualFuel = document.getElementById('chkDualFuel') ;
    
    if(!(!dontCompareGas.checked && !dontCompareElec.checked)) {
        showHideElement(spnDualFuel, false) ;
        return 0 ;
    }
*/
    if (isCurrentDualFuel())
        return 0;
    var gasSupplierTariffID = document.getElementById('GasSupplierTariffID') ;
    var elecSupplierTariffID = document.getElementById('ElecSupplierTariffID') ;

    var arrGas = getSelectedText(gasSupplierTariffID);//.split(' - ') ;
    var arrElec = getSelectedText(elecSupplierTariffID);//.split(' - ') ;
    
    var strGasSupplier = arrGas;//[0] ;
    var strElecSupplier = arrElec;//[0] ;
    
/*atc    if(!(strGasSupplier == strElecSupplier))
        chkDualFuel.checked = false ;
        
    if((strGasSupplier == strElecSupplier))
        chkDualFuel.checked = true ;
*/        
    showHideElement(spnDualFuel, strGasSupplier == strElecSupplier);
}

function getSelectedText(ddl) {
    for(i=0; i<ddl.options.length; i++) {
        if(ddl.options[i].selected)
            return ddl.options[i].text ;
    }
}

function checkCanSubmit() {
    
    var dontCompareGas = document.getElementById('ctl00_MiddleContent_dontCompareGas') ;
    var dontCompareElec = document.getElementById('ctl00_MiddleContent_dontCompareElec') ;
    var btnSubmit = document.getElementById('ctl00_MiddleContent_btnSubmit') ;
    
    showHideElement(btnSubmit, !dontCompareGas.checked || !dontCompareElec.checked) ;
    
    if(dontCompareGas.checked && dontCompareElec.checked)
        alert('Please select a utility to compare.') ;
}

function validateNumeric(value) {
    //check for numeric characters
    var rx = /\d{1,8}([.]{1}\d{1,2})?/ ;
    var matches = rx.exec(value) ;
    return (matches != null && value == matches[0]) ;
}

function validateInteger(strValue) {
    //check for integer characters
    var objRegExp  = /(^-?\d\d*$)/ ;
    return objRegExp.test(strValue) ;
}

function validatePostcode(value) {
    //validate a postcode...
    var rx = /[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}/ ;
    var matches = rx.exec(value) ;
    return (matches != null && value == matches[0]) ;
}

var errorMsg = '' ;

function validateInputform() {
	//debugger;
    var dontCompareGas = document.getElementById('ctl00_MiddleContent_dontCompareGas') ;
    var dontCompareElec = document.getElementById('ctl00_MiddleContent_dontCompareElec') ;

	var gasDiv = document.getElementById("divGas");

    var txtSpend ;
    var txtKwhPA ;
    var dontKnowUsage ;
    var result = true ;
    errorMsg = '' ;
    
    // if dual tariff selected return true.
    // i.e only elec tariff details displayed and gas details hidden
    if (gasDiv.style.display == "none") {
		// validate elec tariff details only
        txtSpend = document.getElementById('ctl00_MiddleContent_ElecSpend') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_ElecKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowElecUsage') ;
        result = validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, 'dual tariff') && result ;
    }
    
    
    if(!dontCompareGas.checked) {
		// validate gas tariff details
        txtSpend = document.getElementById('ctl00_MiddleContent_GasSpend') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_GasKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowGasUsage') ;
        result = validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, 'gas') ;
    }
    
    if (!dontCompareElec.checked) {
		// validate elec tariff details
        txtSpend = document.getElementById('ctl00_MiddleContent_ElecSpend') ;
        txtKwhPA = document.getElementById('ctl00_MiddleContent_ElecKwhPA') ;
        dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowElecUsage') ;
        result = validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, 'electricity') && result ;
    }
    
    if(!result)
        alert(errorMsg) ;
    //else
    //    alert('Successful Input') ;
    
    //return false ;
    return result ;
}

function validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, utility) {

    if(txtSpend.value == '' && txtKwhPA.value == '' && !dontKnowUsage.checked) {
        errorMsg += 'Please enter your ' + utility + ' usage, or tick \'I don\'t know my ' + utility + ' usage.\'\n'
        return false ;
    }
    
    // If a spend has been input, and it's not numeric...
    if(txtSpend.value.length > 0 && !validateNumeric(txtSpend.value)) {
        errorMsg += 'Please enter a valid ' + utility + ' spend.\n'
        return false ;
    }
    
    // Usage needs to be a whole number
    if(txtKwhPA.value.length > 0 && !validateInteger(txtKwhPA.value)) {
        errorMsg += 'Please enter a valid ' + utility + ' usage (whole numbers only).\n'
        return false ;
    }
    
    return true ;
}

function FormatPostcode(objPostcode)
{
    var strPostCode = objPostcode.value.replace(/^[\s]+/g,"") ;
	var n = strPostCode.length ;
	
	if (n==0) {
	    alert('Please enter a postcode') ;
	    return false ;
	}
	
	if (strPostCode.indexOf(" ") >= 0)
	{
		strPostCode = strPostCode.toUpperCase()
	}
	else
	{
		strPostCode = strPostCode.substr(0, n-3).toUpperCase() + " " + strPostCode.substr(n-3, 3).toUpperCase();
	}
	
	// Do some postcode Regex here...
	/*
	if(!validatePostcode(strPostCode)) {
	    alert('Please enter a valid UK postcode') ;
	    return false ;
	}
	*/
	
	objPostcode.value = strPostCode ;
	
	return true ;
}

function CleanPostcode()
{

	var pCode = document.getElementById('txtPostcode').value;
	pCode = pCode.replace(/ /g,"");
	
	if (pCode.length == 0) 
	{	
	return true; //in case this gets called when we're dealing with something else on the page - forms are a bit f*cked on GHL
	}
	else
	{
		if (checkPostCode(pCode) != false)
		{
			pCode = checkPostCode(pCode);
			document.getElementById('txtPostcode').value = pCode;
			arguments.IsValid = true;
			return true;
		}
		else
		{
			arguments.IsValid = false;
			alert("Please enter a valid postcode");
			return false;
		}
	}
	return false;
}
