// Copyright 2006 Cirv Web Studios (http://www.cirvwebstudios.com)
// Author	: Micah Githens // Created : 5/31/2006 // Last Modified: 6/15/2006
// ISSUES: 
// 	 - Google AutoFill doesn't work
//   - Buttons reposition on hover
function AddHaloTag(o,c) {
	var c=o;
	var n = document.createElement('span');
	n.setAttribute("class",c);
	var c = o.cloneNode(true);
	n.appendChild(c);
	try {	o.parentNode.replaceChild(n,o);	} catch (e) {}
	diliteInput(c);
}
/*
function radioChecked(r) {
	var inputs		= document.getElementsByTagName("input");
	for (i=0; i<inputs.length; i++) {
		if (inputs[i].getAttribute("type") == "radio") {
			if (inputs[i].getAttribute("name") == r.getAttribute("name")) {
				if (inputs[i].checked){setRadio(inputs[i]);}else{unSetRadio(inputs[i]);}
} } } }
*/
function initInputs() { 
	var inputs		= document.getElementsByTagName("input");
	var txtareas	= document.getElementsByTagName("textarea");
	var selects		= document.getElementsByTagName("select");
	for (i=0; i<inputs.length; i++) {
		if ((inputs[i].getAttribute("type") == "text") 
				|| (inputs[i].getAttribute("type") == "submit")
				|| (inputs[i].getAttribute("type") == "reset")
				|| (inputs[i].getAttribute("type") == "button")) {
			AddHaloTag(inputs[i],"unhalo");			
			inputs[i].onfocus 		= onHasFocus;
			inputs[i].onblur 			= onLooseFocus;
			inputs[i].onmouseover = onHasMouseOver;
			inputs[i].onmouseout 	= onHasMouseOut;
		}
/*		if (inputs[i].getAttribute("type") == "radio") {
			AddHaloTag(inputs[i],"");	
			inputs[i].onclick 		= onClickThis;
			inputs[i].onfocus 		= onRadioFocus;
			inputs[i].onblur 			= onRadioUnFocus;
			inputs[i].onmouseover = onRadioMouseOver;
			inputs[i].onmouseout	= onRadioMouseOut;
			inputs[i].setAttribute("id","r"+i);
			if (inputs[i].checked) {
				inputs[i].parentNode.className = 'radioChecked';
			} else {
				inputs[i].parentNode.className = 'radioUnchecked';
	}}*/  }
	for (t=0; t<txtareas.length; t++) {
		AddHaloTag(txtareas[t],"unhalo");
		txtareas[t].onfocus 		= onHasFocus;
		txtareas[t].onblur 			= onLooseFocus;
		txtareas[t].onmouseover = onHasMouseOver;
		txtareas[t].onmouseout 	= onHasMouseOut;
	}
	for (t=0; t<selects.length; t++) {
		AddHaloTag(selects[t],"unhalo");
		selects[t].onfocus 			= onHasFocus;
		selects[t].onblur 			= onLooseFocus;
		selects[t].onmouseover 	= onHasMouseOver;
		selects[t].onmouseout 	= onHasMouseOut;
} }
function onHasFocus()	  		{haloFormArr[this.name]=true; hiliteInput(this);}
function onLooseFocus() 		{haloFormArr[this.name]=false;diliteInput(this);}
function onHasMouseOver()		{hiliteInput(this);}
function onHasMouseOut()		{try{if (haloFormArr[this.name]==true){hiliteInput(this);}else{diliteInput(this);}}catch(e){}}
function onClickThis()  		{radioChecked(this);}
/*function onRadioFocus() 		{haloFormArr[this.getAttribute("id")]=true; (this.checked)?setRadioHalo(this):unSetRadioHalo(this);}
function onRadioUnFocus()		{haloFormArr[this.getAttribute("id")]=false; (this.checked)?setRadio(this):unSetRadio(this);}
function onRadioMouseOver()	{(this.checked)?setRadioHalo(this):unSetRadioHalo(this);}
function onRadioMouseOut() 	{if(haloFormArr[this.getAttribute("id")]){(this.checked)?setRadioHalo(this):unSetRadioHalo(this);}else{(this.checked)?setRadio(this):unSetRadio(this);}}*/
function hiliteInput(o) 		{jscss('add',o,'hilite');jscss('remove',o.parentNode,'unhalo');jscss('add',o.parentNode,'halo');}
function diliteInput(o) 		{jscss('remove',o,'hilite');jscss('remove',o.parentNode,'halo');jscss('add',o.parentNode,'unhalo');}
/*function setRadio(o)				{o.parentNode.className = 'radioChecked';}
function unSetRadio(o)			{o.parentNode.className = 'radioUnchecked';}
function setRadioHalo(o)		{o.parentNode.className = 'radioCheckedHalo';}
function unSetRadioHalo(o)	{o.parentNode.className = 'radioUncheckedHalo';}*/
function haloInit() 						{initInputs(); haloFormArr=new Array();}
//window.onload = init;
if (window.attachEvent) { window.attachEvent("onload", haloInit); } else {
if (window.addEventListener) { window.addEventListener("load", haloInit, false); }}

function jscss(a,o,c1,c2){
  switch (a){
    case 'swap':o.className=!jscss('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);break;
		case 'add':if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}break;
    case 'remove':var rep=o.className.match(' '+c1)?' '+c1:c1;o.className=o.className.replace(rep,'');break;
    case 'check':return new RegExp('\\b'+c1+'\\b').test(o.className);break;
  }
}
