﻿$(document).ready(function() {
    // Open links in a new window if rel is set to external
$('a[rel="external"]').click(function() { window.open($(this).attr('href')); return false; });


    //validation rules
    $.validator.addMethod('mandPhoneCm',
        function(value) {
            return $("#cm_phonehome").val() != "" ||
                $("#cm_phoneWork").val() != "" ||
                $("#cm_mobile").val() != "";
        },
        'Please provide at least 1 phone number');
    $.validator.addMethod('mandPhoneAg',
        function(value) {
            if ($("#ag_phonehome, #ag_phoneWork, #ag_mobile").length > 0) {
                return $("#ag_phonehome").val() != "" ||
                    $("#ag_phoneWork").val() != "" ||
                    $("#ag_mobile").val() != "";
            }
            return true;
        },
        'Please provide at least 1 phone number');
    $.validator.addMethod('acn',
        function(value) {
            if (!value.length) {
                return true;
            }
            return CheckAcn(value);
        },
        'Please make sure your ABN/ACN number is valid.'
    );
    $.validator.addMethod('dateAUS',
    function(value) {
        if (value.toString().length == 0) return true;
        Date.format = "dd/mm/yyyy";
        var dtm = Date.fromString(value);
        if (dtm == false) {
            return false;
        }
        if (dtm.getFullYear() < 1900) {
            return false;
        }
        var x = dtm.asString("dd/mm/yyyy");
        return x == value;
    },
    'Date format is dd/mm/yyyy');
    $.validator.addMethod('servicesProvider',
        function(value) {
            if (!value.length) {
                return true;
            }
            return CheckServicesProvider(value);
        },
        'Could not match member info.'
    );
    $.validator.addMethod('noFutureDate',
    function(value) {
        if (value.toString().length == 0) return true;
        Date.format = "dd/mm/yyyy";
        var d = Date.fromString(value);
        if (d == false) {
            return false;
        }
        var today = new Date();
        return d <= today;
    },
    'Select date in the past');
    $.validator.addMethod('postcodeCustomer',
    function(value) {
        if (value.toString().length == 0) return true;
        if ($("#cm_country").val().toString().toLowerCase() == "australia") {
            return $("#cm_postcode").val().toString().length == 3 || $("#cm_postcode").val().toString().length == 4;
        } else {
            return true;
        }
    },
    'Incorrect postcode');
    $.validator.addMethod('postcodeAgent',
    function(value) {
        if (value.toString().length == 0) return true;
        if ($("#ag_country").val().toString().toLowerCase() == "australia") {
            return $("#ag_postcode").val().toString().length == 3 || $("#ag_postcode").val().toString().length == 4;
        } else {
            return true;
        }
    },
    'Incorrect postcode');
});


function CreateCityAutoComplete(cityInput, postcodeInput, stateInput, autoCompleteUrl)
{
    $(cityInput).autocomplete(autoCompleteUrl, {
        dataType: 'json',
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                rows[i] = { data: data[i], value: data[i].Locality, result: data[i].Locality };
            }
            return rows;
        },
        formatItem: function(row) {
            return row.Locality + ", " + row.Pcode;
        },
        max: 200
    }).result(function(event, row, formatted) {
        $(postcodeInput).val(row.Pcode).valid();
        $(stateInput).val(row.State).valid();
    });
}

function mydiff(date1, date2, interval) {
    var second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, week = day * 7;
    date1 = new Date(date1);
    date2 = new Date(date2);
    var timediff = date2 - date1;
    if (isNaN(timediff)) return NaN;
    switch (interval) {
        case "years": return date2.getFullYear() - date1.getFullYear();
        case "months": return (
            (date2.getFullYear() * 12 + date2.getMonth())
            -
            (date1.getFullYear() * 12 + date1.getMonth())
        );
        case "weeks": return Math.floor(timediff / week);
        case "days": return Math.floor(timediff / day);
        case "hours": return Math.floor(timediff / hour);
        case "minutes": return Math.floor(timediff / minute);
        case "seconds": return Math.floor(timediff / second);
        default: return undefined;
    }
}

function CreateCountryAutoComplete(countryInput, autoCompleteUrl)
{
    $(countryInput).autocomplete(autoCompleteUrl, {
        dataType: 'json',
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name };
            }
            return rows;
        },
        formatItem: function(row) {
            return row.Name;
        }
    }).result(function(event, row, formatted) {
        CountryChangeCM();
    });
}

function CountryChangeShowState(countryInput, stateSelect, stateInput, pClass)
{
    if($('input[name=' + countryInput + ']').val() != 'Australia'){
        $('select#' + stateSelect + '').hide().removeClass("required").siblings('label').find('span').hide();
        $('select#' + stateSelect + '').next("[generated=true]").hide();
        $('input#' + stateInput + '').show().not("#ag_state_text").addClass("required");
        $('.' + pClass + ' label').find('span').hide();
    } else {
        $('input#' + stateInput +'').hide().removeClass("required");
        $('select#' + stateSelect + '').show().not("#ag_state").addClass("required");
        $('select#' + stateSelect + '').siblings('label').find('span').show();
        $('.' + pClass + ' label').find('span').show();
    }
}

function CreateMemberAutoComplete(memberInput, memberIDInput, autoCompleteUrl)
{
    $(memberInput).autocomplete(autoCompleteUrl, {
        dataType: 'json',
        cacheLength: 0, //members needs this for some reason
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                rows[i] = { data: data[i], value: data[i].member_id, result: data[i].member_name };
            }
            return rows;
        },
        formatItem: function(row) {
            return row.member_name;
        }
    }).result(function(event, row, formatted) {
        $(memberIDInput).val(row.member_id);
        $(memberInput).valid();
    });
}

