/*
 * ================================================================
 * Copyright (c) Meta-Level Software AG
 * Alle Rechte vorbehalten.
 * 
 * META-LEVEL Software AG,
 * Saarbruecker Strasse 51,
 * 66130 Saarbruecken
 * Tel. : 0681/99687-0
 * Fax. : 0681/99687-99
 * Internet: www.meta-level.de
 * Mail: info@meta-level.de
 * ================================================================
 * SVN-Information:
 * $LastChangedBy: tbrauer $
 * $LastChangedRevision: 12113 $
 * $LastChangedDate: 2010-03-01 10:43:33 +0100 (Mo, 01 Mrz 2010) $
 * $HeadURL: http://svn/svn/metadok/trunk/META-DOK_4_5_0_J6_UTF_8/Tomcat5.0/webapps/meta-dok/app/javascript/validate.js $
 * ================================================================
 */

/**
 * Diese Methode prueft, ob der uebergebene Wert eine Zahl ist .
 */
function isNumeric(pText){
	if(pText== null || pText.length<1){
		return false;
	}
	var expr = new RegExp("^\\d*$","gi");
	var result =  expr.test(pText)
	return result;
}

/**
 * Diese Methode prueft, ob der uebergebene Wert eine Zahl ist und ob diese Zahl 
 * zwischen den beiden uebergebenen Werten @param minValue und @param maxValue liegt.
 */
function isNumericAdvanced(pText, minValue, maxValue){
	var tResult = false;
	tResult = isNumeric(pText);
	if(tResult){
		tResult= (pText>=minValue && pText<= maxValue);
	}
	return tResult;
}
  
/**
 * Diese Methode prueft, ob der uebergebene Wert alphanumerisch ist.
 */
function isLetter(pText){
	if(pText== null || pText.length<1){
		return false;
	}
	var expr = new RegExp("^[\\w*???????]$","gi");
	var result =  expr.test(pText)
	return result;
}

/**
 * Diese Methode prueft, ob der uebergebene Text alphanumerisch ist und ob die Laenge des Textes
 * zwischen der minnimalen und maximalen Laenge liegt.
 */
function isLetter(pText, minLength, maxLength){
	if(pText!==null || (pText.length >maxLength) || (pText.length < minLength) ){
		return false;
	}
	else{
		return isLetter(pText);	
	}
}

/**
 * Diese Methode prueft, ob der uebergebene Wert ein zulaessiger Dateiname ist.
 * Zulaessige Dateinamen bestehen aus dem Format xxxxx.xxxxx
 * Nicht erlaubte Zeichen sind \ / : * ? < > " |
 */
function isFileName(pText){
	var result = false;
	if(pText!= null ){
		var expr = new RegExp("^[^\\\\/:\\*\\?<>\"\\|]*\\.[^\\\\/:\\*\\?<>\"\\|]*$","gi");
		result =  expr.test(pText)
	}
	return result;
}


/**
 * Diese Methode prueft, ob der uebergebene Wert NICHT alphanumerisch ist.
 */
function isNoLetter(pText){
	if(pText== null || pText.length<1){
		return false;
	}
	var expr = new RegExp("^[\\W^???????]*$","gi");
	var result =  expr.test(pText)
	return result;
}

function isWindowsPath(pText){
	var result = true;
	if(pText!= null){
	 var expr = new RegExp("^[a-zA-Z]:\\\\[^\\*\\?\<>:\"/\\|\\\\][^\\*\\?\<>:\"/\\|]+$","gi");
	 var result = expr.test(pText)
	}else{
		result=false;
	}
	return result;
}

function isUnixPath(pText){
	var result = true;
	if(pText!= null){
	 var expr = new RegExp("^/[^\\*\\?\<>:\"/\\|\\\\][^\\*\\?\<>:\"\\|\\\\]+$","gi");
	 var result = expr.test(pText)
	}else{
		result=false;
	}
	return result;
}

function isUNCPath(pText){
	var result = true;
	if(pText!= null){
	 var expr = new RegExp("^\\\\\\\\[^\\*\\?\<>:\"/\\|\\\\][^\\*\\?\<>:\"\\|/]+$","gi");
	 var result = expr.test(pText)
	}else{
		result=false;
	}
	return result;
}

/**
 * Validierung von Datumswerten:
 *
 * pMonth: 1 - 12
 * pDay:   1 - 31
 */
function isValidDate(pYear, pMonth, pDay){
	// zuerst pruefen, ob alle Felder Zahlenwerte enthalten
	if (isNumeric(pYear) && isNumeric(pMonth) && isNumeric(pDay)){
		pYear*=1;
		pMonth*=1;
		pDay*=1;
		
		// pruefe pYear
		if (pYear<1 || pYear > 9999){
			return false;
		}
		
		// pruefen ob pMonth ein gueltiger Monat ist
		if (pMonth<1 || pMonth >12){
			return false;
		}
		
		var daysPerMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		if (pYear % 4 == 0 || pYear%400 == 0) daysPerMonth[1]=29;
		if (pYear%100 == 0 || pYear == 2000) daysPerMonth[1]=28;
		
		// pruefen ob pDay fuer den Monat pMonth gueltig ist
		if (pDay<1 || pDay>daysPerMonth[pMonth-1]){
			return false
		}
		return true;
	}
	else {
		return false;
	}
}