

function checkrequire(){
    YD = YAHOO.util.Dom;
	//überprüft die Mail Adresse auf Gültigkeit
    re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
	//überprüft den Usernamen, alle Zeichen außer Leerzeichen mind. 4 Zeichen, max. 29 Zeichen.
	reUser = /^\S{4,29}/g;
	//alle Input Felder die die Klasse require beinhalten werden überprüft.
	require = YD.getElementsByClassName('require');
	YAHOO.util.Event.addBlurListener(require, checkform);
	
	//errorBox = document.getElementById('errorBox');
	//profilStatus = document.getElementById('profilStatus');
}

function setErrorList(el,label,addText){
		YD.setStyle(label, 'color', 'red');
		YD.setStyle(el, 'border', '1px solid red');	
		
		if(execForm == 'kommentarform'){
			YD.setStyle("CommentErrorBox", 'display', 'block');
			YD.setStyle("CommentProfilStatus", 'display', 'none');
		}else{
			YD.setStyle("errorBox", 'display', 'block');
			YD.setStyle("bobRegErrorBox", 'display', 'block');
			}
		if(YAHOO.util.Dom.inDocument('ProfilTabs')){
			YD.setStyle('profilStatus', 'display', 'none');	
		}

		newError = document.createElement('li');
		newErrorText = document.getElementById('error_'+el.id).innerHTML+addText;
		newError.appendChild(document.createTextNode(newErrorText));
		document.getElementById('errorList').appendChild(newError);							
		allchecked = false;		
	}
	
function setRed(el,label){
		YD.setStyle(label, 'color', 'red');
		YD.setStyle(el, 'border', '1px solid #ff0000');
		allchecked = false;	
	}	
	
function setNormal(el,label){
		YD.setStyle(label, 'color', '');
		YD.setStyle(el, 'border', '1px solid #7f9db9');	
	}	
	
function removeErrorList(){	
 //Alle vorhanden Errors aus der Liste entfernen
	var errorList = YD.getChildren('errorList');
	for(i=0; i < errorList.length; i++ ){
		document.getElementById("errorList").removeChild(errorList[i]);
	 }	
}
	
	
var dbcheck = true; 
var execForm;
var ExtendedAction;

//DB Ckeck nach Username und Emailadresse
var checkDB = {
          ajax_callback: {
                success: function(o) {
					if(o.responseText == 'ok'){
						allchecked = true;	
						YD.setStyle("errorBox", 'display', 'none');
                        YD.setStyle("bobRegErrorBox", 'display', 'none');
					}else{
						document.getElementById(o.responseText).value = '';
						var temp = document.getElementById(o.responseText);
						prev = YD.getPreviousSibling(temp);  						
						removeErrorList();						
						setErrorList(temp,prev,ValidateErrorText)						
					}
                },
				
				start: function(type, args){ 
					YD.setStyle('loading', 'display', 'block');
				},
				
				complete: function(type, args){ 
					YD.setStyle('loading', 'display', 'none');
				},				
                
                failure: function(o) {
                  alert('Error: ' + o.status + " " + o.statusText );
                  stop();
                }
            }
    };
	
