$(document).ready(function(){
    //alert("test");
    setCCFee();
    setAkatProfit();
    
    if ($("#trailer_type").val() != 'Other') {
        $("#trailer_type_other_wrapper").hide();
    }
    $("#trailer_type").click(function(event){
        if ($("#trailer_type").val() != 'Other') {
            $("#trailer_type_other_wrapper").hide();
        } else {
            $("#trailer_type_other_wrapper").show();
        }
    });

    $("#web_disc").change(function(event){
        setCCFee();
        
    });
    $("#tolls_cost").change(function(event){
        setCCFee();

    });
    $("#misc_cost").change(function(event){
        setCCFee();

    });

    $("#akat_pay_rate").change(function(event){
        setAkatPay();

    });

    $("#akat_p_t").change(function(event){
        setAkatPay();

    });
    
    $("#akat_pay").change(function(event){

        var total_miles = document.getElementById('total_miles').value;
        var akat_pay = document.getElementById('akat_pay').value;

        var akat_per_mile = akat_pay/total_miles;
        akat_per_mile = akat_per_mile.toFixed(2);

        document.getElementById('akat_per_mile_wrapper').innerHTML = akat_per_mile;
        setAkatProfit();

    });





});


function newWin(page,id) {

        if (id == undefined) {
            id = '';
        }
        var url = '';
        
        
            url	= "../admin/pop_"+page+".php"+id;

        var popupWin	= window.open (url, 'newwin',"location=1,status=1,scrollbars=1, width=900,height=600");
        return popupWin;
}

function newWin2(page,id) {

        if (id == undefined) {
            id = '';
        }
        var url = '';
        
        
            url	= "pop_"+page+".php"+id;
        
        var popupWin	= window.open (url, 'newwin',"location=1,status=1,scrollbars=1, width=900,height=600");
        return popupWin;
}

function updateQuoteRate(val) {

        document.getElementById('rate').value = val.value;
}

function calcDriverPay(form) {

        var total_miles = document.getElementById('total_miles').value;
        var driver_pay_rate = document.getElementById('driver_pay_rate').value;

        if (total_miles == "" || driver_pay_rate == "") {
                document.getElementById('driver_pay').value = "";
                return;
        }

        if (total_miles != parseFloat(total_miles)) {
                alert("Total Miles must be numeric");
                setTimeout("document.getElementById('total_miles').focus();",1);
                return;
        }
        if (driver_pay_rate != parseFloat(driver_pay_rate)) {
                alert("Driver Pay Rate must be numeric");
                setTimeout("document.getElementById('driver_pay_rate').focus();",1);
                return;
        }

        var driver_pay = total_miles * driver_pay_rate;

        document.getElementById('driver_pay').value = driver_pay;
}

function checkDate(obj,time) {
    //alert('test');
        var value	= obj.value;
        var id		= obj.id;
        
        if (time == 'yes') {
            if( value > '' && !isDateTime(value) ) {
                    alert("Date format must be: YYYY-MM-DD HH:MM:SS");
                    setTimeout("document.getElementById('"+id+"').focus();",1);
                    return false;
            }
            return true;
        } else {
        
            if( value > '' && !isDate(value) ) {
                    alert("Date format must be: YYYY-MM-DD");
                    setTimeout("document.getElementById('"+id+"').focus();",1);
                    return false;
            }
            return true;
        }
}			

function checkNumeric(obj) {

        var value	= obj.value;
        var id		= obj.id;
        if( value.length == 0 ) {
                return;
        }

        if (value != parseFloat(value)) {
                alert("Must be numeric");
                setTimeout("document.getElementById('"+id+"').focus();",1);
                return;
        }
}

function updateMileageCost(form) {

        var total_miles = document.getElementById('total_miles').value;
        var rate = document.getElementById('rate').value;

        if (total_miles == "" || rate == "") {
                document.getElementById('mileage_cost').value = "";
                return;
        }

        if (total_miles != parseFloat(total_miles)) {
                alert("Total Miles must be numeric");
                setTimeout("document.getElementById('total_miles').focus();",1);
                return;
        }
        if (rate != parseFloat(rate)) {
                alert("Rate must be numeric");
                setTimeout("document.getElementById('rate').focus();",1);
                return;
        }

        var cost = total_miles * rate;

        document.getElementById('mileage_cost').value = cost;
        setCCFee();
}

