
var keyerrors = [];

// ------------------------- you can change these -------------------------

keyerrors["integer"] = "You can only use 0-9 keys";
keyerrors["float"] = "You can only use 0-9 keys and , and . ";
keyerrors["email"] = "You can only use e-mail keys";
keyerrors["phone"] = "You can only use 0-9 keys and +";

var tooltipbg = "#333";
var tooltiptext = "#ddd";
var tooltipshadow = "#ddd";


// --------------------------- do not edit after this line -------------------------

var ttevent;
var inputfields = new Array();
var ctrlkey;

addevent(window, "load", function() {
	inputfields = document.getElementsByTagName("input");
	for (var i = 0; i < inputfields.length; i++) {
		if (inputfields[i].id == null || inputfields[i].id == "") inputfields[i].id = "inputfield" + i;
		var k = inputfields[i].getAttribute("keys", 0);
		if (k != null && k != false) {	
			inputfields[i].onkeypress = function(e) { return eval("canusekeys("+(!ff ? e.keyCode : e.charCode)+","+this.id+")"); }
			if (k == "email") inputfields[i].style.textTransform = "lowercase";	
		}
	}
});

addevent(document, "mouseover", function(e) {
	if (!e) e = window.event;
	var obj = (e.target ? e.target : e.srcElement);
	var k = obj.getAttribute("tooltip", 0);
	if (k != null && k != false) tooltip(obj, k, true);
});

addevent(document, "mouseout", function(e) {
	if (!e) e = window.event;
	var obj = (e.target ? e.target : e.srcElement);
	var k = obj.getAttribute("tooltip", 0);
	if (k != null && k != false) hidetooltip(true);
});

addevent(document, "mousedown", function() { hidetooltip(true) });

addevent(document, "keydown", function(e) {
	if (!e) e = window.event;
	var k = e.keyCode;
	if (k == 91 || k == 17 || k == 224) ctrlkey = true;
});

addevent(document, "keyup", function(e) {
	if (!e) e = window.event;
	var k = e.keyCode;
	if (k == 91 || k == 17 || k == 224) ctrlkey = false;
});

function canusekeys(kc, id) {
	obj = $(id);
	how = obj.getAttribute("keys", 0);

	var k = [];
	var alpha = "abcdefghijklmnopqrstuvwxyz";
	var num = "0123456789";
	k["integer"] = num;
	k["float"] = num + ",.";
	k["email"] = num + "._-@" + alpha + alpha.toUpperCase();
	k["phone"] = num + "+";

	var chr = String.fromCharCode(kc);

	if (k[how].indexOf(chr) != -1 || ctrlkey || kc == 0) {
		hidetooltip(true);
		return true;
	}

	tooltip(obj, keyerrors[how], false);
	return false;
}

function tooltip(obj, content, force) {
	var el;
	var a = getpos(obj);
	var tt = $('tooltipdiv');
	if (tt == null) {
		el = document.createElement("div");
		el.style.position = "absolute";
		el.style.padding = "3px 6px 3px 6px";
		el.id = "tooltipdiv";
		el.style.backgroundColor = tooltipbg;
		el.style.visibility = "hidden";
		el.style.zIndex = 99999;
		el.style.left = "110px";
		el.style.top = "110px";
		el.style.webkitBorderRadius = "3px";
		el.style.MozBorderRadius = "3px";
		el.style.borderRadius = "3px";
		el.style.webkitBoxShadow = "0px 0px 4px " + tooltipshadow;
		el.style.MozBoxShadow = "0px 0px 4px " + tooltipshadow;
		el.style.boxShadow = "0px 0px 4px " + tooltipshadow;
		document.body.appendChild(el);
		
		tt = $('tooltipdiv');

		el = document.createElement("div");
		el.id = "tooltipcontent";
		el.style.fontFamily = "helvetica,arial";
		el.style.textShadow = "none";
		el.style.fontSize = "11px";
		el.style.color = tooltiptext;
		tt.appendChild(el);

		for (var i = 1; i <= 7; i+=2) {
			el = document.createElement("div");
			el.style.position = "absolute";
			el.id = "tri" + ((i-1)/2);
			el.style.bottom = (0 - (9-i)/2) + "px";
			el.style.left = (10-((i-1)/2)) + "px";
			el.style.backgroundColor = tooltipbg;
			el.style.overflow = "hidden";
			el.style.width = i+"px";
			el.style.height = "1px";
			tt.appendChild(el);
		}
		
	}

	
	if (tt.style.visibility == "visible" && !force) return;

	var raise = 5;
	var add = 0;

	if (obj.tagName.toLowerCase() != "input") add = 0;
	var addleft = Math.floor(obj.offsetWidth / 2);

	if (parseFloat(tt.offsetLeft) == a[0] && parseFloat(tt.offsetTop) == (a[1] - tt.offsetHeight - raise + add)) return;
	tt.style.visibility = "hidden";
	$('tooltipcontent').innerHTML = content;
	
	var lessleft = Math.floor(tt.offsetWidth / 2);
	tt.style.left = (a[0] + addleft - lessleft) + "px";
	tt.style.top = (a[1] - tt.offsetHeight - raise + add) + "px";

	$('tri0').style.left = (lessleft - 1) + "px";
	$('tri1').style.left = (lessleft - 2) + "px";
	$('tri2').style.left = (lessleft - 3) + "px";
	$('tri3').style.left = (lessleft - 4) + "px";

	for (var i = 1; i <= raise; i++) {
		dothis = '$("tooltipdiv").style.top = "' + (a[1] - tt.offsetHeight - i + add) + 'px"';
		window.setTimeout(dothis, i*15);
	}

	fadein("tooltipdiv", 0.1);
	$('tooltipdiv').style.visibility = 'visible';

}

function hidetooltip() {
	var animated = false;
	if (arguments.length > 0) animated = arguments[0];
	var tt = $('tooltipdiv');
	if (tt == null) return;
	if (tt.style.visibility == "hidden") return;

	tt.style.visibility = "hidden";
	tt.style.left = "-999px";
	tt.style.top = "-999px";
}