//Antwort Seite einblenden, sobald Anmeldung verschickt wurde	
var sendReq = {
          ajax_callback: {
                success: function(o) {
					if(o.responseText == 'ok'){
					
						if(YAHOO.util.Dom.inDocument("profilStatusText") || YAHOO.util.Dom.inDocument("profilStatusTextBobReg")){
							window.scrollTo(0,0);
							if (document.getElementById('paula_id') != null){ //if first registration step
								YD.setStyle('profilStatusTextBobReg', 'display', 'block');
							}else{
								var radio = document.getElementsByName('salutation');
	                         	var salutation = '';
	                            for (var i = 0; i < radio.length; i++) {
	                               	if (radio[i].checked)
	                                salutation = radio[i].value;
	                            }
		                 		document.getElementById('salutationResponse').innerHTML = ValidateErrorTextSalut+ salutation +' '+document.getElementById('name').value+',';           
								YD.setStyle('profilStatusText', 'display', 'block');
							}							
							
						}
						
						if(YAHOO.util.Dom.inDocument("profilStatusDynText")){
							document.getElementById('profilStatusDynText').innerHTML = ValidateStatusText1+document.getElementById('e-mail-NoComparison').value+ValidateStatusText2;
						}
						
						if(YAHOO.util.Dom.inDocument("pwform")){
							if (ExtendedAction == 'send_uid'){
								document.getElementById('profilStatusDynText2').innerHTML = ValidateForgottenUsername;
							}else{
								document.getElementById('profilStatusDynText2').innerHTML = ValidateForgottenPW;
							}
							
						}						
						
						hideForm = YD.getElementsByClassName('hideIt_'+execForm);					
						YD.setStyle('profilStatus', 'display', 'block');	
						YD.setStyle(hideForm, 'display', 'none');						
					}else{
						if(YAHOO.util.Dom.inDocument("pwform")){
							temp = document.getElementById('E-mail_PW')
							prev = YD.getPreviousSibling(temp); 
							removeErrorList();
							setErrorList(temp, prev,ValidateForgottenPWError);
						}else if(execForm == 'kommentarform'){
							document.getElementById('textareaComment').value = "";
							YD.setStyle("CommentProfilStatus", 'display', 'block');
							hideForm = YD.getElementsByClassName('hideIt_'+execForm);					
							YD.setStyle(hideForm, 'display', 'none');
							
							var oEditor = FCKeditorAPI.GetInstance('textareaComment') ;
							oEditor.SetData("");
							triggerEvent(eventsURL, docID, docTitle);						
						}else if(execForm == 'bobReg' && YAHOO.util.Dom.inDocument("ProfilTabs")){
							YD.setStyle('profilStatus', 'display', 'block');
							location.reload();							
						}else if(o.responseText == 'nok'){
							YD.setStyle('RegError', 'display', 'block');
						}else if(o.responseText == 'notallowed'){
							YD.setStyle('RegErrornNtallowed', 'display', 'block');
						}else if(YAHOO.util.Dom.inDocument("AskBobText")){
							YD.setStyle('profilStatus', 'display', 'block');
							YD.setStyle('AskBobText', 'display', 'block');
							hideForm = YD.getElementsByClassName('hideIt_'+execForm);
							YD.setStyle(hideForm, 'display', 'none');	
						}else if(execForm == 'bobReg0'){
							if(o.responseText != 'ok'){
									var currentPassword = document.getElementById("password-profil_old");
									var newPassword = document.getElementById("password-profil");
									var newPasswordConfirm = document.getElementById("password-profilCheck");
									
									YD.setStyle(currentPassword, 'border', '1px solid #ff0000');
									YD.setStyle(newPassword, 'border', '1px solid #ff0000');
									YD.setStyle(newPasswordConfirm, 'border', '1px solid #ff0000');
									
									YD.setStyle(YD.getPreviousSibling(currentPassword), 'color', 'red');
									YD.setStyle(YD.getPreviousSibling(newPassword), 'color', 'red');
									YD.setStyle(YD.getPreviousSibling(newPasswordConfirm), 'color', 'red');
									
							}
						}else if(execForm == 'bobReg6'){
							window.location.href = profiNewsPath + "?action=logout";
						}else if(execForm == 'bobRegSecStep'){
							var regex = /http/;
							if (regex.test(o.responseText)){
								window.location.href = o.responseText;
							}
						}else{
							YD.setStyle('profilStatus', 'display', 'block');		
							YD.setStyle(profilStatus, 'display', 'block');
							YD.setStyle(errorBox, 'display', 'none');
							hideForm = YD.getElementsByClassName('hideIt_'+execForm);					
							YD.setStyle(hideForm, 'display', 'none');								
						}						
					}
                },
				
				//blendet das Loading gif ein, wenn ein Bild hochgeladen wird.
				start: function(type, args){ 
					if(execForm == 'bobReg2'){
						YD.setStyle('loading', 'display', 'block');
					}
				},
				//blendet das Loading gif aus, und gibt erfolgsmeldung zurück.
				uploadComplete: function(type, args){ 
					if(execForm == 'bobReg2'){	
						YD.setStyle('profilStatusPic', 'display', 'block');	
						YD.setStyle('loading', 'display', 'none');
						newDate = new Date();
						timestamp = newDate.getTime();
						oldJPG = document.getElementById('profilPicSrc').src
						
						//ändert die Bild SRC, damit das neue Bild direkt angezeigt wird.
						document.getElementById('profilPicSrc').src = oldJPG+'&'+timestamp;
						document.getElementById('profilPicHeaderSrc').src = oldJPG+'&'+timestamp;
					}
				},	
				
                failure: function(o) {
                  alert('Error: ' + o.status + " " + o.statusText );
                  stop();
                }
            }
    };
	