function updateBalanceAmt(form) {

        var total_cost = document.getElementById('total_cost').value;
        var deposit_amount = document.getElementById('deposit_amount').value;

        if (total_cost == "" || !total_cost > "0") {
                document.getElementById('balance_amount').value = "";
                return;
        } else {
                if (deposit_amount == "" || !deposit_amount > 0) {
                        deposit_amount = 0;
                }
                var balance = total_cost - deposit_amount;
                balance = balance.toFixed(2);

                document.getElementById('balance_amount').value = balance;
                return;
        }

}

function updatePermitsCost(form) {

        var num_permits = document.getElementById('num_permits').value;
        var permit_rate = document.getElementById('permit_rate').value;

        if (num_permits == "") {
                document.getElementById('total_permits_cost').value = "";
                return;
        }
        var numericExpression = /^[0-9]+$/;
        if(!num_permits.match(numericExpression)) {
                alert("Number of permits must be numeric");
                setTimeout("document.getElementById('num_permits').focus();",1);
                return;
        }


        if(!permit_rate > "") {
                alert("Permit rate must be numeric");
                setTimeout("document.getElementById('permit_rate').focus();",1);
                return;
        }

        var cost = num_permits * permit_rate;

        document.getElementById('total_permits_cost').value = cost;
        setCCFee();
}

function updateTotalCost(form) {
//mileage cost + total permits cost + tolls + Misc + web discount (expects negative number).
//Add 4% adds 4% to total cost.

        var mileage_cost = document.getElementById('mileage_cost').value;
        var total_permits_cost = document.getElementById('total_permits_cost').value;
        var tolls_cost = document.getElementById('tolls_cost').value;
        var misc_cost = document.getElementById('misc_cost').value;
        var web_disc = document.getElementById('web_disc').value;

        var cc_fee = document.getElementById('cc_fee').value;
        var cc_fee_checked = document.getElementById('cc_fee').checked;

        if (mileage_cost == "") { mileage_cost = 0; }
        if (total_permits_cost == "") { total_permits_cost = 0; }
        if (tolls_cost == "") { tolls_cost = 0; }
        if (misc_cost == "") { misc_cost = 0; }
        if (web_disc == "") { web_disc = 0; }
        if (cc_fee_checked != "1") { cc_fee = 1; }

        var total_cost = (parseFloat(mileage_cost) + parseFloat(total_permits_cost) + parseFloat(tolls_cost) + parseFloat(misc_cost) + parseFloat(web_disc)) * parseFloat(cc_fee);
        total_cost = total_cost.toFixed(2);
        document.getElementById('total_cost').value = total_cost;

        var deposit_amount = document.getElementById('deposit_amount').value;

        if (total_cost == "" || !(total_cost > 0)) {
                document.getElementById('balance_amount').value = "";
                return;
        } else {
                var balance = total_cost - deposit_amount;
                balance = balance.toFixed(2);
                document.getElementById('balance_amount').value = balance;
                return;
        }

}

function setAcceptedDate(form) {
//sets load accepted date to 'now'

        var currentTime = new Date()
        var month = currentTime.getMonth() + 1
        var day = currentTime.getDate()
        var year = currentTime.getFullYear()
        var hours = currentTime.getHours()
        var minutes = currentTime.getMinutes()
        var seconds = currentTime.getSeconds()
        if (month < 10){
            month = "0" + month
        }
        if (day < 10){
            day = "0" + day
        }
        if (hours < 10){
            hours = "0" + hours
        }
        if (minutes < 10){
            minutes = "0" + minutes
        }
        if (seconds < 10){
            seconds = "0" + seconds
        }


        var currDt = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds

        document.getElementById('accepted_date').value = currDt;


}

