

/***** BACKGROUND POSITION ****/
// calculate offset between page wrapper and browser lefty side
// position background according so that honey-combs are always on "sides" of page wrapper
//
function bgpos(){
		var arr = $('all').cumulativeOffset();
		var bgp = 'url(/images/main-bg.gif) '+(arr[0] - 106)+'px 170px no-repeat #fff';
		$('pbody').setStyle({background: bgp}); 
}

/***** RETURN KEY PRESSED ON FORMS ****/
//if form not filled, cancel even (=submit form)
function onIviteKeypress(event){
	if(event.keyCode == 13){if(!check_get_invite_form()){Event.stop(event);}}
}
function onLoginKeypress(event){
	if(event.keyCode == 13){doLogin(event);}
}
function onRetrieveKeypress(event){
	if(event.keyCode == 13){if(!check_retrieve_pwd_form()){Event.stop(event);}}
}


/****  SIGN IN INPUT BEHAVIORS ****/
// "appel mobile-me" type
// opactiy = 0.5 => focus
function opacity_half(event){
	if(this.value == ""){
		//subl = this.previous('label').down('span').identify();
		//$(subl).setStyle({opacity: '0.5'} );
	}
 }
// opactiy = 1 => blur
function opacity_full(event){
	if(this.value == ""){
		subl = this.previous('label').down('span').identify();
		$(subl).setStyle({opacity: '1'} );
	}
 }
//  opactiy = 0 => keypress
function opacity_none(event){
 	subl = this.previous('label').down('span').identify();
	$(subl).setStyle({opacity: '0'} );
 }
/* END SIGN INPUT BEHAVIORS */



// function ini()
// triggered on DOM loaded
// initial position background.
// add observers for mouse-over / out on "follow us" block elements.
//
function ini(){
	
		//background position 
		bgpos();
		
		//mouse over - out on follow icons
		$A($$('#follow a')).each(function(s) {
			var arr = (s.id).split('follow-');
			Event.observe(s,'mouseover',function(){s.down(0).src = "./images/icon-follow-"+arr[1]+"-hover.gif";});
			Event.observe(s,'mouseout',function(){s.down(0).src = "./images/icon-follow-"+arr[1]+".gif";});
		});

		//fade effet on login form
		/*
		$A($$('#loginform input')).each(function(s) {
			crid = s.identify();
			//Event.observe(crid,'focus',opacity_half);
			//Event.observe(crid,'blur',opacity_full);
			//Event.observe(crid,'keypress',opacity_none);
		});
		*/
		// gather all link with class poplog
		// Onclick : pop-up overlay login page
		$A($$('#pbody .poplog')).each(function(s) {
				crid = s.identify();
				Event.observe(crid,'click',showSignInPop);
		});
		
		// gather all link with class popinvite
		// Onclick : pop-up overlay invite me page
		$A($$('#pbody .popjoin')).each(function(s) {
				crid = s.identify(); //ahhh crid.
				Event.observe(crid,'click',onJoinNow);
		});
	/*	
		// gather all link with class popprivacy
		// Onclick : pop-up overlay privacy policy page
		$A($$('#pbody .popprivacy')).each(function(s) {
				crid = s.identify();
				Event.observe(crid,'click',showPrivacyPop);
		});
*/
		$A($$('#pbody .popforgotpwd')).each(function(s) {
				crid = s.identify();
				Event.observe(crid,'click',showForgotPwdPop);
		});
		
		Event.observe('gologinbutton', 'click', doLogin);
		
		// enter key pressed on invite form => prevent bug found in Chrome + Safari
		Event.observe('joinnowbutton', 'click', onJoinNow);
		Event.observe('loginform', 'keypress', onLoginKeypress);
		Event.observe('forgotform', 'keypress', onRetrieveKeypress);
		
}
  
  	// DOM Ready listener	
	Event.observe(window, 'load', ini, false);
	Event.observe(window, 'resize', bgpos, false);
	
function init_logm(lvCenter_id){
	var cls = $w($('login_msg').className);
	cls.each(function(s){$('login_msg').removeClassName(s);});
	$('login_msg').hide();$('login_msg').innerHTML = "";
	//$(lvCenter_id).setStyle({ height: '211px' }); 
}	
	
