// General Functions
function ExecAjax(url,parameters,func_create,func_success,func_complete,func_error,async){
	var rand = Math.round(Math.random() * 2000);
	parameters=rand+"&"+parameters;
		
	if(async!=true){async=false;}else{async=true;}
	
	var result = new String();
	var objetoAjax = new Ajax.Request(
		url, 
		{
			method: 'POST', 
			encoding: 'ISO-8859-1',
			parameters: parameters, 
			onCreate : function(){if(func_create) eval(func_create);},
			onSuccess : function(){if(func_success) eval(func_success);},
			onComplete: function(transport){
				//alert("Ajax Result: "+transport.responseText);
				eval(func_complete);
			},
			onFailure:  function(){
				if(func_error==null){
					alert("Error: Action has not been executed correctly.");
				} else {
					eval(func_error);
				}
			},
			asynchronous : async
		});
	return result;
}

function OpenLayer(div_id){
	new Effect.Appear(div_id, {duration: 0.25});
}
function CloseLayer(div_id){
	new Effect.Fade(div_id, {duration: 0.25});
}

function SlideLayer(div_id){
	new Effect.BlindDown(div_id, {duration: 0.25});	
}
function UnslideLayer(div_id){
	new Effect.BlindUp(div_id, {duration: 0.25});
}

function ToggleLayer(div_id){
	if($(div_id).visible()){
		new Effect.BlindUp(div_id, {duration: 0.25});
		new Effect.Fade(div_id, {duration: 0.25});
	} else {
		new Effect.BlindDown(div_id, {duration: 0.25});
		new Effect.Appear(div_id, {duration: 0.25});
	}	
}

function ToggleFeaturesLayer(){
	if($('main_features_contents').visible()){
		UnslideLayer('main_features_contents');
		SlideLayer('main_features_expland_link');
		$('less_1').hide();
		$('more_1').show();
	} else {
		UnslideLayer('main_features_expland_link');
		SlideLayer('main_features_contents');
		$('more_1').hide();
		$('less_1').show();
	}	
}

function TogglePresentationLayer(){
	if($('main_presentation_contents').visible()){
		UnslideLayer('main_presentation_contents');
		SlideLayer('main_presentation_expland_link');
		$('less_2').hide();
		$('more_2').show();
	} else {
		UnslideLayer('main_presentation_expland_link');
		SlideLayer('main_presentation_contents');
		$('more_2').hide();
		$('less_2').show();
	}	
}

function ToggleRequirementsLayer(){
	if($('main_requirements_contents').visible()){
		UnslideLayer('main_requirements_contents');
		SlideLayer('main_requirements_expland_link');
		$('less_3').hide();
		$('more_3').show();
	} else {
		UnslideLayer('main_requirements_expland_link');
		SlideLayer('main_requirements_contents');
		$('more_3').hide();
		$('less_3').show();
	}	
}

function toClipBoard(text2copy) {
  if (window.clipboardData) {
    window.clipboardData.setData("Text",text2copy);
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="images/_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}



// -------------------------------------------
// Login, Register and Lost Password Functions
// -------------------------------------------

function ShowRegisterLayer(){
	$('register_error_div').hide();
	$('register_success_div').hide();
	OpenLayer('register_layer');
}

function ShowPasswordLayer(){
	$('password_error_div').hide();
	$('password_success_div').hide();
	OpenLayer('password_layer');
}

function CheckRegister(f){
	$('register_success_div').hide();
	$('register_error_div').hide();
	
	var error_msg;
	var email=f.email.value;
	var username=f.username.value;
	var password=f.password.value;
	var password2=f.password2.value;
	var mail_pattern = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;

	if(!email){
		error_msg="Complete 'Valid E-Mail'.";
	} else if(!email){
		error_msg="Complete forum username.";
	} else if(!email.match(mail_pattern)){
		error_msg="Entered E-Mail is not Valid.";
	} else if(username.length<4){
		error_msg="Username must have, at least, 4 characters.";
	} else if(username.length>20){
		error_msg="Username must have, at most, 20 characters.";
	} else if(!username.match(/^[0-9a-zA-Z_]{4,20}$/)){
		error_msg="Username may have only alphanumeric characters and _.";
	} else if(!password){
		error_msg="Complete 'Password'.";
	} else if(!password2){
		error_msg="Complete 'Repeat Password'.";
	} else if(password!=password2){
		error_msg="Entered Passwords do not Match.";
	} else {
		ExecAjax("actions/register.php","email="+escape(email)+"&username="+escape(username)+"&password="+escape(password),"OpenLayer('register_loading');","","CloseLayer('register_loading'); EvalRegister(transport.responseText);","",true);
	}	
	if(error_msg){
		$('register_error_msg').innerHTML=error_msg;
		setTimeout("OpenLayer('register_error_div');",250);
	}
}

function EvalRegister(response){
	if(response=="OK"){
		OpenLayer('register_success_div');
		$('register_form').reset();
	} else if(response=="KO"){
		$('register_error_msg').innerHTML="E-Mail already in use. Choose another";
		setTimeout("OpenLayer('register_error_div');",250);
	} else {
		$('register_error_msg').innerHTML="Unknown Error. Contact Support";
		setTimeout("OpenLayer('register_error_div');",250);
	}
}

function CheckPasswordRecovery(f){
	$('password_error_div').hide();
	
	var email=f.pass_email.value;
	var error_msg;
	if(!email){
		$('password_error_msg').innerHTML="Complete your E-mail Address";
		setTimeout("OpenLayer('password_error_div');",250);
	} else {
		ExecAjax("actions/email_password_recovery.php","email="+escape(email),"OpenLayer('password_loading');","","CloseLayer('password_loading'); EvalPassRecovery(transport.responseText);","",true);	
	}
	
}

function  EvalPassRecovery(response){
	if(response=="OK"){
		OpenLayer('password_success_div');
		$('password_form').reset();
	} else {
		$('password_error_msg').innerHTML="Entered E-mail has not been found.";
		setTimeout("OpenLayer('password_error_div');",250);
	}	
}

