/*
	CRIR - Checkbox & Radio Input Replacement
	Author: Chris Erwin (me[at]chriserwin.com)
	www.chriserwin.com/scripts/crir/

	Updated July 27, 2006.
	Jesse Gavin added the AddEvent function to initialize
	the script. He also converted the script to JSON format.
	
	Updated July 30, 2006.
	Added the ability to tab to elements and use the spacebar
	to check the input element. This bit of functionality was
	based on a tip from Adam Burmister.
*/

crir={init:function(){arrLabels=document.getElementsByTagName('label');searchLabels:for(var i=0;i<arrLabels.length;i++){if(arrLabels[i].getAttributeNode('for')&&arrLabels[i].getAttributeNode('for').value!=''){labelElementFor=arrLabels[i].getAttributeNode('for').value;inputElement=document.getElementById(labelElementFor);}
else{continue searchLabels;}
inputElementClass=inputElement.className;if(inputElementClass=='crirHiddenJS'){inputElement.className='crirHidden';inputElementType=inputElement.getAttributeNode('type').value;if(inputElementType=="checkbox"){inputElement.onclick=crir.toggleCheckboxLabel;}
else{inputElement.onclick=crir.toggleRadioLabel;}
if(inputElement.checked){if(inputElementType=='checkbox'){arrLabels[i].className='checkbox_checked'}
else{arrLabels[i].className='radio_checked'}}
else{if(inputElementType=='checkbox'){arrLabels[i].className='checkbox_unchecked'}
else{arrLabels[i].className='radio_unchecked'}}}
else if(inputElement.nodeName!='SELECT'&&inputElement.getAttributeNode('type').value=='radio'){arrLabels[i].onclick=crir.toggleRadioLabel;inputElement.onclick=crir.toggleRadioLabel;}}},findLabel:function(inputElementID){arrLabels=document.getElementsByTagName('label');searchLoop:for(var i=0;i<arrLabels.length;i++){if(arrLabels[i].getAttributeNode('for')&&arrLabels[i].getAttributeNode('for').value==inputElementID){return arrLabels[i];break searchLoop;}}},toggleCheckboxLabel:function(){labelElement=crir.findLabel(this.getAttributeNode('id').value);if(labelElement.className=='checkbox_checked'){labelElement.className="checkbox_unchecked";}
else{labelElement.className="checkbox_checked";}},toggleRadioLabel:function(){clickedLabelElement=crir.findLabel(this.getAttributeNode('id').value);clickedInputElement=this;clickedInputElementName=clickedInputElement.getAttributeNode('name').value;arrInputs=document.getElementsByTagName('input');for(var i=0;i<arrInputs.length;i++){inputElementType=arrInputs[i].getAttributeNode('type').value;if(inputElementType=='radio'){inputElementName=arrInputs[i].getAttributeNode('name').value;inputElementClass=arrInputs[i].className;if(inputElementName==clickedInputElementName&&inputElementClass=='crirHidden'){inputElementID=arrInputs[i].getAttributeNode('id').value;labelElement=crir.findLabel(inputElementID);labelElement.className='radio_unchecked';}}}
if(clickedInputElement.className=='crirHidden'){clickedLabelElement.className='radio_checked';}},addEvent:function(element,eventType,doFunction,useCapture){if(element.addEventListener)
{element.addEventListener(eventType,doFunction,useCapture);return true;}else if(element.attachEvent){var r=element.attachEvent('on'+eventType,doFunction);return r;}else{element['on'+eventType]=doFunction;}}}
crir.addEvent(window,'load',crir.init,false);
