var interval;
var phoneIsRequired=false;
var tosIsRequired=false;
var canCloseSignIn=false;

$(function(){
	
	// Always have an error message parameter exist in case we want to send an error message from the URL.
	var error_msg = getURLParam('error');
	//while( error_msg.indexOf('%20' )+1) error_msg=error_msg.replace(/%20/,' ');
	if (error_msg == 'email_exists') {
		$('#error_type').append('Email:')
		$('#error_action').append('register using a different email address.');
		$('#error_action').attr('href','/register')
		$('#error_msg span').append('The email address entered is already registered. Please sign-in below or ');
  	$('.error-block').fadeIn('fast');
	}
		
	
  $('.signin_form').submit(function() {
	  clear_all_text_default_fields();
	  $('#searchspinner').remove();
    if( $('#errors_signin').is(':visible') )$('#errors_signin').hide();
    
    var e = jQuery.trim($('#email').val());
    var p = jQuery.trim($('#password').val());
    if (e=='') { addErrMsg( '#email', 'emerror' ); }
    else { rmErrMsg( '#email', 'emerror' ); }

    if (p=='') { addErrMsg( '#password', 'pwerror' ); }
    else { rmErrMsg( '#password', 'pwerror' ); }
    
    if (e!='' && p!='') {
      interval = shield('signin_btn', null, 'Working', 'Working');
      $.post('/users/login', $('#signin_form').serialize(), function(d,t) {
        var resp = eval('('+d+')');
        if (resp.result=='success') {
          if (resp.redirect_url && resp.redirect_url!='')
            parent.window.location.href = resp.redirect_url;
            //window.location.href = resp.redirect_url;
          else
            if ((location == '/sign-in') || (location == '/register')) {
              window.location.href = '/'              
            } else {
              location.reload(true);
            }
        } else {
          clearInterval(interval); $('#searchspinner').remove();
          $('#signin_btn').removeAttr('disabled');
        	$('#signin_btn').attr('value','Sign-in');
          $('#errors_signin').html(resp.error_text);
          $('#errors_signin').fadeIn('fast');
        }
      });
    }
    return false;
  });
  
  $('form#user_info').submit(function(){
    clear_all_text_default_fields();
    $('#searchspinner').remove();
    if( $('#errors_register').is(':visible') )$('#errors_register').hide();
    
    var userInfoFieldsValid = validateUserInfoFields();
    var extraFieldsValid = validateExtraFieldSpecFields(1);
    
    if (userInfoFieldsValid && extraFieldsValid) {
      interval = shield('user_passenger_info_submit', null, 'Working', 'Working');
	
      $.post('/register-user', $('#user_info').serialize(), function(r) {
        if (r.status=='success') {
          _gaq.push(['_trackPageview','/register/success']);
          if ((location == '/sign-in') || (location == '/register')) {
            window.location.href = "/";
          } else {
            if (r.redirect_url && r.redirect_url!='') {
              window.location.href = r.redirect_url;
            } else {      
              location.reload(true);
            }
          }
        } else {
          clearInterval(interval); $('#searchspinner').remove();
          $('#user_passenger_info_submit').removeAttr('disabled');
          if( $('#no_thanks_btn').length )
            $('#user_passenger_info_submit').attr('value','Accept');
          else
        	  $('#user_passenger_info_submit').attr('value','Register');
					// If the user is already registered, redirect to the sign-in page and send the error message
					if(r.status == "error_email_exists") {
						window.location.href = r.redirect_url + '?error=email_exists';
					} else {
        		$('#errors_register').html(r.error_text);
          	$('#errors_register').fadeIn('fast');
					}
        }
      }, "json");
    }
    return false;
  });
  
  $('#email').focus();
});

function getURLParam(attr)
{
	attr = attr.replace(/<\/?[^>]+(>|$)/g, "");
	var regexS = "[\\?&]"+attr+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec(window.location.href);
	if(results == null)
		return "";
	else
	return results[1];
}


