/**
* autor: stricker
* erstellt: 04.12.07
*
* enthält die funktionen für die überprüfung wärend der eingabe eines formulars
*
* ditoy.com
*/

/*
* überprüft das formular wärend der eingabe
* @param: formular welches geprüft werden soll
*/
function checkForm(form){
	var dis = false;
	var greenColor = "#9CF8AB";
	var redColor = "#F8B1B1";
	var color = greenColor;
	var x = 2;
	
	for(i = 0; i < form.length; i++){
		
		// textfelder und textareas
		if((form[i].type == "text" || form[i].type == "textarea")){
			
			
			if(form[i].name != "mail" && form[i].name.match(/^desc_pdf/) == null && form[i].name.match(/^image/) == null){
				if(form[i].value != ""){
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}	
			}
			
			//Mail (name="mail")
			if(form[i].name == "mail"){
				if(isMailValid(form[i].value)){	
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}
			}
			
			//Datum (name="datum")
			if(form[i].name == "datum"){
				if(isDate(form[i].value))	{
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}
			} // end nur zahlen
			
			//Zahlen und Punkt (name="flaeche", name="preis", name="nebenkosten")
			if(form[i].name == "order"){
				if(isNumber(form[i].value))	{
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}
			} // end nur zahlen
						
			// pdf beschreibung
			if(form[i].name.match(/^desc_pdf/)){
				if(form[i+1].value == "" && form[i+2].value == ""){
					form[i].style.background = "white";
				}else{
					if(form[i].value != ""){
						form[i].style.background = greenColor;
					}else{
						form[i].style.background = redColor;
						dis = true;
						color = redColor;
					}
				}
			} // end pdf beschreibung
			
		}// end textfelder
		
		// pdfs
		if(form[i].type == "file" && form[i].name.match(/^pdf/)){
			if(form[i].value != ""){
				if(isPDF(form[i].value)){
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}
			}else{
				form[i].style.background = "white";
			}	
		}	
		
		// images
		if(form[i].type == "file" && form[i].name.match(/^image/)){
			if(form[i].value != ""){
				if(isImage(form[i].value)){
					form[i].style.background = greenColor;
				}else{
					form[i].style.background = redColor;
					dis = true;
					color = redColor;
				}
			}else{
				form[i].style.background = "white";
			}	
		}
		
		// submit button
		if(form[i].type == "submit"){
			form[i].style.backgroundColor = color;
			form[i].disabled = dis;	
		}
	}
}


/**
* überprüft ob die ausgewählte datei ein pdf ist.
* @param: datei-string
*/
function isPDF(s){
	var result = false;
	
	if(s.match(/.pdf$/) || s.match(/.PDF$/)){
		result = true;
	}
	
	return result;
}

/**
* überprüft ob die ausgewählte datei ein bild ist.
* @param: datei-string
*/
function isImage(s){
	var result = false;
	
	if(s.match(/.jpg$/) || s.match(/.JPG$/) || s.match(/.png$/) || s.match(/.PNG$/) || s.match(/.gif$/) || s.match(/.GIF$/)){
		result = true;
	}
	
	return result;
}

/**
* überprüft ob der text eine nummer ist (zahlen und punkt).
* @param: text
*/
function isNumber(s){
	var result = false;

	if(s.match(/^[0-9,.]+$/)){
		result = true;
	}
	
	return result;
}

/**
* überprüft ob der text ein datum ist.
* @param: text
*/
function isDate(datum){
    //(Schritt 1) Fehlerbehandlung
	datum = datum.toString();

    //(Schritt 2) Aufspaltung des Datums
	datum = datum.split(".");
	if (datum.length != 3) return false;

    //(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats
	datum[0]=parseInt(datum[0],10);
	datum[1]=parseInt(datum[1],10)-1;

    //(Schritt 4) Behandlung Jahr nur zweistellig
	if (datum[2].length == 2) datum[2] = "20" + datum[2];

    //(Schritt 5) Erzeugung eines neuen Dateobjektes
	var kontrolldatum = new Date(datum[2], datum[1], datum[0]);

    //(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
	if (kontrolldatum.getDate() == datum[0] && kontrolldatum.getMonth() == datum[1] && kontrolldatum.getFullYear() == datum[2])
     return true; else return false;
}

/*mail funktion (http://www.drweb.de/javascript/email_check.shtml)*/
function isMailValid(s) {
	var a = false;
	var res = false;
	
	if(typeof(RegExp) == 'function') {
		var b = new RegExp('abc');
 		if(b.test('abc') == true) {
 			a = true;
 		}
 	}

	if(a == true){
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
							'(\\@)([a-zA-Z0-9\\-\\.]+)'+
							'(\\.)([a-zA-Z]{2,4})$');
 		res = (reg.test(s));
	}else {
  		res = (s.search('@') >= 1 && s.lastIndexOf('.') > s.search('@') && s.lastIndexOf('.') >= s.length-5)
  	}
	
	return res ;
}
