ZTM = {}
ZTM.UI = {}
ZTM.Event = {}
ZTM.DOM = {}

 
/*
Event handling
*/
ZTM.Event.attachEventHandler = function(obj, eventType, eventHandler){  
  if(obj.attachEvent){       
    obj.attachEvent(eventType, eventHandler)
  }
  else if(obj.addEventListener){  
    obj.addEventListener(eventType.substr(2), eventHandler, false);      
  }
}


ZTM.DOM.getElementsByTagAndClassName = function (tagName, className, parent) {    
    if (typeof(tagName) == 'undefined' || tagName === null) {
      tagName = '*';
    }
    if (typeof(parent) == 'undefined' || parent === null) {
      parent = document;
    }        
    var children = (parent.getElementsByTagName(tagName) || self._document.all);        
    var elements = [];
    for (var i = 0; i < children.length; i++) {
      var child = children[i];
      var cls = child.className;
      if (!cls) {
        continue;
      }
      var classNames = cls.split(' ');
      for (var j = 0; j < classNames.length; j++) {
        if (classNames[j] == className) {
            elements.push(child);
            break;
        }
      }
    }
    return elements;
  }
ZTM.DOM.addElementClass = function (obj, className) {
        var cls = obj.className;
        // trivial case, no className yet
        if (cls == undefined || cls.length === 0) {
            obj.className = className;
            return true;
        }
        // the other trivial case, already set as the only class
        if (cls == className) {
            return false;
        }
        var classes = cls.split(" ");
        for (var i = 0; i < classes.length; i++) {
            // already present
            if (classes[i] == className) {
                return false;
            }
        }
        // append class
        obj.className = cls + " " + className;
        return true;
    }

    
ZTM.DOM.removeElementClass = function (obj, className) {
        var cls = obj.className;
        // trivial case, no className yet
        if (cls == undefined || cls.length === 0) {
            return false;
        }        
        var classes = cls.split(" ");
        for (var i = 0; i < classes.length; i++) {
            // already present
            if (classes[i] == className) {
                // only check sane case where the class is used once
                classes.splice(i, 1);
                obj.className =  classes.join(" ");
                return true;
            }
        }
        // not found
        return false;
    }

ZTM.UI.EnhanceListItems = {}
ZTM.UI.EnhanceListItems.init = function(){
  var lists = ZTM.DOM.getElementsByTagAndClassName('ol', 'enhanced')
  for(var i=0,ilength=lists.length; i<ilength;i++){
    var list = lists[i];
    var listitems = list.getElementsByTagName('li');   
    for(var j=0,jlength=listitems.length; j<jlength; j++){
      var listitem = listitems[j];
      links = ZTM.DOM.getElementsByTagAndClassName('a', 'hideme', listitem)
      if(links.length>0){        
        link = links[0];
          ZTM.DOM.addElementClass(link, 'hidden');                
      }
      ZTM.Event.attachEventHandler(listitem, 'onclick', ZTM.UI.EnhanceListItems.onclickHandler)
      ZTM.Event.attachEventHandler(listitem, 'onmouseover', ZTM.UI.EnhanceListItems.onMouseoverHandler)
      ZTM.Event.attachEventHandler(listitem, 'onmouseout', ZTM.UI.EnhanceListItems.onMouseoutHandler)
    }
  }  
}
ZTM.UI.EnhanceListItems.onclickHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode
  }
  var links = ZTM.DOM.getElementsByTagAndClassName('a', 'trigger', listElement); //listElement.getElementsByTagName('a','trigger')
  if(links){
    link = links[0];
    location.href = link    
  }
}
ZTM.UI.EnhanceListItems.onMouseoverHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode
  }
  ZTM.DOM.addElementClass(listElement, 'enhanced')
  
}
ZTM.UI.EnhanceListItems.onMouseoutHandler = function(e){
  var listElement = e.target || e.srcElement;
  while(listElement.tagName != 'LI'){
    listElement = listElement.parentNode
  }
  ZTM.DOM.removeElementClass(listElement, 'enhanced')
}
ZTM.UI.InputValueTogglers = {}
ZTM.UI.InputValueTogglers.init = function(){
  var inputs = ZTM.DOM.getElementsByTagAndClassName('input', 'toggler')
  for(var i=0,ilength=inputs.length; i<ilength;i++){
    var input = inputs[i];
    ZTM.Event.attachEventHandler(input, 'onfocus', ZTM.UI.InputValueTogglers.onfocusHandler)
    ZTM.Event.attachEventHandler(input, 'onblur', ZTM.UI.InputValueTogglers.onblurHandler)
  }
}
ZTM.UI.InputValueTogglers.onfocusHandler = function(e){
  var src = e.target || e.srcElement;  
  if(src.value == src.alt){
    src.value = ""
  }  
}

ZTM.UI.InputValueTogglers.onblurHandler = function(e){
  var src = e.target || e.srcElement;
  if(!src.value){
    src.value = src.alt;  
  }  
}
ZTM.UI.SectionToggler = {}
ZTM.UI.SectionToggler.init = function(){
  var sections = ZTM.DOM.getElementsByTagAndClassName('div', 'toggler')  
  for(var i=0,ilength=sections.length;i<ilength;i++){
    var section = sections[i]
    ZTM.DOM.addElementClass(section, 'dn')
    var gpNode = section.parentNode.parentNode
    pnode = section.parentNode
    var openlink = document.createElement('a')
    openlink.section = section;   
    ZTM.DOM.addElementClass(openlink, 'arrow')
    ZTM.DOM.addElementClass(openlink, 'arrow_003365')
    ZTM.DOM.addElementClass(openlink, 'marginbottom')
    ZTM.DOM.addElementClass(openlink, 'block')
    openlink.innerHTML = section.title;
    pnode.appendChild(openlink)
    pnode.insertBefore(openlink, section)        
    ZTM.Event.attachEventHandler(openlink, 'onclick', ZTM.UI.SectionToggler.onclickHandler)    
  }  
}
ZTM.UI.SectionToggler.onclickHandler = function(e){  
  if (!e){ 
    var e = window.event;     
    e.cancelBubble = true;
  }
  if (e.stopPropagation){    
    e.stopPropagation();
  } 
  var src = e.target || e.srcElement;

  ZTM.DOM.addElementClass(src, 'dn')
  ZTM.DOM.removeElementClass(src, 'block')
  var section = src.section;
  if(section){
    ZTM.DOM.removeElementClass(section, 'dn')
  }
  return false;
}




ZTM.Event.attachEventHandler(window, "onload", ZTM.UI.EnhanceListItems.init);
ZTM.Event.attachEventHandler(window, "onload", ZTM.UI.InputValueTogglers.init);


