ci = {

	init:function(){
		var userAgent = navigator.userAgent.toLowerCase();
		var isSafari = ((userAgent.indexOf('safari')!=-1)&&(userAgent.indexOf('mac')!=-1))?true:false;
		if(isSafari) return;//the script doesn't work in safari.

		var labelElementFor, inputElement, inputElementClass, inputElementType;
		var arrLabels = document.getElementsByTagName('label');

		for(var i=0; i<arrLabels.length; i++){//get the input element based on the for attribute of the label tag
			if(!(arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value!='')) continue;

			labelElementFor = arrLabels[i].getAttributeNode('for').value;
			inputElement = document.getElementById(labelElementFor);
			inputElementClass = inputElement.className;	

			if(inputElement.nodeName!='INPUT') continue;
			inputElementType = inputElement.getAttributeNode('type').value;

			if(inputElementType=='checkbox'){
//				arrLabels[i].onclick = ci.toggleCheckbox;
				inputElement.onclick = ci.toggleCheckbox;
				}
			else if(inputElementType=='radio'){
//				arrLabels[i].onclick = ci.toggleRadio;
				inputElement.onclick = ci.toggleRadio;
				}

			if(inputElementClass!='ciHiddenJS') continue;//if the input is specified to be hidden intiate it
			inputElement.className = 'ciHidden';
			// set the initial label state
			arrLabels[i].className = inputElementType+ ((inputElement.checked)?'_checked':'_unchecked');
			}
		},

	findLabel:function(inputElementID){
		var arrLabels = document.getElementsByTagName('label');
		for(var i=0; i<arrLabels.length; i++)
			if(arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value==inputElementID) return arrLabels[i];
		},
	
	toggleCheckbox:function(){
		if(this.className!='ciHidden') return;
		var labelElement = ci.findLabel(this.getAttributeNode('id').value);
		labelElement.className = (labelElement.className=='checkbox_checked') ?'checkbox_unchecked': 'checkbox_checked';
		},
	
	toggleRadio:function(){
		var clickedLabelElement = ci.findLabel(this.getAttributeNode('id').value);
		var clickedInputElement = this;
		var clickedInputElementName = clickedInputElement.getAttributeNode('name').value;
		var arrInputs = document.getElementsByTagName('input');

		var inputElementType, inputElementName, inputElementClass, inputElementID, labelElement;
		for(var i=0; i<arrInputs.length; i++){//uncheck all radios in the same group
			inputElementType = arrInputs[i].getAttributeNode('type').value;
			if (inputElementType!='radio') continue;
			inputElementName = arrInputs[i].getAttributeNode('name').value;
			inputElementClass = arrInputs[i].className;
			//radio buttons with the same 'name'
			if(inputElementName!=clickedInputElementName || inputElementClass!='ciHidden') continue;

			inputElementID = arrInputs[i].getAttributeNode('id').value;
			labelElement = ci.findLabel(inputElementID);
			labelElement.className = 'radio_unchecked';
			}
	
		// if the radio clicked is hidden set the label to checked
		if(clickedInputElement.className!='ciHidden') return;
		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;}
		}

	}

//if(ci.addEvent) custominput.addEvent(window, 'load', ci.init, false);
