/**
 * Funktion zum Aufruf aus onsubmit=""
 */
CC.Formcheck.doRegister = function()
{
  try
  {
    var Reg = new CC.Formcheck.Register;
    console.log(Reg);
    if (!Reg) return false;
    return Reg.step1();
  }
  catch (e)
  {
    console.log(e);
    return false;
  }
}

var REGFORM_EDITMODE = false;
var REGFROM_CHECKMAIL = false;

/**
 * FormCheck-Objekt f�r Registrierungsformular
 */
CC.Formcheck.Register = {
	
	Errors: '',
	FocusOn: null,
	YesNo: [],
	
	initialize: function()
	{
	},
	
	step1: function()
	{
		var Err;
		
		try
		{
			var UName = $('username');
			if (UName)
			{
		    	this.checkEmpty(UName, 	'Gib einen Benutzernamen an');
				if (UName.UserExists > 0)
				{
					this.addError('Dieser Benutzername wird bereits verwendet');
			        this.setFocus(UName);
				}
			}
			var Mail = $('email');
			if (Mail)
			{
		    	this.checkEmpty(Mail, 	'Gib deine Emailadresse an');
				if (Mail.UserExists > 0)
				{
					this.addError('Diese Emailadresse wird bereits verwendet');
			        this.setFocus(Mail);
				}
			}
			
			if (false === REGFORM_EDITMODE || '' != $('password_1').value)
			{
			    this.checkEmpty($('password_1'),		'Gib ein Passwort an');
			    this.checkEmpty($('password_2'),		'Gib ein Kontroll-Passwort an');
			    this.checkEquality($('password_1'), $('password_2'), 'Passwort und Kontroll-Passwort sind nicht identisch');
				this.checkLength($('password_1'), 6 ,'Ihr Passwort muss mindestens 6 Zeichen lang sein');
			}
			
			this.checkLength(UName, 6 ,'Ihr Benutzername muss mindestens 6 Zeichen lang sein');
			
//		    this.checkChecked($('accept'), 		'Best�tigen Sie unsere AGB');
//		    this.checkChecked($('datenschutz'), 'Lesen sie unsere Datenschutzbestimmungen');
		}
		catch (e)
		{
			Err = e;
		}
		
		if (Err)
		{
			console.trace();
			console.log(Err);
			return false;
		}
		
		    
		return this.endCheck();	
	},
	

	
	
	checkLength: function(Obj, Length, Msg)
	{
	    if (Obj.value.length < Length)
	    {
			this.addError(Msg);
	        this.setFocus(Obj);
	    }
	},
	
	checkChecked: function(Obj, Msg)
	{
	    if (Obj.checked != true)
	    {
			this.addError(Msg);
	        this.setFocus(Obj);
	    }
	},
	
	checkCheckedOneOf: function(IDs, Msg)
	{
		var OneChecked = false;
		
		for (i = 0; i < IDs.length; i ++)
		{
			if ($(IDs[i]).checked == true)
				OneChecked = true;
		}
		
	    if (false === OneChecked)
	    {
			this.addError(Msg);
	    }
	},
	
	checkEmpty: function(Obj, Msg)
	{
	    if (Obj.value == '')
	    {
			this.addError(Msg);
	        this.setFocus(Obj);
	    }
	},
	
	checkEquality: function(Obj, Obj2, Msg)
	{
		if (Obj.value != Obj2.value)
		{
			this.addError(Msg);
	        this.setFocus(Obj);
		}
	},
	
	checkRadio: function(Objs, Msg)
	{
	    Objs.hasCheck = false;
	    
	    for (i = 0; i < Objs.length; i ++)
	    {
	        if (Objs[i].checked == true)
	        {
	            Objs.hasCheck = true;
	        }
	    }
	    if (false == Objs.hasCheck)
	    {
			this.addError(Msg);
	        this.setFocus(Objs[0]);
	    }
	}
};
CC.Formcheck.Register = $extend(CC.Formcheck.Register, CC.Formcheck.Checks)
CC.Formcheck.Register = new Class(CC.Formcheck.Register);

window.addEvent('domready', function()
{
	if (el = $('username'))
	{
		if (el2 = $('username-alert'))
		{
			el2.setStyle('display', 'none');
		}
		el.UserExists = 0;
		
		el.onkeyup = function()
		{
			if (this.value.length < 3)
			{
			}
			else
			{
				new Request({
           url: '/plugin/de.newmedia-tech/ajax/proofBenutzername.php'
					,data: {proof: this.value}
					,onComplete: this.takeResponse.bind(this)
				}).send();
			}
		}
		
		el.takeResponse = function(Response)
		{
			this.UserExists = parseInt(Response);
			
			if (this.UserExists > 0)
			{
				$('username-alert').setStyle('display', '');
			}
			else
			{
				$('username-alert').setStyle('display', 'none');
			}
		}
	}
	
	
	if (true === REGFROM_CHECKMAIL)
	{
		if (el = $('email'))
		{
			if (el2 = $('email-alert'))
			{
				el2.setStyle('display', 'none');
			}
			el.UserExists = 0;
			
			el.onkeyup = function()
			{
				if (this.value.length < 3)
				{
				}
				else
				{
  				new Request({
             url: '/plugin/de.newmedia-tech/ajax/proofMail.php'
  					,data: {proof: this.value}
  					,onComplete: this.takeResponse.bind(this)
  				}).send();
				}
			}
			
			el.takeResponse = function(Response)
			{
				this.UserExists = parseInt(Response);
				
				if (this.UserExists > 0)
				{
					$('email-alert').setStyle('display', '');
				}
				else
				{
					$('email-alert').setStyle('display', 'none');
				}
			}
		}
	}
});
