
var iFocusElement = 0;

window.addEvent('domready', function() {
    connectInputEvents();
	connectChecklistEvents();
	focusElement(iFocusElement);
});

// Add focus/blur input effect
function connectInputEvents() {	
	var aInputs = document.getElementsByTagName('input');	
	
	/*
	if(aInputs[0] && $('capslockState')) {
		aInputs[0].onkeypress = function(e) {
			//$('capslockState').display = ( isCapslock(e) ? "" : "none" );
		}
	}
	*/
	
	for(var i=0; i<aInputs.length; i++) {
		if (aInputs[i].type == "text" || aInputs[i].type == "password") {		
			aInputs[i].onfocus = function(event){ fieldFocus(this); }
			aInputs[i].onblur = function(event){ fieldBlur(this); }
		}
	}
	
	var aTextareas = document.getElementsByTagName('textarea');
	for(var i=0; i<aTextareas.length; i++) {	
		aTextareas[i].onfocus = function(event){ fieldFocus(this); }
		aTextareas[i].onblur = function(event){ fieldBlur(this); }
	}
	
	var aSelects = document.getElementsByTagName('select');
	for(var i=0; i<aSelects.length; i++) {	
		aSelects[i].onfocus = function(event){ fieldFocus(this); }
		aSelects[i].onblur = function(event){ fieldBlur(this); }
	}
}

function connectChecklistEvents() {
	//var aChecklists = document.getElementsByTagName('checklist');
	var aChecklists = $$('.checklist');	
	for (var i = 0; i < aChecklists.length; i++) 
	{
		var aLIs = aChecklists[i].getChildren();
		for (var j = 0; j < aLIs.length; j++) 
		{
			// onmouseover="checklistOver(this);" onmouseout="checklistOut(this);"
			aLIs[j].onmouseover = function(e) { checklistOver(this); };
			aLIs[j].onmouseout = function(e) { checklistOut(this); };
			
			// onclick="checkChange(this, 'li_pc_2');"
			var oInput = aLIs[j].getFirst().getFirst();	
			oInput.onclick = function(e) { checkChange(this, "li_" + this.id); };
			
			// checked?
			if (oInput.checked) {
				aLIs[j].className = "selected";
			}
		}
		
		var oDiv = aChecklists[i].parentNode;
		var aAs = oDiv.getChildren();
		
		// Connect check all and check none buttons if they exist
		if (aAs.length > 1) { 
			aAs[1].onclick = function(e) { checkAllNone(aLIs, "CHECK"); return false; };
			aAs[2].onclick = function(e) { checkAllNone(aLIs, "UNCHECK"); return false; };
		}
	}
}

var iGroupOpenCount = 0;

function toggleGroup( e ) {
	var oGroupButton = e.target;
	var sID = oGroupButton.id.replace("groupButton", "");
	var oGroupBody = $('groupBody'+sID);
	if (oGroupBody.style.display=="none") {
		oGroupBody.style.display = "";
		iGroupOpenCount++;
	} else {
		oGroupBody.style.display = "none";
		iGroupOpenCount--;
	}
	oGroupButton.toggleClass("groupOpen");
	/*if (iOpenCount) {
		$('columnHeadings').style.display = "";
	} else {
		$('columnHeadings').style.display = "none";
	}*/
}

function connectListGroupEvents(){
	var aGroupBody = $$('.groupBody');
	var iGroupLength = aGroupBody.length;
	for(var i = 0; i < iGroupLength; i++) {
		aGroupBody[ i ].style.display = "none";
		var sID = aGroupBody[ i ].id.replace("groupBody", "");
		var oButton = $('groupButton'+sID);
		oButton.addEvent('click', toggleGroup);
	}
	//$('columnHeadings').style.display = "none";
}

function focusElement(iField) {
	var aInputs = document.getElementsByTagName('input');	
	try {
		if (aInputs[iField]) aInputs[iField].focus();
	} catch(e) {}
}

/*
 * TODO: Skip in Chrome & Safari they have their own highlight effect. Skip in IE but only for select boxes.
 */
function fieldFocus(oFormField) {
	oFormField.className += " fieldFocus";
//	oFormField.style.border = "2px solid #6a8dc6"; 
//	oFormField.style.margin = "0px";
}

function fieldBlur(oFormField) {
	oFormField.className = oFormField.className.replace(" fieldFocus", ""); 
//	oFormField.style.border = "1px solid #666"; 
//	oFormField.style.margin = "1px";
}

// Form Checklist

function checklistOver(objLI) { 
	objLI.className += " hover";
}
function checklistOut(objLI) { 
	objLI.className = objLI.className.replace(" hover", ""); 
}
function checkChange(objCheckbox, strLI) {
	objLI = document.getElementById(strLI);
	if (objCheckbox.checked) {
		objLI.className = "selected hover";
	} else {
		objLI.className = "normal hover";
	}
}
function checkAllNone(aLIs, type) {
	for (var j = 0; j < aLIs.length; j++) {
		var oLI = aLIs[j];
		var oCheckbox = oLI.getElementsByTagName("INPUT")[0];
		switch(type) {
			case "CHECK":
				if (!oCheckbox.checked) {
					oCheckbox.checked = true;
					oLI.className = "selected";
				}
				break;
			case "UNCHECK":
				if (oCheckbox.checked) {
					oCheckbox.checked = false;
					oLI.className = "";
				}
				break;
		}
		
	}
}


function isCapslock(e)
{
    e = (e) ? e : window.event;

    var charCode = false;
    if (e.which) {
        charCode = e.which;
    } else if (e.keyCode) {
        charCode = e.keyCode;
    }
	
    var shifton = false;
    if (e.shiftKey) {
        shifton = e.shiftKey;
    } else if (e.modifiers) {
        shifton = !!(e.modifiers & 4);
    }

    if (charCode >= 97 && charCode <= 122 && shifton) {
        return true;
    }
	
    if (charCode >= 65 && charCode <= 90 && !shifton) {
        return true;
    }

    return false;
}

