/*#############################################################
Name: Niceforms
Version: 0.9
Author: Lucian Slatineanu
URL: http://www.badboy.ro/

Feel free to use and modify but please provide credits.
#############################################################*/

//global variables that can be used by all the functions on this page.
var selects;
var inputs;
var radios = new Array();
var checkboxes = new Array();
var hovers = new Array();
var buttons = new Array();
var textarea = new Array();

var InputVioletFormLeft = PortalRootPath + "/images/design/InputVioletFormLeft.jpg";
var InputVioletFormRight = PortalRootPath + "/images/design/InputVioletFormRight.jpg";
var TextAreaVioletFormLeft = PortalRootPath + "/images/design/TextAreaVioletFormLeft.jpg";
var TextAreaVioletFormRight = PortalRootPath + "/images/design/TextAreaVioletFormRight.jpg";



//this function runs when the page is loaded so put all your other onload stuff in here too.
function init() {
	RoundedButtons();
	//check if styles are enabled and only then start replacing elements
	if(document.getElementById('stylesheetTest') && findPosX(document.getElementById('stylesheetTest')) == -999) {
		replaceRadios();
		replaceCheckboxes();
	}
}

function reload() {
	
	for (a=0; a < checkboxes.length; a++) {
		document.getElementsByTagName("body")[0].removeChild(document.getElementById('myCheck'+a));
	}
	for (a=0; a < radios.length; a++) {
		document.getElementsByTagName("body")[0].removeChild(document.getElementById('myRadio'+a));
	}
	
	replaceRadios();
	replaceCheckboxes();
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function insertBefore(newElement, targetElement) {
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	}
	else {
		parent.insertBefore(newElement, targetElement.nextSibling);
	}
}

function insertAfter(newElement, targetElement) {
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	}
	else {
		parent.insertBefore(newElement, targetElement);
	}
}

function RoundedButtons() {
	if (!document.getElementsByTagName) {
		return false
	}
	
	var buttons = getElementsByClass("input");
	/* loop through all buttons and attach a child div */
	for (var i=0; i < buttons.length; i++) {
		var imgBefore = document.createElement("img");
		imgBefore.src = InputVioletFormRight;
		imgBefore.align = "absmiddle";
		insertBefore(imgBefore, buttons[i]);
		
		var imgAfter = document.createElement("img");
		imgAfter.src = InputVioletFormLeft;
		imgAfter.align = "absmiddle";	
		insertAfter(imgAfter, buttons[i]);	
	}
	
	var textarea = getElementsByClass("inputTextArea");
	/* loop through all buttons and attach a child div */
	for (var i=0; i < textarea.length; i++) {
		var imgBefore = document.createElement("img");
		imgBefore.src = TextAreaVioletFormRight;
		imgBefore.align = "absmiddle";
		imgBefore.height = "120";	
		insertBefore(imgBefore, textarea[i]);
		
		var imgAfter = document.createElement("img");
		imgAfter.src = TextAreaVioletFormLeft;
		imgAfter.align = "absmiddle";
		imgAfter.height = "120";	
		insertAfter(imgAfter, textarea[i]);	
	}
}

function replaceRadios() {
	//get all the radio buttons on the page
	var inputs = document.getElementsByTagName('input');
	var j = 0;
	for(var i=0; i < inputs.length; i++) {
		if(inputs[i].type=='radio') {
			radios[j] = inputs[i];
			++j;
		}
	}
	
	//cycle through the radio inputs
	for(var i=0; i <radios.length; i++) {
		
		//make them transparent
		radios[i].className = "transparent";
		
		//get their position
		var x = findPosX(radios[i]);
		var y = findPosY(radios[i]);
		
		//build new div
		var radioArea = document.createElement('div');
		if(radios[i].checked) {radios[i].nextSibling.className = "chosen"; radioArea.className = "radioAreaChecked";}
		else if(!radios[i].checked) {radioArea.className = "radioAreaUnchecked";}
		radioArea.style.left = x + 'px';
		radioArea.style.top = y + 'px';
		radioArea.id = 'myRadio'+i;
		radios[i].onclick = new Function('checkRadio('+i+')');
		
		//insert div
		document.getElementsByTagName("body")[0].appendChild(radioArea);
	}
}

function replaceCheckboxes() {
	//get all the checkboxes on the page
	var inputs = document.getElementsByTagName('input');
	var j = 0;
	for (var i2=0; i2 < inputs.length; i2++) {
		if(inputs[i2].type=='checkbox') {
			checkboxes[j] = inputs[i2];
			++j;
		}
	}

	//cycle through the checkboxes
	for(var i2=0; i2 < checkboxes.length; i2++) {

		//make them transparent
		checkboxes[i2].className = "transparent";

		//get their position
		var x = findPosX(checkboxes[i2]);
		var y = findPosY(checkboxes[i2]);

		//build new div
		var checkboxArea = document.createElement('div');
		if(checkboxes[i2].checked) {checkboxes[i2].nextSibling.className = "chosen"; checkboxArea.className = "checkboxAreaChecked";}
		else if(!checkboxes[i2].checked) {checkboxArea.className = "checkboxAreaUnchecked";}
		checkboxArea.style.left = x + 'px';
		checkboxArea.style.top = y + 'px';
		checkboxArea.id = 'myCheck'+i2;
		checkboxes[i2].onclick = new Function('checkCheck('+i2+')');

		//insert div
		document.getElementsByTagName("body")[0].appendChild(checkboxArea);
	}
}


function findPosY(obj) {
	var posTop = 0;
	while (obj.offsetParent) {
		posTop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return posTop;
}
function findPosX(obj) {
	var posLeft = 0;
	while (obj.offsetParent) {
		posLeft += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return posLeft;
}

function checkRadio(g) {
	if(radios[g].checked) {
		for (var k = 0; k < radios.length; k++)
		{
			if(k != g) {
				document.getElementById('myRadio'+k).className = "radioAreaUnchecked";
				radios[k].nextSibling.className = "";
			}
			else if(k == g) {
				document.getElementById('myRadio'+k).className = "radioAreaChecked";
				radios[g].nextSibling.className = "chosen";
			}
		}
	}
	else if(!radios[g].checked) {document.getElementById('myRadio'+g).className = "radioAreaUnchecked"; radios[g].nextSibling.className = "";}
}

function checkCheck(g) {
	if(checkboxes[g].checked) {
		for(var k = 0; k < checkboxes.length; k++) {
			if(k == g) {
				document.getElementById('myCheck'+k).className = "checkboxAreaChecked";
				checkboxes[g].nextSibling.className = "chosen";
			}
		}
	}
	else if(!checkboxes[g].checked) {
		document.getElementById('myCheck'+g).className = "checkboxAreaUnchecked";
		checkboxes[g].nextSibling.className = "";
	}
}

window.onload = init;