﻿(function($) {
    $.fn.txtReplace = function(settings) {
        var config = { 'initialText': '', 'initialClass': 'init' }; //default config
        if (settings) $.extend(config, settings);
        this.each(function() {
            if ("INPUT" != this.tagName.toUpperCase()) return;
            var input = $(this); var initText = config.initialText == '' ? input.attr('title') : config.initialText;
            if ($.trim(input.val()) == '' && initText != '') //if input blank && initial text not blank
            { //set initial text
                input.val(initText);
                if (input.attr('title') != '') input.attr('title', ''); //clear title if present (we've used it for initial text)
            }
            input.addClass(config.initialClass); //add initial class
            input.focus(function() {
                if ($.trim(input.val()) == initText) { input.removeClass(config.initialClass); input.val(''); }
            });
            input.blur(function() {
                if ($.trim(input.val()) == '') { input.addClass(config.initialClass); input.val(initText); }
            });
            input.change(function() { input.removeClass(config.initialClass); });
        });
        return this;
    };
})(jQuery);

$(document).ready(function() {
    $("input[type=text],textarea").keyup(function() { $(this).removeClass('error'); }).change(function() { $(this).removeClass('error'); });
    $("input[type=checkbox]").click(function() { $(this).parent().removeClass('error'); });
    //	$("body").ajaxError(function () {
    //		$('<div id="ajaxError"></div>').appendTo(this).html('A problem occured with the request').dialog({ autoOpen:true,modal:true,title:'Error',close:function(event) { window.location.href = '/';}});
    //	});
});

(function($) {
    $.fn.txtLimit = function(settings) {
        var config = { 'maxlength': '500', 'message': 'characters remaining' }; //default config
        if (settings) $.extend(config, settings);
        if (this.parent().children(".limitCharCount").length <= 0)
            this.after('<span class="limitCharCount">' + config.maxlength + ' ' + config.message + '</span>');
        charCount = function() { var charsUsed = this.value.length; if (charsUsed > config.maxlength) { this.value = this.value.substring(0, config.maxlength); this.scrollTop = this.scrollHeight; charsUsed = config.maxlength; } $(this).parent().children(".limitCharCount").html(config.maxlength - charsUsed + ' ' + config.message); };
        this.each(function() {
            if ("TEXTAREA" != this.tagName.toUpperCase()) return;
            $(this).keypress(function(event) { var key = event.which; if (key >= 33 || key == 13) { if (this.value.length >= config.maxlength) event.preventDefault(); } });
            $(this).change(charCount);
            $(this).keydown(charCount);
            $(this).keyup(charCount);
        });
        return this;
    };
})(jQuery);

function validEnquiry(e) {
    var valid = true;
    var emailRegex = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
    if ($.trim(e.FromAddressLine1) == '') { $("#txtOriginAddress1").addClass('error'); valid = false; }
    if ($.trim(e.FromLocation) == '') { $("#txtOriginSuburb").addClass('error'); valid = false; }
    if ($.trim(e.FromLocationState) == '') { $("#txtOriginState").addClass('error'); valid = false; }
    if ($.trim(e.FromLocationPostCode) == '') { $("#txtOriginPostcode").addClass('error'); valid = false; }
    if ($.trim(e.ToAddressLine1) == '') { $("#txtDestinationAddress1").addClass('error'); valid = false; }
    if ($.trim(e.ToLocation) == '') { $("#txtDestinationSuburb").addClass('error'); valid = false; }
    if ($.trim(e.ToLocationState) == '') { $("#txtDestinationState").addClass('error'); valid = false; }
    if ($.trim(e.ToLocationPostCode) == '') { $("#txtDestinationPostcode").addClass('error'); valid = false; }
    if ($.trim(e.FirstName) == '') { $("#txtFullName").addClass('error'), valid = false; }
    if ($.trim(e.LastName) == '') { $("#txtFullName").addClass('error'), valid = false; }
    if ($.trim(e.EmailAddress) == '' || !e.EmailAddress.match(emailRegex)) { $("#txtEmail").addClass('error'); valid = false; }
    if ($.trim(e.MobilePhone) == '') { $("#txtPhone").addClass('error'); valid = false; }
    if (!$("input#termsConditionsCheck").attr('checked')) { $("input#termsConditionsCheck").parent().addClass('error'); valid = false; }
    var strMoveName = e.Movetype;
    //16/10/2011:MD Check for the move types pertaining fields filled validation
    if (strMoveName == "Few Items") {
        //alert($.trim(e.NumberOfItems) == '');
        if ($.trim(e.NumberOfItems) == '') { $("#txtnumberOfItems").addClass('error'); valid = false; }
    }
    else if (strMoveName == "Student") {
    if ($.trim(e.NumberOfItems) == '') { $("#txtnumberOfItems").addClass('error'); return false; }
    }
    else if (strMoveName == "Apartment") {
        if ($.trim(e.ToNumberOfBedrooms) == '0') { $("#txtDestinationNumberOfBedrooms").addClass('error'); valid = false; }
        if ($.trim(e.PeopleMoving) == '0') { $("#txtPeopleMoving").addClass('error'); return false; }
    }
    else if (strMoveName == "Household") {
        if ($.trim(e.ToNumberOfBedrooms) == '0') { $("#txtDestinationNumberOfBedrooms").addClass('error'); valid = false; }
        if ($.trim(e.PeopleMoving) == '0') { $("#txtPeopleMoving").addClass('error'); valid = false; }
    }
    else if (strMoveName == "Office Move") {
        if ($.trim(e.ToNumberOfStaffRelocating) == '0') { $("#txtDestinationStaffRelocating").addClass('error'); valid = false; }
    }
    else if (strMoveName == "Interstate") {
        if ($.trim(e.ToWalkDistanceFromTruck) == '0') { $("#txtDestinationWalkDistanceFromTruck").addClass('error'); valid = false; }
    }
    return valid;
}

