function myVoid () { /* blank */ }
function viewPrintable(strQueryString)
{
	var printWin = window.open("reports.aspx?" + strQueryString,"printWin","");
}
function moveFocus(thisObj,length,nextObj)
{
	if(thisObj.value.length == length)
	{
		nextObj.focus();
		if( nextObj.type == "text" )
		{
			if(nextObj.value.length > 0)
			{
				nextObj.select();	
			}
		}
	}
}
function checkForm(ccNum, ccType, ccExpYY, ccExpMM, total, cashAmount, checkAmount, ccAmount, billAmount, billCustomer, lblErr)
{
    if (ccNum.length > 0 || ccAmount.length > 0)
    {
        if (!checkCC(ccNum, ccType, ccExpYY, ccExpMM, lblErr))
        {
            return false;
        }
    }
    
    if (!isMonetary("Cash", cashAmount, lblErr) || !isMonetary("Check", checkAmount, lblErr) || !isMonetary("Credit Card", ccAmount, lblErr) || !isMonetary("Bill", billAmount, lblErr) || !isMonetary("Total", total, lblErr))
    {
        return false;
    }
    
    if (!checkTotal(total, cashAmount, checkAmount, ccAmount, billAmount, lblErr))
    {
        return false;
    }
    
    if (billAmount.length > 0 && billCustomer.length <= 0)
    {
        lblErr.innerHTML = "Please select a billing customer";
        return false;
    }
    
    lblErr.innerHTML = "";
    return true;
}
function isMonetary(sType, sText, lblErr)
{
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var decimalCount = 0;
    var fractionalDigits = 0;
    var Char; 
    
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        
        if (decimalCount == 1)
        {
            fractionalDigits++;
        }
        if (Char == '.')
        {
            decimalCount++;
        }
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }
    
    if (IsNumber && decimalCount == 1 && fractionalDigits == 2 || sText.length == 0)
    {
        return true;
    }   
    else
    {
        lblErr.innerHTML = sType + " amount is an invalid monetary number";
        return false;
    }
}
function checkTotal(total, cashAmount, checkAmount, ccAmount, billAmount, lblErr)
{
    var formTotal = 0;
    formTotal += cashAmount.length > 0 ? parseFloat(cashAmount) : 0;
    formTotal += checkAmount.length > 0 ? parseFloat(checkAmount) : 0;
    formTotal += ccAmount.length > 0 ? parseFloat(ccAmount) : 0;
    formTotal += billAmount.length > 0 ? parseFloat(billAmount) : 0;
    formTotal = Math.round(formTotal*100)/100;
    
    if (formTotal < total)
    {
        lblErr.innerHTML = "Add $" + Math.round((total - formTotal)*100)/100; 
        return false;
    }
    else if (formTotal > total)
    {
        lblErr.innerHTML = "Subtract $" + Math.round((formTotal - total)*100)/100;
        return false;
    }
    else
    {
        return true;
    }
} 
function checkCC(ccNum, ccType, ccExpYY, ccExpMM, lblErr)
{
    var isAlternate = false;
    var sum = 0;
    var doubledValue = "";
    var currentYear = new Date().getFullYear(); 
    var currentMonth = new Date().getMonth();
    var valid = false;
    var ccNumber = "";
    
    if (ccNum == "" || ccType == "" || ccExpYY == "" || ccExpMM == "")
    {
        lblErr.innerHTML = "Missing Credit Card Information"; 
        return false;
    }
    
    for (var k = 0; k < ccNum.length; k++)
    {
        if (ccNum.charAt(k) != '-')
        {
            ccNumber += ccNum.charAt(k);
        }
    }
    
    // VISA = 13 or 16 digits
    // MasterCard = 16 digits
    // American Express = 15 digits
    // Discover = 16 digits
    if (ccType == "VISA" && ccNumber.length != 13 && ccNumber.length != 16)
    {
        lblErr.innerHTML = "Credit Card length does not match valid VISA number length"; 
        return false;
    } 
    if (ccType == "MAST" && ccNumber.length != 16)
    {
        lblErr.innerHTML = "Credit Card length does not match valid MAST number length"; 
        return false;
    }
    if (ccType == "AMEX" && ccNumber.length != 15)
    {
        lblErr.innerHTML = "Credit Card length does not match valid AMEX number length"; 
        return false;
    }
    if (parseInt(ccExpYY) < currentYear || (parseInt(ccExpYY) == currentYear && parseInt(ccExpMM) < currentMonth+1))
    {
        lblErr.innerHTML = "Credit Card Expiration is invalid";
        return false;
    }
    
    for (var i = ccNumber.length - 1; i >= 0; i--)
    {
        if (!isAlternate)
        {
            sum += parseInt(ccNumber.charAt(i));
        }
        else
        {
            doubledValue = (((parseInt(ccNumber.charAt(i))) * 2)).toString();
            for (var j = 0; j < doubledValue.length; j++)
            {
                sum += parseInt(doubledValue.charAt(j));
            }
        }
        isAlternate = !isAlternate;
    }
    
    if (sum > 0 && sum % 10 == 0)
    {
        return true;
    }
    else
    {
        lblErr.innerHTML = "Credit Card Number is invalid";
        return false;
    }
}
