﻿
function Alert(mess, show) {
    show = false;
    if (show) {
        alert(mess);
    }
}

function Alert2(mess, show) {
    show = false;
    if (show) {
        alert(mess);
    }
}

function Alert3(mess, show) {
    show = false;
    if (show) {
        alert(mess);
    }
}

function _Alert(mess, show) {
    show = show;
    if (show) {
        alert(mess);
    }
}

function CurrentPage() {
    var pg0 = $('#aspnetForm').attr('action');
    var pg = null;
    if (pg0) {
        pg = pg0.substring(0, pg0.indexOf("?"));
    }
    if (pg) {
        return pg.toLowerCase();
    }
    if (pg0) {
        return pg0.toLowerCase();
    }
    return "";
}


function BrowerIsIE() {
    var browserName = navigator.appName;

    if (browserName == "Microsoft Internet Explorer") {
        return true;
    } else {
        return false;
    }
}

function BrowerIsEI() {
    var browserName = navigator.appName;

    if (browserName == "Microsoft Internet Explorer") {
        return true;
    } else {
        return false;
    }
}

function ArrayContains(arr, searchValue) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == searchValue) {
            return true;
        }
    }
    return false;
}


function CleanBinChars(str) {
    //bin sort click - save before sorting
    var validStr = " 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- ";
    var invalidStr = "";
    var validBin = "";
    var bad = [];
    for (var i = 0; i < str.length; i++) {
        //if the current charinvalid
        var ch = str.charAt(i);
        if (validStr.indexOf(ch) == -1) {
            //append it to the list of invalid characters if we don't already have it saved
            if (!ArrayContains(bad, ch)) {
                invalidStr = invalidStr + " " + ch;
                bad.push(ch);
            }
        } else {
            validBin = validBin + ch;
        }
    }
    binObj = new Object();
    binObj.invalidChars = invalidStr;
    binObj.cleanChars = validBin;
    binObj.isValid = (bad.length == 0);
    return binObj;
}


/*
action = 0, return true or false for empty status
action = 1, add value if not found, return true or false for addition status 
action = 2, remove if found, return or false for remove status
action = 3, return true or false with no action peformed
action = 4, return the count ouf matched string

*/
function Arrayfunc(array, value, action) {
    var foundValue = false;
    var removedItems = false;
    var isEmpty = true;
    var count = 0;
    if (action == 0 && array.length == 0) {
        return isEmpty;
    }

    for (var i = 0; i < array.length; i++) {
        if (array[i] != "" && array[i] != null && action == 0) {
            isEmpty = false;
            return false;
        }
        if (value == array[i]) {
            foundValue = true;
            switch (action) {
                case 2:
                    array[i] = "";
                    removedItems = true;
                    break;
                //dont return so we canremove duplicate values 
                case 3:
                    return true;
                case 4:
                    count++;
                    break;
            }
        }
    }


    switch (action) {
        case 0: return isEmpty;
        case 1:
            //check the status of addition
            if (foundValue) {
                return false; //report no add
            }
            else {
                array.push(value);
                return true; //report add success
            }
            break;
        case 2:
            return removedItems;
            //dont return so we canremove duplicate values
        case 3:
            return false; //report that no item was found
        case 4:
            return count;
    }
}



function _GB(elem) {

    var part = $(elem).attr("title");
    //var href = $(elem).attr("href");
    var href = "/details.aspx?pn=" + part;
    var message = 'Part Detail for ' + part + ' - Click the X on the right to return to the previous page';
    //alert("messag2= " + message + " href = " + href);
    return GB_showPage(message, href);
}


function _GB2(elem) {
    var part = $(elem).attr("title");
    var href = $(elem).attr("href");
    var message = 'Part Detail for ' + part + ' - Click the X on the right to return to the previous page';
    //alert("messag2= " + message + " href = " + href);
    return GB_showPage(message, href);
}

/*
This function is used for displaying the roating headline in a gray box
ex.
return _GBH('Click the X on the right to return to the previous page', this.href)
*/
function _GBH(elem) {

    var part = $(elem).attr("title");
    var href = "/articles.aspx?id=" + part;
    var message = "Click the X on the right to return to the previous page";
    //alert("messag2= " + message + " href = " + href);
    return GB_showPage(message, href);
}


/************************ JQUERY functions *********************/
/*
jQuery Url Plugin
* Version 1.0
* 2009-03-22 19:30:05
* URL: http://ajaxcssblog.com/jquery/url-read-get-variables/
* Description: jQuery Url Plugin gives the ability to read GET parameters from the actual URL
* Author: Matthias Jäggli
* Copyright: Copyright (c) 2009 Matthias Jäggli under dual MIT/GPL license.

var make = $.url.param('make');
*/
(function($) {
    $.url = {};
    $.extend($.url, {
        _params: {},
        init: function() {
            var paramsRaw = "";
            try {
                paramsRaw =
					(document.location.href.split("?", 2)[1] || "").split("#")[0].split("&") || [];
                for (var i = 0; i < paramsRaw.length; i++) {
                    var single = paramsRaw[i].split("=");
                    if (single[0])
                        this._params[single[0]] = unescape(single[1]);
                }
            }
            catch (e) {
                alert(e);
            }
        },
        param: function(name) {
            return this._params[name] || "";
        },
        paramAll: function() {
            return this._params;
        }
    });
    $.url.init();
})(jQuery);



