﻿if(!window["publicLibrary"])
  window["publicLibrary"]={};


function createXMLDOM()
{
  if(window.ActiveXObject)
  {
    return new ActiveXObject("Microsoft.XMLDOM");
  }
  else
  return document.implementation.createDocument("text/xml","",null);
}
window["publicLibrary"]["createXMLDOM"]=createXMLDOM;

function CXMLHttpRequest()
{
  this.url="";
  this.method="post";
  this.strSend="";
  this.createHttpRequest=function()
  {
    if(window.ActiveXObject)
      return new ActiveXObject("Microsoft.XMLHTTP");
    else
      return new XMLHttpRequest();
  }
  this.hr=this.createHttpRequest();
  this.getReady=function(){};
  this.send=function()
  {
    this.hr.open(this.method,this.url);
    this.hr.onreadystatechange=this.getReady;
    if(this.method.toLocaleLowerCase()=="post")
      this.hr.setRequestHeader("content-type","application/x-www-form-urlencoded");
    this.hr.send(this.strSend);
  } 
}
window["publicLibrary"]["CXMLHttpRequest"]=CXMLHttpRequest;





function markNavText(navNode,targetColor)
{
  if(navNode.nodeType==1&&navNode.nodeName=="UL")
  {
      var location=document.location.toString();
      var arr=location.split("?");
      location=arr[0];
      var liNodes=navNode.childNodes;
      for(var i=0;i<liNodes.length;i++)
      {
        if(liNodes[i].nodeType==1&&liNodes[i].nodeName=="LI")
        {
            var anchor=liNodes[i].firstChild.firstChild;
            if(anchor!=null&&anchor.nodeName=="A")
            {
              var href=anchor.href;
              if(href==location)
              {
                anchor.style.color=targetColor;
                navNode.style.display="block";
                
                break;
              }
            }
            var childrenOfLiNode=liNodes[i].childNodes;
            for(var k=0;k<childrenOfLiNode.length;k++)
            {
                var subUL=childrenOfLiNode[k];
                if(subUL!=null&&subUL.nodeType==1&&subUL.nodeName=="UL")
                {
                  markNavText(subUL,targetColor);
                }
            }
        }
      }
  }
}
window["publicLibrary"]["markNavText"]=markNavText;


function registerNavEvent(navNode)
{
  if(navNode!=null)
  {
    var childNodes=navNode.childNodes;
    if(childNodes.length>0)
    {
      for(var i=0;i<childNodes.length;i++)
      {
        if(childNodes[i].nodeType==1&&childNodes[i].nodeName=="LI")
        {
            childNodes[i].onmouseover=closureMouseOnNav(childNodes[i]);
            childNodes[i].onmouseout=closureMouseOutNav(childNodes[i]);
            registerNavEvent(childNodes[i]);
        }
      }
    }
  }
}

function closureMouseOnNav(node)
{
  return function(){ mouseOnNav(node)};
}
function closureMouseOutNav(node)
{
  return function(){ mouseOutNav(node)};
}

function mouseOnNav(node)
{
  if(node!=null)
  {
    var cssFile=document.styleSheets[0];
    var rules=cssFile.rules;
    for(var i=0;i<rules.length;i++)
    {
      if(rules[i].selectorText.indexOf("LI:hover")!=-1)
      { 
        
        var newSelector=rules[i].selectorText.replace(/LI:hover/gi,"LI.iehover");
        cssFile.addRule(newSelector,rules[i].style.cssText);
      }
    }
    node.className+=" iehover";
  }

}
function mouseOutNav(node)
{
  if(node!=null)
  {
    node.className=node.className.replace(/iehover/gi,"");
  }
}
window["publicLibrary"]["registerNavEvent"]=registerNavEvent;


function fillInInnerText(tagObj,textDisplayed)
{
  if(tagObj!=null)
  {
    if(tagObj.innerText!=null)
      tagObj.innerText=textDisplayed;
    else
      tagObj.textContent=textDisplayed;
  }
}
window["publicLibrary"]["fillInInnerText"]=fillInInnerText;



