$(document).ready(function(){    
                
  //var input_fields = ['nazwa firmy', 'ulica', 'nr budynku / lokalu', 'miejscowość', 'kod', 'numer NIP'];
  var $object_data = document.URL.indexOf('moderacja-obiektu') > -1 ? $('input:hidden[name=object_data1]') : $('input:hidden[name=object_data]');
  var $o_star_nr = $('input:hidden[name=o_star_nr_val]');
  
  /*if (document.URL.indexOf('dodaj') > -1 && !$object_data.val()) {  
    setDefaultValues();
  }
  
  $('input').focus(function(){
    if (jQuery.inArray($(this).val(), input_fields) > -1) {
      $(this).val('');
    }
  }); // focus event of input elements*/
  
  (function handlingFormErrorMessage(){
    $('div.reportbar_error ul li').each(function(index){
      var form_error_message = $(this).text();
      if (form_error_message.indexOf('Pole Położenie') > -1) {
        $('div#ol_ids')
          .removeClass('fm-row')
          .addClass('fm-row fm-row_error');
      } else {
        $('div#ol_ids')
          .removeClass('fm-row fm-row_error')
          .addClass('fm-row');
      }
      if (form_error_message.indexOf('Pole Typ obiektu noclegowego') > -1) {
        $('div#ot_ids')
          .removeClass('fm-row')
          .addClass('fm-row fm-row_error');
      } else {
        $('div#ot_ids')
          .removeClass('fm-row fm-row_error')
          .addClass('fm-row');
      }
    });
  })(); // handlingFormErrorMessage
    
  (function handlingObjectRegions(){
    $r_name = $('input[name=r_name]');
    
    if ($r_name.val()) { // && $r_name.val() != input_fields[3]) {
      $r_name.toggle();
      $('select#r_idn').hide();
      $('#add_city').text('usuń');
    }  
    $('#add_city').click(function(event){
      $r_name.toggle();
      if ($(this).text() == 'dodaj') {
        $('select#r_idn').hide();
        $(this).text('usuń');
      } else {
        if ($r_name.val()) { // && $r_name.val() != input_fields[3]) {
          $.post('http://'+domain+'/objects/ajaxGenerateCities', {r_id0: $('#r_id0').val(), action: 'default'}, function(data){
            $('#r_idn').replaceWith(data);
          });
        } else {
          $('select#r_idn').show();
        }
        $(this).text('dodaj');
        //$r_name.val('miejscowość');
        $r_name.val('');
      }
      event.preventDefault();
    }); // click event - add city 
     
  })(); // handlingObjectRegions
  
  var $ids = [$('input:hidden[name=ol_ids]'), $('input:hidden[name=ot_ids]')];
 
  var locations_keys_values = $ids[0].attr('locations').split('|');
  var locations_keys = locations_keys_values[0].split('#');
  var locations_values = locations_keys_values[1].split('#');
  var locations = new Array();
  for (var i = 0; i < locations_keys.length; i++) {
    locations[locations_keys[i]] = locations_values[i];
  }
            
  var types_keys_values = $ids[1].attr('types').split('|');
  var types_keys = types_keys_values[0].split('#');
  var types_values = types_keys_values[1].split('#');
  var types = new Array();
  for (var i = 0; i < types_keys.length; i++) {
    types[types_keys[i]] = types_values[i];
  }
    
  (function handlingObjectLocationsAndTypes(){
    if ($('div.reportbar_error').text().indexOf('Pole Położenie') > -1) {
      $('div#ol_ids').removeClass('fm-row').addClass('fm-row fm-row_error');
    }
    if ($('div.reportbar_error').text().indexOf('Typ obiektu noclegowego') > 0) {
      $('div#ot_ids').removeClass('fm-row').addClass('fm-row fm-row_error');
    }
    
    var $select = [$('#ol_id_select'), $('#ot_id_select')];
    var $list = [$('#location_list'), $('#type_list')];
    var max = [3, 3];
    var markup = [$(' > li', $list[0]).html(), $(' > li', $list[1]).html()];
    
    if (!$object_data.val()) {       
      $list[0].empty();
      $list[1].empty();
    } else {
      if ($object_data.val().indexOf(2) > -1) {
        $list[0].empty();
      }
      if ($object_data.val().indexOf(3) > -1) {
        $list[1].empty();
      }
      $object_data.val('');
 
      if ($o_star_nr.val()) {
        $('select[name=o_star_nr] option[value='+$o_star_nr.val()+']').attr('selected', 'selected');
        $o_star_nr.val('');
      }
    }    
    
    if (document.URL.indexOf('moderacja-obiektu') > -1) {
      var $object_data_a = $('#object_data1 a');
    } else {
      var $object_data_a = $('#object_data a');
    }
    $object_data_a.click(function(event){ 
	    var object = $(this).attr('id');
	      
	    if (object == 'location' || object == 'type') {         
		    if (object == 'location') {
		      var index = 0;
		      var data = locations;
		    }
		    if (object == 'type') {
		      var index = 1;
		      var data = types
		    }
		    
		    if ($select[index].find('option:selected').val() > 0) {    
		      $list[index].show();
		
		      if ($list[index].children().length < max[index]) {      
		        var $li = $('<li>'+markup[index]+'</li>').appendTo($list[index]);
		        //var i = $list[index].children().index($li);
		          
		        var id = $select[index].find('option:selected').val();
		        var ids = $ids[index].val();
		        if (ids) ids += '#';
		        ids += id;
		        $ids[index].val(ids);
	  
		        $li.find('.'+object+'_name').text($select[index].find('option:selected').text());
		        $li.find('a').attr('id', id);
	    
		        if (object == 'type' && $select[index].find('option:selected').text() == 'hotele') {
		          if ($li.children().length < 3) {
			          var type_stars = '<span id="type_stars"  style="display: none">';
		            type_stars += ' <label>standard: </label>';
		            type_stars += '<select name="o_star_nr">';
		            type_stars += '<option value="1">*</option>';
		            type_stars += '<option value="2">**</option>';
		            type_stars += '<option value="3">***</option>';
		            type_stars += '<option value="4">****</option>';
		            type_stars += '<option value="5">*****</option>';
		            type_stars += '<option value="6">******</option>';
		            type_stars += '</select>';
		            type_stars += '</span>';
		            $li.find('.'+object+'_name').after(type_stars);
		          }        
		          $li.find('#type_stars').show();
		        } else {
		          $li.find('span').remove();
		        }
		     
		        $select[index].children(':selected').remove();
		        
		        $li.find('a').bind('click', function(event){
		          deleteObject($(this).attr('id'), $(this).parent());
		          event.preventDefault();
		        }); // click event - deleteObject (location or type)
		                   
		      } else {
		        var message = 'Dodano maksymalną (' + max[index];
		        if (object == 'location') message  +=  ') liczbę położeń';
		        if (object == 'type') message += ') liczbę typów noclegowych';
		        message += ' obiektu.';
		        window.alert(message);
		      }
		    }
		  }
      event.preventDefault();
    }); // click event - add object (location or type)
          
  })(); // handlingObjectLocationsAndTypes
  
  $('ol li a').click(function(event){
    deleteObject($(this).attr('id'), $(this).parent());
    event.preventDefault();
  }); // click event - deleteObject (location or type)
    
  function deleteObject(id, $li) {
    var list = $li.parent().attr('id');
    
    if (list == 'location_list') {
      var prefix = 'ol';
      var data = locations;
    }
    if (list == 'type_list') {
      var prefix = 'ot';
      data = types;
    }
    
    var $ids = $('input:hidden[name='+prefix+'_ids]');
    var ids = $ids.val().split('#');          
    var key = jQuery.inArray(id, ids);
    if (key > -1) ids.splice(key, 1);
    $select = $('#'+prefix+'_id_select');
    $select.empty();
    
    var ids_length = ids.length;
    var option_exists = false;
          
    for (var i = 0; i < data.length; i++) {
      if (data[i]) {
        for (var j = 0; j < ids_length; j++) {
          if (i == ids[j]) {
            option_exists = true;
            break;
          }
        }
        if (option_exists == false) {
          var $option = $('<option>'+data[i]+'</option>').appendTo($select);
          $option.attr('value', i);
        }
        option_exists = false;
      }
    }
              
    $ids.val(ids.join('#'));           
    $li.remove();
  } // deleteObject
  
  if ($('#rewrite_data:checked').length) {
    $('input[name=o_fstreet]').attr('disabled', 'disabled');
    $('input[name=o_fbuilding_local_nr]').attr('disabled', 'disabled');
    $('input[name=o_fcity]').attr('disabled', 'disabled');
    $('input[name=o_fpostal_code]').attr('disabled', 'disabled');
  }
    
  $('#rewrite_data').click(function(){
    if ($('#rewrite_data:checked').length) {
      $('input[name=o_fstreet]').val($('input[name=o_street]').val()).attr('disabled', 'disabled');;
      $('input[name=o_fbuilding_local_nr]').val($('input[name=o_building_local_nr]').val()).attr('disabled', 'disabled');;
      if ($('input[name=r_name]').val()) { // && $('input[name=r_name]').val() != input_fields[3]) {
        $('input[name=o_fcity]').val($('input[name=r_name]').val()).attr('disabled', 'disabled');;
      } else {
        if ($('#r_idn option:selected').val() > 0) {
          $('input[name=o_fcity]').val($('#r_idn option:selected').text());
        }
        $('input[name=o_fcity]').attr('disabled', 'disabled');
      }
      $('input[name=o_fpostal_code]').val($('input[name=o_postal_code]').val()).attr('disabled', 'disabled');;
    } else {
      setDefaultValues('firm');
    }
  }); // click event - rewrite data
      
  function setDefaultValues(fields) {
    /*if (!fields) {
      $('input[name=o_street]').val(input_fields[1]);
      $('input[name=o_building_local_nr]').val(input_fields[2]);
      $('input[name=o_city]').val(input_fields[3]);
      $('input[name=r_name]').val(input_fields[3]);
      $('input[name=o_postal_code]').val(input_fields[4]);
      $('input[name=o_fname]').val(input_fields[0]);
      $('input[name=o_fnip]').val(input_fields[5]);
    }
    $('input[name=o_fstreet]').val(input_fields[1]).attr('disabled', '');
    $('input[name=o_fbuilding_local_nr]').val(input_fields[2]).attr('disabled', '');
    $('input[name=o_fcity]').val(input_fields[3]).attr('disabled', '');
    $('input[name=o_fpostal_code]').val(input_fields[4]).attr('disabled', '');*/
    $('input[name=o_fstreet]').val('').attr('disabled', '');
    $('input[name=o_fbuilding_local_nr]').val('').attr('disabled', '');
    $('input[name=o_fcity]').val('').attr('disabled', '');
    $('input[name=o_fpostal_code]').val('').attr('disabled', '');
  } // setDefaultValues
   
  $('select#r_idn').livequery('change', function(event){
    if ($('select#r_idn option:selected').val() > 0 && $('#rewrite_data:checked').length) {
      $('input:text[name=o_fcity]').val($('select#r_idn option:selected').text());
    }
    return false; 
  });
  
  $('input:text[name=o_postal_code]').livequery('change', function(event){
    if ($('#rewrite_data:checked').length) {
      $('input:text[name=o_fpostal_code]').val($(this).val());
    }
    return false;
  });
  $('input:text[name=o_street]').livequery('change', function(event){
    if ($('#rewrite_data:checked').length) {
      $('input:text[name=o_fstreet]').val($(this).val());
    }
    return false;
  });
  $('input:text[name=o_building_local_nr]').livequery('change', function(event){
    if ($('#rewrite_data:checked').length) {
      $('input:text[name=o_fbuilding_local_nr').val($(this).val());
    }
    return false;
  });
        
}); // ready