function getTotalCost() {
//mileage cost + total permits cost + tolls + Misc + web discount (expects negative number).
        //updateMileageCost();
        //updatePermitsCost();
        var mileage_cost = document.getElementById('mileage_cost').value;
        var total_permits_cost = document.getElementById('total_permits_cost').value;
        var tolls_cost = document.getElementById('tolls_cost').value;
        var misc_cost = document.getElementById('misc_cost').value;
        var web_disc = document.getElementById('web_disc').value;

        var cc_fee = document.getElementById('cc_fee').value;
        var cc_fee_checked = document.getElementById('cc_fee').checked;

        if (mileage_cost == "") { mileage_cost = 0; }
        if (total_permits_cost == "") { total_permits_cost = 0; }
        if (tolls_cost == "") { tolls_cost = 0; }
        if (misc_cost == "") { misc_cost = 0; }
        if (web_disc == "") { web_disc = 0; }

        var total_cost = (parseFloat(mileage_cost) + parseFloat(total_permits_cost) + parseFloat(tolls_cost) + parseFloat(misc_cost) + parseFloat(web_disc));
        total_cost = total_cost.toFixed(2);

        return total_cost;

}

function setCCFee() {
    var total_cost = getTotalCost();
    var cc_fee = document.getElementById('cc_fee').value;
    cc_fee = cc_fee - 1;
    cc_fee = cc_fee.toFixed(2);
    cc_fee = cc_fee * total_cost;
    cc_fee = cc_fee.toFixed(2);
    document.getElementById('cc_fee_amount_wrapper').innerHTML = "("+cc_fee+")";


}

function setAkatPay() {
    var total_miles = document.getElementById('total_miles').value;
    var akat_p_t = document.getElementById('akat_p_t').value;
    var akat_pay_rate = document.getElementById('akat_pay_rate').value;

    var akat_pay = akat_pay_rate * total_miles;
   
    akat_pay = parseFloat(akat_pay) + parseFloat(akat_p_t);
    akat_pay = akat_pay.toFixed(2);
    
    document.getElementById('akat_pay').value = akat_pay;

    var akat_per_mile = akat_pay/total_miles;
    akat_per_mile = akat_per_mile.toFixed(2);

    document.getElementById('akat_per_mile_wrapper').innerHTML = akat_per_mile;
    setAkatProfit();

}

function setAkatProfit() {
    var total_cost = document.getElementById('total_cost').value;
    var cc_fee = document.getElementById('cc_fee').value;
    var cc_fee_checked = document.getElementById('cc_fee').checked;
    var akat_pay = document.getElementById('akat_pay').value;

    if (cc_fee_checked) {
        //alert(cc_fee);
        //alert(total_cost);
        //cc_fee = cc_fee - 1;
        //cc_fee = cc_fee.toFixed(2);
        total_cost = total_cost/cc_fee;
        total_cost = total_cost.toFixed(2);
        //alert(total_cost);
    }

    var akat_profit = total_cost - akat_pay;
    akat_profit = akat_profit.toFixed(2);
    var akat_profit_percent = (akat_profit/total_cost)*100;
    akat_profit_percent = akat_profit_percent.toFixed(2);


    document.getElementById('akat_net_profit_wrapper').innerHTML = akat_profit;
    document.getElementById('akat_profit_percent_wrapper').innerHTML = akat_profit_percent;


}

function checkCountry(state) {
        if (state=="AB" ||
                state=="BC" ||
                state=="MB" ||
                state=="NB" ||
                state=="NL" ||
                state=="NS" ||
                state=="ON" ||
                state=="QC" ||
                state=="SK" ||
                state=="YK") {

                return "CN";
        } else {
                return "USA";
        }

}

function valButton(btn) {
        var cnt = -1;
        for (var i=btn.length-1; i > -1; i--) {
                if (btn[i].checked) {cnt = i; i = -1;}
        }
        if (cnt > -1) return btn[cnt].value;
        else return null;
}

