function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function getValueFromCookie(the_cookie, value)
{
  v_start = the_cookie.indexOf(value + "=");

  if (v_start != -1)
  {
    v_start = v_start + value.length + 1;
    v_end = the_cookie.indexOf("&", v_start);

    if ( v_end == -1) v_end = the_cookie.length;
    return unescape(the_cookie.substring(v_start, v_end));
  }

  return "";
}

function checkExistByFacebookId(token)
{
  $.ajax({
    url: 'https://graph.facebook.com/me?access_token=' + token,
    global: false,
    type: "GET",
    data: ({}),
    dataType: "jsonp",
    async: false,
    success: function(data){
      checkFacebookExist(data)
    }
  })
}

function refreshPage(url)
{
  if (url)
  {
    window.location = url;
  }
  else
  {
    window.location = MAINURL;
  }
}
function popupFacebookSignupOptions(facebook_data)
{
  $('#facebook_id_link').val(facebook_data.id);
  $('#facebook_id_new').val(facebook_data.id);

  $('#new_first_name').val(facebook_data.first_name);
  $('#new_last_name').val(facebook_data.last_name);

  // check username if already exist, if not generate a non-existing username
  var initial_username = facebook_data.first_name.toLowerCase();

  var generated_username = $.ajax({
    url: ADMINURLAJAX,
    global: false,
    type: "POST",
    data: ({
      action: 'generate_username',
      initial_username : initial_username
    }),
    dataType: "text",
    async: false,
    success: function(msg){
    }
  }).responseText;

  $('#facebook_new_username').val(generated_username);
  $('#facebook_new_password').val(facebook_data.id);

  $('#hsm-signup-facebook-popup').dialog('open');
}

function popupUploadPic()
{
  $('#hsm-signup-upload-popup').dialog('open');
}

function checkFacebookExist(facebook_data)
{
  var result = $.ajax({
    url: ADMINURLAJAX,
    global: false,
    type: "POST",
    data: ({
      action: 'facebook_exist_check',
      facebook_id : facebook_data.id
    }),
    dataType: "text",
    async: false,
    success: function(msg){
    }
  }).responseText;

  if (result == 'false')
  {
    popupFacebookSignupOptions(facebook_data);
  }
  else if (result == 'true')
  {
    // Login user if FB is already linked
    // 1. Redirect to members page
    window.location = MAINURL;
  }
}

function showFacebookIntegrateForm(form)
{
  if (form == 'link')
  {
    $('#facebook-popup-link').css('display', 'block');
    $('#facebook-popup-new').css('display', 'none');
  }
  else if (form == 'new')
  {
    $('#facebook-popup-link').css('display', 'none');
    $('#facebook-popup-new').css('display', 'block');
  }
}

function checkUsernameExist(username)
{
  var result;

  result = $.ajax({
    url: ADMINURLAJAX,
    global: false,
    type: "POST",
    data: ({action: 'check_exist_username', username : username}),
    dataType: "text",
    async: false,
    success: function(msg){
    }
  }).responseText;

  return result;
}

function checkCAPTCHA(captcha)
{
  var result;

  result = $.ajax({
    url: ADMINURLAJAX,
    global: false,
    type: "POST",
    data: ({action: 'check_captcha', captcha : captcha}),
    dataType: "text",
    async: false,
    success: function(msg){
    }
  }).responseText;

  return result;
}

function checkEmailExist(email)
{
  var result;

  result = $.ajax({
    url: ADMINURLAJAX,
    global: false,
    type: "POST",
    data: ({action: 'check_exist_email', email : email}),
    dataType: "text",
    async: false,
    success: function(msg){
    }
  }).responseText;

  return result;
}

function ajaxLoginFacebookLink()
{
  var form = $('#facebook_link_form');

  $.post(
    ADMINURLAJAX,
    form.serialize(),
    function(result) {
      if (result == 'fail')
      {
        $('#field_error_link_username').css('display', 'block');
      }
      else if (result == 'exist')
      {
        $('#field_error_link_username').css('display', 'block');
        $('#field_error_link_username').html('HSM account already linked.');
      }
      else
      {
        $('#facebook-popup-link').html(result);
        setTimeout('refreshPage()', 3000);
      }
    }
  );
}

