var CurrentImage = null;
var ImageBefore = null;

function IU_LoadNewImage(image){
	if(image!=''){
		ImageBefore = CurrentImage;
		CurrentImage = image;
		if(ImageBefore != CurrentImage){
			window.addEvent('domready', function(){
				$('UserImage').src=CJImagePath + CurrentImage;
			});
		}
	}
}



window.addEvent('domready', function(){
		
	/* AJAX BEGIN */
	var ajax1 = new CJAjax(CJPath + 'register/ajax/',
		{
			OnFailure: null,
			OnComplete: null,
			OnTrue: function(){
				// Setzen
				$('UsernameExists').value = 1;
				
				// Slider bekommen und machen
				var Slider = v.GetSlider(v1);
				Slider.element.innerHTML = 'Benutzername existiert bereits.';
				Slider.stop();
				if(!Slider.open){
					Slider.slideIn();
				}
				SetStyle($('CJUsername'), false);
			},
			OnFalse: function(){
				$('UsernameExists').value = 0;
			}
		}
	);
	
	ajax1.AddParameter('call', 'UsernameExists');
	ajax1.AddParameter('username', '');
	
	var ajax2 = new CJAjax(CJPath + 'register/ajax/',
		{
			OnFailure: null,
			OnComplete: null,
			OnTrue: function(){
				// Setzen
				$('EmailExists').value = 1;
				
				// Slider bekommen und machen
				var Slider = v.GetSlider(v4);
				Slider.element.innerHTML = 'E-Mail-Adresse existiert bereits.';
				Slider.stop();
				if(!Slider.open){
					Slider.slideIn();
				}
				SetStyle($('CJEmail'), false);
			},
			OnFalse: function(){
				$('EmailExists').value = 0;
			}
		}
	);
	
	ajax2.AddParameter('call', 'EmailExists');
	ajax2.AddParameter('email', '');
	
	
		
	
	/* END AJAX */
	
	/* ANDERE FUNKTIONEN */
	
	// Style setzen
	function SetStyle(Element, valid){
		if(valid){
			Element.style.backgroundColor='#FFFFFF';
			Element.style.color='#4D610C';
		}else{
			Element.style.backgroundColor='#F89E00';
			Element.style.color='#FFF';
		}
	}
	
	function dGetCurrentPendingImage(){
		alert('asd');
		//ajax3.CallFull();
	}
	
		
	/* ENDE */
	
	/* VALIDATION START */
	
	// Objekt erstellen
	var v = new CJValidator();					// Ohne Validbox

	// einen Length Validator erstellen
	var v1 = new CJValidationCode(
		'CJUsername', 
		'Length', 
		{
			OnCheck: null, 
			OnValid: function(Element){			
				SetStyle(Element, true);
			}, 
			OnInvalid: function(Element){
				SetStyle(Element, false);
			}
		},
		{
			Min: 3, 
			Max: 15
		}
	);

	// An einen Trigger binden
	v.BindValidator(			
		v1, 
		'CJUsername', 
		'keyup', 
		{
			MessageBoxID: 'CJUsername_Error',
			MessageValid: '',
			MessageInvalid: 'Bitte mindestens 3 Zeichen.',
			UseSlideEffect: true
		}
	);
	
	// Emailvalidator
	var v4 = new CJValidationCode('CJEmail', 'Email',
		{
			OnCheck: function(Element){
				// direkt den validator ausführen ausführen
				
			},
			OnValid: function(Element){
				// AJAX prüfung
				SetStyle(Element, true);
				//v.ValidateThis(v2, true);
			},
			OnInvalid: function(Element){
				SetStyle(Element, false);
			}
		}
	);
	
	// Einen Emailvalidator erstellen + binden
	v.BindValidator(
		v4,
		'CJEmail',
		'keyup',
		{
			MessageBoxID: 'CJEmail_Error',
			MessageValid: '',
			MessageInvalid: 'Keine E-Mail-Adresse...',
			UseSlideEffect: true
		}	
	);

	// Emails gleich
	var v2 = new CJValidationCode(
		'CJEmail2', 
		'Compare', 
		{
			OnValid: function(Element){
				SetStyle(Element, true);
			},
			OnInvalid: function(Element){
				SetStyle(Element, false);
			}
		},
		{
			Element: $('CJEmail')
		}
	);
	
	// Emails gleich binden
	v.BindValidator(
		v2,
		'CJEmail2',
		'keyup',
		{
			MessageBoxID: 'CJEmail2_Error',
			MessageValid: '',
			MessageInvalid: 'Stimmt nicht überein...',
			UseSlideEffect: true
		}
	);

	// Passwortlänge
	v.BindValidator(
		new CJValidationCode(
			'CJPassword',
			'Length',
			{
				OnCheck: function(Element){
					// gucken ob die beiden Passwörter immer noch passen
				},
				OnValid: function(Element){
					SetStyle(Element, true);
					//v.ValidateThis(v3, true);
				},
				OnInvalid: function(Element){
					SetStyle(Element, false);
				}
			},
			{
				Min: 6,
				Max: 250
			}
		),
		'CJPassword',
		'keyup',
		{
			MessageBoxID: 'CJPassword_Error',
			MessageValid: '',
			MessageInvalid: 'bitte mindestens 6 Zeichen.',
			UseSlideEffect: true
		}
	);

	var v3 = new CJValidationCode(
		'CJPassword2', 
		'Compare', 
		{
			OnValid: function(Element){
				SetStyle(Element, true);
			},
			OnInvalid: function(Element){
				SetStyle(Element, false);
			}
		},
		{
			Element: $('CJPassword')
		}
	);

	// Passwörter gleich
	v.BindValidator(
		v3,
		'CJPassword2',
		'keyup',
		{
			MessageBoxID: 'CJPassword2_Error',
			MessageValid: '',
			MessageInvalid: 'Stimmt nicht überein...',
			UseSlideEffect: true
		}
	);
	
	/* ENDE */
	
	
	/* EVENT HANDLER FUNKTIONEN */
	
	function ValidateRegForm(){
		ajax1.EditParameter('user', $('CJUsername').value);
		ajax1.CallTrueFalse();
		
		ajax2.EditParameter('email', $('CJEmail').value);
		ajax2.CallTrueFalse();
		
		var valid = v.Validate(true);
		if(valid && $('UsernameExists').value == '0' && $('EmailExists').value == '0'){
			//$('RegisterForm').style.display='none';
			
			RegFormSlider.slideOut();
			//RegFormSlider.slideOut();
			SendingSlider.slideIn();
			
			// AJAX CALL
			var register = new CJAjax(CJPath + 'register/ajax/',
			{
				OnFailure: null,
				OnComplete: function(c){
					
				},
				OnTrue: function(){
					location.href=CJPath + 'register/successfull/';
				},
				OnFalse: function(){
					// javascript muss an sein
					//alert('Ooops, irgendwas ist da schief gegangen... Probier es nochmal aus oder schreib uns ne Email');
				}
			});
			register.AddParameter('call', 'DoRegistration');
			register.AddParameter('CJUsername', $('CJUsername').value);
			register.AddParameter('CJPassword', $('CJPassword').value);
			register.AddParameter('CJPassword2', $('CJPassword2').value);
			register.AddParameter('CJEmail', $('CJEmail').value);
			register.AddParameter('CJEmail2', $('CJEmail2').value);
			register.AddParameter('LPID', $('CJUserListingPage').value);
			register.AddParameter('LPName', $('CJUserListingPage_Name').value);		
	
			
			// send
			register.CallTrueFalse();
			
			
			
		}else{
			// anzeigen
			if($('EmailExists').value == '1' && valid){
				// slide
				var Slider = v.GetSlider(v4);
				Slider.stop();
				Slider.slideIn();
				Slider.element.innerHTML = 'E-Mail-Adresse existiert bereits!'
			}
			if($('UsernameExists').value == '1' && valid){
				// slide
				var Slider = v.GetSlider(v1);
				Slider.stop();
				Slider.slideIn();
				Slider.element.innerHTML = 'Benutzername existiert bereits!'
			}
		}
	}
	
	/* ENDE */
	 
	/* TASTATUR EVENTS */
	
	// Username
	$('CJUsername').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	$('CJUserListingPage_Name').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	$('CJEmail').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	$('CJEmail2').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	$('CJPassword').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	$('CJPassword2').addEvent('keypress', function(code){
		var c = kc(code);
		if(c==13){
			ValidateRegForm();
		}
	});
	
	// Beim change des Benutzers ajax prüfen
	$('CJUsername').addEvent('change', function(){
		// AJAX Abfrage erstellen und starten
		ajax1.EditParameter('username', $('CJUsername').value);
		ajax1.CallTrueFalse();
	});
	
	// Beim change des Benutzers ajax prüfen
	$('CJEmail').addEvent('change', function(){
		// AJAX Abfrage erstellen und starten
		ajax2.EditParameter('email', $('CJEmail').value);
		ajax2.CallTrueFalse();
	});
	
	
	/* ENDE */
	
	/* CLICK EVENTS */
	
	// Validation binden
	$('CJSubmit').addEvent('click', function(c){
		c = new Event(c);
		ValidateRegForm();
		c.stop();
	});
	
	/* ENDE */
		
	/* BEGIN CONTENT SLIDER */
	
	var RegFormSlider = new Fx.Slide('RegisterForm');
	var SendingSlider = new Fx.Slide('Sending').hide();
	SendingSlider.element.style.display='block';
	

		

	
	
	
});