﻿/// <reference path="jquery-1.3.2-vsdoc.js" />

function toggleVisibility(itemName)
{
    var element = document.getElementById(itemName);
    if (element != null)
    {
        if (element.style.display == '')
        {
            element.style.display = 'none';
        }
        else
        {
            element.style.display = '';
        }
    }   
}
 
 
function setVisibility(itemName, Visible)
{
    var element = $get(itemName);
    if (element != null)
    {
        if (Visible)
        {
            element.style.display = '';
        }
        else
        {
            element.style.display = 'none';
        }
    }   
}    

function getElement(el) {
  return document.getElementById(el);
}

function EnableOrDisableElement(Element, EnableOrDisable) {
    if(EnableOrDisable)
       Element.disabled = false;       
    else
       Element.disabled = 'disabled';
}

function EnableOrDisableElementByID(ElementID, EnableOrDisable) {
    EnableOrDisableElement(getElement(ElementID), EnableOrDisable);
}

var OpenPopUp;

function ClosePopUp_Click() {
    if(OpenPopUp)
        setVisibility(OpenPopUp, false);
    $removeHandler(document.body, 'click', ClosePopUp_Click);
}      
        
function TogglePopUp(PopUpID) {
    if(window.event)
        window.event.cancelBubble = true;
    if($get(PopUpID).style.display == 'none')
    {
        setVisibility(PopUpID, true);
        $addHandler(document.body, 'click', ClosePopUp_Click);
    }
    else
    {
        setVisibility(PopUpID, false);
        $removeHandler(document.body, 'click', ClosePopUp_Click);
    }
    if(OpenPopUp)
    {
        if(!(OpenPopUp == PopUpID))
            setVisibility(OpenPopUp, false);
    }
    OpenPopUp = PopUpID;   
}


function TogglePopUpNoGlobalClose(PopUpID) {
    if (window.event)
        window.event.cancelBubble = true;
    if ($get(PopUpID).style.display == 'none') {
        setVisibility(PopUpID, true);
    }
    else {
        setVisibility(PopUpID, false);
    }
    if (OpenPopUp) {
        if (!(OpenPopUp == PopUpID))
            setVisibility(OpenPopUp, false);
    }
    OpenPopUp = PopUpID;
}


var toggleHelpOpen;

function toggleHelp() {
    if (toggleHelpOpen) {
        setVisibility('DivHelp', false);
        getElement('LinkHelp').className = 'ImgHelpIcon'; 
    }
    else {
        setVisibility('DivHelp', true);
        getElement('LinkHelp').className = 'ImgHelpIcon_Active';
    }
    toggleHelpOpen = !toggleHelpOpen;
}


//TODO: this currently only replaces first occurence so strings like "{0}{0}" currently are't handled properly, need to use global regex.
function String_Format(String, Args) {
    if (Args.length) {
        for (var i = 0; i < Args.length; i++) {
            String = String.replace('{' + (i) + '}', Args[i]);
        }
        return String;
    }
    else
        return String.replace('{0}', Args);
}

// USE THIS FOR ANY AMMOUNT OF STRING CONCATENATION - PERFORMANCE IS BLINDING IN COMPARISSON !
// e.g. of use :
//var buf = new StringBuffer();
//buf.append("hello");
//buf.append("world");
//alert(buf.toString());

function StringBuffer() {
    this.buffer = [];
}

StringBuffer.prototype.append = function append(string) {
    this.buffer.push(string);
    return this;
};

StringBuffer.prototype.toString = function toString() {
    return this.buffer.join("");
};

function String_Trim(String) {
    return String.replace(/^\s+|\s+$/g, '');
}

function FormatAsCurrency(number) {
    if (isNaN(parseFloat(number))) {
        return;
    }
    else {
        return parseFloat(number).toFixed(2);
    }
}

function DisableATag(aTag) {
    aTag.attr('onclick', '');
    aTag.removeAttr('href');
}

function DisableControl(controlId) {
    $get(controlId).disabled = true;
    var potentialATag = $($get(controlId));
    if (potentialATag[0].tagName.toLowerCase() == "a") {
        DisableATag(potentialATag);
    }
}

if (typeof(Sys) !== 'undefined')
    Sys.Application.notifyScriptLoaded();