//function validateMoveType(strMoveName,e) {
//    if (strMoveName == "Few Items") {

//        if ($.trim(e.NoOfItems) == '') { alert(e.NoOfItems); $("#txtnumberOfItems").addClass('error'); valid = false; }
//    }
//    else if (strMoveName == "Student") {
//    if ($.trim(e.NoOfItems) == '') { $("#txtnumberOfItems").addClass('error'); return false; }
//    }
//    else if (strMoveName == "Apartment") {
//    if ($.trim(e.ToNumberOfBedrooms) == '0') { $("#txtDestinationNumberOfBedrooms").addClass('error'); valid = false; }
//    if ($.trim(e.PeopleMoving) == '0') { $("#txtPeopleMoving").addClass('error'); return false; }
//    }
//    else if (strMoveName == "Household") {
//    if ($.trim(e.ToNumberOfBedrooms) == '0') { $("#txtDestinationNumberOfBedrooms").addClass('error'); valid = false; }
//    if ($.trim(e.PeopleMoving) == '0') { $("#txtPeopleMoving").addClass('error'); valid = false; }
//    }
//    else if (strMoveName == "Office Move") {
//    if ($.trim(e.ToNumberOfStaffRelocating) == '0') { $("#txtDestinationStaffRelocating").addClass('error'); valid = false; }
//    }
//    else if (strMoveName == "Interstate") {
//    if ($.trim(e.ToWalkDistanceFromTruck) == '0') { $("#txtDestinationWalkDistanceFromTruck").addClass('error'); valid = false; }  
//    }
//}

function validCC(c) {
    valid = true;

    var ccvReg = /^\d{3}$/;
    var ccReg = /^(\d{4}\s?){4}$/;

    if ($.trim(c.CreditCardName) == '') { $('#txtCreditCardName').addClass('error'); valid = false; }
    if ($.trim(c.CreditCardNumber).match(ccReg) == null) { $('#txtCreditCardNumber').addClass('error'); valid = false; }
    if ($.trim(c.CreditSecurityNo).match(ccvReg) == null) { $('#txtCreditSecurityNo').addClass('error'); valid = false; }

    return valid;
}

function DateDeserialize(dateStr) {
    var d = eval('new' + dateStr.replace(/\//g, ' '));
    return d;
}

function DateSerialize(date) {
    var d = date.getDate();
    var y = date.getFullYear();
    var m = date.getMonth() + 1;
    var hour = date.getHours();
    var mins = date.getMinutes(); if (mins <= 9) { mins = "0" + mins; }
    return y + '-' + m + '-' + d + ' ' + hour + ':' + mins;
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function prePopulateForms() {
    var userCookie = readCookie('citymove_userlogin');
    if (userCookie != null) {
        var userInfo = $.parseJSON(userCookie);
        $(".name").val(userInfo.FirstName + " " + userInfo.LastName);
        $(".fname").val(userInfo.FirstName);
        $(".lname").val(userInfo.LastName);
        $(".email").val(userInfo.Email);
        $(".phone").val(userInfo.Phone);
    }
    var bookingCookie = readCookie('citymove_booking');
    if (bookingCookie != null) {
        var bookingInfo = $.parseJSON(bookingCookie);
        $("input.fromsuburb").val(bookingInfo.FromSuburb);
        $("span.fromsuburb").html(bookingInfo.FromSuburb);

        $("input.fromstate").val(bookingInfo.FromState);
        $("span.fromstate").html(bookingInfo.FromState);

        $("input.frompostcode").val(bookingInfo.FromPostcode);

        $("input.tosuburb").val(bookingInfo.ToSuburb);
        $("span.tosuburb").html(bookingInfo.ToSuburb);

        $("input.tostate").val(bookingInfo.ToState);
        $("span.tostate").html(bookingInfo.ToState);

        $("input.topostcode").val(bookingInfo.ToPostcode);

        $("input#txtBestDate").datepicker("setDate", new Date(bookingInfo.MoveDate));

        $("select.fromstate").val(bookingInfo.FromState);
        $("select.tostate").val(bookingInfo.ToState);
    }
}

var debounce = function(func, threshold, execAsap) {
    var timeout;
    return function debounced() {
        var obj = this, args = arguments;
        function delayed() {
            if (!execAsap)
                func.apply(obj, args);
            timeout = null;
        };
        if (timeout)
            clearTimeout(timeout);
        else if (execAsap)
            func.apply(obj, args);
        timeout = setTimeout(delayed, threshold || 100);
    };
}

// 13/10/2011:YM To control show and hide of Move based form elements
function showMoveControls(bTxtNoItem, bDdlNoBedRoom, bDdlStaffReLoc, bDdlNoPplMove, bDdlDistTruck) {
    $(".divNoOfItems").css("display", bTxtNoItem);
    $(".divBedrooms").css("display", bDdlNoBedRoom);
    $(".divStaffreloc").css("display", bDdlStaffReLoc);
    $(".divDistanceTruck").css("display", bDdlDistTruck);
    $(".divPeopleMoving").css("display", bDdlNoPplMove);

}
 
