function setupBanner(selector, images, delay) {
  document.banners = {};
  var b = document.banners[selector] = {};
  b.image_max = images ? images : 0;
  b.image_delay = delay && delay > 1000 ? delay : 1000;
  $(selector + ' .animated img ' ).css('display', 'none');
  animateBanner(selector);
}

function animateBanner(selector) {
  var b = document.banners[selector];
  var in_func = function() {
    $(selector + '_' + b.image_index).fadeIn(200, function() {setTimeout(function() {animateBanner(selector)}, b.image_delay)});
  };
  if (b.image_index == undefined) {
    b.image_index = 0;
    in_func();
  } else {
    $(selector + '_' + b.image_index).fadeOut(300, in_func);
    b.image_index = (b.image_index == b.image_max) ? 0 : b.image_index+1;
  }
}

function filterclick(n, fld) {
  window.location.href=filterurl(window.location.href, n, fld);
}

function showhideCond(id, v) {
  var e = document.getElementById(id);
  if (!e) return;
  e.style.display = v ? '' : 'none';
}

function showhide(id) {
  var e = document.getElementById(id);
  if (!e) return;
  if (e.style.display == "none") {
    e.style.display = "";
  } else {
    e.style.display = "none";
  }
}

function tabshow(tabid, tabclass) {
  displayByClassName(tabclass, false);
  var e = document.getElementById(tabid);
  e.style.display="block";
}

function displayByClassName(className, show) {
  var elements = getElementsByClassName(className);
  for (var i=0; i<elements.length; i++) {
    elements[i].style.display = show ? "" : "none";
  }
}

function toggleshow(sid, hid) {
  var show = document.getElementById(sid);
  if (!show) return;
  var hide = document.getElementById(hid);
  if (!hide) return;

  show.style.display = "";
  hide.style.display = "none";
}


function filterurl(url, n, fld) {
  if (url.indexOf(n + "=") == -1) {
    if (url.indexOf("?") == -1) {
      url += "?" + n + "=" + fld.value;
    } else {
      url += "&" + n + "=" + fld.value;
    }
  } else {
    url = url.replace(new RegExp(n + "=[^&]*", "g"), n + "=" + fld.value);
  }
  return url;
}

function changehref(linkId, list, key) {
  var link = document.getElementById(linkId);
  var v = list[key.value];
  link.href = v;
}

function actionsubmit(formName, action) {
  var frm=document.getElementById(formName);
  frm._action.value=action;
  frm.submit();
  return true;
}
function enablectrl(formName, re, value) {
  var frm=document.getElementById(formName);
  //var msg = "checking against " + re + "\n";
  for (var i=0; i<frm.elements.length; i++) {
    var e = frm.elements[i];
    //msg += "checking " + e.name + "\n";
    if (e.name && e.name.search(re) != -1) {
      //msg += "changing " + e.name + "\n";
      e.disabled = !value;
    }
  }
  //alert(msg);
}

function checkbox(formName, re, value) {
  var frm=document.getElementById(formName);
  //var msg = "checking against " + re + "\n";
  for (var i=0; i<frm.elements.length; i++) {
    var e = frm.elements[i];
    //msg += "checking " + e.id + "\n";
    if (e.id && e.id.search(re) != -1) {
      //msg += "changing " + e.id + "\n";
      e.checked = value;
    }
  }
  //alert(msg);
}

function addClassName(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
		return;
	ele.className += (ele.className ? " " : "") + className;
}

function removeClassName(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
		return;
	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
}

function hasClassName(ele, className)
{
	if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
		return false;
	return true;
}


function elementHover(ele, state) {
  if (state) {
    addClassName(ele, "hover");
  } else {
    removeClassName(ele, "hover");
  }
}

function panelToggle(pId) {
  var p = document.getElementById(pId);
  if (hasClassName(p, "CollapsiblePanelOpen")) {
    addClassName(p, "CollapsiblePanelClosed");
    removeClassName(p, "CollapsiblePanelOpen");
  } else {
    addClassName(p, "CollapsiblePanelOpen");
    removeClassName(p, "CollapsiblePanelClosed");
  }
}

function addEvent(element, eventType, handler)
{
    if (element.addEventListener)
        element.addEventListener(eventType, handler, false);
    else if (element.attachEvent)
        element.attachEvent("on" + eventType, handler);
}

function removeEvent(element, eventType, handler)
{
    if (element.removeEventListener)
        element.removeEventListener(eventType, handler, false);
    else if (element.attachEvent)
        element.detachEvent("on" + eventType, handler);
}

function cancelEvent(e)
{
    e.cancelBubble = true;
    if (e.preventDefault)
        e.preventDefault();
    e.returnValue = false;
    return false;
}

function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = (strTag == '*' && document.all) ? document.all : objContElm.getElementsByTagName(strTag);
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  for (i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (k = 0, l = arrObjClass.length; k < l; k++) {
      for (m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]); 
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