function sendEmail(form, button) {

        var message = "";
        if (button == 'quote') {
                if (form.elements['total_miles'].value == '') {
                        message = message+'Total Miles is required\n';
                }
                if (form.elements['rate'].value == '') {
                        message = message+'Mileage Rate is required\n';
                }
                if (form.elements['num_permits'].value == '') {
                        message = message+'Permits Quantity is required\n';
                }
                if (form.elements['tolls_cost'].value == '') {
                        message = message+'Tolls Cost is required\n';
                }
                if (form.elements['misc_cost'].value == '') {
                        message = message+'Misc Cost is required\n';
                }
                if (form.elements['driver_pay'].value == '') {
                        message = message+'Driver Pay is required\n';
                }
                if (message > '') {
                        alert(message);
                        return;
                }
        }

        if (button == 'release') {
                //if (form.elements['date_range_pu'].value == '') {
                //        message = message+'Pickup Date Range is required\n';
                //}
                if (form.elements['deposit_received_date'].value == '') {
                        message = message+'Deposit Received Date is required\n';
                }
                var btn = valButton(form.elements['deposit_method']);
                if (btn == null) {
                        message = message+'Deposit Payment Method is required\n';
                }
                btn = valButton(form.elements['payment_method']);
                if (btn == null) {
                        message = message+'Balance Payment Method is required\n';
                }

                if (form.elements['deposit_amount'].value == '') {
                        message = message+'Deposit Amount is required\n';
                }
                btn = valButton(form.elements['payment_timing']);
                if (btn == null) {
                        message = message+'Payment Timing is required\n';
                }

                if (message > '') {
                        alert(message);
                        return;
                }
        }
        var answer = confirm  ("Any changes to quote must be saved before continuing or they will be lost. Are sure you want to email the "+button+"?");
        if (answer) {  // send email and update record with date and via (if appropriate)
                form.elements['btn'].value = 'email_'+button;

                form.submit();
                return;
        } else {  // cancel
                return;
        }

}

function sendAkatEmail(form, button) {

        var message = "";
        if (button == 'load') {

        }

        if (button == 'accepted') {
                
        }

        if (button == 'fato') {

        }

        form.elements['btn'].value = 'email_'+button;

        form.submit();
        return;


}

function showTypeDivs(selObj, admin) {
        type = selObj.options[selObj.selectedIndex].value;


        if (admin != 'y') {
                if (type=="0" || type=="Boat - No Trailer") {
                        document.getElementById('load_data').style.display="none";
                        document.getElementById('load_data2').style.display="none";
                        document.getElementById('load_data3').style.display="none";
                } else {
                        document.getElementById('load_data').style.display="block";
                        document.getElementById('load_data2').style.display="block";
                        document.getElementById('load_data3').style.display="block";
                }
                if (type=="RV - 5th Wheel") {
                        document.getElementById('weight_non_5th').style.display="none";
                        document.getElementById('weight_5th').style.display="inline";

                } else {
                        document.getElementById('weight_non_5th').style.display="inline";
                        document.getElementById('weight_5th').style.display="none";
                }

                if (type=="Horse Trailer" || type=="Cargo/Freight on Trailer") {
                        document.getElementById('trailer_type_data').style.display="block";
                } else {
                        document.getElementById('trailer_type_data').style.display="block";
                }
        }

        if (type=="Boat On Trailer") {
                document.getElementById('boat_data').style.display="block";
        } else {
                document.getElementById('boat_data').style.display="none";
        }

        if (type=="Cargo/Freight on Trailer") {
                document.getElementById('freight_data').style.display="block";
        } else {
                document.getElementById('freight_data').style.display="none";
        }

        if (type=="Boat - No Trailer") {
            document.getElementById('weight_non_5th').style.display="none";
            document.getElementById('trailer_type_data').style.display="none";
            alert("We're sorry, at this time, we are unable to transport boats that are not on a trailer. Thank you for contacting Autri Transport Inc.");

        }
        return;

}

function checkRequiredPhone(form) {
        var error = '';

        if (form.elements['phone_pu'].value.length == 0) {
                alert('A phone number is required');
                return;
        }

        form.submit();
}

