var fPayByCard;
var fDownloadOnly;
var fUseShippingAddr;
var fSecondYear;
var fUpgrade;

var sEmail;
var sPhone;
var sFax;

var sExpDateMonth;
var iExpDateMonth;
var iExpDateYear;
var iExpDateYear;

var iProduct;

var objExpDateMonth;
var objExpDateYear;
var objProduct;
var objSerNumRow;
var objSerNum;
var objNameOnTheCard;
var objNetPrice;
var objNumberOfCopies;

var objTitle;
var objTitle2;
var objFirstName;
var objFirstName2;
var objLastName;
var objLastName2;
var objCompany;
var objCompany2;
var objCity;
var objCity2;
var objState;
var objState2;
var objZip;
var objZip2;
var objStreet;
var objStreet2;
var objCountry;
var objCountry2;

var sTitle;
var sTitle2;
var sFirstName;
var sFirstName2;
var sLastName;
var sLastName2;
var sCompany;
var sCompany2;
var sCity;
var sCity2;
var sState;
var sState2;
var sZip;
var sZip2;

var sNameOnTheCard;

var objCC_Number0;
var objCC_Number1;
var objCC_Number2;
var objCC_Number3;
var objCC_ID;

var objVat;
var objRef;

var sVat;
var sRef;

var objCardType;

var objToHide;
var objToShow;

var sCancelEvent;
var iBrowser;
iBrowser = GetBrowser();

function GetBrowser()
{
    var agent = window.navigator.userAgent;

    if (agent.indexOf("Opera") > 1)
    {
        return -2;
    }
    else if (agent.indexOf("Firefox") > 1)
    {
        return -1;
    }
    else
    {
        var i = agent.indexOf("MSIE ") + 5;
        if ( i > 4 )
        {
            return parseInt(agent.substr(i));
        }
        else
        {
            return 0;
        }
    }
}

