/*############################################################# Name: Niceforms Version: 2.0 Author: Lucian Slatineanu URL: http://www.emblematiq.com/projects/niceforms/  Feel free to use and modify but please keep this copyright intact. #################################################################*/  //Theme Variables - edit these to match your theme var imagesPath = "img/"; var selectRightWidthSimple = 19; var selectRightWidthScroll = 2; var selectMaxHeight = 200; var textareaTopPadding = 10; var textareaSidePadding = 10;  //Global Variables var NF = new Array(); var isIE = false; var resizeTest = 1;  //Initialization function function NFInit() { 	try { 		document.execCommand('BackgroundImageCache', false, true); 	} catch(e) {} 	if(!document.getElementById) {return false;} 	//alert("click me first"); 	NFDo('start'); } function NFDo(what) { 	var niceforms = document.getElementsByTagName('form'); 	var identifier = new RegExp('(^| )'+'niceform'+'( |$)'); 	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 		var ieversion=new Number(RegExp.$1); 		if(ieversion < 7) {return false;} //exit script if IE6 		isIE = true; 	} 	for(var q = 0; q < niceforms.length; q++) {if(identifier.test(niceforms[q].className)) { 		if(what == "start") { //Load Niceforms 			NF[q] = new niceform(niceforms[q]); 			niceforms[q].start(); 		} 		else { //Unload Niceforms 			niceforms[q].unload(); 			NF[q] = ""; 		} 	}} } function NFFix() { 	NFDo('stop'); 	NFDo('start'); } function niceform(nf) { 	nf._inputText = new Array(); nf._inputRadio = new Array(); nf._inputCheck = new Array(); nf._inputSubmit = new Array(); nf._inputFile = new Array(); nf._textarea = new Array(); nf._select = new Array(); nf._multiselect = new Array(); 	nf.add_inputText = function(obj) {this._inputText[this._inputText.length] = obj; inputText(obj);} 	nf.add_inputRadio = function(obj) {this._inputRadio[this._inputRadio.length] = obj; inputRadio(obj);} 	nf.add_inputCheck = function(obj) {this._inputCheck[this._inputCheck.length] = obj; inputCheck(obj);} 	nf.add_inputSubmit = function(obj) {this._inputSubmit[this._inputSubmit.length] = obj; inputSubmit(obj);} 	nf.add_inputFile = function(obj) {this._inputFile[this._inputFile.length] = obj; inputFile(obj);} 	nf.add_textarea = function(obj) {this._textarea[this._textarea.length] = obj; textarea(obj);} 	nf.add_select = function(obj) {this._select[this._select.length] = obj; selects(obj);} 	nf.add_multiselect = function(obj) {this._multiselect[this._multiselect.length] = obj; multiSelects(obj);} 	nf.start = function() { 		//Separate and assign elements 		var allInputs = this.getElementsByTagName('input'); 		for(var w = 0; w < allInputs.length; w++) { 			switch(allInputs[w].type) { 				case "text": case "password": {this.add_inputText(allInputs[w]); break;} 				case "radio": {this.add_inputRadio(allInputs[w]); break;} 				case "checkbox": {this.add_inputCheck(allInputs[w]); break;} 				case "submit": case "reset": case "button": {this.add_inputSubmit(allInputs[w]); break;} 				case "file": {this.add_inputFile(allInputs[w]); break;} 			} 		} 		var allButtons = this.getElementsByTagName('button'); 		for(var w = 0; w < allButtons.length; w++) { 			this.add_inputSubmit(allButtons[w]); 		} 		var allTextareas = this.getElementsByTagName('textarea'); 		for(var w = 0; w < allTextareas.length; w++) { 			this.add_textarea(allTextareas[w]); 		} 		var allSelects = this.getElementsByTagName('select'); 		for(var w = 0; w < allSelects.length; w++) { 			if(allSelects[w].size == "1") {this.add_select(allSelects[w]);} 			else {this.add_multiselect(allSelects[w]);} 		} 		//Start 		for(w = 0; w < this._inputText.length; w++) {this._inputText[w].init();} 		for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].init();} 		for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].init();} 		for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].init();} 		for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].init();} 		for(w = 0; w < this._textarea.length; w++) {this._textarea[w].init();} 		for(w = 0; w < this._select.length; w++) {this._select[w].init(w);} 		for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].init(w);} 	} 	nf.unload = function() { 		//Stop 		for(w = 0; w < this._inputText.length; w++) {this._inputText[w].unload();} 		for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].unload();} 		for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].unload();} 		for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].unload();} 		for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].unload();} 		for(w = 0; w < this._textarea.length; w++) {this._textarea[w].unload();} 		for(w = 0; w < this._select.length; w++) {this._select[w].unload();} 		for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].unload();} 	} } function inputText(el) { //extent Text inputs 	el.oldClassName = el.className; 	el.left = document.createElement('img'); 	el.left.src = imagesPath + "0.png"; 	el.left.className = "NFTextLeft"; 	el.right = document.createElement('img'); 	el.right.src = imagesPath + "0.png"; 	el.right.className = "NFTextRight"; 	el.dummy = document.createElement('div'); 	el.dummy.className = "NFTextCenter"; 	el.onfocus = function() { 		this.dummy.className = "NFTextCenter NFh"; 		this.left.className = "NFTextLeft NFh"; 		this.right.className = "NFTextRight NFh"; 	} 	el.onblur = function() { 		this.dummy.className = "NFTextCenter"; 		this.left.className = "NFTextLeft"; 		this.right.className = "NFTextRight"; 	} 	el.init = function() { 		this.parentNode.insertBefore(this.left, this); 		this.parentNode.insertBefore(this.right, this.nextSibling); 		this.dummy.appendChild(this); 		this.right.parentNode.insertBefore(this.dummy, this.right); 		this.className = "NFText"; 	} 	el.unload = function() { 		this.parentNode.parentNode.appendChild(this); 		this.parentNode.removeChild(this.left); 		this.parentNode.removeChild(this.right); 		this.parentNode.removeChild(this.dummy); 		this.className = this.oldClassName; 	} } function inputRadio(el) { //extent Radio buttons 	el.oldClassName = el.className; 	el.dummy = document.createElement('div'); 	if(el.checked) {el.dummy.className = "NFRadio NFh";} 	else {el.dummy.className = "NFRadio";} 	el.dummy.ref = el; 	if(isIE == false) {el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px';} 	else {el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px';} 	el.dummy.onclick = function() { 		if(!this.ref.checked) { 			var siblings = getInputsByName(this.ref.name); 			for(var q = 0; q < siblings.length; q++) { 				siblings[q].checked = false; 				siblings[q].dummy.className = "NFRadio"; 			} 			this.ref.checked = true; 			this.className = "NFRadio NFh"; 		} 	} 	el.onclick = function() { 		if(this.checked) { 			var siblings = getInputsByName(this.name); 			for(var q = 0; q < siblings.length; q++) { 				siblings[q].dummy.className = "NFRadio"; 			} 			this.dummy.className = "NFRadio NFh"; 		} 	} 	el.onfocus = function() {this.dummy.className += " NFfocused";} 	el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ NFfocused/g, "");} 	el.init = function() { 		this.parentNode.insertBefore(this.dummy, this); 		el.className = "NFhidden"; 	} 	el.unload = function() { 		this.parentNode.removeChild(this.dummy); 		this.className = this.oldClassName; 	} } function inputCheck(el) { //extend Checkboxes 	el.oldClassName = el.className; 	el.dummy = document.createElement('img'); 	el.dummy.src = imagesPath + "0.png"; 	if(el.checked) {el.dummy.className = "NFCheck NFh";} 	else {el.dummy.className = "NFCheck";} 	el.dummy.ref = el; 	if(isIE == false) {el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px';} 	else {el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px';} 	el.dummy.onclick = function() { 		if(!this.ref.checked) { 			this.ref.checked = true; 			this.className = "NFCheck NFh"; 		} 		else { 			this.ref.checked = false; 			this.className = "NFCheck"; 		} 	} 	el.onclick = function() { 		if(this.checked) {this.dummy.className = "NFCheck NFh";} 		else {this.dummy.className = "NFCheck";} 	} 	el.onfocus = function() {this.dummy.className += " NFfocused";} 	el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ NFfocused/g, "");} 	el.init = function() { 		this.parentNode.insertBefore(this.dummy, this); 		el.className = "NFhidden"; 	}  	el.unload = function() { 		this.parentNode.removeChild(this.dummy); 		this.className = this.oldClassName; 	} } function inputSubmit(el) { //extend Buttons 	el.oldClassName = el.className; 	el.left = document.createElement('img'); 	el.left.className = "NFButtonLeft"; 	el.left.src = imagesPath + "0.png"; 	el.right = document.createElement('img'); 	el.right.src = imagesPath + "0.png"; 	el.right.className = "NFButtonRight"; 	el.onmouseover = function() { 		this.className = "NFButton NFh"; 		this.left.className = "NFButtonLeft NFh"; 		this.right.className = "NFButtonRight NFh"; 	} 	el.onmouseout = function() { 		this.className = "NFButton"; 		this.left.className = "NFButtonLeft"; 		this.right.className = "NFButtonRight"; 	} 	el.init = function() { 		this.parentNode.insertBefore(this.left, this); 		this.parentNode.insertBefore(this.right, this.nextSibling); 		this.className = "NFButton"; 	} 	el.unload = function() { 		this.parentNode.removeChild(this.left); 		this.parentNode.removeChild(this.right); 		this.className = this.oldClassName; 	} } function inputFile(el) { //extend File inputs 	el.oldClassName = el.className; 	el.dummy = document.createElement('div'); 	el.dummy.className = "NFFile"; 	el.file = document.createElement('div'); 	el.file.className = "NFFileNew"; 	el.center = document.createElement('div'); 	el.center.className = "NFTextCenter"; 	el.clone = document.createElement('input'); 	el.clone.type = "text"; 	el.clone.className = "NFText"; 	el.clone.ref = el; 	el.left = document.createElement('img'); 	el.left.src = imagesPath + "0.png"; 	el.left.className = "NFTextLeft"; 	el.button = document.createElement('img'); 	el.button.src = imagesPath + "0.png"; 	el.button.className = "NFFileButton"; 	el.button.ref = el; 	el.button.onclick = function() {this.ref.click();} 	el.init = function() { 		var top = this.parentNode; 		if(this.previousSibling) {var where = this.previousSibling;} 		else {var where = top.childNodes[0];} 		top.insertBefore(this.dummy, where); 		this.dummy.appendChild(this); 		this.center.appendChild(this.clone); 		this.file.appendChild(this.center); 		this.file.insertBefore(this.left, this.center); 		this.file.appendChild(this.button); 		this.dummy.appendChild(this.file); 		this.className = "NFhidden"; 		this.relatedElement = this.clone; 	} 	el.unload = function() { 		this.parentNode.parentNode.appendChild(this); 		this.parentNode.removeChild(this.dummy); 		this.className = this.oldClassName; 	} 	el.onchange = el.onmouseout = function() {this.relatedElement.value = this.value;} 	el.onfocus = function() { 		this.left.className = "NFTextLeft NFh"; 		this.center.className = "NFTextCenter NFh"; 		this.button.className = "NFFileButton NFh"; 	} 	el.onblur = function() { 		this.left.className = "NFTextLeft"; 		this.center.className = "NFTextCenter"; 		this.button.className = "NFFileButton"; 	} 	el.onselect = function() { 		this.relatedElement.select(); 		this.value = ''; 	} } function textarea(el) { //extend Textareas 	el.oldClassName = el.className; 	el.height = el.offsetHeight - textareaTopPadding; 	el.width = el.offsetWidth - textareaSidePadding; 	el.topLeft = document.createElement('img'); 	el.topLeft.src = imagesPath + "0.png"; 	el.topLeft.className = "NFTextareaTopLeft"; 	el.topRight = document.createElement('div'); 	el.topRight.className = "NFTextareaTop"; 	el.bottomLeft = document.createElement('img'); 	el.bottomLeft.src = imagesPath + "0.png"; 	el.bottomLeft.className = "NFTextareaBottomLeft"; 	el.bottomRight = document.createElement('div'); 	el.bottomRight.className = "NFTextareaBottom"; 	el.left = document.createElement('div'); 	el.left.className = "NFTextareaLeft"; 	el.right = document.createElement('div'); 	el.right.className = "NFTextareaRight"; 	el.init = function() { 		var top = this.parentNode; 		if(this.previousSibling) {var where = this.previousSibling;} 		else {var where = top.childNodes[0];} 		top.insertBefore(el.topRight, where); 		top.insertBefore(el.right, where); 		top.insertBefore(el.bottomRight, where); 		this.topRight.appendChild(this.topLeft); 		this.right.appendChild(this.left); 		this.right.appendChild(this); 		this.bottomRight.appendChild(this.bottomLeft); 		el.style.width = el.topRight.style.width = el.bottomRight.style.width = el.width + 'px'; 		el.style.height = el.left.style.height = el.right.style.height = el.height + 'px'; 		this.className = "NFTextarea"; 	} 	el.unload = function() { 		this.parentNode.parentNode.appendChild(this); 		this.parentNode.removeChild(this.topRight); 		this.parentNode.removeChild(this.bottomRight); 		this.parentNode.removeChild(this.right); 		this.className = this.oldClassName; 		this.style.width = this.style.height = ""; 	} 	el.onfocus = function() { 		this.topLeft.className = "NFTextareaTopLeft NFh"; 		this.topRight.className = "NFTextareaTop NFhr"; 		this.left.className = "NFTextareaLeftH"; 		this.right.className = "NFTextareaRightH"; 		this.bottomLeft.className = "NFTextareaBottomLeft NFh"; 		this.bottomRight.className = "NFTextareaBottom NFhr"; 	} 	el.onblur = function() { 		this.topLeft.className = "NFTextareaTopLeft"; 		this.topRight.className = "NFTextareaTop"; 		this.left.className = "NFTextareaLeft"; 		this.right.className = "NFTextareaRight"; 		this.bottomLeft.className = "NFTextareaBottomLeft"; 		this.bottomRight.className = "NFTextareaBottom"; 	} } function selects(el) { //extend Selects 	el.oldClassName = el.className; 	el.dummy = document.createElement('div'); 	el.dummy.className = "NFSelect"; 	el.dummy.style.width = el.offsetWidth + 'px'; 	el.dummy.ref = el; 	el.left = document.createElement('img'); 	el.left.src = imagesPath + "0.png"; 	el.left.className = "NFSelectLeft"; 	el.right = document.createElement('div'); 	el.right.className = "NFSelectRight"; 	el.txt = document.createTextNode(el.options[0].text); 	el.bg = document.createElement('div'); 	el.bg.className = "NFSelectTarget"; 	el.bg.style.display = "none"; 	el.opt = document.createElement('ul'); 	el.opt.className = "NFSelectOptions"; 	el.dummy.style.left = findPosX(el) + 'px'; 	el.dummy.style.top = findPosY(el) + 'px'; 	el.opts = new Array(el.options.length); 	el.init = function(pos) { 		this.dummy.appendChild(this.left); 		this.right.appendChild(this.txt); 		this.dummy.appendChild(this.right); 		this.bg.appendChild(this.opt); 		this.dummy.appendChild(this.bg); 		for(var q = 0; q < this.options.length; q++) { 			this.opts[q] = new option(this.options[q], q); 			this.opt.appendChild(this.options[q].li); 			this.options[q].lnk.onclick = function() { 				this._onclick(); 				this.ref.dummy.getElementsByTagName('div')[0].innerHTML = this.ref.options[this.pos].text; 				this.ref.options[this.pos].selected = "selected"; 				for(var w = 0; w < this.ref.options.length; w++) {this.ref.options[w].lnk.className = "";} 				this.ref.options[this.pos].lnk.className = "NFOptionActive"; 			} 		} 		if(this.options.selectedIndex) { 			this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[this.options.selectedIndex].text; 			this.options[this.options.selectedIndex].lnk.className = "NFOptionActive"; 		} 		this.dummy.style.zIndex = 999 - pos; 		this.parentNode.insertBefore(this.dummy, this); 		this.className = "NFhidden"; 	} 	el.unload = function() { 		this.parentNode.removeChild(this.dummy); 		this.className = this.oldClassName; 	} 	el.dummy.onclick = function() { 		var allDivs = document.getElementsByTagName('div'); for(var q = 0; q < allDivs.length; q++) {if((allDivs[q].className == "NFSelectTarget") && (allDivs[q] != this.ref.bg)) {allDivs[q].style.display = "none";}} 		if(this.ref.bg.style.display == "none") {this.ref.bg.style.display = "block";} 		else {this.ref.bg.style.display = "none";} 		if(this.ref.opt.offsetHeight > selectMaxHeight) { 			this.ref.bg.style.width = this.ref.offsetWidth - selectRightWidthScroll + 33 + 'px'; 			this.ref.opt.style.width = this.ref.offsetWidth - selectRightWidthScroll + 'px'; 		} 		else { 			this.ref.bg.style.width = this.ref.offsetWidth - selectRightWidthSimple + 33 + 'px'; 			this.ref.opt.style.width = this.ref.offsetWidth - selectRightWidthSimple + 'px'; 		} 	} 	el.bg.onmouseout = function(e) { 		if (!e) var e = window.event; 		e.cancelBubble = true; 		if (e.stopPropagation) e.stopPropagation(); 		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement; 		if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return; 		if((reltg.nodeName == 'DIV') || (reltg.className == 'NFSelectTarget')) return; 		else{this.style.display = "none";} 	} 	el.dummy.onmouseout = function(e) { 		if (!e) var e = window.event; 		e.cancelBubble = true; 		if (e.stopPropagation) e.stopPropagation(); 		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement; 		if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return; 		if((reltg.nodeName == 'DIV') || (reltg.className == 'NFSelectTarget')) return; 		else{this.ref.bg.style.display = "none";} 	} 	el.onfocus = function() {this.dummy.className += " NFfocused";} 	el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ NFfocused/g, "");} 	el.onkeydown = function(e) { 		if (!e) var e = window.event; 		var thecode = e.keyCode; 		var active = this.selectedIndex; 		switch(thecode){ 			case 40: //down 				if(active < this.options.length - 1) { 					for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";} 					var newOne = active + 1; 					this.options[newOne].selected = "selected"; 					this.options[newOne].lnk.className = "NFOptionActive"; 					this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text; 				} 				return false; 				break; 			case 38: //up 				if(active > 0) { 					for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";} 					var newOne = active - 1; 					this.options[newOne].selected = "selected"; 					this.options[newOne].lnk.className = "NFOptionActive"; 					this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text; 				} 				return false; 				break; 			default: 				break; 		} 	} } function multiSelects(el) { //extend Multiple Selects 	el.oldClassName = el.className; 	el.height = el.offsetHeight; 	el.width = el.offsetWidth; 	el.topLeft = document.createElement('img'); 	el.topLeft.src = imagesPath + "0.png"; 	el.topLeft.className = "NFMultiSelectTopLeft"; 	el.topRight = document.createElement('div'); 	el.topRight.className = "NFMultiSelectTop"; 	el.bottomLeft = document.createElement('img'); 	el.bottomLeft.src = imagesPath + "0.png"; 	el.bottomLeft.className = "NFMultiSelectBottomLeft"; 	el.bottomRight = document.createElement('div'); 	el.bottomRight.className = "NFMultiSelectBottom"; 	el.left = document.createElement('div'); 	el.left.className = "NFMultiSelectLeft"; 	el.right = document.createElement('div'); 	el.right.className = "NFMultiSelectRight"; 	el.init = function() { 		var top = this.parentNode; 		if(this.previousSibling) {var where = this.previousSibling;} 		else {var where = top.childNodes[0];} 		top.insertBefore(el.topRight, where); 		top.insertBefore(el.right, where); 		top.insertBefore(el.bottomRight, where); 		this.topRight.appendChild(this.topLeft); 		this.right.appendChild(this.left); 		this.right.appendChild(this); 		this.bottomRight.appendChild(this.bottomLeft); 		el.style.width = el.topRight.style.width = el.bottomRight.style.width = el.width + 'px'; 		el.style.height = el.left.style.height = el.right.style.height = el.height + 'px'; 		el.className = "NFMultiSelect"; 	} 	el.unload = function() { 		this.parentNode.parentNode.appendChild(this); 		this.parentNode.removeChild(this.topRight); 		this.parentNode.removeChild(this.bottomRight); 		this.parentNode.removeChild(this.right); 		this.className = this.oldClassName; 		this.style.width = this.style.height = ""; 	} 	el.onfocus = function() { 		this.topLeft.className = "NFMultiSelectTopLeft NFh"; 		this.topRight.className = "NFMultiSelectTop NFhr"; 		this.left.className = "NFMultiSelectLeftH"; 		this.right.className = "NFMultiSelectRightH"; 		this.bottomLeft.className = "NFMultiSelectBottomLeft NFh"; 		this.bottomRight.className = "NFMultiSelectBottom NFhr"; 	} 	el.onblur = function() { 		this.topLeft.className = "NFMultiSelectTopLeft"; 		this.topRight.className = "NFMultiSelectTop"; 		this.left.className = "NFMultiSelectLeft"; 		this.right.className = "NFMultiSelectRight"; 		this.bottomLeft.className = "NFMultiSelectBottomLeft"; 		this.bottomRight.className = "NFMultiSelectBottom"; 	} } function option(el, no) { //extend Options 	el.li = document.createElement('li'); 	el.lnk = document.createElement('a'); 	el.lnk.href = "javascript:;"; 	el.lnk.ref = el.parentNode; 	el.lnk.pos = no; 	el.lnk._onclick = el.onclick || function () {}; 	el.txt = document.createTextNode(el.text); 	el.lnk.appendChild(el.txt); 	el.li.appendChild(el.lnk); }  //Get Position function findPosY(obj) { 	var posTop = 0; 	do {posTop += obj.offsetTop;} while (obj = obj.offsetParent); 	return posTop; } function findPosX(obj) { 	var posLeft = 0; 	do {posLeft += obj.offsetLeft;} while (obj = obj.offsetParent); 	return posLeft; } //Get Siblings function getInputsByName(name) { 	var inputs = document.getElementsByTagName("input"); 	var w = 0; var results = new Array(); 	for(var q = 0; q < inputs.length; q++) {if(inputs[q].name == name) {results[w] = inputs[q]; ++w;}} 	return results; }  //Add events var existingLoadEvent = window.onload || function () {}; var existingResizeEvent = window.onresize || function() {}; window.onload = function () {     existingLoadEvent();     NFInit(); } window.onresize = function() { 	if(resizeTest != document.documentElement.clientHeight) { 		existingResizeEvent(); 		NFFix(); 	} 	resizeTest = document.documentElement.clientHeight; }