function CreateCalendar(calendarInput, iconUrl, yearTo)
{
    $(calendarInput).datepicker({
	    changeMonth: true,
	    changeYear: true,
	    showOn: 'button',
	    buttonImage: iconUrl,
	    buttonImageOnly: true,
	    firstDay: 1,
	    yearRange: '1997:' + yearTo,
	    dateFormat: 'dd/mm/yy',
	    maxDate: '0'
	});
	$("#pDateLodged img").insertBefore("#date_lodged");
}

function CreateCalendarDOB(calendarInput, iconUrl, yearTo) {
    var newdate = yearTo - 10;
    $(calendarInput).datepicker({
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: iconUrl,
        buttonImageOnly: true,
        firstDay: 1,
        yearRange: '1900:' + newdate,
        dateFormat: 'dd/mm/yy',
        maxDate: '0'
    });
    $("#pDateLodged img").insertBefore("#date_lodged");
}

function CheckSubmitted(actionURL) {
    var data = {};
    data["guid"] = $("#guid").val();
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        dataType: "json",
        data: data,
        url: actionURL,
        success: function(json) {
            if (json) {
                $("input, select, textarea").attr("disabled", "disabled");
                $("#erSubmitted").show();
            }
        }
    });
}

function UpdateComplaintMethod() {
    if ($("input[name=complaintmethod]:checked").val() == "other") {
        $("#complaintmethod_other").addClass("required").removeClass("error");
        $("#spHowdidyoumake").show();
        $("#complaintmethod_other").attr("disabled", false);
    } else {
        $("#complaintmethod_other").removeClass("required");
        $("#spHowdidyoumake").hide();
        $("#complaintmethod_other").val('').attr("disabled", true);
    }
}

function ValidatePhones(elementID) {
    $(elementID).valid();
}

function IsAnyDataEntered() {
    var len = 0;
    $(".saveRequired").filter(function(index) {
        if ($(this).is("input[type=radio]")) {
            return $(this).is(":checked");
        } else return true;
    }).each(function() {
        len += $(this).val().toString().length;
    });
    if (len == 0) {
        alert("You haven't entered any data yet.");
        scroll(0, 0);
        return false;
    }
    return true;
}


var BookmarkThisPage = function() {

    var bCont = confirm("By clicking 'yes' your dispute form will be saved to Bookmarks/Favourites of this computer. \nAnyone opening the link will be able to view the form and its contents, change it or delete it. \n Do you want to bookmark your dispute form?");

    if (bCont) {
        if ($.browser.opera == false) {
            var url = this.href;
            var title = this.title;

            if ($.browser.msie == true) {
                window.external.AddFavorite(url, title);
                return false;
            } else {
                alert('Please use CTRL + D to bookmark this website.');
            }
        }
    }
    
    return false;
}

function CopyText(value, extraSupportMessage) {

    if ($.browser.msie == true) {
        return window.clipboardData.setData('text', value);
    } else {

        var supportMessage = 'Your browser does not support automatically copying text to the clipboard';
        if (extraSupportMessage.length > 0)
            supportMessage += '\n\n' + extraSupportMessage;

        alert(supportMessage);
        return false;
    }
}

function SiteRoot() {
    return $('#rootPath').val();
}

function LoadSelect(pId, action) {
    try {
        $(pId).load(SiteRoot() + action, null, function() {
            $(pId + " select").val("");
        });
    } catch (e) { }
}

function Salutation() {
    var s = $("#cm_title").val() == "" ? "" : ($("#cm_title option:selected").text() + " ");
    s += $("#cm_lastname").val();

    var s2 = $("#cm2_title").val() == "" ? "" : ($("#cm2_title option:selected").text() + " ");
    s2 += $("#cm2_lastname").val();
    if (s.toString().length > 0 && s2.toString().length > 0) {
        s2 = " & " + s2;
    }

    $("#cm_salutation").val(s + s2);
}

function CheckAcn(value) {
    var postURL = SiteRoot() + "Load/CheckAcn";
    var data = {};
    data["number"] = value;
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        dataType: "json",
        data: data,
        url: postURL,
        success: function(json) {
            OnCheckAcn(json);
        }
    });
    return resultAcn;
}

function OnCheckAcn(json) {
    resultAcn = json;
}

function CountryChangeCM() {
    CountryChangeShowState('cm_country', 'cm_state', 'cm_state_text', 'postcodecm');
    $("#agentform").validate().element("#cm_state_text");
}

function CountryChangeAG() {
    CountryChangeShowState('ag_country', 'ag_state', 'ag_state_text', 'postcodeag');
    $("#agentform").validate().element("#ag_state_text");
}

function ShowBusinessName() {
    if ($('input[name=business]:checked').val() == 'yes') {
        $('#business_details').fadeIn(500);
        $('#cm_business_name').addClass("required");
        $('#business_inc').addClass("required");
    } else {
        $('#business_details').fadeOut(500).find('input[type=radio]').attr('checked', '');
        $('#acn').hide();
        $('#cm_business_name').removeClass("required");
        $('#business_inc').removeClass("required");
    }
}

function ShowBusinessAcn() {
    if ($('input[name=business_inc]:checked').val() == 'yes') {
        $('#acn').fadeIn(500);
        $('#cm_business_acn').addClass("required");
    } else {
        $('#acn').fadeOut(500);
        $('#cm_business_acn').removeClass("required");
    }
}

function CheckServicesProvider(value) {
    var postURL = SiteRoot() + "Load/CheckProvider";
    var data = {};
    data["name"] = value;
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        dataType: "json",
        data: data,
        url: postURL,
        success: function(json) {
            OnCheckProvider(json);
        }
    });
    return resultProvider;
}

function OnCheckProvider(json) {
    resultProvider = json;
}
