	/**
	*	Validierung von Numerischen und Dezimalfeldern 
	*
	*	$Id: validate.js,v 1.2.2.6 2008/09/23 13:52:31 jues Exp $
	*	(c) Copyright 2001-2006 by FEDER Software
	*/		

	function Check4Preis (obj, ev) {
		var key = GetKeyCode (ev);
		
		if(((key >= 48) && (key <= 58)) ||
			(key == 8) || (key == 44) || (key == 46))
		{
			if((key == 44) || (key == 46)) {
				var str = obj.value ;
				if(str.indexOf (".") != -1) {
					CancelBubble (ev);
					return false ;			
				}	
			}
			if(key == 44) {
				SetKeyCode (ev, 46);
			}
			return true ;
		} else {
			CancelBubble (ev);
			return false ;
		}
	}
	function Check4MinMax (obj, min, max) {
		if(obj) {
			if(obj.value && obj.value < min)
				obj.value = min;
			else if(obj.value > max)
				obj.value = max;
		}
	}
	function Check4Num (obj, ev) {
		var key = GetKeyCode (ev);
		
		if(((key >= 48) && (key <= 58)) || (key == 8)){
			return true ;
		} else {
			CancelBubble (ev);
			return false ;
		}
	}
	function Check4Tel (obj, ev) {
		var key = GetKeyCode (ev);
		
		if(((key >= 42) && (key <= 58)) ||
//			((key >= 96) && (key <= 105)) ||
			(key == 45) ||
			(key == 32) ||
			(key == 8))
		{
			return true ;
		} else {
			CancelBubble (ev);
			return false ;
		}
	}

	function InitCheck4Date(obj) {
		if(obj) {
			obj.isInit = 1;
			obj.oldOnBlur = obj.onblur;
			obj.onblur = _SetValidDate;
			obj.onclick = _Mark4Replace;
			obj.onkeyup = _Mark4Replace;
			
			if(is.opera) {
			} else	{
				if(! obj.onkeypress)
					obj.onkeypress = Check4Date;
			}
		}	
	}		
	
	function Check4Date (obj, ev) {
		var key = GetKeyCode (ev);

		if(! obj)	
			obj = GetEventObj (ev);		
		if(obj) {
			if(! obj.isInit) {
				InitCheck4Date (obj);
			}	
			return (DateIn (obj,ev));			
		}	
	}

// die Funktion überprüft die Anzahl Zeichen
function ValidLength(item, len) {
	return (item.length >= len);
}

// die Funktion überprüft die E-Mail Adresse
function ValidEmail(item) {
	if (!ValidLength(item, 8)) 	// xx@xy.de
		return false;
	if (item.indexOf ('@', 0) == -1) 
		return false;
	if (item.indexOf ('.', 0) == -1) 
		return false;
	return true;
}


function getYear(d) { 
	return (d < 1000) ? d + 1900 : d;
}

function isDate (year, month, day) {
  	// month argument must be in the range 1 - 12
  	month = month - 1;  // javascript month range : 0- 11
  	var tempDate = new Date(year,month,day);
  	
  	if ( (getYear(tempDate.getYear()) == year) &&
     	(month == tempDate.getMonth()) &&
     	(day == tempDate.getDate()) )
      	return true;
  	else
     	return false
}

function IsValidDate (obj) {
	var year, month, day ;
}  	


	var nextel = 0 ;

	function NextElement (obj, mark) {
		if(obj) {
			var i ;
			var form = obj.form ;
			
			if(form) {
				var nextindx = ((obj.tabIndex)%form.elements.length) + 1;
			
				for(i = 0 ; i < form.elements.length ; i++) {
					if(form.elements[i].tabIndex == nextindx) {
						form.elements[i].focus();
									
						if(mark) {
							status = nextindx + " 1 von : " + obj.name ;
							DeMarkInp (obj);
							MarkInp (form.elements[i]);
						}	
						return 1 ;
					}
				}	
				// @todo bessere Tabs einbauen
				for(i = 0 ; i < form.elements.length ; i++) {
					if(form.elements[i] == obj) {
						var obj1 = form.elements[(i+1)%form.elements.length] ;
						obj1.focus();
						
						if(mark) {
							status = nextindx + " 2 von : " + obj.name + " auf " + obj1.name;
							DeMarkInp (obj);
							//MarkInp (obj1);
						}
						return 1 ;
					}
				}
			}	
		}
		return 0 ;
	}

	function Check4Next (obj, ev) {
		var key = GetKeyCode (ev);

		if(! obj) {
	//		alert ("hole Obj");
			obj = GetEventObj (ev);		
		}
		if((nextel) && (key == 13)) {
			CancelBubble (ev);
			NextElement (obj, 1);
		}	
	}		

	
	function _SetValidDate (ev) {
		obj = GetEventObj (ev);
			
		if(obj && obj.value) {		
			var date ;
			if(is.ie5up || is.opera7 || is.nav6up) {
				if(obj.onlyYear) {
					pattern = /^(\d{4,4})$/ ;
					if(result = pattern.exec(obj.value)) {
						return ;
					}
				}
				pattern = /(\d{1,2})[\.,-\/]*(\d{1,2})[\.,-\/]*(\d{2,4}).*/ ;
				
				if(result = pattern.exec(obj.value)) {
					if((result[1] < 10) && (result[1].charAt(0) != '0'))
						result[1] = "0" + result[1] ;
					if((result[2] < 10) && (result[2].charAt(0) != '0'))
						result[2] = "0" + result[2] ;
					
					if(result[3].length == 2) {
						if(obj.noFuture) {
							date = new Date ();
							if(date.getYear()-2000 > result[3]-0)
								result[3] = "20" + result[3];
						} else
							result[3] = "20" + result[3];
					}	
					date = new Date (result[3], result[2]-1, result[1], 0,0,0,0 );
					
					var str ;
					var x = date.getDate ();

					str = (x>9)?x:'0'+x ;
					str += '.' ;
					x = date.getMonth() + 1;
					str += (x>9)?x:'0'+x ;
					str += '.'
					if(date.getFullYear) {
						str += date.getFullYear(); 
					} else {	
						if(date.getYear() < 1000)
							str += date.getYear() + 1900;
						else	
							str += date.getYear();
					}		
					obj.value = str ;	
				} else {
//					obj.focus();
				}	
			}	
		}	
		if(obj.oldOnBlur) {
 			obj.oldOnBlur(this);
		}	
	}
	function _Mark4Replace (obj) {
		if(! obj)
			obj = GetEventObj ();		
				
    	if (obj && obj.createTextRange) {
	  		var range = document.selection.createRange().duplicate();

			if(! range.text.length) {		  		
				range.expand ("character");	// alles markieren
				range.select ();
			} 
			//else alert(range.text);	
    	}	
	}
	function DateIn (obj,ev)	{
		var	i ;
		var key = GetKeyCode (ev);

		switch(key) {
			case 13:
				if(nextel) {
					CancelBubble (ev);
					NextElement (obj, 1);
				}	
				break;			
			case 8:
			case 0:
				break;
			default:	
				if((key > 57) || (key < 44)){		// 0 - 9, .-/ erlaubt
					CancelBubble (ev);				// keine Weiterleitung des Events
					return 0 ;		
				}	
				break;
		}		
		_Mark4Replace (obj);
		return 1 ;	
	}