function doLogin(event)
{	
	Event.stop(event);
	//remove all classes from feedbacl - lolwut
	//resize the ligthview center li
	/*
	var lvCenter = $$('li.lv_Center');
	alert(lvCenter);
	if (lvCenter)
	{
		var lvCenter_id = lvCenter[0].identify();
	}
	
	init_logm(lvCenter_id);
	*/
	// no input
	if (($('loginemail').value == '') || ($('password').value == ''))
	{
		$('login_msg').show();
		//$(lvCenter_id).setStyle({ height: '250px' }); 
		$('login_msg').addClassName('ajx_err');
		$('login_msg').innerHTML = "Incorrect email/password combination.";
		return false;
	}

	//some input => proceed request
	// working feedback
	$('login_msg').show();
	//$(lvCenter_id).setStyle({ height: '250px' }); 
	$('login_msg').addClassName('ajx_wrking');
	$('login_msg').innerHTML = "Processing your request.  Please wait.";
		
	// do request
	new Ajax.Request('/user/login', {
		method : 'post',
		parameters: {
			'email': $('loginemail').value,
			'password': $('password').value,
			'remember': $('rememberme').checked
		},
		// Server process ok
		onSuccess: function(transport) 
		{
			//init_logm(lvCenter_id);

			var response = transport.responseText.evalJSON(); 
			// valid login
			if (response.success == "true"){
				$('login_msg').addClassName('ajx_wrking');
				$('login_msg').show();
				//$(lvCenter_id).setStyle({ height: '250px' }); 
				$('login_msg').innerHTML = response.msg;
				$('login_msg').innerHTML = "Login succesful. Redirecting, please wait.";  //OMG
				if (response.redirect == ""){
					url = "/home";
				}else{url = response.redirect;}
					window.parent.location = url;
			}else{
			// not valid login
				$('login_msg').addClassName('ajx_err');
				$('login_msg').show();
				//$(lvCenter_id).setStyle({ height: '250px' }); 
				$('login_msg').innerHTML = response.msg;
			}
		},
		//server process ko
		onFailure: function(transport){
			//init_logm(lvCenter_id);
			$('login_msg').show();
			//$(lvCenter_id).setStyle({ height: '250px' }); 
			$('login_msg').addClassName('ajx_err');
			$('login_msg').innerHTML = "The server encountered a problem. Please try again.";
		}
		
	});
	return true;
}

/**** OVERLAY POP-UPS ****/
/* get invited */
 function showInvitePop(event) {
	Event.stop(event);
	Lightview.show({
		href: 'getinvitwrp',
		rel: 'inline',
		options: {
			autosize: true,
			closebutton:false,
			menubar: false,
			topclose:true
		}
	});
	return false;
}
 
 
 function onJoinNow(event)
 {
	 Event.stop(event);
		Lightview.show({
			href: 'joinnow',
			rel: 'inline',
			options: {
				autosize: true,
				closebutton:false,
				menubar: false,
				topclose:true,
				overflow:'auto'
			}
		});
		
		return false;
 }
 
/* sign in */
function showSignInPop(event) {
	Event.stop(event);
	Lightview.show({
		href: 'loginwrp',
		rel: 'inline',
		options: {
			autosize: true,
			closebutton:true,
			menubar: false,
			topclose:true
		}
	});
	return false;
}
/* Forgot Password */
function showForgotPwdPop(event) {
	Event.stop(event);
	Lightview.show({
		href: 'forgotpwdwrp',
		rel: 'inline',
		options: {
			autosize: true,
			closebutton:false,
			menubar: false,
			topclose:true
		}
	});
	return false;
}

/* END OVELAY POP UPS */



/***** GET INVITED ERROR MANAGEMENT *****/
/* check email is valid : alpha_num +  @ + alphanum + . + alpha(lenght 2..4) */
function check_valid_email($email){
	return (/^[a-z0-9._-]+@+[a-z0-9._-]+\.+[a-z]{2,4}$/i.test($email));
}

/* Error message vars */
var errors_messages={
					  'inviteForm':{
						 'noname':'Please enter your first name',
						 'noemail':'Please enter a valid email',
						 'nolocation':'Please enter a valid postal/zip',
						 'servererror':'An error occurred on the server.  Please try again in a minute.',
						 'joinlname':'&nbsp;',
						 'joinemail':'Your privacy is important to us',
						 'joinpasswrd':'&nbsp;',
						 'invitelocation':'Set your default location'
					  }
					 };



/* Reset the form to non-ernous layout */
function reset_invite_form_content(){
	$A($$('#inviteform input')).each(function(s) {
		$(s.id).value="";
	});	
}

function reset_invite_form_layout(){
	
}

//
// set the class of an input field.
// Normal: off => class=input-txt
// Error . on => class=input-txt-error
function toogle_input_error(inputid,state){
	if(state=='on'){
		$(inputid).addClassName('input-txt-error');
		$(inputid).removeClassName('input-txt-clear');
	}else{
		$(inputid).removeClassName('input-txt-error');
		$(inputid).addClassName('input-txt-clear');	
	}
}

