﻿// 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('http://www.energyhelpline.com/xhl/page_help.aspx?ref=fhl_rg_help#' + anchor, 'mini', 'scrollbars=yes, resizable=yes, width=600, height=700') ;
}

function manualInput() {
    document.getElementById('ctl00_ContentPlaceHolderX_ElecKwhPA').innerText = document.getElementById('ctl00_ContentPlaceHolderX_ElecKwhPA').value;
}

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('btnSubmit') ;
    
    //showHideElement(btnSubmit, !dontCompareGas.checked || !dontCompareElec.checked) ;

    if (dontCompareGas.checked && dontCompareElec.checked) {
        btnSubmit.style.visibility = 'hidden';
        alert('Please select a utility to compare.');
    } else {
        btnSubmit.style.visibility = 'visible';
    }
}

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;
    var resultPre = 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 (!dontCompareElec.checked) {
        // validate elec tariff details
        txtSpend = document.getElementById('ctl00_MiddleContent_ElecSpend');
        txtKwhPA = document.getElementById('ctl00_MiddleContent_ElecKwhPA');
        //dontKnowUsage = document.getElementById('ctl00_MiddleContent_dontKnowElecUsage') ;
        dontKnowUsage = '';
        result = validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, 'electricity');
    }

    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') ;
        dontKnowUsage = '';
        result = validateInputGroup(txtSpend, txtKwhPA, dontKnowUsage, 'gas') && result;
    }

    // prepayment selected?
    result = checkPayment() && 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) {
    if (txtSpend.value == '' && txtKwhPA.value == '' && !dontKnowUsage.checked) {
        errorMsg += 'Please enter your ' + utility + ' usage.\n\n'
        return false ;
    }
    
    // If a spend has been input, and it's not numeric...
    if ((txtSpend.value.length > 0 && !validateNumeric(txtSpend.value)) || txtSpend.value == '0') {
        errorMsg += 'Please enter a valid ' + utility + ' spend (and not zero).\n\n'
        return false ;
    }
    
    // Usage needs to be a whole number
    if ((txtKwhPA.value.length > 0 && !validateInteger(txtKwhPA.value)) || txtKwhPA.value == '0') {
        errorMsg += 'Please enter a valid ' + utility + ' usage (whole numbers only and not zero).\n\n'
        return false ;
    }
    
    return true ;
}

function checkPayment() {

    // prepayment does not allow for comparison of gas & electricity at the same time 
    var PrepayOptionValue = 3;
    var GasPaymentMethodValue = document.getElementById('GasPaymentMethodID').value;
    var ElecPaymentMethodValue = document.getElementById('ElecPaymentMethodID').value;
    if (!document.getElementById('ctl00_MiddleContent_dontCompareGas').checked && !document.getElementById('ctl00_MiddleContent_dontCompareElec').checked) {
        if (GasPaymentMethodValue == PrepayOptionValue || ElecPaymentMethodValue == PrepayOptionValue) {
            if (GasPaymentMethodValue != PrepayOptionValue || ElecPaymentMethodValue != PrepayOptionValue) {
                errorMsg += 'Unfortunately, as you have a prepayment meter, you cannot compare both your gas and electricity at the same time. However, we can enable you to do two separate switches so that you get better deals for both your gas and electricity. \n\nTo do an Electricity only switch please tick the box above to "not compare Gas". Once you have completed your Electricity application, you will then be able to compare and switch your Gas in the same way.\n'
                return false ;
            }
        }
    }

    return true;

}

function val() {
    if ((document.getElementById("txtPostCode").value.toUpperCase().match(/GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]) [0-9][ABD-HJLNP-UW-Z]{2}/))) { return true; } else { return false; }
}

function ValidatePostcode(sender, args) {
    // /^([a-zA-Z]){1}([0-9][0-9]|[0-9]|[a-zA-Z][0-9][a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9]){1}([ ])([0-9][a-zA-z][a-zA-z]){1}$/
    args.IsValid = (args.Value.match(/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]) [0-9][ABD-HJLNP-UW-Z]{2})/i) != null);   
    return args.IsValid;
}

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;
}