function ajaxLoginFacebookNew()
{
  var form = $('#facebook_new_form');
  var form_error = false;

  $('.hsm-field-error').css('display', 'none');
  
  var username = form.get(0).facebook_new_username.value;
  var password = form.get(0).facebook_new_password.value;
  var email = form.get(0).facebook_new_email.value;

  if (username == '')
  {
    $('#field_error_new_username').html('Username is required.');
    $('#field_error_new_username').css('display', 'block');
    form_error = true;
  }

  if (password == '')
  {
    $('#field_error_new_password').html('Password is required.');
    $('#field_error_new_password').css('display', 'block');
    form_error = true;
  }

  if (email == '')
  {
    $('#field_error_new_email').html('Email is required.');
    $('#field_error_new_email').css('display', 'block');
    form_error = true;
  }
  else if (!validateEmail(email))
  {
    $('#field_error_new_email').html('Invalid email.');
    $('#field_error_new_email').css('display', 'block');
    form_error = true;
  }

  if (form_error)
  {
    return false;
  }

  $.post(
    ADMINURLAJAX,
    form.serialize(),
    function(result) {

      if (result.indexOf('exist_username') != '-1')
      {
        $('#field_error_new_username').html('Username exist.');
        $('#field_error_new_username').css('display', 'block');
      }

      if (result.indexOf('exist_email') != '-1')
      {
        $('#field_error_new_email').html('Email exist.');
        $('#field_error_new_email').css('display', 'block');
      }

      if (result == 'fail')
      {
        $('#field_error_new_username').css('display', 'block');
      }
      else if (result == 'success')
      {
        $('#facebook-popup-new').css('display', 'none');
        $('#facebook-new-success').css('display', 'block');
        
        setTimeout('refreshPage()', 3000);
      }
    }
  );
}

function validateEmail(email)
{
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

  if(reg.test(email) == false)
  {
    return false;
  }
  else
  {
    return true;
  }
}

function hsmRegisterPrev(section)
{
  var form_error = false;

  switch (section)
  {
    case 1:
      form_error = true;
    break;

    case 2:
    break;

    case 3:
      //document.getElementById('captcha').src = STYLESHEETURL + '/securimage/securimage_show.php?' + Math.random();
    break;
  }

  if (!form_error)
  {
    $('#hsm-signup-form-section-' + section).css('display', 'none');
    $('#hsm-signup-form-section-' + (section - 1)).css('display', 'block');
  }
}