function GetFormData()
{
    if (iBrowser == -1)  // Firefox
    {
        sCancelEvent       = "event.preventDefault(); ";
        objProduct         = document.getElementById("Product");
        objCardType        = document.getElementById("CardType");
        sVat               = document.getElementById("vat").value;
        sRef               = document.getElementById("ref").value;
        sCompany           = document.getElementById("Company").value;
        sCompany2          = document.getElementById("Company2").value;
        sCity              = document.getElementById("City").value;
        sCity2             = document.getElementById("City2").value;
        sState             = ClearState(document.getElementById("State").value);
        sState2            = ClearState(document.getElementById("State2").value);
        sZip               = document.getElementById("ZIP").value;
        sZip2              = document.getElementById("ZIP2").value;
        objNumberOfCopies  = document.getElementById("Number_of_copies");
        objCC_Number0      = document.getElementById("CC_Number0");
        objCC_Number1      = document.getElementById("CC_Number1");
        objCC_Number2      = document.getElementById("CC_Number2");
        objCC_Number3      = document.getElementById("CC_Number3");
        objCC_ID           = document.getElementById("CC_ID");
        objCountry         = document.getElementById("Country");
        objCountry2        = document.getElementById("Country2");
        objNetPrice        = document.getElementById("Net_Price");
        fPayByCard         = document.getElementById("by_cc").checked;
        sEmail             = document.getElementById("mail").value;
        fDownloadOnly      = document.getElementById("license_shipment").checked;
        fUseShippingAddr   = document.getElementById("2addresses").checked;
        sPhone             = document.getElementById("Phone").value;
        sFax               = document.getElementById("Fax").value;
        objExpDateMonth    = document.getElementById("ExpDateMonth");
        objExpDateYear     = document.getElementById("ExpDateYear");
        iExpDateYear       = parseInt(objExpDateYear.value);
        objSerNumRow       = document.getElementById("ser_num_row");
        objSerNum          = document.getElementById("ser_num");
        objFirstName       = document.getElementById("FirstName");
        objFirstName2      = document.getElementById("FirstName2");
        objLastName        = document.getElementById("LastName");
        objLastName2       = document.getElementById("LastName2");
        objStreet          = document.getElementById("Street");
        objStreet2         = document.getElementById("Street2");
        objNameOnTheCard   = document.getElementById("Name_on_the_Card");
        objTitle           = document.getElementById("Title");
        objTitle2          = document.getElementById("Title2");
        fSecondYear        = document.getElementById("year2").checked
        fUpgrade           = document.getElementById("upgrade_true").checked
    }
    else
    {
        with (document.all)
        {
            sCancelEvent       = "event.returnValue = false; ";
            objCardType        = CardType;
            sVat               = vat.value;
            sRef               = ref.value;
            sCompany           = Company.value;
            sCompany2          = Company2.value;
            sCity              = City.value;
            sCity2             = City2.value;
            sState             = ClearState(State.value);
            sState2            = ClearState(State2.value);
            sZip               = ZIP.value;
            sZip2              = ZIP2.value;
            objNumberOfCopies  = Number_of_copies;
            objCC_Number0      = CC_Number0;
            objCC_Number1      = CC_Number1;
            objCC_Number2      = CC_Number2;
            objCC_Number3      = CC_Number3;
            objCC_ID           = CC_ID;
            objCountry         = Country;
            objCountry2        = Country2;
            objNetPrice        = Net_Price;
            fPayByCard         = C1[1].checked;
            sEmail             = mail.value;
            fDownloadOnly      = shipment[0].checked;
            sBillingAddress    = Street.value;
            sShippingAddress   = Street2.value;
            fUseShippingAddr   = C2[1].checked;
            sPhone             = Phone.value;
            sFax               = Fax.value;
            objExpDateMonth    = ExpDateMonth;
            objExpDateYear     = ExpDateYear;
            iExpDateYear       = parseInt(ExpDateYear.value);
            objProduct         = Product;
            objSerNumRow       = ser_num_row;
            objSerNum          = ser_num;
            objFirstName       = FirstName;
            objFirstName2      = FirstName2;
            objLastName        = LastName;
            objLastName2       = LastName2;
            objStreet          = Street;
            objStreet2         = Street2;
            objNameOnTheCard   = Name_on_the_Card;
            objTitle           = Title;
            objTitle2          = Title2;
            fSecondYear        = year2.checked;
            fUpgrade           = upgrade_true.checked;
        }
    }
    iProduct        = objProduct.selectedIndex;
    sLastName       = objLastName.value;
    sLastName2      = objLastName2.value;
    sStreet         = objStreet.value;
    sStreet2        = objStreet2.value;
    sNameOnTheCard  = objNameOnTheCard.value;
    sExpDateMonth   = objExpDateMonth.value;
    iExpDateMonth   = parseInt(sExpDateMonth, 10);

}
//
// Purpose: Return Month english string by month index 0-Jan, 11-Dec.
//****************************************************************************
function GetMonthName(nMonth)
{
    switch (nMonth)
    {
        case  0: return "January";
        case  1: return "February";
        case  2: return "March";
        case  3: return "April";
        case  4: return "May";
        case  5: return "June";
        case  6: return "July";
        case  7: return "August";
        case  8: return "September";
        case  9: return "October";
        case 10: return "November";
        case 11: return "December";
    }

    return "";
}
//
// Purpose: ???
//****************************************************************************
function process()
{
    with (document.Mail)
    {
        action = "mailto:sales@tssc.de?subject=Order Form";
    }
}
//
// Purpose: ???
//****************************************************************************
function formCheck()
{
    var passed = false;

    with (document.Mail)
    {
        process();
        passed = true;
    }

    return passed;
}
//
// Purpose: Check input object value
//****************************************************************************
function CheckValue(obj, field_length, field_title)
{
    if (obj.value == "")
    {
        alert('Please enter a value for the "' + field_title + '" field.');
        obj.focus();
        return (false);
    }

    if (obj.value.length != field_length)
    {
        alert('Please enter ' + field_length + ' characters in the "' +
              field_title + '" field.');
        obj.focus();
        return (false);
    }

    var reDigitsOnly = new RegExp('^[0-9]+$');
    if ( reDigitsOnly.test(obj.value) == false )
    {
        alert('Please enter only digit characters in the "' + field_title + '" field.');
        obj.focus();
        return (false);
    }

    return (true);
}
//
// Purpose: Check credit card information
//****************************************************************************
function CheckCreditCardInfo()
{
    return CheckValue(objCC_Number0, 4, "Credit Card Number cell #1") &&
           CheckValue(objCC_Number1, 4, "Credit Card Number cell #2") &&
           CheckValue(objCC_Number2, 4, "Credit Card Number cell #3") &&
           CheckValue(objCC_Number3, objCC_Number3.maxLength, "Credit Card Number cell #4") &&
           CheckValue(objCC_ID,      objCC_ID.maxLength, "Credit Card ID") &&
           CheckValue(objExpDateMonth,  2, "Credit Card Expiration Date") &&
           CheckValue(objExpDateYear,   4, "Credit Card Expiration Date");
}
//
// Purpose: Check e-mail string. Return true if e-mail string is valid
//****************************************************************************
function IsEMailValid(sEmail)
{
    var s;
    var nAt  = -1;
    var nDot = -1;
    var n    = 0;

    do
    {
        s = sEmail.charAt(n);
        if (s == '@')
            nAt  = n;

        if (s == '.')
            nDot = n;

        n++;

    } while (s != "");

    // Valid e-mail: 12@12.12
    //               01234567

    if (nAt != -1 && nDot != -1 && nAt > 1 && nDot > 4 && n > 6)
    {
        return true;
    }

    alert("Please enter valid e-mail address");
    document.OrderForm.mail.focus();
    return false;
}

