﻿
function GetAttributeValue(xmlNode, attributeName)
{
    if(xmlNode == null || xmlNode.attributes == null)
        return '';
        
    var value = null;
    var lowerName = attributeName.toLowerCase();
    
    for(var index=0;index<xmlNode.attributes.length;index++)
    {        
        attribute = xmlNode.attributes[index];
        if(attribute.name.toLowerCase() == lowerName)
        {
            value = attribute.value;
            break;  
        }
    }
    return value;
}

function SetInnerText(obj, text)
{
    if(obj == null)
        return;
        
    if(obj.innerText != undefined)
        obj.innerText = text;
    else if(obj.textContent!= undefined)
        obj.textContent = text;
    else if (obj.innerHTML != undefined)
        obj.innerHTML = text;
    else
    {
        while(obj.childNodes[0])
            obj.removeChild(obj.childNodes[0]);
        
        var textElement = document.createTextNode(text);
        obj.appendChild(textElement);
    }
}
function GetInnerText(obj)
{
    if(obj.innerText!= undefined)
        return obj.innerText;
    else if(obj.textContent!= undefined)
        return obj.textContent;
    else if(obj.text!= undefined)
        return obj.text;
    else 
    {
        if(obj.childNodes.length>0)
        {
            var value = obj.childNodes[0].nodeValue;
            return value;
        }
    
    }
}
function GetInnerXml(node) {
    if(node.xml)
        return node.xml;
    else if (XMLSerializer)
        return new XMLSerializer().serializeToString(node);
    else
        alert('Browser not supported');

}
function removeEvent(objTarget, eventType, objEvent, useCapture)
{
    if (objTarget.removeEventListener)
        objTarget.removeEventListener(eventType, objEvent, useCapture);
    else if (objTarget.detachEvent)
        objTarget.detachEvent("on"+eventType, objEvent);
    else
        alert('Browser not supported');
}
function addEvent(objTarget, eventType, objEvent)
{
    
    if (objTarget.addEventListener)
        objTarget.addEventListener(eventType, objEvent, false);
    else if (objTarget.attachEvent)
        objTarget.attachEvent("on"+eventType, objEvent);
    else
        alert('Browser not supported');
}

function GetSourceElement(e)
{
    
    if (e && e.srcElement)
        return e.srcElement;
    else if (e && e.target)
        return e.target;
}
function GetEventOffsetX(e)
{
    
    if (e && e.layerX)
        return e.layerX;
    else if (e && e.offsetX)
        return e.offsetX;
}
function GetEventOffsetY(e)
{
    
    if (e && e.layerY)
        return e.layerY;
    else if (e && e.offsetY)
        return e.offsetY;
}
function GetKeyCode(e)
{
    if(e.keyCode)
        return e.keyCode;
    else if (e.which)
        return e.which;
    else
        return -1;
}

function GetXmlParser()
{
    if (window.ActiveXObject)
        return new ActiveXObject("Microsoft.XMLDOM");
    else if (document.implementation && document.implementation.createDocument)
        return document.implementation.createDocument("","",null);
    else
        alert('Browser not supported');
}
function LoadXml(xmlDoc,strXml)
{
   
    if (window.ActiveXObject)
        xmlDoc.loadXML(strXml);
    else if (typeof DOMParser != undefined)
    {
        var objDOMParser = new DOMParser();
        var objDoc = objDOMParser.parseFromString(strXml, "text/xml");
        while (xmlDoc.hasChildNodes())
            xmlDoc.removeChild(xmlDoc.lastChild); 
        for (var i=0; i < objDoc.childNodes.length; i++) {
          var objImportedNode = xmlDoc.importNode(objDoc.childNodes[i], true);
          xmlDoc.appendChild(objImportedNode);
        } 
    }
    else
        alert('Browser not supported');
}
function GetByTagName(node, name){ 
    var childArray = new Array(); 
    for(var i=0; i<node.childNodes.length; i++){ 
        if(node.childNodes[i].nodeName == name){ 
            childArray[childArray.length] = node.childNodes[i]; 
        } 
    } 
    return childArray; 
} 
function Swap(arr, index1, index2)
{
    var temp =  arr[index1];
    arr[index1] = arr[index2];
    arr[index2] = temp;
}
function GetIndex(arr,element)
{
    for(var i=0;i<arr.length;i++)
        if(arr[i]==element)
            return i;
    return -1;
}
function GetParentNode(obj,parentNodeTagName)
{
    while(obj && obj.tagName  != parentNodeTagName.toUpperCase())
    {
        obj=obj.parentNode;
    }
    return obj;
}

