

var aFelder = new Array();

// NUR False wenn Felder gebtag,gebmon oder gebjahr auch auf der seite vorhanden sind....
var blnAgeOK = false;


var checkGebtag = document.getElementById('gebtag');


// quelle: http://rajshekhar.net/blog/archives/85-Rasmus-30-second-AJAX-Tutorial.html
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function sndReq(action, arg) {
    http.open('get', 'rpc.php?action='+action+'&arg='+arg);
    http.onreadystatechange = handleResponse;
    http.send(null);
}


function handleResponse() {

    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();									

        if(response.indexOf('|' != -1)) {
            update = response.split('|');

	    if  (update[0]== "pdf") {
		// 0,1, weiter warten
		if  ( update[1]== "false") {
			setTimeout('checkDruckauftrag()', 6000);	
		} else {
			// sonst seite neuladen (dabei wird der fall geprueft)
			// ticketservice oder vvkstellen?
			var url = document.URL;
			if (url.indexOf('ticketservice')!= -1)	{
				document.location.href = '/ticketservice/index.php?action=checkPDF';
			}
			if (url.indexOf('vvkstellen')!= -1) {
				document.location.href = '/vvkstellen/index.php?action=checkPDF';
			}		
		}
	    } else {
		// funktioniert irgendwie im explorer nicht mit db anfragen
		if (update[0]== "abrechnung"){	
		   switch ( update[1]){
			case "false":
			  //alert('weiter warten');
			  setTimeout('checkAbrechnung()', 30000);	
		
			  break;
			case "true":
		    	 // alert('fertig!');
			  break;
			case 'error':
			  //alert('Fehler');
			  break;
		   }
	    	} else  {	
		    var sLabel = update[0];// strip(update[0]); // f. ecards... mochikit erforderlich!
		
		    if (sLabel == 'email'){
			if ((update[2])) {
			    //    sLabel =  strip(update[2]);	// f.ecards... mochikit erforderlich		    
			}
		    }
		  var label = getLabelForId( sLabel );
                  var id = update[0]; 
                   if (update[1] == "true") {            
//		       alert(" update ist true - label.className:" + label.className);
		       label.className = 'completed';	 		       
               	   } else {
	//	       alert("update nicht true label.className:" + label.className);
            		label.className = 'problem';	 
                   }
               	  aFelder[id] = label.className;
		checkSubmit();
	    }
	  }
        }
    }
}




function disableSubmit(){

   var formfield = document.getElementById("submit");
   if ( typeof formfield != "undefined" ) {
      formfield.disabled = true;
   }
}

function enableSubmit(){

var formfield = document.getElementById("submit");

formfield.disabled = false;
}



// bei assoziativen arrays gibt es keine length :(

function checkSubmit(){
   
  //disableSubmit();
  enableSubmit();

  if ( iAnzFelder == -1 ){  // immer korrekt zurückgeben...
	enableSubmit();   	
	return true;
  } 
  j=0;
  for (i in aFelder ){ // mitarbeiter
		if ( aFelder[i]!= 'completed') return false;
		j++;
  }   	
  if 	( j <  iAnzFelder  ) return false;
  
  // WENN GeburtstagsFeld vorhanden ist, pruefen ob alter ok ist:
  // Alt genug?:	 
  if ( ( checkGebtag != null ) && (checkGebtag != false ) ) {
	//alert ('Alter vorhanden, alt genug?');
     if ( blnAgeOK == true ) enableSubmit();   
  } else {
	//alert ('Alter nicht vorhanden');		
    enableSubmit();   
  }
}

function getLabelForId(id) {
 
 var label, labels = document.getElementsByTagName('label');

 for (var i = 0; (label = labels[i]); i++) {
     //alert(label.htmlFor); 
   if (label.htmlFor == id) {    
     return label;
   }
 }
 return false;
}

function checkRequired(id) {
 var formfield = document.getElementById(id);
 var label = getLabelForId(id);

// if (formfield.type == "text") 
 if (formfield.value.length == 0) {
   label.className = 'problem';
 } else {
   label.className = 'completed';	 
 } 
 aFelder[id] = label.className;

 checkSubmit();

}

