function getIndexFromId(str)
{
  var tmp = str.split('_');
  var num = tmp[tmp.length - 1];

  if(num)
    return parseInt(num);

  return '';
}

function getSortParams(str, separator)
{
  if(!separator)
    var separator = '_';

  var tmp = str.split('=');
  var result = new Array();

  result['field'] = tmp[0];
  result['type'] = tmp[1];
  return result;
}

function initSortMarkers()
{
  jQuery('.sort_arrow').click(function() {
    var sort_params = getSortParams(this.name);
    if(!sort_params)
      return false;

    var url = '?order_field=' + sort_params['field'] + '&order_type=' + sort_params['type'];
    window.location.href = url;
  });
}


function ajaxSubmitForm(form_id)
{
  var options = {
      //target:        '#output1',   // target element(s) to be updated with server response
      beforeSubmit:  function(formData, jqForm, options)
        {
          jQuery.blockUI({ message: '<h1><img src="/images/ajax/busy.gif" /> Just a moment...</h1>' });
        },
      success:       function(responseText, statusText)
        {
          jQuery.unblockUI();
        },

      // other available options:
      //url:       url         // override for form's 'action' attribute
      //type:      type        // 'get' or 'post', override for form's 'method' attribute
      //dataType:  null,        // 'xml', 'script', or 'json' (expected server response type)
      //clearForm: true        // clear all form fields after successful submit
      //resetForm: true        // reset the form after successful submit

      // $.ajax options can be used here too, for example:
      timeout:   3000
  };

  jQuery('#' + form_id).ajaxSubmit(options);
}

function add_to_watched_list(event_object, id)
{
  var jObj = jQuery(event_object);
  if(jObj.hasClass('loading'))
    return;

  jObj.addClass('loading');
  if(!id)
    id = getIndexFromId(event_object.id);

  jQuery.ajax({
   type: "GET",
   url: '/account-projects/add-to-watched-list/' + id,
   success: function(message){
    jObj.removeClass('loading');
    if(message)
      jObj.html(message);
   }
  });
}

function validateProjectForm()
{
  var options = {
    target: "#project_form_container",
    timeout: 3000,
    success: function(responseText) { if(responseText == 'refresh') window.location.reload(false);  }
  };

  jQuery("#project_form").validate({
    errorElement: "span",
    errorClass: "error",
    submitHandler: function(form) {
      jQuery(form).ajaxSubmit(options);
    },
    rules: {
      //is_logged_in: "required",
      est_price: {
        required: true,
        number: true
      },
      est_time: {
        required: true,
        number: true
      },
      comment: {
        required: true,
        minlength: 10
      }
    },
    messages: {
      //is_logged_in: "Please log in first",
      est_price: {
        required: "Please enter price",
        number: "Price should be a number"
      },
      est_time: {
        required: "Please enter time",
        number: "Time should be a number"
      },
      comment: {
        required: "Please enter a comment",
        minLength: "Your username must consist of at least 10 characters"
      }
    },
    errorPlacement: function(error, element) {
      var er = element.attr("name");
      element.parent().append(error);
      //jQuery('#mess_error').show();
    }/*,
    errorLabelContainer: '#mess_error'*/
  });
}

// employer info popup
function initEmployerPopups()
{
  jQuery('td.initEP').bind("mouseenter", function()
  {
    var ur = window.location.href;
    var loc = ur.split('/')[3];
    var loc_prefix ='';
    if (loc == 'ru' || loc == 'de' || loc == 'fr') loc_prefix = loc+'/';
    else loc_prefix = '';

    var current_element = jQuery(this);
    var user_id = getIndexFromId(this.id);
    var url = '/'+loc_prefix+'utils/ajax-employer-info';

    var popup = current_element.find('div.popup').get(0);
    if(popup)
    {
      jQuery(popup).show(200);
      return;
    }

    jQuery.ajax({
      type: "GET",
      url: url,
      data: "id=" + user_id,
      success: function(msg){
        current_element.append(msg);
        current_element.find('div.popup').show("slow");
      }
    });
  }).mouseout(function()
  {
    var current_element = jQuery(this);
    current_element.find('div.popup').hide("slow");
  });
}

// translator info popup
function initTranslatorPopups()
{
  jQuery('td.initTP').bind("mouseenter", function()
  {
    var current_element = jQuery(this).parent().parent();
    var user_id = getIndexFromId(this.id);
    var url = '/utils/ajax_translator_info';

    var popup = current_element.find('div.container').get(0);
    if(popup)
    {
      jQuery(popup).show(200);
      return;
    }

    jQuery.ajax({
      type: "GET",
      url: url,
      data: "id=" + user_id,
      success: function(msg){
        current_element.prepend(msg).find('div.container').show("slow");
        current_element.find('div.container .close').click(function() { current_element.find('div.container').hide("slow"); });
      }
    });
  });
}

// init registration translator form: step1
function initRegTranslatorForm(translator_status, language_arr, translation_arr)
{
  jQuery('input[name="status"]').click(function(){
    if(this.value == 1)
      jQuery('#status_content').html('Translation Buro');
    else
      jQuery('#status_content').html('Private translator');
  });

  try
  {
    var lls = new Language_Level_Switcher('lls_content', 'lls_result', lang_options, level_options, language_arr);
    var tds = new Translate_Direction_Switcher('tds_content', 'tds_result', lang_options, translation_arr);
  }
  catch(err) {}
}
// init add project form
function initAddProjectForm(translation_arr)
{
  try
  {
    var tds = new Translate_Direction_Switcher('tds_content', 'tds_result', lang_options, translation_arr);
  }
  catch(err) {}
}

function initApp()
{
  jQuery('.add_to_watch_list').bind('click', function()
  {
    jQuery(this).unbind('click');
    add_to_watched_list(this);
    return false;
  });
}
