﻿function disable(sElement)
{
    $(sElement).attr("disabled", "true");
}

function enable(sElement)
{
    $(sElement).attr("disabled", "");
}

function validateString(sElement, iMinLength, sErrorMessage)
{
    if ($("#" + sElement).val().trim().length <= iMinLength)
    {
        alert(sErrorMessage);
        $("#" + sElement).focus();
        return false;
    }
    
    return true;
}

function getXmlDate(oXml, sElement, bInDateFormat)
{
    var sString;
    var oDate;
    
    sString = getXmlValue(oXml, sElement);
    if(sString.indexOf("9999") == 0)
    {
        return "";
    }
    
    oDate = new Date();
    oDate.setISO8601(sString);
    
    if (bInDateFormat == true)
    {
        return oDate;
    }
    else
    {
        return oDate.formatDate();
    }
}

function serialize(element)
{
    var sReturn="";
    var oItems;
    
    oItems = element.getElementsByTagName('input');
    
    for(var i=0;i<oItems.length;i++)
    {
        if (oItems[i].getAttribute("id") != undefined)
        {
          sReturn += "&" + oItems[i].getAttribute('id');
        }
        else
        {
          sReturn += "&" + oItems[i].getAttribute('name');
        }
        
        if(oItems[i].getAttribute('type') == "checkbox")
        {
            sReturn+="="+(oItems[i].checked?"on":"");
        }
        else if(oItems[i].getAttribute('type') == "radio")
        {
            sReturn+="="+(oItems[i].checked?"on":"");
        }
        else
        {
            sReturn+="="+escape(oItems[i].value);
        }
    }
    
    oItems = element.getElementsByTagName('select');
    
    for(var i=0;i<oItems.length;i++)
    {
        if (oItems[i].getAttribute("id") != undefined)
        {
          sReturn += "&" + oItems[i].getAttribute('id');
        }
        else
        {
          sReturn += "&" + oItems[i].getAttribute('name');
        }
        
        sReturn+="="+escape(oItems[i].options[oItems[i].selectedIndex].value);
    }

    oItems = element.getElementsByTagName('textarea');
    
    for(var i=0;i<oItems.length;i++)
    {
        if (oItems[i].getAttribute("id") != undefined)
        {
          sReturn += "&" + oItems[i].getAttribute('id');
        }
        else
        {
          sReturn += "&" + oItems[i].getAttribute('name');
        }
        
        sReturn+="="+escape(oItems[i].value);
    }
    
    return sReturn;
}

function showWaitSpinner(oTable, iCols)
{
    if($(oTable).get(0).tagName == "DIV")
    {
        $(oTable).html("<div class='center'><img src='../Images/Wait30.gif' width='30' height='30' alt='Please wait'/></div>");
    }
    else
    {
    clearTable($(oTable).get(0));
    $(oTable).append("<tr><td colspan='" + iCols + "' class='center'><img src='../Images/Wait30.gif' width='30' height='30' alt='Please wait'/></td></tr>");
    }
}

function clearTable(oTable)
{
    for(var i=oTable.rows.length-1; i>=0; i--)
    {
        oTable.deleteRow(i);
    }
}

function openPage(sUrl)
{
    window.location = sUrl;
}

function isEmail(sInput)
{
    var pattern = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    
    if (sInput.match(pattern)) 
    {
      return true;
    }
    else 
    {
      return false;
    }
}

function isNumeric(sText)
{
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;

    if(sText.length == 0)
    {
        return false;
    }
    
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }
    
    return IsNumber;
}

function _uploadFrame_onload(id)
{
    var oWindow;
    var oThis;
    
    oThis = $$(id);
    
    if (oThis.contentDocument) 
    {
        oWindow = oThis.contentDocument;
    }
    else if (oThis.contentWindow)
    {
        oWindow = oThis.contentWindow;
        oThis.callback(oWindow.document.body.innerHTML);
        return;
    }
    else
    {
        oWindow = oThis.frames[id].document;
    }

    if (oWindow.location.href == "about:blank") 
    {
        return;
    }
    
    if (oThis.callback != undefined)
    {
        oThis.callback(oWindow.body.innerHTML);
    }
}

