﻿// JScript File
$(document).ready(function(event)
{
    $("#dpStartDate").datepicker();
    $("#dpStartDate").datepicker("option", "dateFormat", 'MM d, yy');
    $("#dpEndDate").datepicker();
    $("#dpEndDate").datepicker("option", "dateFormat", 'MM d, yy');
    $(".ui-datepicker").hide();
    
    $("#documentRollInfo").hide();
    $("#luggageRollInfo").hide();
    $("#managedRollInfo").hide();
    $("#selfRollInfo").hide();
    
    $("#trItemCount").hide();
    $("#trSize").hide();
    
    $("#quoteFormReport").hide();
    
    $("#documentOption").hover(
    function()
    {
        $("#documentRollInfo").show();
    },
    function()
    {
        $("#documentRollInfo").hide();
    }
    );
    
    $("#luggageOption").hover(
    function()
    {
        $("#luggageRollInfo").show();
    },
    function()
    {
        $("#luggageRollInfo").hide();
    }
    );
    
    $("#managedOption").hover(
    function()
    {
        $("#managedRollInfo").show();
    },
    function()
    {
        $("#managedRollInfo").hide();
    }
    );
    
    $("#selfOption").hover(
    function()
    {
        $("#selfRollInfo").show();
    },
    function()
    {
        $("#selfRollInfo").hide();
    }
    );
    
    $("#rdoDocument").change(function()
    {
        $("#trItemCount").hide();
        $("#trSize").hide();
        $("#hdnStorageType").val(getStorageType());
        if ($("#hdnStorageType").val()!="-1")
        {
            $("#storagetypes").removeClass("invalid");
        }
    });
    $("#rdoLuggage").change(function()
    {
        $("#trItemCount").show();
        $("#trSize").hide();
        $("#hdnStorageType").val(getStorageType());
        if ($("#hdnStorageType").val()!="-1")
        {
            $("#storagetypes").removeClass("invalid");
        }
    });
    $("#rdoManaged").change(function()
    {
        $("#trItemCount").hide();
        $("#trSize").show();
        $("#hdnStorageType").val(getStorageType());
        if ($("#hdnStorageType").val()!="-1")
        {
            $("#storagetypes").removeClass("invalid");
        }
    });
    $("#rdoSelf").change(function()
    {
        $("#trItemCount").hide();
        $("#trSize").show();
        $("#hdnStorageType").val(getStorageType());
        if ($("#hdnStorageType").val()!="-1")
        {
            $("#storagetypes").removeClass("invalid");
        }
    });
    
    realTimeValidation();
    
    $("#btnSubmit").click(function()
    {
        validateQuoteForm();
    });
});

function isEmptyString(value)
{
    var isValid = true;
    if (value == "")
    {
        isValid = false;
    }
    if (value == "undefined")
    {
        isValid = false;
    }
    if (value == null)
    {
        isValid = false;
    }
    return isValid;
}

function isPhoneNumberValid(phonenumber)
{
    var phoneNumberRegEx = /^([0-9]*)$/;
    var isValid = false;
    if (phonenumber.match(phoneNumberRegEx)) {
        isValid = true;
    }
    return isValid;
}

function isRequiredPhoneNumberValid(phonenumber)
{
    var phoneNumberRegEx = /^([0-9]*)$/;
    var isValid = false;
    if (isRequiredValid(phonenumber))
    {
        if (phonenumber.match(phoneNumberRegEx)) {
            isValid = true;
        }
    }
    return isValid;
}

function isNumberValid(number)
{
    var numberRegEx = /^([0-9]*)$/;
    var isValid = false;
    if (number.match(numberRegEx)) {
        isValid = true;
    }
    return isValid;
}

function isRequiredNumberValid(number)
{
    var isValid = false;
    if (isRequiredValid(number))
    {
        if (isNumberValid(number)) {
            isValid = true;
        }
    }
    return isValid;
}

function isEmailValid(email)
{
    var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var isValid = false;
    if (email.match(emailRegEx)) {
        isValid = true;
    }
    return isValid;
}

function isRequiredValid(value)
{
    var isValid = false;
    if (isEmptyString(value))
    {
        isValid = true;
    }
    return isValid;
}

function isDateValid(dateString)
{
    var isValid = true;
    var date = new Date(dateString);

    if (isNaN(date.getDate(date)))
    {
        isValid = false;
    }
    if (isNaN(date.getMonth()))
    {
        isValid = false;
    }
    if(isNaN(date.getFullYear()))
    {
        isValid = false;
    }
    
    return isValid;
}

function getStorageType()
{
    var storageTypeID = "-1";
    if ($("#rdoDocument").attr("checked"))
    {
        storageTypeID = $("#rdoDocument").val();
    }
    if ($("#rdoLuggage").attr("checked"))
    {
        storageTypeID = $("#rdoLuggage").val();
    }
    if ($("#rdoManaged").attr("checked"))
    {
        storageTypeID = $("#rdoManaged").val();
    }
    if ($("#rdoSelf").attr("checked"))
    {
        storageTypeID = $("#rdoSelf").val();
    }
    return storageTypeID;
}

