/******* x - cross-browser JavaScript ***********/

var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xNN4,xUA=navigator.userAgent.toLowerCase();
if(window.opera){
  var i=xUA.indexOf('opera');
  if(i!=-1){
    var v=parseInt(xUA.charAt(i+6));
    xOp7Up=v>=7;
    xOp6Dn=v<7;
  }
}
else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){
  xIE4Up=parseFloat(navigator.appVersion)>=4;
  xIE4=xUA.indexOf('msie 4')!=-1;
  xIE5=xUA.indexOf('msie 5')!=-1;
}
else if(document.layers){xNN4=true;}
xMac=xUA.indexOf('mac')!=-1;

function xGetElementById(e) {
  if(typeof(e)!='string') return e;
  if(document.getElementById) e=document.getElementById(e);
  else if(document.all) e=document.all[e];
  else e=null;
  return e;
}

function xGetElementsByTagName(t,p) {
  var list = null;
  t = t || '*';
  p = p || document;
  if (xIE4 || xIE5) {
    if (t == '*') list = p.all;
    else list = p.all.tags(t);
  }
  else if (p.getElementsByTagName) list = p.getElementsByTagName(t);
  return list || new Array();
}

function xDef() {
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}

function xPageX(e) {
  if (!(e=xGetElementById(e))) return 0;
  var x = 0;
  while (e) {
    if (xDef(e.offsetLeft)) x += e.offsetLeft;
    e = xDef(e.offsetParent) ? e.offsetParent : null;
  }
  return x;
}

function xPageY(e) {
  if (!(e=xGetElementById(e))) return 0;
  var y = 0;
  while (e) {
    if (xDef(e.offsetTop)) y += e.offsetTop;
    e = xDef(e.offsetParent) ? e.offsetParent : null;
  }
//  if (xOp7Up) return y - document.body.offsetTop; // v3.14, temporary hack for opera bug 130324 (reported 1nov03)
  return y;
}

function xScrollLeft(e, bWin)
{
  var offset=0;
  if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    var w = window;
    if (bWin && e) w = e;
    if(w.document.documentElement && w.document.documentElement.scrollLeft) offset=w.document.documentElement.scrollLeft;
    else if(w.document.body && xDef(w.document.body.scrollLeft)) offset=w.document.body.scrollLeft;
  }
  else {
    e = xGetElementById(e);
    if (e && xNum(e.scrollLeft)) offset = e.scrollLeft;
  }
  return offset;
}
function xScrollTop(e, bWin)
{
  var offset=0;
  if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    var w = window;
    if (bWin && e) w = e;
    if(w.document.documentElement && w.document.documentElement.scrollTop) offset=w.document.documentElement.scrollTop;
    else if(w.document.body && xDef(w.document.body.scrollTop)) offset=w.document.body.scrollTop;
  }
  else {
    e = xGetElementById(e);
    if (e && xNum(e.scrollTop)) offset = e.scrollTop;
  }
  return offset;
}

function xEvent(evt) // object prototype
{
  var e = evt || window.event;
  if(!e) return;
  if(e.type) this.type = e.type;
  if(e.target) this.target = e.target;
  else if(e.srcElement) this.target = e.srcElement;

  // Section B
  if (e.relatedTarget) this.relatedTarget = e.relatedTarget;
  else if (e.type == 'mouseover' && e.fromElement) this.relatedTarget = e.fromElement;
  else if (e.type == 'mouseout') this.relatedTarget = e.toElement;
  // End Section B

  if(xOp6Dn) { this.pageX = e.clientX; this.pageY = e.clientY; }
  else if(xDef(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; }
  else if(xDef(e.clientX,e.clientY)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); }

  // Section A
  if (xDef(e.offsetX,e.offsetY)) {
    this.offsetX = e.offsetX;
    this.offsetY = e.offsetY;
  }
  else if (xDef(e.layerX,e.layerY)) {
    this.offsetX = e.layerX;
    this.offsetY = e.layerY;
  }
  else {
    this.offsetX = this.pageX - xPageX(this.target);
    this.offsetY = this.pageY - xPageY(this.target);
  }
  // End Section A

  if (e.keyCode) { this.keyCode = e.keyCode; } // for moz/fb, if keyCode==0 use which
  else if (xDef(e.which) && e.type.indexOf('key')!=-1) { this.keyCode = e.which; }

  this.shiftKey = e.shiftKey;
  this.ctrlKey = e.ctrlKey;
  this.altKey = e.altKey;
}
function xAddEventListener(e,eT,eL,cap)
{
  if(!(e=xGetElementById(e))) return;
  eT=eT.toLowerCase();
  if((!xIE4Up && !xOp7Up) && e==window) {
    if(eT=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eL; xResizeEvent(); return; }
    if(eT=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eL; xScrollEvent(); return; }
  }
  var eh='e.on'+eT+'=eL';
  if(e.addEventListener) e.addEventListener(eT,eL,cap);
  else if(e.attachEvent) e.attachEvent('on'+eT,eL);
  else eval(eh);
}

function xInsertRule(ss, sel, rule, idx)
{
  if (!(ss=xGetElementById(ss))) return false;
  if (ss.insertRule && !(xIE5 && xMac) ) { ss.insertRule(sel + "{" + rule + "}", (idx>=0?idx:ss.cssRules.length)); } // DOM
  else if (ss.addRule) { ss.addRule(sel, rule, idx); } // IE
  else return false;

  return true;
}

