function TEDate() {
}
function isValidDate( InMonth, InDay, InYear ) {
	if( isNaN(parseInt(InYear)) == true )
		return false;
	else if( isNaN(parseInt(InMonth)) == true
		|| parseInt(InMonth) > 12
		|| parseInt(InMonth) <= 0){
		return false;
	}
	else if( isNaN(parseInt(InDay)) == true
		|| parseInt(InDay) <= 0
		|| parseInt(InDay) > 31
		|| (parseInt(InMonth)==2 && parseInt(InDay) > 29) 
		|| (parseInt(InMonth)==2 && parseInt(InDay) > 28 && parseInt(InYear)%4 > 0) 
		|| (parseInt(InMonth)==4 && parseInt(InDay) > 30) 
		|| (parseInt(InMonth)==6 && parseInt(InDay) > 30) 
		|| (parseInt(InMonth)==9 && parseInt(InDay) > 30) 
		|| (parseInt(InMonth)==11 && parseInt(InDay) > 30) 
		){
		return false;
	}
	return true;
}
TEDate.isValidDate = isValidDate;

function process_keydown(e) {
	if(isIE) {
		e = window.event;
		elem = e.srcElement;
						
		if(e.keyCode==40) e.keyCode=9;
		else if(e.keyCode==13) e.keyCode=9;
		else if(e.keyCode==8) e.cancelBubble=true;
			
		
		else if(e.keyCode==38) {
			currentTabIndex = elem.getAttribute("tabindex");
			for( i=0; i<document.forms.length; i++)
				for( j=0; j<document.forms[i].elements.length; j++)
					
					if( document.forms[i].elements[j] == elem) {
						while(--j >= 0) {
							var formelem = document.forms[i].elements[j];
							if( currentTabIndex == "" ||currentTabIndex == 0 ||	currentTabIndex == null ) {
								if( formelem.type != "hidden") {
									formelem.focus();
									formelem.select();
									break;
								}
							}
							else {
								TabIndex = formelem.getAttribute("tabindex");
								if( TabIndex > 0 && TabIndex < currentTabIndex ) {
									if( formelem.type != "hidden") {
										formelem.focus();
										formelem.select();
										break;
									}
								}								
							}
						}
						break;
					}
		} 
	}
 	else if( isFF ) {
 	    var bGoNext = false;
		var bGoPrev = false;
		var elem = e.target;

		if(e.which==40) bGoNext = true;
		if(e.which==38) bGoPrev = true;
		else if(e.which==13) {
			if(e.shiftKey)
				bGoPrev = true;
			else
				bGoNext = true;
		}

		if(bGoNext==true) {
		    e.preventDefault();
		    e.stopPropagation();
			currentTabIndex = elem.getAttribute("tabindex");
			for(var i=0; i<document.forms.length; i++)
				for(j=0; j<document.forms[i].elements.length; j++)

					if(document.forms[i].elements[j] == elem) {
						while(++j < document.forms[i].elements.length) {
							var formelem = document.forms[i].elements[j];
							if( currentTabIndex == "" || currentTabIndex == 0 || currentTabIndex == null ) {
								if( formelem.type == "text" ||
									formelem.type == "textarea" ||
									formelem.type == "password" ) {
									formelem.focus();
									formelem.select();
									break;
								}
							}
							else {
								TabIndex = formelem.getAttribute("tabindex");
								if( parseInt(TabIndex) > parseInt(currentTabIndex) ) {
									if( formelem.type != "hidden") {
										formelem.focus();
										formelem.select();
										break;
									}
								}
							}
						}
						break;
					}
		}
		if(bGoPrev==true) {
		    e.preventDefault();
		    e.stopPropagation();
			currentTabIndex = elem.getAttribute("tabindex");
		
			for(var i=0; i<document.forms.length; i++)
				for( j=0; j<document.forms[i].elements.length; j++)
					if( document.forms[i].elements[j] == elem) {
						while ( --j >= 0 ) {
							var formelem = document.forms[i].elements[j];
							if( currentTabIndex == "" || currentTabIndex == 0 || currentTabIndex == null ) {
								if( formelem.type == "text" ||
									formelem.type == "textarea" ||
									formelem.type == "password" ) {
									formelem.focus();
									formelem.select();
									break;
								}
							}
							else {
								TabIndex = formelem.getAttribute("tabindex");
								if( TabIndex > 0 && parseInt(TabIndex) < parseInt(currentTabIndex) ) {
									if( formelem.type != "hidden") {
										formelem.focus();
										formelem.select();
										break;
									}
								}
							}
						}
						break;
					}
		}
	}

	else if(isNS) {
		var bGoNext = false;
		var bGoPrev = false;
		var elem = e.target;

		if(e.which==40) bGoNext = true;
		if(e.which==38) bGoPrev = true;
		else if(e.which==13) {
			if(e.modifiers & Event.SHIFT_MASK)
				bGoPrev = true;
			else
				bGoNext = true;
		}

		if(bGoNext==true) {
			if( browserVer >= 5.0)
				currentTabIndex = elem.getAttribute("tabindex");
			else
				currentTabIndex = 0;
			if( e.preventDefault ) {
			    e.preventDefault();
			    e.stopPropagation();
			}
			for(var i=0; i<document.forms.length; i++)
				for(j=0; j<document.forms[i].elements.length; j++)

					if(document.forms[i].elements[j] == elem) {
						while(++j < document.forms[i].elements.length) {
							var formelem = document.forms[i].elements[j];
							if( currentTabIndex == "" || currentTabIndex == 0 || currentTabIndex == null ) {
								if( formelem.type == "text" ||
									formelem.type == "textarea" ||
									formelem.type == "password" ) {
									formelem.focus();
									formelem.select();
									break;
								}
							}
							else {
								TabIndex = formelem.getAttribute("tabindex");
								if( parseInt(TabIndex) > parseInt(currentTabIndex) ) {
									if( formelem.type != "hidden") {
										formelem.focus();
										formelem.select();
										break;
									}
								}
							}
						}
						break;
					}
		}
		if(bGoPrev==true) {
			if(browserVer >= 5.0)
				currentTabIndex = elem.getAttribute("tabindex");
			else
				currentTabIndex = 0;
            if( e.preventDefault ) {
			    e.preventDefault();
			    e.stopPropagation();
			}
			for(var i=0; i<document.forms.length; i++)
				for( j=0; j<document.forms[i].elements.length; j++)
					if( document.forms[i].elements[j] == elem) {
						while ( --j >= 0 ) {
							var formelem = document.forms[i].elements[j];
							if( currentTabIndex == "" || currentTabIndex == 0 || currentTabIndex == null ) {
								if( formelem.type == "text" ||
									formelem.type == "textarea" ||
									formelem.type == "password" ) {
									formelem.focus();
									formelem.select();
									break;
								}
							}
							else {
								TabIndex = formelem.getAttribute("tabindex");
								if( TabIndex > 0 && parseInt(TabIndex) < parseInt(currentTabIndex) ) {
									if( formelem.type != "hidden") {
										formelem.focus();
										formelem.select();
										break;
									}
								}
							}
						}
						break;
					}
		}
	}
	return true;	
}

