// JavaScript Document


/*function convertDLs() {
	var dls = document.getElementsByTagName('DL'), dl;
	for (var i=0;i<dls.length;i++) {
		dl = dls[i].childNodes;
		j = 0;
		while (j<dl.length) {
			if (dl[j].tagName=='DT' && j+1<dl.length && dl[j+1].tagName=='DD') {
				dl[j].onclick = toggleDT;
				dl[j].className = 'dt';
				//showDiv(dl[j+1],0);
				AddClass(dl[j+1],'hidden');
				j+=2;
			} else j++;
		}
	}
}

function toggleDT(e) {
	e = getEventElement(e);
	showDiv(e.nextSibling,!isVisible(e.nextSibling));
}
*/

function convertDLs() {
	var dls = document.getElementsByTagName('DL'), DL, DTs, DDs, len, i, j;
	for (var i=0;i<dls.length;i++) {
		DL = dls[i];
		//if (DL.id!='FAQ' && !HasClass(DL,'FAQ')) continue;
		DTs = DL.getElementsByTagName('DT');
		DDs = DL.getElementsByTagName('DD');
		len = Math.min(DTs.length,DDs.length);
		for (j=0;j<len;j++) {
			//DTs[j].onclick = toggleDT;
			DTs[j].className = 'dt';
			DTs[j].innerHTML = '<u>'+DTs[j].innerHTML+'</u>';
			DTs[j].childNodes[0].onclick = toggleDT;
			AddClass(DDs[j],'hidden');
		}
	}
}

function toggleDT(e) {
	e = getEventElement(e);
	if (e.tagName!='DT') e = getParent(e,'DT');
	if (!e) return;
	var dd = e.nextSibling;
	while (dd && (!dd.tagName || dd.tagName!='DD')) dd = dd.nextSibling;
	if (dd)	$how(dd,!isVisible(dd));
}


function switchForms(show) {
	if (show=='remind') {
		showDiv('frmRemind',1);
		showDiv('frmLogin',0);
		showDiv('introText',0);
		showDiv('forgotIntroText',1);
		showDiv('mzForgotHdr',1);
		showDiv('errorMsg',0);
		_el('email').focus();
	} else {
		showDiv('frmRemind',0);
		showDiv('frmLogin',1);
		showDiv('introText',1);
		showDiv('forgotIntroText',0);
		showDiv('mzForgotHdr',0);
		showDiv('errorMsg',0);
		_el('login').focus();
	}
	return false;
}


function doLogin(a) {
	var frm = getParent(a,'FORM');
	if (frm.login.value && frm.password.value) frm.submit();
	else alert(frm.getAttribute('empty'));
	//a.blur();
	return false;
}

function doRemind(a) {
	var frm = getParent(a,'FORM');
	if (frm.email.value) frm.submit();
	return false;
}

function submitOnEnter(evt) {
	evt = fixEvent(evt);
	if (evt.keyCode == 13) { // ENTER
		doLogin(evt.target);
	}
}

//addEvent(window,'load',convertDLs);

function showDiv(id,onoff) {
	var div = (typeof(id)=='string') ? document.getElementById(id) : id;
	if (div) {
		var on = '';
		var onoffIE = (onoff) ? on : 'none';
		var onoffNS = (onoff) ? 'show' : 'hide';
		if (div.style) div.style.display = onoffIE; else div.visibility = onoffNS;
		if (div.className && div.className=='hidden') div.className='';
	}
}
$how=showDiv;

function isVisible(id) {
	var div = typeof(id)=='string' ? document.getElementById(id) : id;
	if (div) {
		return getStyle(div,'display')!='none';
	}
}