function hsmRegisterNext(section)
{
  var form_error = false;

  var form = $('#hsm_signup_form');

  // Reset all field errors
  $('.hsm-field-error').css('display', 'none');

  switch (section)
  {
    case 1:
      if (!$('#hsm-terms-agree').attr('checked'))
      {
        alert('You must accept the Terms & Conditions to continue.');
        form_error = true;
      }
	  var first_name = form.get(0).first_name.value;
      var last_name = form.get(0).last_name.value;
      var email = form.get(0).signup_email.value;
	  var gender = form.get(0).signup_gender.value;
      var age = form.get(0).signup_age.value;
      var country = form.get(0).hsm_signup_form_country.value;
	  var state = form.get(0).hsm_signup_form_state.value;
	  var pcode = form.get(0).signup_pcode.value;
      var username = form.get(0).signup_username.value;
      var password = form.get(0).signup_password.value;
      var password_confirm = form.get(0).signup_password_confirm.value;
      var captcha = form.get(0).captcha_code.value;
	  var uni = form.get(0).hsm_signup_form_uni.value;
	  var uni_other = form.get(0).hsm_signup_uni_other.value

      // Validations
	  if(pcode == ''){
	  	$('#field_error_pcode').css('display','block');
        form_error = true;
	  }
	  if(uni == '-'){
	  	$('#field_error_uni').css('display','block');
        form_error = true;
	  }
	  if(uni == 'Other' && (uni_other == '' || uni_other == 'start_typing...')){
	  	$('#field_error_uni_other').css('display','block');
        form_error = true;
	  }
	  if (country == '')
      {
        $('#field_error_country').css('display', 'block');
        form_error = true;
      }
	  if (state == '')
      {
        $('#field_error_state').css('display', 'block');
        form_error = true;
      }
	  
	  if (gender == '-')
      {
        $('#field_error_gender').css('display', 'block');
        form_error = true;
      }
	  if (age == '-')
      {
        $('#field_error_age').css('display', 'block');
        form_error = true;
      }
	  if (first_name == '' || first_name == 'start typing...')
      {
        $('#field_error_first_name').css('display', 'block');
        form_error = true;
      }
	  if(/^[a-zA-Z '''-]+$/.test(first_name)){
	  }else{
		$('#field_error_first_name').css('display', 'block');
        form_error = true;
	  }
	  if(first_name.length < 2){
		$('#field_error_first_name').css('display', 'block');
        form_error = true;
	  }

      if (last_name == '' || last_name == 'start typing...')
      {
        $('#field_error_last_name').css('display', 'block');
        form_error = true;
      }
	  if(/^[a-zA-Z '''-]+$/.test(last_name)){
	  }else{
		$('#field_error_last_name').css('display', 'block');
        form_error = true;
	  }
	  if(last_name.length < 2){
		$('#field_error_last_name').css('display', 'block');
        form_error = true;
	  }

      if (email == '')
      {
        $('#field_error_email').text('Required field.');
        $('#field_error_email').css('display', 'block');
        form_error = true;
      }

      if (email != '' && !validateEmail(email))
      {
        $('#field_error_email').text('Invalid email.');
        $('#field_error_email').css('display', 'block');
        form_error = true;
      }
      if (username == '' || username == 'start typing...')
      {
        $('#field_error_username').text('Required field.');
        $('#field_error_username').css('display', 'block');
        form_error = true;
      }
	  if(/^[0-9a-zA-Z-_]+$/.test(username)){
	  }else{
		alert("Usernames can only contain letters, numbers, - and _");
		$('#username_warning').css('color','red');
        form_error = true;
	  }
	  if(username.length < 3){
        $('#field_error_username').text('Username too short.');
        $('#field_error_username').css('display', 'block');
        form_error = true;
	  }
	  
      if (password == '')
      {
        $('#field_error_password').text('Required field.');
        $('#field_error_password').css('display', 'block');
        form_error = true;
      }

      if ((password != '') && (password != password_confirm))
      {
        $('#field_error_password').text('Password did not match.');
        $('#field_error_password').css('display', 'block');
        form_error = true;
      }

      // Ajax validation of username
      if (!form_error)
      {
        var username_exist = checkUsernameExist(username);

        if (username_exist == 'true')
        {
          $('#field_error_username').text('Username already exists.');
          $('#field_error_username').css('display', 'block');
          form_error = true;
        }
      }

      // Ajax validation of CAPTCHA
      if (!form_error)
      {
        var captcha_valid = checkCAPTCHA(captcha);

        if (captcha_valid == 'error')
        {
          $('#field_error_captcha').text('Invalid code.');
          $('#field_error_captcha').css('display', 'block');
          form_error = true;
        }
		var email_exist = checkEmailExist(email);

        if (email_exist == 'true')
        {
          $('#field_error_email').text('Email already exists.');
          $('#field_error_email').css('display', 'block');
          form_error = true;
        }
      }
    break;

    case 2:
      //alert($("[name=hsm_signup_form]").serialize());

      var date = form.get(0).hsm_signup_form_start.value;
	  var goal = form.get(0).hsm_signup_form_goal_1.value;
	  var about = form.get(0).hsm_signup_form_about.value;

      // Validations
      
      if (/^([0-9]{2})+\/([0-9]{2})+\/([0-9]{4})$/.test(date))
      {}else{
        $('#field_error_date').text('Start date is invalid');
        $('#field_error_date').css('display', 'block');
        form_error = true;
      }
	  
	  if(goal == '' || goal == 'start typing...'){
		$('#field_error_goal').css('display', 'block');  
		form_error = true;
	  }
	  var spaces = about.replace(/[^ ]/g, '').length;
	  if(about == '' || about == 'tell us about you...' || spaces < 2){
		$('#field_error_about').css('display', 'block');  
		form_error = true;
	  }

    break;

    case 5:
      // Finish...
      $.post(
        STYLESHEETURL + '/registration/register.php',
        form.serialize(),
        function(data)
        {
          // result
        }
      );
    break;
  }

  if (!form_error)
  {
    $('#hsm-signup-form-section-' + section).css('display', 'none');
    $('#hsm-signup-form-section-' + (section + 1)).css('display', 'block');
  }
}

function hsmSelectButton(group, option)
{
  var selected_span = $('#' + group + '-' + option + '-button');
  var selected_field = $('#' + group + '-' + option);

  $('.' + group).css('background-position', '');

  selected_span.css('background-position', '0 -16px');
  selected_field.attr("checked", "checked");
}

function hsmToggleCheckbox(element)
{
  var checkbox_element = $('#' + element);
  var checkbox_span = $('#' + element + '-button');


  if (checkbox_element.attr('checked'))
  {
    checkbox_element.attr("checked", "");
    checkbox_span.css('background-position', '');
  }
  else
  {
    checkbox_element.attr("checked", "checked");
    checkbox_span.css('background-position', '0 -16px');
  }
}

// Defaults
$(document).ready(function() {
  // Set Facebook options popup
  $('#hsm-signup-facebook-popup').dialog(
  {
    autoOpen: false,
    closeOnEscape: false,
    open: function(event, ui) {
      $(".ui-dialog-titlebar-close").hide();
      $(".ui-dialog-titlebar").hide();
    },
    modal: true,
    width: 628,
    height: 520
  });

  // add round class for popup
  $('#hsm-signup-facebook-popup').addClass('ui-corner-all');

  // Set file upload popup
  $('#hsm-signup-upload-popup').dialog(
  {
    autoOpen: false,
    modal: true,
    width: 340
  });

  hsmSelectButton('hsm-personal-period-options', 'three');
  hsmSelectButton('hsm-personal-contact-options', 'weekly');
});