function validateRelease(form) {
        var error = '';

        if ((form.elements['vin_num'].value.length == 0) &&
                (form.elements['hull_num'].value.length == 0) &&
                (form.elements['other_num'].value.length == 0)) {
                alert('Please enter a value for either VIN #, Hull #, or Other #');
                return;
        }

        if (form.elements['transport_type'].value == 'Boat On Trailer') {

            if ((form.elements['boat_width_feet'].value.length == 0) ||
                (form.elements['boat_width_inches'].value.length == 0)) {
                    alert('Please enter a value for both feet and inches for Actual Boat Beam Width');
                    return;
            }
            if ((form.elements['boat_height_feet'].value.length == 0) ||
                (form.elements['boat_height_inches'].value.length == 0)) {
                    alert('Please enter a value for both feet and inches for Actual Boat Height');
                    return;
            }
        }

        if (form.elements['addr_pu'].value.length == 0) {
                alert('Pickup address is required');
                return;
        }

        if ((!form.elements['location_type_pu'][0].checked) &&
                (!form.elements['location_type_pu'][1].checked))	{
                alert('Please select Pick up location type');
                return;
        }

        if ((form.elements['location_type_pu'][1].checked) &&
                (form.elements['business_name_pu'].value.length == 0))	{
                alert('Please enter the Pick up business name');
                return;
        }

        if (form.elements['addr_del'].value.length == 0) {
                alert('Delivery address is required');
                return;
        }

        if ((!form.elements['location_type_del'][0].checked) &&
                (!form.elements['location_type_del'][1].checked))	{
                alert('Please select Delivery location type');
                return;
        }

        if ((form.elements['location_type_del'][1].checked) &&
                (form.elements['business_name_del'].value.length == 0))	{
                alert('Please enter the Delivery business name');
                return;
        }

        if ((!form.elements['present_pu'][0].checked) &&
                (!form.elements['present_pu'][1].checked))	{
                alert('Please select Yes or No');
                return;
        }

        if ((!form.elements['present_del'][0].checked) &&
                (!form.elements['present_del'][1].checked))	{
                alert('Please select Yes or No');
                return;
        }

        form.submit();
}

function validateLoadAccept(form) {
        var error = '';

        if ((form.elements['accepted_signature'].value.length == 0)) {
                alert('Please type your name to serve as your signature');
                return;
        }


        if (form.elements['driver_name'].value.length == 0) {
                alert('Driver Name is required');
                return;
        }

        if (form.elements['driver_phone'].value.length == 0) {
                alert('Driver Phone is required');
                return;
        }

        

        form.submit();
}