function NameValue(name,value)
{
    this.name =  name;
    this.value = value;
}


function AddStyleSheet(url) {
 if (document.styleSheets && document.styleSheets[0].addImport) {
    for(var index=0;index<document.styleSheets[0].imports.length;index++)
    {
        if(url==document.styleSheets[0].imports[index].href)
        {
            document.styleSheets[0].imports[index].disabled=false;
            return;
        }
    }
   document.styleSheets[0].addImport(url);
 } else {
   var style = document.createElement("STYLE");
   var textNode = document.createTextNode("@import url('"+url+"');");
   style.appendChild(textNode);
   document.body.appendChild(style);
 }
}
function RemoveStyleSheet(url) {
 if (document.styleSheets && document.styleSheets[0].addImport) {
    for(var index=0;index<document.styleSheets[0].imports.length;index++)
    {
        if(url==document.styleSheets[0].imports[index].href)
        {
            document.styleSheets[0].imports[index].disabled=true;
            return;
        }
    }
 } else {
    var styles = document.getElementsByTagName("STYLE");
    for(var index=0;index<styles.length;index++)
    {
        if(styles[index].firstChild.textContent.indexOf(url)>0)
        {
            styles[index].parentNode.removeChild(styles[index]);
        }
    }
 }
}

function ShowElements()
{
	for(var i=0;i<arguments.length;i++)
		document.getElementById(arguments[i]).style.display="";
}
function HideElements()
{
	for(var i=0;i<arguments.length;i++)
		document.getElementById(arguments[i]).style.display="none";
}
function Trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

function CenterDiv(divID)
{
    var divToCenter = document.getElementById(divID);
    var availableScreenWidth = document.documentElement.clientWidth;
    var availableScreenHeight = document.documentElement.clientHeight;
    var divWidth = parseInt(divToCenter.style.width, 10);
    var divHeight = parseInt(divToCenter.style.height, 10);
    if(isNaN(divWidth))divWidth=0;
    if(isNaN(divHeight))divHeight=0;
    var scrollTop=0;
    if(window.pageYOffset)
        scrollTop+=window.pageYOffset;
    else
        scrollTop+=document.documentElement.scrollTop;
    
    divToCenter.style.left = ((availableScreenWidth/2) - (divWidth/2)) + "px";
    divToCenter.style.top = ((availableScreenHeight/2) - (divHeight/2)) + scrollTop + "px";

}
function ShowMessages(args,header)
{
    ShowError(args)
    var errorDivHeader = document.getElementById("ErrorDivHeader");
    errorDivHeader.innerHTML = header;
}
function ShowError(args)
{
    var errors=new Array();
    if(args.push) // this is a n array
        errors=args;
    else
        errors.push(args);
    
    var errorDiv = document.getElementById("ErrorDiv");
    var errorDivHeader = document.getElementById("ErrorDivHeader");
    var errorMessageList= document.getElementById("ErrorMessageList");
    errorDivHeader.innerHTML = "Errors Occured";
    errorMessageList.innerHTML="";
    CenterDiv("ErrorDiv");
	for(var i=0;i<errors.length;i++)
    {
        var liElement = document.createElement("LI");
        var errorSpan = document.createElement("SPAN");
        liElement.appendChild(errorSpan);
        errorMessageList.appendChild(liElement);
        errorSpan.innerHTML = errors[i];
    }
    ShowElements("ErrorDiv");
}

function CommandButtonOver(obj)
{
    obj.style.borderColor = "blue";
}
function CommandButtonOut(obj)
{
    obj.style.borderColor = "black";
}

