﻿// JScript File

function clsActivePage()
{
   var me = this;
   this.arrItems = null;
   this.index = null;
   this.oHTML = new clsHTML();
   
   this.add = function(strID, dotNetClientID)
   {
      if(!me.arrItems){me.arrItems = new Array();}
      
      me.index = me.arrItems.length;
      var obj = $get(dotNetClientID);
      
      if(obj)
      {
         var nodeType = obj.tagName.toLowerCase();
      }
      else
      {
         obj = $find(dotNetClientID);
         var nodeType = obj._id;
         if(nodeType.indexOf("ModalPopupExtender") >= 0)
         {
            nodeType = "ModalPopupExtender";
         }
         if(!obj){return(false);}
      }
      
      
      
      switch(nodeType)
      {
         case "ModalPopupExtender":
            me.arrItems[me.index] = {  key:strID, 
                                       id:dotNetClientID, 
                                       type:nodeType,
                                       node:me.getNode
                                       };
         
            break;
            
         case "select":
            me.arrItems[me.index] = {  key:strID, 
                                       id:dotNetClientID, 
                                       type:nodeType,
                                       selectedValue:me.getSelectedValue,
                                       setSelectedValue:me.setSelectedValue,
                                       selectedText:me.getSelectedText,
                                       isDefault:me.isDefault,
                                       node:me.getNode
                                       };
            break;
            
         case "input":
            switch(obj.type.toLowerCase())
            {
               case "text":
                  me.arrItems[me.index] = {  key:strID, 
                                             id:dotNetClientID, 
                                             type:nodeType,
                                             value:me.getTextValue,
                                             set:me.setTextValue,
                                             node:me.getNode
                                             };
                  break;
               
               default:
                  alert(obj.type);
            }
            break;
            
         case "table":
         case "div":
            me.arrItems[me.index] = {  key:strID, 
                                       id:dotNetClientID, 
                                       type:nodeType,
                                       show:me.showNode,
                                       hide:me.hideNode,
                                       node:null,
                                       parent:null
                                       };
            break;
            
            
         case "td":
            me.arrItems[me.index] = {  key:strID, 
                                       id:dotNetClientID, 
                                       type:nodeType,
                                       node:me.getNode,
                                       set:me.setValue
                                       };
            break;
         
         default:
            alert(nodeType);
      
      }
                              
                              
      //var i = me.arrItems[me.index];
      //alert("item(" + index + ") key:" + i.key + ",id:" + i.id + ",type:" + i.type);
      me.index = null;
      return;
   };
   
   this.get = function(key)
   {
      var item = me.lookupItem(key);
      if(!item){return(null);}
      
      return(item);
   };
   
   this.lookupItem = function(key)
   {
      for(c=0;c<me.arrItems.length;c++)
      {
         var i = me.arrItems[c];
         if(key == i.key)
         {
            me.index = c;
            return(i);
         }
      }
      return(null);
   };
   
   this.setValue = function(strValue)
   {
      if(me.index == null){return(null);}
      var n = me.arrItems[me.index].node();
      if(n)
      {
         n.innerHTML = strValue;
      }
      me.index = null;
      return;
   };
   
   this.getSelectedValue = function()
   {
      if(me.index == null){return(null);}
      var val = me.oHTML.getSelectedValue(me.arrItems[me.index].id);
      me.index = null;
      return(val);
   };
   
   this.getSelectedText = function()
   {
      if(me.index == null){return(null);}
      var val = me.oHTML.getSelectedText(me.arrItems[me.index].id);
      me.index = null;
      return(val);
   };
   
   this.isDefault = function()
   {
      if(me.index == null){return(false);}
      
      var i = me.index;
      var strDefaultText = me.arrItems[i].node().innerText;
      //strDefaultText = strDefaultText.replace(' ','');
      strDefaultText = strDefaultText.replace(/^\s+/g, '').replace(/\s+$/g, '');
      strDefaultText = strDefaultText.toLowerCase();
      
      me.index = i;
      var strCurrentText = me.arrItems[i].selectedText();
      //strCurrentText = strCurrentText.replace(' ','');
      strCurrentText = strCurrentText.replace(/^\s+/g, '').replace(/\s+$/g, '');
      strCurrentText = strCurrentText.toLowerCase();
      
      //alert("'" + strDefaultText + "','" + strCurrentText + "'");
      me.index = null;
      return(strDefaultText == strCurrentText);
   };   
   
   this.setSelectedValue = function(strValue)
   {
      if(me.index == null){return(null);}
      var rv = me.oHTML.setSelectedValue(me.arrItems[me.index].id, strValue);
      me.index = null;
      return(rv);
   }
   
   this.getTextValue = function()
   {
      if(me.index == null){return(null);}
      var obj = $get(me.arrItems[me.index].id);
      me.index = null;
      return(obj.value);
   };
   
   this.setTextValue = function(strValue)
   {
      if(me.index == null){return(null);}
      var obj = $get(me.arrItems[me.index].id);
      if(obj)
      {
         obj.value = strValue;
      }
      me.index = null;
      return;
   };
   
   
   this.showNode = function()
   {
      if(me.index == null){return(null);}
      try{
         var i = me.arrItems[me.index];
         i.parent.appendChild(i.node);
         i.parent = null;
         i.node = null;
      }
      catch(err)
      {
         //alert("show failed");
      }
      me.index = null;
      return;
   };
   
   this.hideNode = function()
   {
      if(me.index == null){return(null);}
      try{
         var i = me.arrItems[me.index];
         var n = $get(i.id);
         i.parent = n.parentNode;
         i.node = n.cloneNode(true);
         i.parent.removeChild(n);
         
         me.arrItems[me.index] = i;
      }
      catch(err)
      {
         //alert("hide failed");
      }
      me.index = null;
      return;
   };
   
   this.getNode = function()
   {
      if(me.index == null){return(null);}
      var n = $get(me.arrItems[me.index].id); 
      if(!n)
      {
         n = $find(me.arrItems[me.index].id);
      }
      me.index = null;
      return(n);
   };
}