function CheckCreditCardExpDate(ExpDateMonth, ExpDateYear)
{
    var CurrentDate  = new Date();
    var CurrentMonth = CurrentDate.getMonth() + 1;
    var CurrentYear  = CurrentDate.getYear();

    if (ExpDateYear < CurrentYear)
    {
        return(false);
    }
    else if (ExpDateYear > CurrentYear)
    {
        return(true);
    }
    else if (ExpDateMonth < CurrentMonth)
    {
        return(false);
    }
    else
    {
        return(true);
    }
}

//
// Purpose: Return true if all checked elements of the form have proper content
//****************************************************************************
function Form1_Validator()
{

    if (objProduct.selectedIndex == 0 || objProduct.value == "--")
    {
        alert("Please select product.");
        objProduct.focus();
        return (false);
    }

    if (objSerNumRow.style.display == '' && objSerNum.value == '')
    {
        alert("Please enter existing serial number.");
        objSerNum.focus();
        return false;
    }

    if (objTitle.selectedIndex == 0)
    {
        alert("Please enter your title.");
        objTitle.focus();
        return (false);
    }

    if (objTitle2.selectedIndex == 0 && fUseShippingAddr)
    {
        alert("Please enter your title.");
        objTitle2.focus();
        return (false);
    }

    if (sLastName == "")
    {
        alert("Please enter your last name.");
        objLastName.focus();
        return (false);
    }

    if (sLastName2 == "" && fUseShippingAddr)
    {
        alert("Please enter your last name.");
        objLastName2.focus();
        return (false);
    }

    if (sStreet == "")
    {
        alert("Please enter billing address.");
        objStreet.focus();
        return (false);
    }

    if (sStreet2 == "" && fUseShippingAddr)
    {
        alert("Please enter shipping address.");
        objStreet2.focus();
        return (false);
    }

    if (objCountry.selectedIndex == 0)
    {
        alert("Please select country.");
        objCountry.focus();
        return (false);
    }

    if (objCountry2.selectedIndex == 0 && fUseShippingAddr)
    {
        alert("Please select country.");
        objCountry2.focus();
        return (false);
    }

    if (fPayByCard)
    {
        if (sNameOnTheCard == "")
        {
            alert("Please enter a value for the \"Name on the Card\" field.");
            objNameOnTheCard.focus();
            return (false);
        }

        if (CheckCreditCardInfo() == false)
        {
            return (false);
        }

        if (CheckCreditCardExpDate(iExpDateMonth, iExpDateYear) == false)
        {
            alert("Please, correct expiration date of your credit card");
            objExpDateMonth.focus();
            return (false);
        }
    }

    if (!IsEMailValid(sEmail))
    {
        return (false);
    }

    return (true);
}