function validateQuoteForm()
{
    validForm = validateFields();
    
    if (validForm)
    {
        $("#quoteFormReport").fadeOut("fast");
        submitQuote();
        window.location = "QuoteSubmitted.aspx";
    }
    else
    {
        $("#quoteFormReport").show();
        $("#quoteFormReport").text("Enquiry could not be sent - Some fields may have invalid values.");
    }
}

function submitQuote()
{
    invokeHandler();
}

function invokeHandler()
{
    $.ajax({
        type: "POST",
        url: "handlers/PostEnquiry.ashx",
        data: {
            GivenName: $("#txtGivenName").val(),
            Surname: $("#txtSurname").val(),
            Company: $("#txtCompany").val(),
            Abn: $("#txtAbn").val(),
            Email: $("#txtEmail").val(),
            Phone: $("#txtPhone").val(),
            Fax: $("#txtFax").val(),
            StreetAddress: $("#txtStreetAddress").val(),
            Suburb: $("#txtSuburb").val(),
            State: $("#txtState").val(),
            Postcode: $("#txtPostcode").val(),
            Country: $("#txtCountry").val(),
            Location: $("#selLocation").val(),
            StorageType: $("#hdnStorageType").val(),
            ApproxSize: $("#hdnApproxSize").val(),
            StartDate: $("#dpStartDate").val(),
            EndDate: $("#dpEndDate").val(),
            Comments: $("#txtComments").val(),
            DiscoveryMethod: $("#selFindOut").val(),
            SessionId: $("#hdnSessionId").val()
            },
        success: 
        function(result)
        {
        },
        error: 
        function(xhr, ajaxOptions, thrownError)
        {
        }
    });
}

function validateFields()
{
    var validForm = true;
    
    if (!isRequiredValid($("#txtGivenName").val())) { validForm = false; $("#txtGivenName").addClass("invalid"); } else { $("#txtGivenName").removeClass("invalid"); }
    if (!isRequiredValid($("#txtSurname").val())) { validForm = false; $("#txtSurname").addClass("invalid"); } else { $("#txtSurname").removeClass("invalid"); }
    if (!isNumberValid($("#txtAbn").val())) { validForm = false; $("#txtAbn").addClass("invalid"); } else { $("#txtAbn").removeClass("invalid"); }
    if (!isEmailValid($("#txtEmail").val())) { validForm = false; $("#txtEmail").addClass("invalid"); } else { $("#txtEmail").removeClass("invalid"); }
    if (!isRequiredPhoneNumberValid($("#txtPhone").val())) { validForm = false; $("#txtPhone").addClass("invalid"); } else { $("#txtPhone").removeClass("invalid"); }
    if (!isPhoneNumberValid($("#txtFax").val())) { validForm = false; $("#txtFax").addClass("invalid"); } else { $("#txtFax").removeClass("invalid"); }
    if (!isRequiredValid($("#txtStreetAddress").val())) { validForm = false; $("#txtStreetAddress").addClass("invalid"); } else { $("#txtStreetAddress").removeClass("invalid"); }
    if (!isRequiredValid($("#txtSuburb").val())) { validForm = false; $("#txtSuburb").addClass("invalid"); } else { $("#txtSuburb").removeClass("invalid"); }
    if (!isRequiredValid($("#txtState").val())) { validForm = false; $("#txtState").addClass("invalid"); } else { $("#txtState").removeClass("invalid"); }
    if (!isRequiredValid($("#txtPostcode").val())) { validForm = false; $("#txtPostcode").addClass("invalid"); } else { $("#txtPostcode").removeClass("invalid"); }
    
    if ($("#selLocation").val()=="-1") { validForm = false; $("#selLocation").addClass("invalid"); } else { $("#selLocation").removeClass("invalid"); }
    
    $("#hdnStorageType").val(getStorageType());
    var approxSize="";
    switch ($("#hdnStorageType").val())
    {
        case "0":
            $("#storagetypes").removeClass("invalid");
            if ($("#selSize").val()=="-1")
            {
                validForm = false;
                $("#selSize").addClass("invalid");
            }
            else
            {
                $("#selSize").removeClass("invalid");
                approxSize = $("#selSize").val();
            }
            break
        case "1":
            $("#storagetypes").removeClass("invalid");
            if ($("#selSize").val()=="-1")
            {
                validForm = false;
                $("#selSize").addClass("invalid");
            }
            else
            {
                $("#selSize").removeClass("invalid");
                approxSize = $("#selSize").val();
            }
            break;
        case "2":
            $("#storagetypes").removeClass("invalid");
            approxSize = "N/A";
            break;
        case "3":
            $("#storagetypes").removeClass("invalid");
            if (!isRequiredNumberValid($("#txtItemCount").val()))
            {
                validForm = false;
                $("#txtItemCount").addClass("invalid");
            }
            else
            {
                $("#txtItemCount").removeClass("invalid");
                approxSize = $("#txtItemCount").val().toString() + " piece(s)";
            }
            break;
        default:
            validForm = false; 
            $("#storagetypes").addClass("invalid");
            break;
    }
    
    $("#hdnApproxSize").val(approxSize);
    
    if (isEmptyString($("#dpStartDate").val()))
    {
        if (!isDateValid($("#dpStartDate").val())) { validForm = false; $("#dpStartDate").addClass("invalid"); } else { $("#dpStartDate").removeClass("invalid"); }
    }
    if (isEmptyString($("#dpEndDate").val()))
    {
        if (!isDateValid($("#dpEndDate").val())) { validForm = false; $("#dpEndDate").addClass("invalid"); } else { $("#dpEndDate").removeClass("invalid"); }
    }
    
    if ($("#selFindOut").val()=="-1") { validForm = false; $("#selFindOut").addClass("invalid"); } else { $("#selFindOut").removeClass("invalid"); }
    
    return validForm;
}