//
// (c) Peter-Paul Koch | quirksmode.org
//
function getStyle(el,styleProp)
{
	var x = (typeof(el)=='string') ? document.getElementById(el) : el;
	if (document.defaultView && document.defaultView.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	else if (x.currentStyle)
		var y = eval('x.currentStyle.' + cssPropName(styleProp));
	return y;
}

function cssPropName(prop) {
	var arr = prop.split('-'), prop1=prop;
	for (var i=0;i<arr.length;i++) {
		if(i==0) prop1 = arr[0];
		else prop1 += (arr[i].charAt(0).toUpperCase() + arr[i].substr(1));
	}
	return prop1;
}



/***/
/*** POPUP SYSTEM - start ***/
/***/

//var isMac = (navigator.appVersion.indexOf("Mac") != -1);
var ahlersWin = null;

function openWin(theURL,wid,hei,addiParam) {
  var left = (screen.availWidth-wid)/2, top = (screen.availHeight-hei)/2;
  //addiParam = (addiParam) ? ((typeof(addiParam)=="string")?addiParam:"") : "resizable,scrollbars";
  //if (addiParam) addiParam = "," + addiParam;

  if (ahlersWin && ahlersWin.close) ahlersWin.close();
  ahlersWin = window.open('','ahlersPop','width='+wid+'px,height='+hei+'px'+',left='+left+',screenX='+left+',top='+top+',screenY='+top+addiParam);
  if (ahlersWin.focus) ahlersWin.focus();
  if (theURL) ahlersWin.document.location.replace(theURL);
  return false;
}


//addEvent(window,'load',popupImages);

addEvent(document,'click',onClickHandler);


function onClickHandler(evt) {
	evt = fixEvent(evt);
	var e = evt.target;
	if (evt.button && evt.button>1) return;
	if (!e) return;
	if (e.tagName!='A') e = getParent(e,'A');
	if (!e) return;

	// handle image popups
	if (e.tagName && e.tagName=='A' && e.href) {
		ext = e.href.substr(e.href.length-4,4);
		if ("|.jpg|.gif|.png|".indexOf('|'+ext+'|')!=-1 && !e.onclick) {
			// they clicked an image, which is enclosed in a link, which HREFs to an image
			// EXCEPTION - MEMBER ZONE!!!
			var div = getParent(e,'DIV');
			if (div && div.id && div.id=='memberZone') return;
			popImg(e.pathname);
			if (evt.cancelable) evt.preventDefault();
			return false;
		}
	}
	// handle #mailto anti-spam mechanism
	if (e.tagName && e.tagName=='A' && e.hash && e.hash=='#mailto' && getAttr(e,'rel')) {
		window.location.href = 'mailto:'+getAttr(e,'rel').replace('(at)','@');
		if (evt.cancelable) evt.preventDefault();
		return false;
	}
	// make sure external links are open in a new window
	if (e.target!='_blank' && e.hostname!=window.location.hostname) {
		e.target='_blank';
		return;
	}
}


function popUpDialog(theURL,wid,hei,addi) {
  if (window.showModelessDialog) wPop = window.showModelessDialog(theURL,false,'help:no;scroll:no;status:no;dialogHeight:'+hei+'px;dialogWidth:'+wid+'px');
  else openWin(theURL,wid,hei,addi);
  return false;
}


function popImg(theURL) {
  return popUpDialog('/popimg.html?img='+theURL,200,50) 
}


function pi(pic,wid,hei) {
  var cURL = '/imgviewer.html?img=' + pic + '&w='+wid + '&h='+hei;
  return openWin(cURL,wid,hei);
}


/***/
/*** POPUP SYSTEM - end ***/
/***/


/*
** event detector & browser-crosser ;-)
*/

function getEventElement(evt) {
	evt = (evt) ? evt : (window.event) ? window.event : "";
	if (!evt) return null;
	if (evt.target) {
		if (evt.target.nodeType == 3) evt.target = evt.target.parentNode;
	} else if (evt.srcElement) evt.target = evt.srcElement;
	return evt.target;
}

function fixEvent(evt) {
	if (!evt) evt = window.event;
	if (evt.target) {
		if (evt.target.nodeType == 3) evt.target = evt.target.parentNode;
	} else if (evt.srcElement) evt.target = evt.srcElement;

	return evt;
}





// from scottandrew.com/junkyard/js/
// copyright 2001 scott andrew lepera, damn you!
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla

function addEvent(elm, evType, fn, useCapture)
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Event handler could not be added");
  }
} 

function removeEvent(elm, evType, fn, useCapture)
{
  if (elm.removeEventListener){
    elm.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.detachEvent){
    var r = elm.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Event handler could not be removed");
  }
}


function _el(id) {	return document.getElementById(id);}
$ = _el;

function getAttr(elem,attr) {
	if (elem && elem.getAttribute(attr)) return elem.getAttribute(attr).toLowerCase();
	else return null;
}

function attrTrue(elem,attr,defaultTrue) {
	var val = getAttr(elem,attr);
	if (!defaultTrue && val==null || val=='no' || val=='0') return false; else return true;
}


function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return getParent(el.parentNode, pTagName);
}


//*** This code is copyright 2002-2003 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt

//***Adds a new class to an object, preserving existing classes
function AddClass(obj,cName){ KillClass(obj,cName); return obj && (obj.className+=(obj.className.length>0?' ':'')+cName); }

//***Removes a particular class from an object, preserving other existing classes.
function KillClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'')); }

//***Returns true if the object has the class assigned, false otherwise.
function HasClass(obj,cName){ return (!obj || !obj.className)?false:(new RegExp("\\b"+cName+"\\b")).test(obj.className) }