function isRightEmailFormat_old(inputControlID,lblNoteID,noteText)
{
  var inputControl=document.getElementById(inputControlID);
//  var noteText="Wrong email format";
  var lbl=document.getElementById(lblNoteID);
  var flag=false;
  if(inputControl!=null)
  {
    var emailAddress=inputControl.value;
    var regSpace=/(^\s*)|(\s*$)/gi;
    emailAddress=emailAddress.replace(regSpace,"");
    var regEmail=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/gi;//  /\w+@\w+\.\w+/gi;
    if(!regEmail.test(emailAddress))
    {
      if(lbl!=null)
      {
        var note=lbl.innerText;
        if(lbl.innerText!=null)
          lbl.innerText=noteText;
        else
          lbl.textContent=noteText;
       flag=false;
      }
    }
    else 
     flag=true;
  }
  return flag;
}
function isRightEmailFormat(inputControlID)
{
  var inputControl=document.getElementById(inputControlID);
  var flag=false;
  if(inputControl!=null)
  {
    var emailAddress=inputControl.value;
    var regSpace=/(^\s*)|(\s*$)/gi;
    emailAddress=emailAddress.replace(regSpace,"");
    var regEmail= /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/gi;// /\w+@\w+\.\w+/gi;//  
    if(!regEmail.test(emailAddress))
    {
       flag=false;
    }
    else 
     flag=true;
  }
  return flag;
}
window["publicLibrary"]["isRightEmailFormat"]=isRightEmailFormat;


function isNumber(originalStr)
{
  var flag=false;
  var regNum=/\d+/gi;
  if(regNum.test(originalStr))
    flag=true;
  return flag;
}
window["publicLibrary"]["isNumber"]=isNumber;


function isEmptyInput(inputID)
{
  var flag=true;
  var inputControl=document.getElementById(inputID);
  if(inputControl!=null)
  {
    var value=inputControl.value;
    var reg=/(^\s*)|(\s*$)/gi;
    value=value.replace(reg,"");
    if(value!="")
      flag=false;
  }
  return flag;
}
window["publicLibrary"]["isEmptyInput"]=isEmptyInput;

function areEmptyInput(inputIDArr)
{
  var flag=true;
  if(inputIDArr.length>0)
  { 
    var i=0;
    for(i=0;i<inputIDArr.length;i++)
    {
      if(isEmptyInput(inputIDArr[i]))
      {
        break;
      }
    }
    if(i>=inputIDArr.length)
      flag=false;
  }
  return flag;
}
window["publicLibrary"]["areEmptyInput"]=areEmptyInput;


function objRegisterULEvent(ulNodeObjArr)//innerText is just followed by li tag
{
  var objSelf=this;
  this.mouseOnLI=function(liNode)
  {
  
  }
  this.mouseOutLI=function(liNode)
  {
  
  }
  this.clickOnLI=function(liNode)
  {
  
  }
  this.clickOnSPAN=function(liNode)
  {
  
  }
//  var onLI=this.mouseOnLI;
//  var outLI=this.mouseOutLI;
//  var clickLI=this.clickOnLI;
  
  this.closureMouseOnLI=function(liNode)
  {
    return function(){objSelf.mouseOnLI(liNode);};//{onLI(liNode);};//{this.mouseOnLI(liNode);};
  }
  this.closureMouseOutLI=function(liNode)
  {
    return function(){objSelf.mouseOutLI(liNode);};//{outLI(liNode);};//{this.mouseOutLI(liNode);};
  }
  this.closureClickOnLI=function(liNode)
  {
    return function(){objSelf.clickOnLI(liNode);};//{clickLI(liNode);};//{this.clickOnLI(liNode);};
  }
  this.closureClickOnSpan=function(liNode)
  {
    return function(){objSelf.clickOnSPAN(liNode)};
  }
  this.register=function()
  {  
    for(var i=0;i<ulNodeObjArr.length;i++)
    {
      var liNodes=ulNodeObjArr[i].childNodes;
      for(var k=0;k<liNodes.length;k++)
      {
        if(liNodes[k].nodeType==1&&liNodes[k].nodeName=="LI")
        {
          liNodes[k].onmouseover=this.closureMouseOnLI(liNodes[k]);
          liNodes[k].onmouseout=this.closureMouseOutLI(liNodes[k]);
          liNodes[k].onclick=this.closureClickOnLI(liNodes[k]);
          var spanNodes=liNodes[k].childNodes;
          for(var m=0;m<spanNodes.length;m++)
          {
            if(spanNodes[m].nodeType==1&&spanNodes[m].nodeName=="SPAN")
            {
              spanNodes[m].onclick=this.closureClickOnSpan(liNodes[k]);
            }
          }
        }
      }
    }
  }
  
}
window["publicLibrary"]["objRegisterULEvent"]=objRegisterULEvent;