/*
function userSignStatus(email,url) {
  $.ajax({
    url: sBasePath+'/petition/usersignstatus',
    type: 'POST',
    dataType: 'json',
    data: {'email':email,'url':url} ,
    success: function(data){
      if(typeof data.error === 'undefined'){
        if( (typeof data.status === 'number')){
          alert('user registered');
          if( (typeof data.cansign === 'number')){
            alert('user can sign');
          }
          else{
            alert('user cannot sign');
          }
alert(data.cansign);
          alert(data.status);
        }
        else{
          alert('user no registered');
        }
      }
      else{
        alert(data.error);  
      }
    },
    error: function(){
      alert('Error!');
    }
  });
}
userSignStatus('whisher@mp4.it','simonepetition');
*/

function urlLoader(sel){
  var li = $(sel).parent().get(0);
  var loader = '<img id="urlLoader" src="'+sBasePath+'/static/images/loading.gif'+'" />';
  $(li).append(loader);
}

function hidePasswordInput(){
  $('#activationByEmail').click(function(){
    var li = $('#user_password_login').parent().get(0);
    $(li).toggle();
  });
  
}
function showLoader(sel) {
  var marginBottom = 30;
  var stepContainer= $(sel);
  var totHeight = $('#pagingCreatePetition').height() + stepContainer.height() + marginBottom;
  var target= $('#frmCreatePetition');
  var loader= $('<div id="loaderPetition"></div>');
  loader.fadeTo("fast", 0.9);
  loader.css({
    width: target.width() + 'px',
    height: totHeight + 'px'
  }).hide().appendTo(target);
  loader.show();
}
function enlargeStepHeight(){
  var disclaimerH = $('#disclaimer').height();
  var stepHeaderH = $('#step6 .stepHeader').height();
  var stepSubHeaderH = $('#step6 .stepSubHeader').height();
  var h = disclaimerH + stepHeaderH + stepSubHeaderH + 50;
  $('#step6').height(h);
  $('#pagingCreatePetition').css('top',(h-35)+'px');
}
function resetPagingPos(){
  var pagingPosTop = 400;
  var $pagingCP = $('#pagingCreatePetition');
  var topPos = +$pagingCP.css('top').replace('px','');
  if(topPos > pagingPosTop){
    $pagingCP.css('top',pagingPosTop+'px');
  }
}
function xhrLogin(email,password,loginCallback){
    $.ajax({
          type: "POST",
          timeout:3000,
          url:  sBasePath + '/auth/xhr' ,
          cache: false,
          async: false,
          dataType: 'json',
          data: {'email':email,'password':password} ,
          success: function(data){
             loginCallback(data);
          },
          error:function(xhr, str, er){
              alert('error');
              return;
          }
     });
}
function isValidUrlXhr(slug,callback) {
  $.ajax({
    url: sBasePath+'/petition/urlavailable',
    type: 'POST',
    dataType: 'json',
    data: {'url':slug} ,
    success: function(data){
      callback(data);       
    },
    error: function(){
      alert('Error!');
    }
  });
}
function getUserStatus(email,callback) {
  $.ajax({
    url: sBasePath+'/petition/emailuser',
    type: 'POST',
    dataType: 'json',
    data: {'email':email} ,
    success: function(data){
      callback(data);       
    },
    error: function(){
      alert('Error!');
    }
  });
}
function isValidZipXhr(zip,callback) {
  $.ajax({
    url: sBasePath+'/petition/zipcode',
    type: 'POST',
    dataType: 'json',
    data: {'zip':zip} ,
    success: function(data){
      callback(data);       
    },
    error: function(){
      alert('Error!');
    }
  });
}
function isValidLenght(str,minL,maxL){
  var l = $.trim(str).length;
  return l >= minL && l <= maxL;
}
function isValidUrl(val) {
  return /^[-A-Za-z0-9]{1,63}$/.test(val);
};
function isValidEmail(val){
    return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(val);
}
function isValidDigits(val) {
   return /^\d+$/.test(val);
};

function step1Validation() {
  var ids = [];
  $('#category_id option').each(function(i){
    ids[i] = $(this).val();
  });
  ids.shift();

  var isValid = [];
  if (!isValidLenght($("input#title").val(),3,150)){
    $("#title-err").show();
  }
  else{
    $("#title-err").hide();
    isValid.push(1);
  }
  if(!isValidLenght($("textarea#statement").val(),3,65535)){
    $("#statement-err").show();
  } 
  else{
    $("#statement-err").hide();
    isValid.push(1);
  }

  if (!in_array ($("select#category_id").val(),ids)){
    $("#category_id-err").show();
  }
  else{
    $("#category_id-err").hide();
    isValid.push(1);
  }
  return isValid.length === 3;
}

