//--------------------- Last Modified --> 10/08/08 ---------------------//

//-----------------------------------------------------------------------//

function JDAccordion(Accordionid,TimeToSlide,openPanel,openClass,closeClass,keepopen) {
  var AccordionArray = document.getElementsByClassName("AccordionContent","div",Accordionid);
  var AccordionHeadArray = document.getElementsByClassName("AccordionTitle","div",Accordionid);
  var HeightArray = new Array();
  var startOpen = '';
  var openPanelHeight = 0;
  var openPanelHead = null;

  for(var i = 0;i < AccordionArray.length;i++) {  
    HeightArray[i] = AccordionArray[i].offsetHeight;  
//    alert(AccordionArray[i].offsetTop + " " + AccordionArray[i].offsetLeft + " " + AccordionArray[i].offsetHeight + " " + AccordionArray[i].offsetParent.offsetHeight);
//    HeightArray[i] = AccordionArray[i].clientHeight;  
    if (openPanel != i) {
      AccordionArray[i].style.height = "0px";
      AccordionArray[i].style.display = "none";
    }
    else {
      openPanelHeight = HeightArray[i];
      startOpen = i+1;
      openPanelHead = AccordionHeadArray[i];
      replaceClass(AccordionHeadArray[i], openClass, closeClass); 
    }
  }

  if (AccordionArray.length <= 0) {
    return false;
  }
  this.openAccordion = startOpen;
  this.ContentHeightArray = HeightArray;
  this.Accordionid = Accordionid;
  this.TimeToSlide = TimeToSlide;
  this.openHeight = 0;
  this.closeHeight = openPanelHeight;
  this.openClass = openClass;
  this.closeClass = closeClass;
  this.openPanelHead = openPanelHead;
  this.forceopen = keepopen||false;
}
JDAccordion.prototype.runAccordion = runAccordion;

function animate(lastTick, timeLeft, openingClass, closingClass, TimeToSlide, openHeight, closeHeight, Accordionid) {  

  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  var opening = (openingClass == '') ? null : document.getElementsByClassName(openingClass,"div",Accordionid)[0];
  var closing = (closingClass == '') ? null : document.getElementsByClassName(closingClass,"div",Accordionid)[0];

  if(timeLeft <= elapsedTicks) {
    if(opening != null)
      opening.style.height = openHeight + 'px';

    if(closing != null) {
      closing.style.display = 'none';
      closing.style.height = '0px';
    }
    return;
  }
  
  timeLeft -= elapsedTicks;
  var newClosedHeight = Math.round((timeLeft/TimeToSlide) * closeHeight);

  if(opening != null) {
    if(opening.style.display != 'block')
      opening.style.display = 'block';
    opening.style.height = (openHeight - (Math.round((timeLeft/TimeToSlide) * openHeight))) + 'px';
  }

  if(closing != null)
    closing.style.height = newClosedHeight + 'px';

  setTimeout("animate(" + curTick + "," + timeLeft + ",'" 
      + openingClass + "','" + closingClass + "'," + TimeToSlide + "," + openHeight + "," + closeHeight + ",'" + Accordionid + "')", 33);
}


function runAccordion(index,panelHead) {

  var nID = index;
  
  if(this.openAccordion == nID)
    nID = '';

  var openingClass = (nID == '') ? '' : "item" + nID;

  var closingClass = (this.openAccordion == '') ? '' : "item" + this.openAccordion;

  if (nID != '') {
    replaceClass(panelHead, this.openClass, this.closeClass); 
    
    if (this.openPanelHead)     
      replaceClass(this.openPanelHead, this.closeClass, this.openClass);      

    this.openPanelHead = panelHead;
  }
  else {
    if (!this.forceopen) {
      replaceClass(panelHead, this.closeClass, this.openClass); 
      this.openPanelHead = null;
    }
  }

  if (nID != '' || !this.forceopen) {
    this.openHeight = this.ContentHeightArray[index-1];
  
    animate(new Date().getTime(), this.TimeToSlide, openingClass, closingClass, this.TimeToSlide, this.openHeight, this.closeHeight, this.Accordionid);

    this.closeHeight = this.openHeight;
    this.openAccordion = nID;
  }
}


//\//////////////////////////////////////////////////////////////////////////////////
//\//////////////////////////////////////////////////////////////////////////////////
//\ START --- Get Elements By Non Standard Methods
//\//////////////////////////////////////////////////////////////////////////////////
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
String.prototype.contains = function(t) { 
  return this.indexOf(t) >= 0 ? true : false 
}


function hasClass(myNode, mycssClass) {
  if(myNode.className.indexOf(" ") >= 0) {
    var classes = myNode.className.split(" ");            
    for(var j = 0;j < classes.length;j++) {                
      if(classes[j] == mycssClass) { 
        return true; 
      }
    }
  }
  else {         
    if (myNode.className == mycssClass) {
      return true; 
    }    
  } 
  return false;              
}


function replaceClass(element, searchClass, replaceClass) {
  if (element) {
    if(element.className.indexOf(" ") >= 0) {            
      var classes = element.className.split(" ");  
      var newclasslist = '';          
      var found = false;        
      for(var j = 0;j < classes.length;j++) {   
        if(classes[j] == searchClass) {                   
          newclasslist = newclasslist + ' ' + replaceClass;
          found = true;
        }   
        else {
          newclasslist = newclasslist + ' ' + classes[j];
        }         
      }  
      if (found)
        element.className = newclasslist;  
      else
        element.className = newclasslist + ' ' + replaceClass;  
    }        
    else if(element.className == searchClass) {          
      element.className = replaceClass;    
    }
    else {
      element.className = element.className + ' ' + replaceClass;    
    }
  }
}

  
document.getElementsByClassName = function( clsName, nodeName, startnodeID ) {    
  var tag = nodeName||'*';
  var starttagID = startnodeID||'';
  var retVal = new Array();   
  var starttag;
  var elements;
  if (starttagID) {
    starttag = document.getElementById(starttagID);   
    if (starttag)
      elements = starttag.getElementsByTagName(tag); 
    else
      return retVal;; 
  }
  else
    elements = document.getElementsByTagName(tag); 
  
  for(var i = 0;i < elements.length;i++) {  
   if(elements[i].className.indexOf(" ") >= 0) {            
      var classes = elements[i].className.split(" ");            
      for(var j = 0;j < classes.length;j++) {                
        if(elements[i].className.contains(clsName)) {                   
          retVal.push(elements[i]);
          break;
        }            
      }        
    }        
    else if(elements[i].className.contains(clsName)) {          
      retVal.push(elements[i]);    
    }
  }    
  return retVal;
};


document.getElementsByType = function( tag, elementType, startnodeID ) {    
  var starttagID = startnodeID||'';
  var retVal = new Array();   
  var elements;
  if (starttagID) {
    starttag = document.getElementById(starttagID);   
    if (starttag)
      elements = starttag.getElementsByTagName(tag); 
    else
      elements = document.getElementsByTagName(tag); 
  }
  else {
    elements = document.getElementsByTagName(tag); 
  }
         
  for(var i = 0;i < elements.length;i++) {  
   if(elements[i].type == elementType) { 
     retVal.push(elements[i]);
    }        
  }    
  return retVal;
};
//\ END --- Get Elements By Non Standard Methods


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