function OpenWin(url,name,options)
{
    var win=window.open(url,name,options);
    if(!win)
        ShowError("Your popup blocker prevented the preview screen from loading. Please hold the [Ctrl] key down and retry.");
}
function OpenWinSized(url,name,width,height)
{
    var leftVal= (screen.width -width)/ 2;
    var topVal = (screen.height- height)/ 2;
    var win=window.open(url,name,'toolbar=no,width=800,height=600,left='+leftVal+',top='+topVal+',directories=no,status=1,scrollbars=yes,resize=yes,menubar=no,resizable=yes,titlebar=no');
    if(!win)
        ShowError("Your popup blocker prevented the preview screen from loading. Please hold the [Ctrl] key down and retry.");
}
function ShowHideDropdowns(show,menu)
{
//    var dropdowns= currentHtmlDocument.getActivePage().domObject.getElementsByTagName("select");
//    for(var index=0;index<dropdowns.length;index++)
//        dropdowns[index].style.visibility=((show)?"visible":"hidden")
}
function EnableDisableRecursive(elem,boolDisable)
{
    var inputs = elem.getElementsByTagName("INPUT");
    var selects = elem.getElementsByTagName("SELECT");
        
    try{
        elem.disabled = boolDisable;
        
        // Disable each INPUT control
        for (var index=0;index<inputs.length;index++)
        {
            inputs[index].disabled = boolDisable;
        }
        // Disable each SELECT control
        for (var index=0;index<selects.length;index++)
        {
            selects[index].disabled = boolDisable;
        }
    }
    catch(e){};
}
function EnableDisable()
{
    var enable = arguments[0];
    for(var index=1;index<arguments.length;index++)
        document.getElementById(arguments[index]).disabled = !enable;
}
function DisableMenuItem(menu, itemName, boolDisable)
{
    var anchorList = menu.getElementsByTagName("A");
    for(var index=0;index<anchorList.length;index++)
        if(Trim(GetInnerText(anchorList[index])) == itemName)
            DisableMenuItemInternal(anchorList[index],boolDisable);
}
function DisableMenuItemInternal(elem, boolDisable)
{
    if(elem.tagName && elem.tagName =="A")
    {
        DisableAnchor(elem,boolDisable);
    }
    for(var index=0;index<elem.childNodes.length;index++)
        DisableMenuItemInternal(elem.childNodes[index],boolDisable);
}
function DisableAnchor(obj, disable){
    if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) { // IE;
    
  if(disable){
    if(obj.href != '#')
    {
        obj.href_bak = obj.href;
        obj.href='#';
        obj.style.color="gray";
    }
  }
  else{
    if(obj.href_bak){
    obj.href=obj.href_bak;
    obj.style.color="black";
    }
  }
  }
  else
  {
      if(disable){
        if(obj.getAttribute('href')!= '#')
        {
            obj.setAttribute('href_bak', obj.getAttribute('href'));
            obj.setAttribute('href','#');
            //obj.href='#';
            obj.style.color="gray";
        }
      }
      else{
        if(obj.getAttribute('href_bak')){
            obj.setAttribute('href', obj.getAttribute('href_bak'));
            obj.style.color="black";
        }
      }
  }
}

function AddNameValue(array,name,value)
{
    array.push(new NameValue(name,value));
}
function RemoveNameValue(array,value)
{
    for(var index=0;index<array.length;index++)
        if(array[index].value == value)
            array.splice(index,1);
}

function ValidateDate(dateString){
    if(dateString=="")return true;
	 var syntaxCheck=(/^\d{2}[\-/]\d{2}[\-/]\d{4}$/.test(dateString))
	 dateString=dateString.replace(/[\-/]/g,',')
	 dateString=dateString.split(',')
	 var date=new Date(dateString[2],dateString[0]-1,dateString[1])
	 var validDate=(1*dateString[1]==date.getDate() && 1*dateString[0]==(date.getMonth()+1) && 1*dateString[2]==date.getFullYear())
	 if (syntaxCheck && validDate) return true;
	 return false;
}
function CancelBubble(e)
{
    if (e.preventDefault) 
    {
      e.preventDefault();
      e.stopPropagation();
    } 
    else 
    {
      e.returnValue = false;
      e.cancelBubble = true;
    }
}
function SwapVisibility(divId,controlImage,expandImgCue,collapseImgCue)
{
    var divToSwap = document.getElementById(divId);
    if(divToSwap.style.display == "none")
        divToSwap.style.display = "";
    else
        divToSwap.style.display = "none";
    if(controlImage)
    {
        if(divToSwap.style.display == "none")
            controlImage.src = controlImage.src.replace(collapseImgCue,expandImgCue);
        else
            controlImage.src = controlImage.src.replace(expandImgCue,collapseImgCue);
    }
}
function IsAlphaNumeric(name)
{
    for(var index=0; index<name.length; index++)
    {
        var code = name.charAt(index).charCodeAt(0);
        if((code > 47 && code<59) || (code > 64 && code<91) || (code > 96 && code<123) || (code==32) || name.charAt(index)=='-') //allow spaces and dashes
        {
        }
        else
        {
            return false;
        }
    }
    return true;
}
function ShowRemainingCount(textAreaID,countDivID,text,maxCharacters) 
{
  var textArea = document.getElementById(textAreaID);
  var countDiv = document.getElementById(countDivID);
  
  var length = maxCharacters - textArea.value.length;
  if(length <= 0) 
  {
    length=0;
    textArea.value = textArea.value.substr(0,maxCharacters);
  }
  countDiv.innerHTML = text.replace("#count",length);
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();