function uploadForm(sUrl, sFormName, fCallback)
{
    var sFrameId;
    var oContainer;
    var oFrame;
    
    sFrameId = "fra" + Math.floor(Math.random() * 99999);
    oElement = document.createElement("div");
    oElement.style.display = 'none';
    oElement.innerHTML = '<iframe  src="about:blank" id="'+sFrameId+'" name="'+sFrameId+'" onload="_uploadFrame_onload(\''+sFrameId+'\')"></iframe>';
    
    document.body.appendChild(oElement);
    
    $$(sFormName).setAttribute("target", sFrameId);
    $$(sFormName).setAttribute("action", sUrl);
    $$(sFrameId).callback = fCallback;
    
    $$(sFormName).submit();
}

function grayOut(bShow)
{
    var oElement;
    
    if(bShow == false)
    {
        $("#divGrayOut").hide();
    }
    else
    {
        if($("#divGrayOut").get(0) == undefined)
        {
            oElement = document.createElement("div");
            oElement.setAttribute("class", "grayout")
            document.getElementsByTagName("body")[0].appendChild(oElement);
        }
        else
        {
            $("#divGrayOut").css("height", $(document).height() + "px");
            $("#divGrayOut").show();
        }
    }
}

function ajaxCall(sUrl, sRequest, fCallback, sType)
{
    if(sType != undefined)
    {
        $.ajax({type: "POST", url: sUrl, data:sRequest, success: fCallback, dataType: sType  });
    }
    else
    {
        $.ajax({type: "POST", url: sUrl, data:sRequest, success: fCallback });
    }
}

function getXmlValue(oNode, sTagName)
{
    try
    {
        return oNode.getElementsByTagName(sTagName)[0].firstChild.nodeValue;
    }
    catch(e)
    {
        return "";
    }
}

function disableAllInputs(element)
{
    var sReturn="";
    var oItems;
    
    oItems = element.getElementsByTagName('input');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = true;
    }
    
    oItems = element.getElementsByTagName('select');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = true;
    }

    oItems = element.getElementsByTagName('textarea');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = true;
    }
    
    return sReturn;
}

function enableAllInputs(element)
{
    var sReturn="";
    var oItems;
    
    oItems = element.getElementsByTagName('input');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = false;
    }
    
    oItems = element.getElementsByTagName('select');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = false;
    }

    oItems = element.getElementsByTagName('textarea');
    
    for(var i=0;i<oItems.length;i++)
    {
        oItems[i].disabled = false;
    }
    
    return sReturn;
}

function generateFakeGuid()
{
    var result, i, j;
    result = '';
    for(j=0; j<32; j++)
    {
        if( j == 8 || j == 12|| j == 16|| j == 20)
        result = result + '-';
        i = Math.floor(Math.random()*16).toString(16).toUpperCase();
        result = result + i;
    }
    return result;
}

function show(item) { $(item).show(); }
function hide(item) { $(item).hide(); }
function $$(el) { return document.getElementById(el); }

function move(source,target)
{
    var oCategory = document.getElementById(source);
    var oSelected = document.getElementById(target);
    var oOption;
    var iCount;
    var iCategoryCount;
    var bFound=false;
    
    for(iCount=oCategory.options.length-1;iCount>=0;iCount--)
    {
        if(oCategory.options[iCount].selected)
        {
            bFound=false;
            for(iCategoryCount=0;iCategoryCount<oSelected.options.length;iCategoryCount++)
            {
                if(oSelected.options[iCategoryCount].value==oCategory.options[iCount].value)
                {
                    bFound=true;
                }
            }
            if(!bFound)
            {
                oCategory.options[iCount].selected = false;
                oOption = new Option(oCategory.options[iCount].text,oCategory.options[iCount].value);
                oSelected.options[oSelected.options.length] = oOption;
                oCategory.options[iCount] = null;
            }
        }
    }
}

function removeSelected(target)
{
    var iCategoryCount;
    var oSelected = document.getElementById(target);
    
    for(iCategoryCount=oSelected.options.length-1;iCategoryCount>=0;iCategoryCount--)
    {
        if(oSelected.options[iCategoryCount].selected)
        {
            oSelected.options[iCategoryCount]=null;
        }
    }
}

function pageLoad() { }

function _text_onfocus() { $(this).addClass("focused"); }

function _text_onblur() { $(this).removeClass("focused"); }