/******* Fade ***********/

var fps=25, fduration=0.25, sduration= typeof slideDuration=="undefined" ? 5:slideDuration;

function setfade(e, value, otype)
{
  switch(otype)
  {
    case 'ie':
      e.filters.alpha.opacity = value * 100;
      break;

    case 'khtml':
      e.style.KhtmlOpacity = value;
      break;

    case 'moz':
      e.style.MozOpacity = (value == 1 ? 0.9999999 : value);
      break;

    default:
      e.style.opacity = (value == 1 ? 0.9999999 : value);
  }

  if (value>0 && (e.style.display == "none" || e.style.display == "") )
  	e.style.display="block";
  else if (value==0 && ( e.style.display == "block" || e.style.display == "") )
  	e.style.display="none";
}

function dofade(steps, e, value, targetvisibility, otype)
{
  value += (targetvisibility ? 1 : -1) / steps;
  if (targetvisibility ? value > 1 : value < 0)
      value = targetvisibility ? 1 : 0;

  setfade(e, value, otype);

  if (targetvisibility ? value < 1 : value > 0)
  {
    setTimeout(function()
    {
      dofade(steps, e, value, targetvisibility, otype);
    }, 1000 / fps);
  }
}

function fadetype(e)
{
  var otype = 'none';

  if (typeof e.style.opacity != 'undefined')
  {
    otype = 'w3c';
  }
  else if (typeof e.style.MozOpacity != 'undefined')
  {
    otype = 'moz';
  }
  else if (typeof e.style.KhtmlOpacity != 'undefined')
  {
    otype = 'khtml';
  }
  else if (typeof e.filters == 'object')
  {
    otype = (e.filters.length > 0
        && typeof e.filters.alpha == 'object'
        && typeof e.filters.alpha.opacity == 'number')
        ? 'ie' : 'none';
  }

  return otype;
}

function fade(e, time, dir)
{
	var steps = time * fps;
	var otype = fadetype(e);

	if (otype != 'none')
	{
		if (dir == 'out') { dofade(steps, e, 1, false, otype); }
		else { dofade(steps, e, 0, true, otype); }
	}
}

function SideshowStart(e)
{
	setTimeout( function() {
				SlideShowNext(e);
			}, sduration * 1000
		);
}
function SlideShowNext(e)
{
	e = xGetElementById(e);
	if ( !e ) return;
	var a = xGetElementsByTagName("li",e);

	if (a.length<=1) return;
	var s=0;h=-1;
	for ( i=0; i<a.length; i++ )
	{
		if (a[i].style.display=="block" || (a[i].style.display=="" && a[i].className=="showslide") )
		{
			h=i;
			s=(i+1) % a.length;
			break;
		}
	}

	fade(a[h], fduration, 'out');
	fade(a[s], fduration, 'in');
	SideshowStart(e);
}

function SideshowLoading()
{
	var c=document.styleSheets;
	if (!c) return;
	xInsertRule(c[0], ".showslide", "display: block; position: absolute;filter: alpha(opacity=100);", -1);
	xInsertRule(c[0], ".hideslide", "display: none;  position: absolute;filter: alpha(opacity=0);", -1);
}
SideshowLoading();

function SideshowLoaded()
{
	e = xGetElementById("slideshow");
	if (e) SideshowStart(e);

	e = xGetElementById("firstslide");
	if (e) {
		var c=document.styleSheets;
		if (c) xInsertRule(c[0], ".nojavascript", "display: none;", -1);
		setTimeout(function() { Lightbox.start($("firstslide")); }, 250 );
	}
}

function IC_Contact(u,d,c){var pre="mai";document.write("<a href=\""+pre+"lto:"+u+"%40"+d+"\">");if(c) document.write(u+"&#64;"+d + "</a>");}

function HasClass(p,c) {
	p = " " + p + " ";
	return p.indexOf(c) != -1;
}
function AddClass(e,c) { if (!HasClass(e.className,c)) e.className += " " + c; }
function RemoveClass(e,c)
{
	var p="", r=0;
	var a = e.className.split(" ");
	for (var i=1; i<a.length; i++)
		if (a[i] == c)
			r=1;
		else
			p += (p.length ? " " : "") + a[i];
	if (r) e.className = p;
}
function Validate()
{
	var eFrm = document.getElementById('frmData').elements;
	var eBad=null;
	for(var i = 0; i < eFrm.length; i++)
	{
		var eCtrl = eFrm[i];
		if ( HasClass(eCtrl.className, "frmCtrlReqd") || HasClass(eCtrl.className, "frmCtrlInvalid") )
			if ( !eCtrl.value.length )
			{
				AddClass(eCtrl,"frmCtrlInvalid");
				if (!eBad) eBad = eCtrl;
			}
			else
				RemoveClass(eCtrl,"frmCtrlInvalid");
	}
	if ( eBad )
	{
		window.alert("Please complete all required fields")
		eBad.focus();
		return false;
	}
	else
		return true;
}

function IcGet(s) { return document.all ? document.all[s] : document.getElementById(s); }
function IcSubmit(strElement) {
	var e = IcGet(strElement);
	if ( e ) e.submit();
}
function SetPage(v) {
	var e = IcGet("page");
	if (e) e.value = v;
	IcSubmit('formSearch');
}

function DoOnLoad() { SideshowLoaded(); }
xAddEventListener(window, 'load', DoOnLoad, false);