function checkform(){
	
 	if(YAHOO.util.Dom.inDocument("country")){
		country = document.getElementsByName("country")[0].value;
	}
	
	 allchecked = true;
				prev = YD.getPreviousSibling(this); 
				next = YD.getNextSibling(this); 
				UserCheckCM = YAHOO.util.Connect
				UserCheckCM.startEvent.subscribe(checkDB.ajax_callback.start); 
				UserCheckCM.completeEvent.subscribe(checkDB.ajax_callback.complete); 					
				
				if(this.name == 'password-profilCheck' && this.value == '' && document.getElementById('password-profil').value == ''){
						password = document.getElementById('password-profil');
						PassPrev = YD.getPreviousSibling(password);  
						setNormal(this, prev);
						setNormal(password, PassPrev);
				}else if(this.value == ''){
						setErrorList(this,prev,'');
						setRed(this,prev);
				}else if(this.value!=""){
					if(this.name.indexOf('email')==0){
						checkMail = this.value.match(re);
						var email = document.getElementById('email');
						var emailcheck = document.getElementById('emailcheck');
						
						YD.removeClass(emailcheck.parentNode,'inactive');	
						
						setNormal(this, prev);
						
						//überprüft, ob die Mail Adresse schon vorhanden ist.
						if(this.name == 'email' && this.value == checkMail){
							var c = YAHOO.util.Connect.asyncRequest('GET', '/cgi-bin/user_check.pl?email='+email.value+'&country='+country, checkDB.ajax_callback);						
						}
						
						if(this.value != checkMail || this.value != email.value && checkMail){
							removeErrorList();
							setErrorList(this,prev,ValidateErrorTextPassword);
							this.value = '';
							setRed(this,prev);	

					   }else{
							setNormal(email, prev);	
							setNormal(emailcheck, prev);	
						}

						if(!checkMail){
							removeErrorList();
							setErrorList(this,prev,'');
							this.value = '';
							setRed(this,prev);	
					   }else{
							setNormal(email, prev);	
							setNormal(emailcheck, prev);	
						}
						
					}else if(this.name.indexOf('e-mail')==0){
						checkMail = this.value.match(re);
						if(this.value != checkMail){
							setRed(this,prev);
						}else{
							setNormal(this, prev);						
						}						
					}else if(this.name.indexOf('username')==0){
						checkUser = this.value.match(reUser);
						username = this.value;
						if(this.value != checkUser){
							removeErrorList();
							setErrorList(this,prev,ValidateErrorTextUsername)	
							setRed(this,prev);
							this.value = '';							
						}else{
							setNormal(this, prev);
							
							//überprüft, ob der Username schon vorhanden ist.
							var c = YAHOO.util.Connect.asyncRequest('GET', '/cgi-bin/user_check.pl?username='+username+'&country='+country, checkDB.ajax_callback);							
							}
						
					}else{
						removeErrorList();
						setNormal(this, prev);
					}
					
					if(this.name == 'password'){
						if(this.value.length < 6){
							removeErrorList();
							setErrorList(this, prev,ValidateErrorTextTooShortPassword);
							setRed(this,prev);	
							
							this.value = '';
						}else{
							YD.removeClass(document.getElementById('passwordcheck').parentNode,'inactive');	
							setNormal(this, prev);
						}
					}
					
					if(this.name == 'passwordcheck'){
						var password = document.getElementById('passwordReg');
						var PassPrev = YD.getPreviousSibling(password); 
						if(this.value != password.value){
							removeErrorList();
							setErrorList(this, prev,ValidateErrorTextPassword);
							setRed(this,prev);	
							setRed(password,PassPrev);
							
							password.value = '';
							this.value = '';
							
						}else{
							setNormal(this, prev);
							setNormal(password, PassPrev);							
						}
					}
					
					if(this.name == 'password-profil' && this.value != ''){
						if(this.value.length < 6){
							setErrorList(this, prev,ValidateErrorTextTooShortPassword);
							setRed(this,prev);	
							this.value = '';
						}
					}
					
					if(this.name == 'password-profilCheck' && this.value != ''){
						var password = document.getElementById('password-profil');
						PassPrev = YD.getPreviousSibling(password);  
						if(this.value != password.value){
							setErrorList(this, prev,ValidateErrorTextPassword);
							setRed(this,prev);	
							setRed(password,PassPrev);
							password.value = '';
							this.value = '';
						}
					}
				}
}


var sendFormConnection = null;

