﻿if(jQuery)
{
    /* jQuery extensions */
    
    jQuery.fn.trim = 
        function() 
        { 
            this.each
            (
                function()
                {
                    if((this.tagName.toLowerCase() == "input" && this.type && this.type.toLowerCase() == "text") 
                        || this.tagName.toLowerCase() == "textarea")
                    {
                        var txt = $(this);
                        txt.val(jQuery.trim(txt.val()));
                    }
                }
            );            
        }
}

/* utility functions */
function setCookie(name, value, domain, path, exp) {
    var arySb = new Array();

    if (domain && domain != "") {
        arySb.push(";domain=" + domain);
    }

    if (path && path != "") {
        arySb.push(";path=" + path);
    }

    if (exp) {
        var d = new Date();
        d.setDate(d.getDate() + exp);
        arySb.push(";expires=" + d.toGMTString());
    }

    document.cookie = name + "=" + escape(value) + arySb.join("");
}

function isValidEmail(strEmail)
{
    var reEmail  =/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    return reEmail.test(strEmail);
}

function fixPaginationLinks()
{
    if(jQuery && jQuery.browser.msie)
    {
        jQuery('.HRPaginationRight a:last-child').addClass('last');
        jQuery('.HRPaginationRight span span:last-child').addClass('last');
    }
}

function isDateTextMMDDYYYYFormat(strDate, strSeparator)
{
    var strSpecialChars ="[\^$.|?*+(){}";
    
    if(strSpecialChars.indexOf(strSeparator) > -1)
        strSeparator = '\\' + strSeparator;
    
    var strDateFormat = "^\\d{1,2}%delim%\\d{1,2}%delim%\\d{4}$";
    var strRE = strDateFormat.replaceAll('%delim%', strSeparator);
    
    var reDate = new RegExp(strRE);
    
    return reDate.test(strDate);
}

var INVALID_CHARACTERS = "\\/:*<>@#|?\"";
    
function validateBadCharacters(sender, args)
{
    var txt = jQuery('#' + sender.controltovalidate);
    txt.val(jQuery.trim(txt.val()));
    
    var atrIsEmail = (sender.attributes['IsEmail'] ? sender.attributes['IsEmail'] : sender.attributes['isemail']);

    var bIsEmail = false;

    if(atrIsEmail && atrIsEmail.nodeValue)
        bIsEmail = atrIsEmail.nodeValue.toLowerCase() == "true";
        
    var strInvalidChars = INVALID_CHARACTERS;
    
    if(bIsEmail)
        strInvalidChars = strInvalidChars.replace('@', '');
    
    var aryBadChars = strInvalidChars.split('');
    
    var bIsValid = true;
    
    for(var i = 0; i < aryBadChars.length && bIsValid; i++)
        bIsValid = txt.val().indexOf(aryBadChars[i]) < 0;
    
    delete aryBadChars;
    aryBadChars = null;
    
    args.IsValid = bIsValid;
}


/* Extensions */

String.prototype.replaceAll = 
    function(strOld, strNew)
    {
        var aryStr = this.split(strOld);
        
        if(aryStr.length > 1)
            return aryStr.join(strNew);
        
        return this;
    }
    
String.prototype.QueryStringToObject = 
function()
{
    return convertToObject(this, "&", "=");
}

String.prototype.ParamsToObject = 
function()
{
    return convertToObject(this, ";", "=");
}

function convertToObject(str, strPairDelim, strNameValDelim)
{
    var rePairDelimHead = new RegExp("^" + strPairDelim);
    var rePairDelim = new RegExp(strPairDelim, "g");
    var reNameValDelim = new RegExp(strNameValDelim, "g");
    
    return eval("({" + str.replace(rePairDelimHead, "").replace(reNameValDelim, ":").replace(rePairDelim, ", ") + "})");
}

function hideAjaxLoading() {
    jQuery('#ajax_loading_overlay').hide();
}

function showAjaxLoading() {

    var elLoading = jQuery('#ajax_loading');
    var win = jQuery(window);
    //var left = win.scrollLeft() + (win.width() - elLoading.width()) / 2;
    var top = win.scrollTop() + (win.height() - elLoading.height()) / 2;

    elLoading.css
    (
        {
            "top": top + "px"
        }
    );

    var doc = jQuery(document);
    var elOverlay = jQuery('#ajax_loading_overlay');
    elOverlay.css
    (
        {
            "width": doc.width() + "px",
            "height": doc.height() + "px"
        }
    );

    elOverlay.show();
}