function dont_bubble_backspace(e){
	if(isIE){
		e = window.event;
		elem = e.srcElement;
		
		if( e.keyCode == 8) e.cancelBubble = true;	
	}
	return true;	
}

function drop_backspace(e) {
	if(isIE) {
		e=window.event;
		if(e.keyCode == 8) { 
			e.cancelBubble = true;
			return false;
		}
	}
	else if( isNS) { 
	}
	else {
	}
	return true;	
}

if(isIE) {
	for(i=0; i<document.forms.length; i++){
		for(j=0; j<document.forms[i].elements.length; j++){
			var elem = document.forms[i].elements[j];
			if( elem.type == "text"  &&
				elem.name != "email" )
				elem.onkeydown = process_keydown;
			else if( elem.type == "textarea" || 
				elem.type == "password"  ||
				elem.name == "email" )
				elem.onkeydown = dont_bubble_backspace;
			else
				elem.onkeydown = drop_backspace;
		}
		document.forms[i].onkeydown = drop_backspace;
	}
	document.onkeydown = drop_backspace;
}
else if(isNS || isFF) {
	for(var i=0; i<document.forms.length; i++) {
		for(j=0; j<document.forms[i].elements.length; j++) {
			var elem = document.forms[i].elements[j];
			if( elem.type=="text" && elem.type!="password" ) {
				elem.onkeydown = process_keydown;
			}
		}
	}
}
else
	;