function validateForm(form, btn) {
  
        var type	= form.elements['transport_type'].value;
        var error = '';

        if (form.elements['fname'].value.length == 0) {
                error += 'First Name is required\n';
        }

        var email = form.elements['email'].value;
        if (email.length == 0) {
                error += 'Email is required\n';
        } else {
                var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
                if (!filter.test(email)) {
                        error += 'Invalid Email format\n';
                }
        }

        if (document.getElementById('length').value == '') {
                error += 'Please select a Length\n';
        }

        if (type == 'Horse Trailer' || type == 'Cargo/Freight on Trailer') {
                if (form.elements['trailer_type'].value == '') {
                        error += 'Please select a Trailer Type\n';
                }

        }
        if (type == 'Boat On Trailer') {
                if (form.elements['boat_value'].value == '') {
                        error += 'Please select a Boat Value\n';
                }
                if (form.elements['boat_beam'].value == '') {
                        error += 'Please select a Beam width\n';
                }
                if (form.elements['boat_height'].value == '') {
                        error += 'Please select a Boat Height\n';
                }

                var mast = form.elements['boat_mast_overhang'];
                var mast_sel = 0;
                for(var i = 0; i < mast.length; i++) {
                        if(mast[i].checked) {
                                mast_sel = 1;
                        }
                }
                if (mast_sel == 0) {
                        error += "Please select a boat 'Mast' response\n";
                }

        }

        if (type == 'Cargo/Freight on Trailer') {

                if (form.elements['width'].value == '') {
                        error += 'Please select a Width\n';
                }
                if (form.elements['height'].value == '') {
                        error += 'Please select a Height\n';
                }

                

        }

        var fuel = form.elements['fuel_tank'];
        var fuel_sel = 0;
        for(var i = 0; i < fuel.length; i++) {
                if(fuel[i].checked) {
                        fuel_sel = 1;
                }
        }
        if (fuel_sel == 0) {
                error += "Please select a 'Fuel Tank' response\n";
        }

        var as_is = form.elements['as_is'];
        var as_is_sel = 0;
        for(var i = 0; i < as_is.length; i++) {
                if(as_is[i].checked) {
                        as_is_sel = 1;
                }
        }
        if (as_is_sel == 0) {
                error += "Please select a 'Towable as is' response\n";
        }

        var shipping_port = form.elements['shipping_port'];
        var shipping_port_sel = 0;
        for(var i = 0; i < shipping_port.length; i++) {
                if(shipping_port[i].checked) {
                        shipping_port_sel = 1;
                }
        }
        if (shipping_port_sel == 0) {
                error += "Please select a 'Shipping Port' response\n";
        }

        if (form.elements['city_pu'].value.length == 0) {
                error += 'Pickup City is required\n';
        }

        var state_pu = form.elements['state_pu'].value;
        if (state_pu == '') {
                error += 'Pickup State is required\n';
        }

        if (form.elements['city_del'].value.length == 0) {
                error += 'Drop Off City is required\n';
        }

        var state_del = form.elements['state_del'].value;
        if (state_del == '') {
                error += 'Drop Off State is required\n';
        }

        var country_pu = checkCountry(state_pu);
        form.elements['country_pu'].value = country_pu;

        var country_del = checkCountry(state_del);
        form.elements['country_del'].value = country_del;

        if (country_pu == "CN" && country_del == "CN") {
                error += 'Pickup and Drop Off locations cannot both be Canadian\n';
        }
        /*
        if (form.elements['earliest_pu_date'].value.length == 0) {
                error += 'Earliest Pickup Date is required\n';
        }

        if (form.elements['latest_del_date'].value.length == 0) {
                error += 'Latest Delivery Date is required\n';
        }
        */
        /*
        var payment_timing = form.elements['payment_timing'];
        var payment_timing_sel = 0;
        for(var i = 0; i < payment_timing.length; i++) {
                if(payment_timing[i].checked) {
                        payment_timing_sel = 1;
                }
        }
        if (payment_timing_sel == 0) {
                error += "Please select a payment time\n";
        }
        */
        var payment_method = form.elements['payment_method'];
        var payment_method_sel = 0;
        for(var i = 0; i < payment_method.length; i++) {
                if(payment_method[i].checked) {
                        payment_method_sel = 1;
                }
        }
        if (payment_method_sel == 0) {
                error += "Please select a payment method\n";
        }

        if (btn == 'submit_admin') {
            var check_date;

            if (form.elements['loadboard_repost_date'] != undefined) {
                if (form.elements['loadboard_repost_date'].value.length > 0) {
                    check_date = form.elements['loadboard_repost_date'];
                    if (!checkDate(check_date)) {
                        return;
                    }
                }
            }

            if (form.elements['date_range_pu'].value.length > 0) {
                check_date = form.elements['date_range_pu'];
                if (!checkDate(check_date)) {
                    return;
                }
            }
            /*
            if (form.elements['date_range_pu2'].value.length > 0) {
                check_date = form.elements['date_range_pu2'];
                if (!checkDate(check_date)) {
                    return;
                }
            }
            */
            if (form.elements['date_range_del'].value.length > 0) {
                check_date = form.elements['date_range_del'];
                if (!checkDate(check_date)) {
                    return;
                }
            }
            
            /*
            if (form.elements['date_range_del2'].value.length > 0) {
                check_date = form.elements['date_range_del2'];
                if (!checkDate(check_date)) {
                    return;
                }
            }
            */
            
            if (form.elements['accepted_date'].value.length > 0) {
                check_date = form.elements['accepted_date'];
                if (!checkDate(check_date,'yes')) {
                    return;
                }
            }
            
        }

        if (error > '') {
                alert(error);
                return;
        } else {
                form.submit();
        }
}