function realTimeValidation()
{
    $("#txtGivenName").change(function()
    {
        if (!isRequiredValid($("#txtGivenName").val())) { validForm = false; $("#txtGivenName").addClass("invalid"); } else { $("#txtGivenName").removeClass("invalid"); }
    });
    $("#txtSurname").change(function()
    {
        if (!isRequiredValid($("#txtSurname").val())) { validForm = false; $("#txtSurname").addClass("invalid"); } else { $("#txtSurname").removeClass("invalid"); }
    });
    $("#txtAbn").change(function()
    {
        if (!isNumberValid($("#txtAbn").val())) { validForm = false; $("#txtAbn").addClass("invalid"); } else { $("#txtAbn").removeClass("invalid"); }
    });
    $("#txtEmail").change(function()
    {
        if (!isEmailValid($("#txtEmail").val())) { validForm = false; $("#txtEmail").addClass("invalid"); } else { $("#txtEmail").removeClass("invalid"); }
    });
    $("#txtPhone").change(function()
    {
        if (!isRequiredPhoneNumberValid($("#txtPhone").val())) { validForm = false; $("#txtPhone").addClass("invalid"); } else { $("#txtPhone").removeClass("invalid"); }
    });
    $("#txtFax").change(function()
    {
        if (!isPhoneNumberValid($("#txtFax").val())) { validForm = false; $("#txtFax").addClass("invalid"); } else { $("#txtFax").removeClass("invalid"); }
    });
    $("#txtStreetAddress").change(function()
    {
        if (!isRequiredValid($("#txtStreetAddress").val())) { validForm = false; $("#txtStreetAddress").addClass("invalid"); } else { $("#txtStreetAddress").removeClass("invalid"); }
    });
    $("#txtSuburb").change(function()
    {
        if (!isRequiredValid($("#txtSuburb").val())) { validForm = false; $("#txtSuburb").addClass("invalid"); } else { $("#txtSuburb").removeClass("invalid"); }
    });
    $("#txtState").change(function()
    {
        if (!isRequiredValid($("#txtState").val())) { validForm = false; $("#txtState").addClass("invalid"); } else { $("#txtState").removeClass("invalid"); }
    });
    $("#txtPostcode").change(function()
    {
        if (!isRequiredValid($("#txtPostcode").val())) { validForm = false; $("#txtPostcode").addClass("invalid"); } else { $("#txtPostcode").removeClass("invalid"); }
    });
    $("#selLocation").change(function()
    {
        if ($("#selLocation").val()=="-1") { validForm = false; $("#selLocation").addClass("invalid"); } else { $("#selLocation").removeClass("invalid"); }
    });
    
    $("#txtItemCount").change(function()
    {
        if ($("#hdnStorageType").val()=="3")
        {
            if (!isRequiredNumberValid($("#txtItemCount").val())) { validForm = false; $("#txtItemCount").addClass("invalid"); } else { $("#txtItemCount").removeClass("invalid"); }
        }
    });
    $("#selSize").change(function()
    {
        if ($("#hdnStorageType").val()=="0" || $("#hdnStorageType").val()=="1")
        {
            if ($("#selSize").val()=="-1") { validForm = false; $("#selSize").addClass("invalid"); } else { $("#selSize").removeClass("invalid"); }
        }
    });
    
    $("#dpStartDate").change(function()
    {
        if (isEmptyString($("#dpStartDate").val()))
        {
            if (!isDateValid($("#dpStartDate").val())) { validForm = false; $("#dpStartDate").addClass("invalid"); } else { $("#dpStartDate").removeClass("invalid"); }
        }
    });
    $("#dpEndDate").change(function()
    {
        if (isEmptyString($("#dpEndDate").val()))
        {
            if (!isDateValid($("#dpEndDate").val())) { validForm = false; $("#dpEndDate").addClass("invalid"); } else { $("#dpEndDate").removeClass("invalid"); }
        }
    });
    $("#selFindOut").change(function()
    {
        if ($("#selFindOut").val()=="-1") { validForm = false; $("#selFindOut").addClass("invalid"); } else { $("#selFindOut").removeClass("invalid"); }
    });
    
    
    
    
    
    
    
    
    
    
}