//resource for validation regular expressions
//http://tools.netshiftmedia.com/regexlibrary/#

function IsValidEmailAddress(emailAddress) {
    //remove white spaces from the beginning and end of string
    emailAddress = jQuery.trim(emailAddress);
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

//http://javascript.about.com/library/blre.htm
//The phone number regular expression accepts phone number in both local format 
//(eg. 02 1234 5678 or 123 123 4567) or international format (eg. +61 (0) 2 1234 5678 or +1 123 123 4567). 
//It also accepts an optional extention of up to five digits prefixed by x or ext (eg. 123 123 4567 x89)
function IsValidPhoneNumber(phoneNumber, removeWhiteStaces) {
    if (removeWhiteStaces) {
        //replace two or more white spaces with a single white space
        //phoneNumber = phoneNumber.replace(/\s{1,}/g, " ");
        phoneNumber = phoneNumber.replace(/\s/g, "");
        //using standard trim function to remove the white extra ending white space not handle by the expression above
        phoneNumber = jQuery.trim(phoneNumber);
    }
    //var pattern = new RegExp(/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/);
    var pattern = new RegExp(/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(.){0,}$/);
    return pattern.test(phoneNumber);
}

function UrlParameter(name) {
    var paramsRaw = "";
    var _params = {};
    try {
        paramsRaw =
					(document.location.href.split("?", 2)[1] || "").split("#")[0].split("&") || [];
        for (var i = 0; i < paramsRaw.length; i++) {
            var single = paramsRaw[i].split("=");
            if (single[0])
                _params[single[0]] = unescape(single[1]);
        }
        if (name != null && name != "") {
            return _params[name] || "";
        }
        else { return _params; }
    }
    catch (e) {
        alert(e);
    }
}

function LoadSearchfunction(flag) {
    //alert("loading ... with flag=" + flag);
    $("input[id$=search_tb]").attr("title", "Search...");
    $("input[id$=search_tb]").each(function () {
        if ($.trim($(this).val()) == "") {
            $(this).val($(this).attr("title"));
        }
        $(this).focus(function () {
            if ($(this).val() == $(this).attr("title")) {
                $(this).val("");
            }
        }).blur(function () {
            var title = $(this).attr("title");
            var val = $.trim($(this).val());
            if (val == "") {
                $(this).val(title);
                //trigger the clear button to reset the filter
                //$("#filter-clear-button").trigger("click");
            }
            else if (val == title) {
                //trigger the clear button to reset the filter
                //$("#filter-clear-button").trigger("click");
            }
            else {
                //case where something valid was entered
            }
        });
    });
    AddAutoSearch();
    //$("select[id$=exportOptions_ddl]")
    $("a[id$=downloadReport_lb]").bind("click", function () {
        if ($("select[id$=exportOptions_ddl]").val() == "0") {
            $("#dialogMaster_txt").html("Please select an export format.");
            $("#dialogMaster").dialog("option", "title", "&nbsp;&nbsp;Notice");
            $("#dialogMaster").dialog("open");
            return false;
        }
        return true;
    });
}

function AddAutoSearch(inputSelector, inputTriggerSelector) {
    if (inputSelector == null) { inputSelector = "input[id$=search_tb]"; }
    if (inputTriggerSelector == null) { inputTriggerSelector = "input[id$=search_btn]"; }
    $(inputSelector).keydown(function (e) {
        var keycode = -1;
        if (window.event) keycode = window.event.keyCode;
        else if (e) keycode = e.which;
        else return true;
        //13 = return, 9 = tab
        //let this work as usual
        //Alert("Key code = " + keycode, false);
        if (keycode == 13 || keycode == 9) {
            //Alert("Key code = " + keycode, false);
            //$("input#ctl00_MainContent_search_btn").click();
            //$("input[id$=search_btn]").click();
            $(inputTriggerSelector).trigger("click");
            return false;
        }
    });
}

function Get(selector) {
    return $(selector).val();
}

function Set(selector, val) {
    return $(selector).val(val);
}

//http://www.web-source.net/web_development/currency_formatting.htm
function FormatCurrency(amount) {
    var i = parseFloat(amount);
    if (isNaN(i)) { i = 0.00; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if (s.indexOf('.') < 0) { s += '.00'; }
    if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return s;
}
