// JavaScript Document
function GetNewTimeStamp() {
    return new Date().getTime();
}

function renderCustomCheck(id) {
    var customCheck = getEl(id);
	
    if (customCheck.src.indexOf("Content/images/custom_nocheck.png") != -1)
        customCheck.src = "Content/images/custom_check.png";
    else
        customCheck.src = "Content/images/custom_nocheck.png";
}


function checkCR(evt) {

    var evt = (evt) ? evt : ((event) ? event : null);

    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);

    if ((evt.keyCode == 13) && (node.type == "text")) { Calculate(); return false; }

}

document.onkeypress = checkCR;

function checkPayVal() {
    var obj = getEl('chkPay');
    if (!obj.checked) {
        getEl('chkTaxBeGone').checked = getEl('chkHR').checked = getEl('chkTime').checked = getEl('chkSelf').checked = false;
        getEl('dvAvailableTax').style.display = getEl('dvAvailableTime').style.display = getEl('dvAvailableHR').style.display = getEl('dvAvailableSelf').style.display = "none";
        getEl('taxCustomCheck').src = "Content/images/custom_nocheck.png";
        getEl('timeCustomCheck').src = "Content/images/custom_nocheck.png";
		getEl('selfCustomCheck').src = "Content/images/custom_nocheck.png";
        getEl('hrCustomCheck').src = "Content/images/custom_nocheck.png";
    }
    Calculate();
}
function StateChangeOn() {
    getEl('chkTaxBeGone').checked = true;
    getEl('chkPay').checked = true;
    ShowAvailableMsg('dvAvailableTax', getEl('chkTaxBeGone'));
} 

function chkCheckBox(obj) {

    getEl(obj).checked = !getEl(obj).checked;

    if (obj == 'chkPay' && getEl('chkTaxBeGone').checked) {
        getEl(obj).checked = true;
        return;
    }

    if (obj == 'chkTaxBeGone' || obj == 'chkTime' || obj == 'chkHR' || obj == 'chkSelf') {
        getEl('chkPay').checked = true;
        getEl('payCustomCheck').src = "Content/images/custom_check.png";
    }
	
    //need working javascript here to turn on SELF if TIME is selected, and turn off TIME if SELF is deselected
	//below kinda sorta works, but you have to click multiple times to make it all align

    if (obj == 'chkTime' && !getEl('chkSelf').checked) {
     	getEl(obj).checked = true;
		getEl('chkSelf').checked = true;
        getEl('selfCustomCheck').src = "Content/images/custom_check.png";
		}
		
    if (obj == 'chkSelf' && !getEl('chkSelf').checked && getEl('chkTime').checked) {
     	getEl('chkTime').checked = false;
        getEl('timeCustomCheck').src = "Content/images/custom_nocheck.png";
		}
		
		

    if (obj == 'chkPay' && getEl(obj).checked && getEl('EECount').value == '')
        getEl('EECount').value = 1;

    if (obj == 'chkPay' && !getEl(obj).checked)
        getEl('EECount').value = "";

    if (obj == 'chkTaxBeGone' && !getEl(obj).checked)
        getEl('states').value = "";

    if ((obj == 'chkTaxBeGone' && getEl(obj).checked) || (obj == 'chkPay' && getEl('chkTaxBeGone').checked)) {
        getEl('chkPay').checked = true;
        if (getEl('EECount').value == "")
            getEl('EECount').value = 1;
    }

    if (obj == 'chkTaxBeGone' && getEl(obj).checked && getEl('states').value == "")
        getEl('states').value = 1;

    Calculate();
}
function forceChk() {
    getEl('chkPay').checked = true;

    if (getEl('EECount').value == "")
        getEl('EECount').value = 1;

    Calculate();
}

function isWholeNumber(val) {
    return /^\d+/.test(val);
}
function getEl(obj) {
    return document.getElementById(obj);
}

function setEmpText(chkService, dvUpdate, customCheck) {
    $('#' + dvUpdate).text("");

    if (getEl(chkService).checked) {
    	if (chkService == 'chkHire') {
    		$('#' + dvUpdate).text("Unlimited Employees");
    	} else {
    		var empcount = GetEmpCount();
    		if (empcount > 0)
    			$('#' + dvUpdate).text(+empcount + " Employee(s)");
    		else {
    			getEl(chkService).checked = false;
    			getEl(customCheck).src = "Content/images/custom_nocheck.png";
    		}
    	}
    }
}