function validateUserForm(form, btn) {

        var error = '';

        //if (form.elements['akat_fname'].value.length == 0) {
        //        error += 'First Name is required\n';
        //}

        if (form.elements['username'].value.length == 0) {
                error += 'Username is required\n';
        }

        if (form.elements['password'].value.length == 0) {
                error += 'Password is required\n';
        }

        var email = form.elements['email'].value;
        if (email.length == 0) {
                error += 'Email is required\n';
        } else {
                var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
                if (!filter.test(email)) {
                        error += 'Invalid Email format\n';
                }
        }

        if (btn == 'delete') {
            var answer = confirm  ("Are sure you want to delete this user?");
            if (answer) {  //
                    form.elements['btn'].value = 'delete';

                    form.submit();
                    return;
            } else {  // cancel
                    return;
            }
        }


        if (error > '') {
                alert(error);
                return;
        } else {
                form.submit();
        }
}


function isDate(txtDate){
  var objDate;  // date object initialized from the txtDate string
  var mSeconds; // milliseconds from txtDate

  // date length should be 10 characters - no more, no less
  if (txtDate.length != 10) return false;

  // extract day, month and year from the txtDate string
  // expected format is yyyy/mm/dd
  // subtraction will cast variables to integer implicitly
  var year	= txtDate.substring(0,4)  - 0;
  var month	= txtDate.substring(5,7)  - 1;
  var day	= txtDate.substring(8,10) - 0;

  // third and sixth character should be /
  if (txtDate.substring(4,5) != '-') return false;
  if (txtDate.substring(7,8) != '-') return false;

  // test year range
  if (year < 999 || year > 3000) return false;

  // convert txtDate to the milliseconds
  mSeconds = (new Date(year, month, day)).getTime();

  // initialize Date() object from calculated milliseconds
  objDate = new Date();
  objDate.setTime(mSeconds);

  // compare input parameter date and created Date() object
  // if difference exists then date isn't valid
  if (objDate.getFullYear() != year)  return false;
  if (objDate.getMonth()    != month) return false;
  if (objDate.getDate()     != day)   return false;

  // otherwise return true
  return true;
}

function isDateTime(txtDate){
  var objDate;  // date object initialized from the txtDate string
  var mSeconds; // milliseconds from txtDate

  // date length should be 10 characters - no more, no less
  if (txtDate.length != 19) return false;

  // extract day, month and year from the txtDate string
  // expected format is yyyy-mm-dd hh:ii:ss
  // subtraction will cast variables to integer implicitly
  var year	= txtDate.substring(0,4)  - 0;
  var month	= txtDate.substring(5,7)  - 1;
  var day	= txtDate.substring(8,10) - 0;
  var hour	= txtDate.substring(11,13) - 0;
  var min	= txtDate.substring(14,16) - 0;
  var sec	= txtDate.substring(17,19) - 0;
//alert(year month day hour min sec);
  // third and sixth character should be -
  if (txtDate.substring(4,5) != '-') return false;
  if (txtDate.substring(7,8) != '-') return false;

  // third and sixth character should be :
  if (txtDate.substring(13,14) != ':') return false;
  if (txtDate.substring(16,17) != ':') return false;

  // test year range
  if (year < 999 || year > 3000) return false;

  // convert txtDate to the milliseconds
  mSeconds = (new Date(year, month, day, hour, min, sec)).getTime();

  // initialize Date() object from calculated milliseconds
  objDate = new Date();
  objDate.setTime(mSeconds);

  // compare input parameter date and created Date() object
  // if difference exists then date isn't valid
  if (objDate.getFullYear() != year)  return false;
  if (objDate.getMonth()    != month) return false;
  if (objDate.getDate()     != day)   return false;

  // otherwise return true
  return true;
}

