	formatMoney = function(sum, unlimited) {
		sum = new String(sum);
		sum = sum.replace(",", ".")
		sum = parseFloat(sum);
		
		// check more than 2 digits after the delimiter
		if (unlimited) {
			if (sum.toString().length - sum.toString().indexOf(".") <= 3) {
				return sum.toFixed(2);
			}
			else {
				return sum.toString();
			}
		} else {
			return sum.toFixed(2);
		}
	}

	function findPos(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	}	

	onCellOver = function(sender) {
		
		onCellOut();
	
		var detailedBox = document.createElement('div');

		detailedBox.style.position = 'absolute';
		var pos = findPos(sender);
		detailedBox.style.left = (pos[0] - 6) + 'px';
		detailedBox.style.top = (pos[1] - 6) + 'px'; 
		detailedBox.style.backgroundColor = '#a0cfff';
		detailedBox.style.padding = '5px';
		detailedBox.style.border = '1px solid #999999';
		detailedBox.innerHTML = sender.innerHTML;
		detailedBox.id = 'detailedBox';

		if (sender.offsetWidth > detailedBox.offsetWidth) {
			//return;
		}
		
		if (window.addEventListener) { // Mozilla, Netscape, Firefox
			detailedBox.addEventListener('mouseout', onCellOut, false);
		} else { // IE
			detailedBox.attachEvent('onmouseout', onCellOut);
		}
		
		document.body.appendChild(detailedBox);
	}
	
	onCellOut = function() {
		var child = document.getElementById('detailedBox');
		
		if (child) {
			document.body.removeChild(child);
		}
	}
	
	function checkSignupForm() {	
		if (
			checkField("username") &&
			checkField("password") &&
			checkField("password2") &&
			checkField("fullname") &&
			checkField("email") &&
			checkField("telephone")
		) {
			if (document.getElementById("password").value != document.getElementById("password2").value) {
				alert('Въведените пароли не съвпадат!');
				document.getElementById("password").focus();
				return false;
			} else {
				document.getElementById("signupForm").submit();
				return true;
			}
		}
	}
	
	function checkField(name) {
		field = document.getElementById(name);
		if (field.value == '') {
			alert('Непопълнено поле!');
			field.focus();
			return false;
		} else {
			return true;	
		}
	}
	
	function findByTabIndex(form, index, currentElement) {
		if (form && form.elements) {		
			for (var i = 0; i < form.elements.length; i++) {
				// search for no tabindexed elements
				//if (currentElement == form.elements[i]) {
				//	if (form.elements[i + 1]) {
				//		nextElement = form.elements[i + 1];
				//	} else {
				//		nextElement = form.elements[0];
				//	}
				//}					
				
				if (form.elements[i].tabIndex == index) {
					return form.elements[i];
				}
			}
			
			// element with needed tabindex not found, just return next
			//return nextElement;
		}
		
		return false;
	}
	
	function handleFocus (event) {
		var field = event.target || event.srcElement;
		
		if (field.type == "text" || field.type == "password") {
			field.style.backgroundColor = "#feff9d";
			field.select();
		}
		
		if (tooltip = field.getAttribute("tooltip")) {
			showTooltip(field, tooltip);
		}
	}
		
	function handleBlur (event) {
		var field = event.target || event.srcElement;
		
		if (field.type == "text" || field.type == "password") {
			field.style.backgroundColor = "#ffffff";
		}
		
		if (tooltip = field.getAttribute("tooltip")) {
			hideTooltip(field);
		}
	}
	
	function handleEnter (event) {
		
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		var field = event.target || event.srcElement

		if (keyCode == 13) {
			var i;
			
			if (field.type == "button") {
				field.click();
				return false;
			}
			
			if (field.tabIndex) {
				var firstElement = findByTabIndex(field.form, 1);
				var lastElement = findByTabIndex(field.form, field.tabIndex + 1);


								
				// find next INPUT sibling
				//while (nextElement != null && nextElement.tagName != "INPUT" && nextElement.tagName != "input") {
				//	nextElement = nextElement.nextSibling;
				//}
				
				//if (nextElement) {
				//	alert(nextElement.id);
				//}
				
				try {				
					if (lastElement) {
						lastElement.focus();
						return false;
					} else
					if (firstElement) {
						firstElement.focus();
						return false;
					}
				} catch (err) {
					// login page focus problems
				}
			} else {
				////////////////////////////////////////////////
				for (i = 0; i < field.form.elements.length; i++)
					if (field == field.form.elements[i])
						break;
			
				for (j = i + 1; j < field.form.elements.length; j++) {
					if (field.form.elements[j].type != "hidden" && field.form.elements[j].type != "HIDDEN" && !field.form.elements[j].readOnly) {
						break;
					}
				}
				
				if (j == field.form.elements.length) {
					for (j = 0; j < i; j++) {
						if (field.form.elements[j].type != "hidden" && field.form.elements[j].type != "HIDDEN" && !field.form.elements[j].readOnly) {
							break;
						}
					}					
				}
	
				
				field.form.elements[j].focus();
				return false;	
				////////////////////////////////////////////////
			}
		} else {
			return true;
		}
	}
	
	function filterNumbersOnly(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		var field = event.target || event.srcElement

		/*
		if (field.className && (field.className.indexOf("numbersonly") > -1)) {
			field.value = field.value.replace(/[,]/g, '.');
			field.value = field.value.replace(/[^0-9.,]/g, '');
			return true;
		}
		*/
	}
	
	window.onload = function () {		
		var inputs = document.getElementsByTagName("INPUT");
		var selects = document.getElementsByTagName("SELECT");
				
		allElements = inputs;
		
		for (var i in allElements) {
			setElementDefaults(allElements[i], "INPUT");
		}
		
		allElements = selects;
		
		for (var i in allElements) {
			setElementDefaults(allElements[i], "SELECT");
		}
		
		if (field = findByTabIndex(document.forms[0], 1)) {
			field.focus();	
		}
		
		if (element = document.getElementById("AMOUNT")) {
			if(element.addEventListener) { // Mozilla, Netscape, Firefox
				element.addEventListener('change', setSlovom, false);
			} else
			if (element.attachEvent) {
				element.attachEvent('onchange', setSlovom);	
			}
		}
	}
	
	function setSlovom(event) {
		var field = event.target || event.srcElement
		
		field.value = formatMoney(field.value);
		
		if (textField = document.getElementById("AMOUNT_TEXT"))	{
			textField.value = getWord(field.value);
		}
	}
	
	function setElementDefaults(element) {
		elementType = element.tagName;
		
		switch (elementType) {
			case "INPUT":
				if(element.addEventListener) { // Mozilla, Netscape, Firefox
					if (element.name != "username") {
					
						element.addEventListener('keypress', handleEnter, false);
						
					}
					element.addEventListener('focus', handleFocus, false);
					element.addEventListener('blur', handleBlur, false);
					element.addEventListener('keyup', filterNumbersOnly, false);
				} else
				if (element.attachEvent) {
					element.attachEvent('onkeypress', handleEnter);	
					element.attachEvent('onfocus', handleFocus);
					element.attachEvent('onblur', handleBlur);
					element.attachEvent('onkeyup', filterNumbersOnly);
				}
				break;
				
			case "SELECT":
				if(element.addEventListener) { // Mozilla, Netscape, Firefox
					element.addEventListener('keypress', handleEnter, false);
				} else
				if (element.attachEvent) {
					element.attachEvent('onkeypress', handleEnter);	
				}
				break;
				
			default:
				break;
		}
	}
	
	function showTooltip(field, tooltip) {
		var position = findPos(field);

		tip = document.createElement("div");
		tip.style.position = "absolute";		
		tip.style.left = (position[0] + 3) + 'px';
		tip.style.top = (position[1] + field.offsetHeight + 3) + 'px';
		tip.style.backgroundColor = "#eeeeee";
		tip.style.borderStyle = "solid";
		tip.style.borderColor = "#ff0000";
		tip.style.borderWidth = "1px";
		tip.style.padding = "3px";
		tip.innerHTML = "<b>" + tooltip + "</b>";
		tip.id = "current_tooltip";
		
		document.body.appendChild(tip);
	}
	
	function hideTooltip() {
		tip.parentNode.removeChild(tip);
	}