function step2Validation() {
  var isValid = false;
  if ( !isValidUrl($("input#url").val()) ){
    $("#url-err").show();
  }
  else{
    $("#url-err").hide();
    isValid = true;
  }
  return isValid;
}
function step3Validation() {
  var isValid = false;
  return true;
}
function step4Validation() {
  var isValid = false;
  return true;
}
function step5Validation() {
 var isValid = false;
  if ( !isValidEmail($("input#userEmail").val()) ){
    $("#useremail-err").show();
  }
  else{
    $("#useremail-err").hide();
    isValid = true;
  }
  return isValid;
}
function step6Validation() {
 var isValid = false;
  return true;
}

function step8Validation() {
 var isValid = [];
  if (!isValidLenght($("input#user_firstname").val(),2,255)){
    $("#firstname-err").show();
  }
  else{
    $("#firstname-err").hide();
    isValid.push(1);
  }
  if(!isValidLenght($("input#user_lastname").val(),2,255)){
    $("#lastname-err").show();
  } 
  else{
    $("#lastname-err").hide();
    isValid.push(1);
  }
  if (!isValidEmail($("input#user_email").val()) ){
    $("#useremail-err").show();
  }
  else{
    $("#useremail-err").hide();
    isValid.push(1);
  }
  if(!isValidLenght($("input#user_password").val(),1,30)){
    $("#password-err").show();
  } 
  else{
    $("#password-err").hide();
    isValid.push(1);
  }
  if($('#user_cellphone').hasClass('required')){
    if(!isValidDigits($("input#user_cellphone").val())){
      $("#cellphone-err").show();
    } 
    else{
      $("#cellphone-err").hide();
      isValid.push(1);
    }
  }
  else{
    isValid.push(1);
  }
  if(!isValidDigits($("input#user_zip").val())){
    $("#zip-err").show();
  } 
  else{
    $("#zip-err").hide();
    isValid.push(1);
  }
  if(!$("input#disclaimer").is(':checked')){
    $("#disclaimer-err").show();
  } 
  else{
    $("#disclaimer-err").hide();
    isValid.push(1);
  }
  return isValid.length === 7;
}
function step9Validation() {
  if($('#activationByEmail').is(':checked')){
    return true;
  }
  var isValid = [];
  if ( !isValidEmail($("input#user_email_login").val()) ){
    $("#login-email-err").show();
  }
  else{
    $("#login-email-err").hide();
    isValid.push(1);
  }
  if (!isValidLenght($("input#user_password_login").val(),1,30)){
    $("#login-password-err").show();
  }
  else{
    $("#login-password-err").hide();
    isValid.push(1);
  }
  return isValid.length === 2;
}
function CreatePetition(){
  var startNum = 1;
  var maxNum = 6;
  var minNum = 1;
  var fakeStep = null;
  var oddStep = false;
  function forwardTab() {
    if(startNum < maxNum){
      startNum++;
    }
    else{
      startNum = minNum;
    }
  }

  function backTab() {
    if(startNum > minNum){
     startNum--;
    }
  }
  function highlightStep(){
    var stepImgPath = $('img#step'+startNum+'-img').attr('src');
    var pathToChecked = stepImgPath.replace('check-grey'+startNum+'.jpg','check'+startNum+'.jpg'); 
    $('img#step'+startNum+'-img').attr('src', pathToChecked);
    $('#activeStep').text(startNum);
  }
  function lowlightStep(){
    var stepImgPath = $('img#step'+startNum+'-img').attr('src');
    var path = stepImgPath.replace('check'+startNum+'.jpg','check-grey'+startNum+'.jpg'); 
    $('img#step'+startNum+'-img').attr('src', path);
    $('#activeStep').text(startNum);
  }
  function lowlightTextStep(){
    $('#activeStep').text(startNum);
  }
  function checkLogin(data){
    if( (typeof data.status === 'number')){
      showLoader('#step9');
      $("#frmCreatePetition").unbind("submit");
      $('#frmCreatePetition').trigger("submit");
    }
    else {
      //alert('Invalid login');
      if($('#invLogin').length > 0) {
        $('#invLogin').remove();
      }
      $("#step9 h3:first").append('<p id="invLogin">Invalid login</p>');
    }
  }
  function checkRegister(data){
    if( (typeof data.zip === 'number')){
      $("#zip-err").hide();
      showLoader('#step8');
      $("#frmCreatePetition").unbind("submit");
      $('#frmCreatePetition').trigger("submit");
    }
    else {
      $("#zip-err").show();
    }
  }
  function checkUrl(data){
    if($('#urlLoader').length > 0){
      $('#urlLoader').remove();
    }
    if(typeof data.url === 'string'){
      $("#url-err_3").hide();
      $('#step'+startNum).hide();
      forwardTab();
      $('#step'+startNum).show();
      highlightStep();
    } else {
       $("#url-err_3").show();
    }
  }
  function checkStatus(data){
    $('#step'+startNum).hide();
    if( (typeof data.status === 'number')){
      fakeStep = 9;
    }
    else{
      fakeStep = 8;
    }
    $('#step'+fakeStep).show();
  }
  function init() {
    
    switch (startNum) {
      case 1:
        if(step1Validation()){
          $('#step'+startNum).hide();
          forwardTab();
          $('#step'+startNum).show();
          highlightStep();
        }
        $("input#url").val(sanatizeString($("input#title").val()));
      break;
      case 2:
        if(step2Validation()){
          var url = $("input#url").val();
          urlLoader('#url');
          isValidUrlXhr(url,checkUrl);
        }
      
      break;
      case 3:
        if(step3Validation()){
          $('#step'+startNum).hide();
          forwardTab();
          $('#step'+startNum).show();
          highlightStep();
        }
      break;
      case 4:
        if(step4Validation()){
          $('#step'+startNum).hide();
          forwardTab();
          $('#step'+startNum).show();
          highlightStep();
          $("input#userEmail").focus();
        } 
      break;
      case 5:
       if(step5Validation() && !oddStep){
          var email = $("input#userEmail").val();
          getUserStatus(email,checkStatus);
          $("input#user_email_login").val(email);
          $("input#user_email").val(email);
          enlargeStepHeight();
          oddStep = true;
        } 
      break;
     /* case 6:
        if(step6Validation()){
          $('#step'+startNum).hide();
          forwardTab();
          $('#step'+startNum).show();
          highlightStep();
        } 
        $('#pagingCreatePetition').css('top','400px');
      break;
       case 7:
        if(step7Validation()){
          var email = $("input#userEmail").val();
          getUserStatus(email,checkStatus);
          $("input#user_email_login").val(email);
          $("input#user_email").val(email);
        } 
      break;        */
      
    }
    
    if(fakeStep === 8){
      $("input#userEmail").val()
      if(step8Validation()){
        var zip = $("input#user_zip").val();
        isValidZipXhr(zip,checkRegister);
      }
    } 
    else if (fakeStep === 9){
      if(step9Validation()){
        if($('#activationByEmail').is(':checked')){
          showLoader('#step9');
          $("#frmCreatePetition").unbind("submit");
          $('#frmCreatePetition').trigger("submit");
        }
        else{
          var email = $("input#user_email_login").val();
          var password = $("input#user_password_login").val();
          xhrLogin(email,password,checkLogin);
        }
      }
      
    } 
    if(startNum > 1){
      $("#btBack").removeAttr("disabled");
      $("#btBack").show();
    }
  }
  function stepBack() {
    $('#step'+startNum).hide();
    if(startNum !== 1){
      lowlightStep();
    } 
    backTab();
    lowlightTextStep();
    $('#step'+startNum).show();
    if(startNum === 1){
      $("#btBack").attr("disabled","disabled");
      $("#btBack").hide();
    }
    resetPagingPos();
    if(startNum === 6){
      enlargeStepHeight();
    }
    $("#step8").hide();
    $("#step9").hide();
    fakeStep = null;
    oddStep = false;
  }
  $('#btNext').click(function(){
   init();
  });
  $('#btBack').click(function(){
   stepBack();
  });

  $("input#userEmail").blur(function() {
    if($("input#userEmail").val()!='') {
        if(step5Validation()){
         init();
        } 
     }
  });
  if($('#user_cellphone').hasClass('required')){
    var li = $('#user_cellphone').parent().get(0);
    var label = $('label:first-child',li);
    var labelText =  label.text();
    $(label).html(labelText + '<span class="required">*</span>');
  }
}
$(function() {
  requiredDecorator();
  CreatePetition();
  
  $('#frmCreatePetition').submit(function () { return false; }); // so it won't submit
  $('#extraOptionsHeader').toggle(function() {
        $('#step1-options').toggle();
        $('#arrowextra').attr("src","/static/images/freccia-giu.gif");
        }, function(){
            $('#arrowextra').attr("src","/static/images/freccia-dx.gif");
            $('#step1-options').toggle();              
    });
 // $('#title').focus();
  $("input[type=file]").filestyle({ 
    image: sBasePath + "/static/images/btn_upload_"+defaultLang+".png",
    imageheight : 25,
    imagewidth : 80,
    width : 320
  });
  hidePasswordInput();

  $.datepicker.regional[defaultLang];
  $("#expiry_date").datepicker({
    showOn: 'button', 
    buttonImage: sBasePath+'/static/images/datepicker.gif', 
    buttonImageOnly: true
  });

  $(".explainInput").each(function(index) {
    var label = $(".explainLabel").eq(index);
    //$('<a href="#" class="jTip" title="' + $(this).attr('title') +'">?</a>').insertBefore(label);
    $(label).append('<a href="#" class="jTip" title="' + $(this).attr('title') +'">?</a>');
    $(this).attr('title','');
  });
  $('#frmCreatePetition a.jTip').tooltip({
    track: true,
    delay: 0,
    showURL: false,
    showBody: " - ",
    extraClass: "jTipTooltip",
    top: -15,
    left: 5
    }
  );

}); 