function GetEmpCount() {
    return (isWholeNumber(getEl('EECount').value)) ? parseInt(getEl('EECount').value) : 0;
}
function GetStateCount() {
    return (isWholeNumber(getEl('states').value)) ? parseInt(getEl('states').value) : 0;
}
function restrict() {
    if (!isNaN(getEl('states').value) && parseInt(getEl('states').value) > 51)
        getEl('states').value = 51;
}
function ShowAvailableMsg(dv, obj) {
	
    var disp = "";

    if (dv == 'dvAvailableTax')
        disp = "inline";
    getEl(dv).style.display = (obj.checked ? disp : "none");

}
function ResetDivs() {
    setEmpText('chkPay', 'dvPayEECount', 'payCustomCheck');
    setEmpText('chkTaxBeGone', 'dvTaxBeGone', 'taxCustomCheck');
    setEmpText('chkTime', 'dvTimeSelection', 'timeCustomCheck');
	setEmpText('chkSelf', 'dvSelfSelection', 'selfCustomCheck');
    setEmpText('chkHR', 'dvHRSelection', 'hrCustomCheck');
    setEmpText('chkHire', 'dvHireSelection', 'hireCustomCheck');
}
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
	num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}

function SendQuote() {

    var pay = $('#dvPayPrice').text();
    var tax = $('#dvTBGPrice').text();

    var time = $('#dvTimePrice').text();
	var self = $('#dvSelfPrice').text();
    var hr = $('#dvHRPrice').text();
    var hire = $('#dvHirePrice').text();
    var total = getEl('txtTotalCost').innerHTML;
    var states = GetStateCount();
    var empcount = GetEmpCount();

    var sUrl = "SendQuote.ashx?pay=" + pay + "&tbg=" + tax + "&time=" + time + "&self=" + self + "&hr=" + hr + "&hire=" + hire + "&total=" + total + "&empcount=" + empcount + "&states=" + states + "&SendTo=" + getEl('txtEmail').value;
    
    location.href = sUrl;
    
}

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

function Calculate() {

    if (!isWholeNumber(getEl('EECount').value) || getEl('EECount').value == '0')
        getEl('EECount').value = 1;

    if (getEl('chkPay').checked && getEl('EECount').value > 50)
        getEl('dvPatriotPAYPlus').style.display = "inline"; 
	else {
	    getEl('dvPatriotPAYPlus').style.display = "none";
	}

    if (getEl('chkTaxBeGone').checked && (getEl('states').value == "" || getEl('states').value == '0'))
        getEl('states').value = "1";

    ResetDivs();

    var empcount = GetEmpCount();
    var statecount = GetStateCount();

    var sPay = getEl('chkPay').checked ? "pay=1" : "";
    var sTBG = getEl('chkTaxBeGone').checked ? "&tbg=1" : "";
    var sHR = getEl('chkHR').checked ? "&hr=1" : "";
    var sHire = getEl('chkHire').checked ? "&hire=1" : "";
    var sTime = getEl('chkTime').checked ? "&time=1" : "";
	var sSelf = getEl('chkSelf').checked ? "&self=1" : "";

	var sUrl = "GetCalcResult.ashx?" + sPay + sTBG + sHR + sHire + sTime + sSelf + "&states=" + statecount + "&empcount=" + empcount + "&dt=" + GetNewTimeStamp();

    var taxcost = 0;
    var timecost = 0;
	var selfcost = 0;
    var hrcost = 0;
    var hirecost = 0;
    var totalcost = 0;
    var paycost = 0;

    $.ajax({
        type: "GET",
        url: sUrl,
        dataType: "xml",
        success: function parseXml(xml) {

            $(xml).find("calculatorresults").each(function() {

                paycost = $(this).find("pay").text();
                taxcost = $(this).find("taxbegone").text();
                timecost = $(this).find("time").text()
				selfcost = $(this).find("self").text()
                hrcost = $(this).find("hr").text()
                hirecost = $(this).find("hire").text()
                totalcost = $(this).find("total").text()

                $('#dvPayPrice').text(paycost > 0 ? formatCurrency(paycost) + "/mo" : "");
                $('#dvTBGPrice').text(taxcost > 0 ? formatCurrency(taxcost) + "/mo" : "");

                $('#dvTimePrice').text(timecost > 0 ? formatCurrency(timecost) + "/mo" : "");
				$('#dvSelfPrice').text(selfcost > 0 ? formatCurrency(selfcost) + "/mo" : "");
                $('#dvHRPrice').text(hrcost > 0 ? formatCurrency(hrcost) + "/mo" : "");
                $('#dvHirePrice').text(hirecost > 0 ? formatCurrency(hirecost) + "/mo" : "");
                getEl('txtTotalCost').innerHTML = totalcost > 0 ? formatCurrency(totalcost) : "";

            });
        }
    });
    
}

$(document).ready(function() {
    Calculate();
});
