﻿//Utility
var IsIE = (navigator.userAgent.toString().toLowerCase().indexOf("msie") >=0) ? true : false;

var EventUtility = new EventUtility();
function EventUtility()
{
    this.AddEventHandler = AddEventHandler;
    this.RemoveEventHandler = RemoveEventHandler;
    this.AddGroupEventHandler = AddGroupEventHandler;
    this.GetEventSourceObject = GetEventSourceObject;
    
     function AddEventHandler(obj,eventName, eventHandler)
  {
  
    if (IsIE) {
        obj.attachEvent(eventName,eventHandler);
    } else {
        obj.addEventListener(eventName.replace("on",""),eventHandler,false);
      } 
  
   }
   
  function RemoveEventHandler(obj,eventName, eventHandler)
  {
    if (IsIE) {
        obj.detachEvent(eventName,eventHandler);
    } else {
        obj.removeEventListener(eventName.replace("on",""),eventHandler,false);
      } 
   } 
   
   function AddGroupEventHandler(memberArray,eventName,eventHandler)
   {
        var member;
        for (var i=0;i<memberArray.length;i++)
        {
            member = memberArray[i];
            AddEventHandler(member,eventName,eventHandler);
        }
   }
  
function GetEventSourceObject(e)
{
  var obj;
  if (IsIE) {
    obj = window.event.srcElement;
  } else {
      obj = e.target;
      while(obj.nodeType == 3)
	    obj = obj.parentNode;
  }
   return obj;
} 

}

var ClassUtility = new ClassUtility();
function ClassUtility()
{
    this.GetMembers = GetMembers;
    this.GetChildMember = GetChildMember;
    this.AddClass = AddClass;
    
    this.RemoveClass = RemoveClass;
    this.RemoveClassFromGroup = RemoveClassFromGroup;
    
    function AddClass(obj, className)
    {
      /*
        if (obj.className != undefined)
        {
            var currentClasses = obj.className.toString().split(" ");
            currentClasses.push(className);
        }
        */
        //obj.className = currentClasses.toString().replace(","," ");
        
        obj.className = obj.className.toString() + " " + className;
        //alert(obj.className);
    }
    
    function RemoveClass(obj, className)
    {
       obj.className = obj.className.toString().replace(className,"");
    }
    
     function RemoveClassFromGroup(memberArray, className)
    {
       for (var i=0;i<memberArray.length;i++)
       {
            RemoveClass(memberArray[i],className);
       }
    }
    
    function GetMembers(className, tagName)
    {
        var memberArray = new Array();
        var elements = document.getElementsByTagName(tagName);
        var element;
        
        for (var i=0;i<elements.length;i++)
        {
           element = elements[i];
           
           if (element.className != undefined)
           {
                if (element.className.toString().indexOf(className) >= 0)
                    memberArray.push(element);
           } 
        }
        
        
        return memberArray;
    }
   
    this.GetDescendantMembers = GetDescendantMembers; 
      function GetDescendantMembers(className, tagName, parentObj)
    {
        var memberArray = new Array();
        var elements = parentObj.getElementsByTagName(tagName);
        var element;
        
        for (var i=0;i<elements.length;i++)
        {
           element = elements[i];
           
           if (element.className != undefined)
           {
                if (element.className.toString().indexOf(className) >= 0)
                    memberArray.push(element);
           } 
        }
        
        
        return memberArray;
    }  
    
    function GetChildMember(parentObj, className)
    {
        var member;
        var elements = parentObj.childNodes;
        var element;
        
        for (var i=0;i<elements.length;i++)
        {
           element = elements[i];
           
           if (element.className != undefined)
           {
                if (element.className.toString().indexOf(className) >= 0)
                    member = element;
           } 
        }
        
        
        return member;
    }
    
    function GetGroupChildMembers(parentObjArray,className)
    {
        
    
    }
    
    function GetChildMembers(parentObj, className)
    {
        var memberArray = new Array();
        var elements = parentObj.childNodes;
        var element;
        
        for (var i=0;i<elements.length;i++)
        {
           element = elements[i];
           
           if (element.className != undefined)
           {
                if (element.className.toString().indexOf(className) >= 0)
                    memberArray.push(element);
           } 
        }
        
        
        return memberArray;
    }

}