sendForm = function(FormName, Extended){
    YD = YAHOO.util.Dom;  
 	allchecked = true;
 	execForm = FormName;
 	ExtendedAction = Extended;
 
	sendReqCM = YAHOO.util.Connect
	sendReqCM.startEvent.subscribe(sendReq.ajax_callback.start); 
	sendReqCM.uploadEvent.subscribe(sendReq.ajax_callback.uploadComplete); 	
 
 	//nur die Felder im Formular checken, dass auch abgeschickt wird.
 	require = YD.getElementsByClassName('require','',FormName);

	removeErrorList();
 
			for(i=0; i < require.length; i++ ){
				prev = YD.getPreviousSibling(require[i]);  
				next = YD.getNextSibling(require[i]); 
				
				if(require[i].type != 'checkbox'){
					// neccecery for the fckeditor in the send comments form
					if(require[i].id == 'textareaComment'){
						var oEditor = FCKeditorAPI.GetInstance('textareaComment') ;
						require[i].value = oEditor.GetData();
						var oDOM = oEditor.EditorDocument ;
						var iLength ;
						// The are two diffent ways to get the text (without HTML markups).
						// It is browser specific.
						if ( document.all ){            // If Internet Explorer.
							iLength = oDOM.body.innerText.length ;
						}else{                           // If Gecko.
							var r = oDOM.createRange() ;
						    r.selectNodeContents( oDOM.body ) ;
						    iLength = r.toString().length ;
						}
						if(iLength > 0 ){
							require[i].value = oEditor.GetData();
						}else{
							require[i].value = '';
						}
					}
					
					if(require[i].name == 'password-profilCheck' && require[i].value == '' && document.getElementById('password-profil').value == ''){
						password = document.getElementById('password-profil');
						PassPrev = YD.getPreviousSibling(password); 
						setNormal(require[i], prev);
						setNormal(password, PassPrev);	
					}else if(require[i].value == ''){
						setErrorList(require[i], prev,'');
					}else if(require[i].value!=""){
						if(require[i].name.indexOf('email')==0){
							checkMail = require[i].value.match(re);
							var email = document.getElementById('email');
							var emailcheck = document.getElementById('emailcheck');
							if(require[i].value != checkMail || emailcheck.value != email.value){
								setErrorList(require[i], prev,'');
							}else{
								setNormal(require[i], prev);					
							}
							
						}else if(require[i].id.indexOf('e-mail')==0){
							checkMail = require[i].value.match(re);
							if(require[i].value != checkMail){
								setErrorList(require[i], prev,'');							
							}else{
								setNormal(require[i], prev);					
							}								
						}else if(require[i].name == 'password-profilCheck' && require[i].value != ''){
							var password = document.getElementById('password-profil');
							PassPrev = YD.getPreviousSibling(password);  
							if(require[i].value != password.value){
								setRed(password,PassPrev);									
								password.value = '';
								require[i].value = '';
								setErrorList(require[i], prev,'');	
								
							}else{
								setNormal(require[i], prev);					
							}	
						}else{
							setNormal(require[i], prev);
						}
					}
				}
				
				if(require[i].type == 'checkbox'){
					if(require[i].checked == false){
						setErrorList(require[i], next,'');						
					}else if(require[i].checked == true){
						YD.setStyle(next, 'color', '');	
					}
				}
			}
			
		if(dbcheck == false){
			allchecked = false;	
			
			var username = document.getElementById('username').value;
			var email = document.getElementById('email').value;
			var c = YAHOO.util.Connect.asyncRequest('GET', '/cgi-bin/user_check.pl?email='+email+'&username='+username, checkDB.ajax_callback);
		}
	if(allchecked){
		YD.setStyle("errorBox", 'display', 'none');

		if(YAHOO.util.Dom.inDocument("CommentErrorBox")){
			YD.setStyle("CommentErrorBox", 'display', 'none');
		}		
		
		var ImperiaForm = document.getElementsByName(FormName)[0].action.value;
		
		//alert("ImperiaForm: " + ImperiaForm);
		
		formEl = YAHOO.util.Dom.get(FormName);
		
		var isUpload = false;
		var enctype = formEl.getAttribute('enctype');
		
		//Gibt an, ob das formular ein File-Upload entält.
		if(enctype && enctype.toLowerCase() == 'multipart/form-data'){
			isUpload = true;
		}
		
		//zwei sendbuttons für ein Formular. Falls Benutzername vergessen -> Extended ist gesetzt
		if (Extended == 'send_uid'){
			document.getElementsByName(FormName)[0].forgotten.value = 'uid';
		}
		
		YAHOO.util.Connect.setForm(FormName, isUpload);
		YAHOO.util.Connect.uploadEvent.subscribe(sendReq.ajax_callback.uploadComplete);
		if(YAHOO.util.Connect.isCallInProgress(sendFormConnection) != true){
			if(typeof(ImperiaForm) == 'undefined'){
				//normale Formulare werden über die FormAction abgeschickt.
				var method = "POST";
				try{
					if(formEl.method){
						method = formEl.method.toUpperCase();
					}
				}catch(err){}
				sendFormConnection = YAHOO.util.Connect.asyncRequest(method, document.getElementsByName(FormName)[0].action, sendReq.ajax_callback);
			}else{
				//Imperia Formulare haben die Action in einem Hidden Input feld.
				sendFormConnection = YAHOO.util.Connect.asyncRequest('POST','?', sendReq.ajax_callback);	
			}
		}
	}
 return false;// fuer Link in IE6
 
}

 