//
// Check the validation of the getinvited form
// foreach input reset all classes to normal, + reset next span value (span = error msg )
// check each input for values
// update class if error, + update next span to error message value
function check_get_invite_form(){
	var ErrorMsg = "";
	if($('joinfname').value==""){ErrorMsg+="<li>Your First Name</li>";}
	if($('joinlname').value==""){ErrorMsg+="<li>Your Last Name</li>";}
	if($('joinemail').value==""){ErrorMsg+="<li>Your Email</li>";}else{
		if(!check_valid_email($('joinemail').value)){ErrorMsg+="<li>A Valid Email</li>";}
	}
	if($('joinpasswrd').value==""){ErrorMsg+="<li>Your Password</li>";
	}else{
		if(($('joinpasswrd').value).length<5){ErrorMsg+="<li>A Password longer than 5 characters.</li>";}
	}
	//if($('hd_default_city').value==""){ErrorMsg+="\t- Your Default City\n";}

	if(!($('joinagreed').checked)){ErrorMsg+="<li>Please read and agree to BeSocial.com's privacy policy and terms of use.</li>";}
	
	if(ErrorMsg != "")
	{ 
		var msg = 'Please fill the mandatory fields. To proceed, we require: <ul class="errors">' + ErrorMsg + "</ul>";
		show_error(msg, "exclaim");
	}
	else{
		var default_city = $('hd_default_city').options[$('hd_default_city').selectedIndex].value;
		new Ajax.Request('/user/new', {
			method : 'post',
			parameters: {
				'email': $('joinemail').value,
				'first_name': $('joinfname').value,
				'last_name': $('joinlname').value,
				'password': $('joinpasswrd').value,
				'confirm_password': $('joinpasswrd').value,
				'default_city_id': default_city
			},
			// Server process ok
			onSuccess: function(transport) 
			{
				//init_logm(lvCenter_id); another Ronan FAIL

				var response = transport.responseText.evalJSON(); 
				// valid login
				if (response.success == "true")
				{
					window.location = ("/home");
				}
				else
				{
				// not valid login -- WTF.
					show_error(response.msg, "exclaim");
				}
			},
			//server process ko
			onFailure: function(transport){
				$('feedback').innerHTML = "The server encountered a problem. Please try again.";
			}
			
		});

	}
}


/* Reset the retieve pasword form fields.*/

function reset_retrieve_pwd(){
	$A($$('#forgotform input')).each(function(s) {
		toogle_input_error(s.id,'off');
		$(s.id).value="";
		$(s.id).next('span').innerHTML = "&nbsp;";
		$(s.id).next('span').removeClassName('txt-error');		
	});	
}

//
// Check the validation of the password retrieve form
function check_retrieve_pwd_form(){
	reset_invite_form_layout();
	reset_login_form_layout();
	var error = 0;
	
	if($('emailforgot').value =="" || !check_valid_email($('emailforgot').value)){
		toogle_input_error('emailforgot','on');
		$('emailforgot').next('span').addClassName('txt-error');
		$('emailforgot').next('span').innerHTML = errors_messages['inviteForm']['noemail'];
		error = 1;
	}
	
	if (error == 0){
		new Ajax.Request('/user/forgotpassword', {
			method : 'post',
			parameters: {
				'email' : $('emailforgot').value
			},
			onSuccess: function(transport) {
				var r = transport.responseText.evalJSON(); 
				if (r.error == "0")
				{
					//close the window
					$('forgotresponse').innerHTML = "<p>We've sent a message to " + $('emailforgot').value + " with instructions on resetting your password.</p>";
					//Lightview.hide();
				}
				else
				{
					//display an error
					$('emailforgot').next('span').addClassName('txt-error');
					$('emailforgot').next('span').innerHTML = r.msg;
				}
			}
		});
		toogle_input_error('emailforgot','off');
		$('emailforgot').next('span').innerHTML = "&nbsp;";
		$('emailforgot').next('span').removeClassName('txt-error');		

		
	}else{return false}	
}


/* Reset the invite form fields. Overwrite browser's field remember value feature so that we dont get
	mobileme like & field value to both write same offset 
*/
function reset_login_form_layout(){
	$A($$('#loginform input')).each(function(s) {
		$(s).value="";
	 });
}



/* observe doc for ligthview event : on open : reset to non erounous+empty login form fields; 
	onclose : reset field values to null
*/
//document.observe('lightview:opened', function(event) {reset_invite_form_layout();reset_login_form_layout();reset_retrieve_pwd();});
//document.observe('lightview:hidden', function(event) {reset_invite_form_content();reset_retrieve_pwd();});
	