function _tab_switch()
{
    var sTabName;
    
    sTabName = $(this).attr("href");
    
    sTabName = sTabName.substring(1);
    
    $("div.tabStrip ul li").each(function () { $(this).attr("className", ""); });
    $("div.tabBody").each(function() { $(this).hide(); });
    
    $("#divTab" + sTabName).show();
    
    $(this).parent().attr("className", "current");
    
    tab_onchange(sTabName);
}

function tab_onchange(sName) {};

function tab(sTabName)
{
    if($("#divTab" + sTabName) != undefined)
    {
        $("div.tabStrip ul li a").each(function()
        {
            if ($(this).attr("href") == ("#" + sTabName))
            {
                $(this).click();
            }
        });
    }
    
    tab_onchange(sTabName);
}

jQuery(document).ready(function()
{
    var oDivs=document.getElementsByTagName('div');
    var sTemp;
    
    $("input[type=text], input[type=password]").each(function()
    {
        if (!$(this).hasClass("noblur"))
        {
            $(this).focus(_text_onfocus);
            $(this).blur(_text_onblur);
        }
    });
    
    $("input[type=text].focus").each(function()
    {
        $(this).focus();
    });
    
    $("div.tabStrip ul li a").click(_tab_switch);
    
    if ($("div.tabStrip ul li a").length > 0)
    { 
        if (window.location.hash.length > 0)
        {
            tab(window.location.hash.substring(1));
        }
        else
        {
            sTemp = $("div.tabStrip ul li a").get(0).getAttribute("href");
            sTemp = sTemp.substring(sTemp.indexOf("#") + 1);
            tab(sTemp);
        }
    }
    
    pageLoad();
});

Date.prototype.setISO8601 = function (string) 
{
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
        "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
        "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) 
    {
        offset = (Number(d[16]) * 60) + Number(d[17]);
        offset *= ((d[15] == '-') ? 1 : -1);
    }

    //offset -= date.getTimezoneOffset();
    time = (Number(date) + (offset * 60 * 1000));
    this.setTime(Number(time));
}

Date.prototype.formatDate = function(format)
{
    var date = this;
    if (!format)
      format="MM/dd/yyyy";               
    var month = date.getMonth() + 1;
    var year = date.getFullYear();    
    format = format.replace("MM",month.toString().padL(2,"0"));        
    if (format.indexOf("yyyy") > -1)
        format = format.replace("yyyy",year.toString());
    else if (format.indexOf("yy") > -1)
        format = format.replace("yy",year.toString().substr(2,2));
    format = format.replace("dd",date.getDate().toString().padL(2,"0"));
    var hours = date.getHours();       
    if (format.indexOf("t") > -1)
    {
       if (hours > 11)
        format = format.replace("t","pm")
       else
        format = format.replace("t","am")
    }
    if (format.indexOf("HH") > -1)
        format = format.replace("HH",hours.toString().padL(2,"0"));
    if (format.indexOf("hh") > -1) {
        if (hours > 12) hours - 12;
        if (hours == 0) hours = 12;
        format = format.replace("hh",hours.toString().padL(2,"0"));        
    }
    if (format.indexOf("mm") > -1)
       format = format.replace("mm",date.getMinutes().toString().padL(2,"0"));
    if (format.indexOf("ss") > -1)
       format = format.replace("ss",date.getSeconds().toString().padL(2,"0"));
    return format;
}
String.repeat = function(chr,count)
{    
    var str = ""; 
    for(var x=0;x<count;x++) {str += chr}; 
    return str;
}
String.prototype.padL = function(width,pad)
{
    if (!width ||width<1)
        return this;   
 
    if (!pad) pad=" ";        
    var length = width - this.length
    if (length < 1) return this.substr(0,width);
 
    return (String.repeat(pad,length) + this).substr(0,width);    
}    
String.prototype.padR = function(width,pad)
{
    if (!width || width<1)
        return this;        
 
    if (!pad) pad=" ";
    var length = width - this.length
    if (length < 1) this.substr(0,width);
 
    return (this + String.repeat(pad,length)).substr(0,width);
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); }
String.prototype.ltrim = function() { return this.replace(/^\s+/,""); }
String.prototype.rtrim = function() { return this.replace(/\s+$/,""); }
