// Cre8ted by RE

function firstCap(tag, e, all, strict) {
	//all		-	caps first letter of all words
	//strict	-	no caps other letters except names
	var o;
	var s;
	if (window.getSelection)
		s = window.getSelection();
	else if (document.getSelection)
		s = document.getSelection();
	else if (document.selection && document.selection.type == 'Text')
		s = document.selection.createRange().text;
	if (s && s != '' && (s == tag.value || s.substr(0,1).match("[A-Z]"))) //got selection
		keyUppercase(e);
	else {
		if ((o = tag.value) == '' || (all && o.substr(o.length - 1).match('[ -]'))) //cap on
			keyUppercase(e);
		else if (o.length > 1) {
			s = o.substr(o.length - 2);
			if (s.match('[DLMO]\'')) //name like
				keyUppercase(e);
			else if (s == 'Mc')
				keyUppercase(e);
			else if (strict && o.substr(o.length - 3) != 'Mac')
				keyLowercase(e);
		}
		else if (strict)
			keyLowercase(e);
	}
}

function keyCancel(e) {
	if (!e) e = window.event;
	if (ie)
		e.keyCode = 0;
	e.returnValue = false;
	e.cancelBubble = true;
	if (e.stopPropagation)	e.stopPropagation();
	if (e.preventDefault) e.preventDefault();
}

function keyDefaults(c) {
	//alert(c);
	if (c == 0x08 || c == 0x09 || c == 0x23 || c == 0x24 || c == 0x25 || c == 0x27)
		return true;
}

function keyGet(e) {
	if (!e) e = window.event;
	return e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
}

function keyLowercase(e) {
	var c;
	c = keyGet(e);
	if (c > 0x40 && c < 0x5b) {
		c = c + 0x20;
		keySet(e, c);
	}
}

function keyNumber(e, comm, deci) {
	//comm		-	phone number with + and spaces
	//deci		-	allow decimal point
	var c;
	c = keyGet(e);
	if (keyDefaults(c))
		return;
	if (!comm && !deci && (c < 0x30 || c > 0x39)) {
		keyCancel(e);
	}
	else if (deci && (c < 0x30 || c > 0x39) && c != 0x2e) {
		keyCancel(e);
	}
	else if (comm && (c < 0x28 || c > 0x39) && c != 0x20) {
		keyCancel(e);
	}
}

function keySet(e, key) {
	if (!e) e = window.event;
	if (ie)
		e.keyCode = key;
	else {
	//else if (false) { //firefox not working because of hotfix
		var e2;
		e2 = document.createEvent("KeyEvents");
		e2.initKeyEvent("keypress", true, true, document.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, key);
		if (e.preventDefault) e.preventDefault();
		e.target.dispatchEvent(e2);
	}
}

function keyUppercase(e) {
	var c;
	c = keyGet(e);
	if (c > 0x60 && c < 0x7b) {
		c = c - 0x20;
		keySet(e, c);
	}
}