function checkKontonr(id) {
  var formfield = document.getElementById(id);
  var label = getLabelForId(id);
 	 	 	 	
  if (formfield.value.length == 0) {
     label.className = 'problem';
  } else {
	x = parseInt (formfield.value);
	if (x != formfield.value) {
		label.className = 'problem';
		alert("Bitte als ganze Zahl eingeben");	
	} else {
   		label.className = 'completed';	 
    	}
 } 
 aFelder[id] = label.className;

 checkSubmit();
	
}

function checkBLZ(id) {
var formfield = document.getElementById(id);
var label = getLabelForId(id);
 	 	
if (formfield.value.length == 0) {
   label.className = 'problem';
 } else {
 	 sndReq("checkBlz", formfield.value ); 	
 } 
 aFelder[id] = label.className;

 checkSubmit();
	
}

function checkKundennr(id) {
var formfield = document.getElementById(id);
var label = getLabelForId(id);
 	 	
if (formfield.value.length == 0) {
   label.className = 'problem';
 } else {
 	 sndReq("checkKundennr", formfield.value ); 	
 } 
 aFelder[id] = label.className;

 checkSubmit();
	
}

function checkPLZ(id) {
	
	var formfield = document.getElementById(id);
 	var label = getLabelForId(id);
 	 	
 	if (formfield.value.length == 0) {
   label.className = 'problem';
 } else {
   label.className = 'completed';	 
 } 
 aFelder[id] = label.className;

 	checkSubmit();
}
function checkEmail(id) {
    
    var formfield = document.getElementById(id);	
    var label = getLabelForId(id);
    // alert('checkEmail von:' + id); 	
    if (formfield.value.length == 0) {	
	label.className = 'problem';
    } else {
	if (id != 'email') {
	    sndReq("checkEmail", formfield.value + "|" + id ); 
	} else {
	    sndReq("checkEmail", formfield.value ); 
	}
	// label.className = 'completed';	 
    } 
    aFelder[id] = label.className;

    checkSubmit();
}

function checkAllFields(){

// alle gelabelten felder finden und dann nacheinachnder
// checkRequired(id) aufrufen...
 for (i in aLabelIds ){
	checkRequired ( aLabelIds [i] );
	}
  
}

function checkBirthdate(id){
	var formfield = document.getElementById(id);
 	var label = getLabelForId(id);

	heute = new Date();

   	if (formfield.value == heute.getYear() ) {
		label.className = 'problem';	
		blnAgeOK = false;	
		disableSubmit();
		return false;
	}	
	// DIE FUNKTION GETYEAR liefert je nach Browser und Javascript Version, Jahreszahlen die ab 1900
	// gezählt werden, oder einfach gleich das korrekte Jahr.
	// Die funktion getDay liefert den Tag der Woche (Sonntag = 0), getDate ist die Fkt. fuer den Tag des Monats.
	
	Year = 1900 + heute.getYear();
	if (Year > 3500) Year = Year - 1900;

	agey = Year - formfield.value ;

	if  (agey  < 18 ) {
		label.className = 'problem';
		disableSubmit();	
		blnAgeOK = false;	
		return false;
	} 
	if (agey  > 18 ) {
		label.className = 'completed';	
		blnAgeOK = true;	
		checkSubmit();
		return true;
	}
	// 18 schon geworden oder wird er noch....
	
	monat = document.getElementById('gebmonat');
	day = document.getElementById('gebtag');
	
	mon = heute.getMonth() + 1;
	test =  monat.value - mon  ;

	if ( test == 0 ) {
	    if (day.value <= heute.getDate() ){
		label.className = 'completed';
		blnAgeOK = true;
		checkSubmit();
		return true;	
	    }
	}
	if (monat.value < mon) {
 	    label.className = 'completed';
	    blnAgeOK = true;	
	    checkSubmit();	
	    return true;
	}
	blnAgeOK = false;
	disableSubmit();
	label.className = 'problem';	
	return false;		   
}
