var detect_image_src = "/CDSX/images/tiny-detect.png";
var ecrir_class = "ecrir";

if( document.getElementById && document.createElement ) {
	var img = document.createElement("img");
	img.id = "detect-img";
	img.src = detect_image_src;
	document.body.appendChild(img);
}

var ecrir = {
	userAgent: '',
	isSafari: false,
	hasImages: true,
	
	init: function() {
	
		this.userAgent = navigator.userAgent.toLowerCase();
		this.isSafari = ((this.userAgent.indexOf('safari')!=-1)&&(this.userAgent.indexOf('mac')!=-1))?true:false;
		
		if (this.isSafari) 
  		{
  			var labels = document.getElementsByTagName("label");
  			for (i = 0; i < labels.length; i++) {
    			labels[i].addEventListener("click", ecrir.addLabelFocus, false);
    		}
  		}
		
		if(ecrir.hasImages) {
				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 == ecrir_class) {
						inputElement.className = 'crirHidden';
						
						inputElementType = inputElement.getAttributeNode('type').value;	
						
						if (inputElementType == "checkbox") {
							inputElement.onclick = ecrir.toggleCheckboxLabel;
						}
						else {
							inputElement.onclick = ecrir.toggleRadioLabel;
						}
						
						if (inputElement.disabled) {
							if (inputElementType == 'checkbox') { arrLabels[i].className = 'checkbox_disabled'}
							else { arrLabels[i].className = 'radio_disabled' }
						}
						else 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 = ecrir.toggleRadioLabel;
						inputElement.onclick = ecrir.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;		
			}
		}
		
		return 0;
	},	
	
	toggleCheckboxLabel: function () {
		var labelElement = ecrir.findLabel(this.getAttributeNode('id').value);
	
		if(labelElement.className == 'checkbox_checked') {
			labelElement.className = "checkbox_unchecked";
		}
		else {
			labelElement.className = "checkbox_checked";
		}
	},	
	
	toggleRadioLabel: function () {			 
		var clickedLabelElement = ecrir.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++) {			
			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 = ecrir.findLabel(inputElementID);
					if(labelElement.className != 'radio_disabled')
						labelElement.className = 'radio_unchecked';
				}
			}
		}
	
		if (clickedInputElement.className == 'crirHidden') {
			clickedLabelElement.className = 'radio_checked';
		}
	},
	
	imagesEnabled: function() {
		if(document.getElementById("detect-img").offsetWidth == 515)
			ecrir.hasImages = true;
		else
			ecrir.hasImages = false;
	
		document.body.removeChild(document.getElementById("detect-img"));
	},
	
	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;
			return 0;
		}
	},
	
	addLabelFocus: function() {
		var item = document.getElementById(this.getAttribute("for"));
		
		item.focus();
		if (item.getAttribute("type") == "checkbox")
		{
			if (!item["checked"])
			{
				item["checked"] = true;
				this.className = "checkbox_checked";
			}
			else
			{
				item["checked"] = false;
				this.className = "checkbox_unchecked";
			}
		}
		else if (item.getAttribute("type") == "radio")
		{
			var allRadios = document.getElementsByTagName("input");
			var radios = new Array();
			for (i = 0; i < allRadios.length; i++)
			{
				if (allRadios[i].getAttribute("name") == item.getAttribute("name"))
				{
					radios.push(allRadios[i]);
				}
			}
			for (i = 0; i < radios.length; i++)
			{
				if (radios[i]["checked"] && radios[i].getAttribute("id") != item.getAttribute("id"))
				{
					radios[i]["checked"] = false;
					ecrir.findLabel(radios[i]["id"]).className = "radio_unchecked";
				}
			}
			
			item["checked"] = true;
			this.className = "radio_checked";
		}
	}
}
