/** oldallapozás hirdetéslistában */
function sortBySelected(element) {
  window.location = element.options[element.selectedIndex].value;
}

/** rovatválasztás */
function setActiveStep (id) {
  $('#advertSteps .step').removeClass('highlighted');
  $('#advertSteps #step_' + id).addClass('highlighted');
}

/**
 * A régió pontosítása select kezelése
 */
function loadRegionSelect (parent, level) {
  if (parent == '') {
    $('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'none');
    return false;
  }

  // az esetleg meglévő második select tartalmának törlése
  if ( $('#placeNewAd select[name=id_region_'+(level+1)+']').length > 0) {
    $('#placeNewAd select[name=id_region_'+(level+1)+']').empty();
    $('#placeNewAd #id_region_2').css('display', 'none');
  }

  // a választott érték gyermekeinek lekérdezése
  $.getJSON( '/category/ajax/getRegionChild?rid=' + parent, function (json) {
    var count = 0;
    for (var id in json) { count++; }

    // ha van eredmény megkapja értékül
    if (count != 0) {
      writeRegionSelect(json, level + 1);
    }
    else // ha nincs eredmény kap egy 0 értéket a select
    {
      $('#placeNewAd select[name=id_region_2]').append('<option value="0"></option>');
      $('#placeNewAd select[name=id_region_2]').css('display', 'none');
      $('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'none');
    }

  });

  return true;
}

/**
 * A régió pontosítása select feltöltése
 */
function writeRegionSelect(json, level)
{
  $('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'none');
  $('#placeNewAd #id_region_2').css('display', 'none');
  var count = 0;
  for (var id in json)  { count++; }

  var text = '<select id="jforms_hirdeteskezeles_cat_'+$('#placeNewAd input[name=id_category]').val()+'_id_region_2" class=" jforms-required" size="1" name="id_region_2">';
    text += '<option value="0">Válasszon!</option>'+"\n";
    for (var id in json) {
      text += '<option value="' + id + '">' + json[id] + '</option>';
    }
    text += '</select></div>';

  $('#placeNewAd select[name=id_region_2]').replaceWith(text);

  if (count > 0)
  {
    /*$('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'block');*/
    $('#placeNewAd #id_region_2').css('display', 'block');
  }
}

/**
 *  Az összes kategóriaszint select kezelése
 */
function loadSelect(parent, level)
{
  if (parent == null) {
    parent = 2;
  }

  if (level == null) {
    level = 0;
  }

  if ($('#placeNewAd #category_' + level +' + div').length > 0)
  {
    $('#placeNewAd #category_' + level +' + div').remove();
  }

  if (parent == '') {
    return false;
  }

  $.getJSON( '/category/ajax/getCategoryChild?catid=' + parent, function (json)
  {
    var count = 0;
    for (var id in json)
    {
      count++;
    }

    if (count == 1 && json[1] == '')
    {
      $('#placeNewAd #fieldset2 #newDetails').html('<div class="prepend-1">Betöltés folyamatban. Kérem várjon...</div><br />');
      loadForm( $('#placeNewAd #category_' + (level) + ' option:selected').val() );
      return true;
    }
    else
    {
      writeSelect(json, level + 1);
      $('#placeNewAd #fieldset2').css('display','none');
      setActiveStep(1);
    }
  }
  );
  return true;
}

function writeSelect(json, level)
{
	var text = '<div><span class="next">&gt;&gt;</span><select id="category_' + (level) + '" class="ajaxSelect" name="category_' + (level) + '">';
	text += '<option value="">Válasszon!</option>';
	for (var id in json) {
		text += '<option value="' + id + '">' + json[id] + '</option>';
	}
	text += '</select></div>';

	if (level == 1) {
		$('#fieldset1 h3').after(text);
	}
    else {
		$('#category_' + (level - 1)).after(text);
	}

	$('#category_' + (level)).change(function ()  {
		loadSelect($('#category_' + level + ' option:selected').val(),level);
	});
}

function loadForm(id)
{
  $("#fieldset2 div#newDetails").load('/hirdetesfeladas/ajax/getCategoryForm',  "catid=" + id, function() {

    // régióválasztásra rátesszük az eseményt
    if ($('#placeNewAd select[name=id_region]').length > 0) {
      $('#placeNewAd select[name=id_region]').change(function () {
        loadRegionSelect( $('#placeNewAd select[name=id_region] option:selected').val(), 2);
      });
    }

    // a region részletei mező ne látszódjon
    $('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'none');

    //form = $('#fieldset2 form');
		//form.submit(function(ev) { if(jFormsJQ.verifyForm(ev.target) == true) {return true;} return false;});
  });

	$('#fieldset2').css('display','block');
	setActiveStep(2);
}

function show_personal_form()
{
	$('#fieldset1,#fieldset2').css('display','none');
	var cid = $('#fieldset2 form input[name=category_id]').val();
	$('#fieldset3 div').load('/hirdetesfeladas/ajax/show_personal_form?cid=' + cid,null,function(){
		$('#fieldset3 form').submit(function(ev){
			if (jFormsJQ.verifyForm(ev.target)) {
				$(this).attr("action", $(this).attr("action") + "?cid=" + cid);
				return true;
			}
			return false;
		});
	});
	$('#fieldset3').css('display','block');
	setActiveStep(3);
}

/* loads a json into options */
function loadOptions(path, id)
{
        $.getJSON( path , function (data) {
          var text = '<option value="0">-- mindegy --</option>';
          for (var key in data) {
            text += '<option value="' + key + '">' + data[key] + '</option>';
          }
          $(id).empty();
          $(id).append(text);
          return false;
        });
}

/* loads a json into options */
function loadDictOptions(path, id)
{
        $.getJSON( path , function (data) {
          var text = '<option value="0">-- mindegy --</option>';
          $.each(data, function (){
            text += '<option value="' + this.id + '">' + this.name + '</option>';
          });
          $(id).empty();
          $(id).append(text);
          return false;
        });
}

/**
 * loads a json into options
 */
function isLeaf(id, fn)
{
  $.getJSON( '/category/ajax/checkNodeHasChildren?catid=' + id , fn );
}

function loadDictionaries(id)
{
  loadDictOptions('/dictionary/ajax/getDictionary?cid=' + id + '&codename=felepitmeny', '#searchForm select#felepitmeny_id');
  loadDictOptions('/dictionary/ajax/getDictionary?cid=' + id + '&codename=vezetofulke', '#searchForm select#fulke_id');
  loadDictOptions('/dictionary/ajax/getDictionary?cid=' + id + '&codename=marka', '#searchForm select#marka_id');
}

/**
 *  onChange main category inside search form
 */
function category_onChange()
{
  $('#subcategoryBox').hide('fast');
  $('#designBox').hide('fast');
  var id = $('#categoryChooseBox select[name=category_id]').val();
  if (id > 0)
  {
    loadOptions('/category/ajax/getCategoryChild?count=1&catid=' + id , '#categoryChooseBox select[name=subcategory_id]');
    $('#subcategoryBox').show('fast');
  }
  // loadDictionaries(id);
}

/**
 *  onChange main subcategory inside search form
 */
function subCategory_onChange()
{
  var alid = $('#categoryChooseBox select[name=subcategory_id]').val();
  $('#designBox').hide('fast');
  isLeaf(alid, function (data)
  {
    if (data.leaf == 'false')
    {
      loadOptions('/category/ajax/getCategoryChild?count=1&catid=' + alid , '#categoryChooseBox select[name=design_id]');
      $('#designBox').show('fast');
    }
  });
  // loadDictionaries(alid);
}

function design_onChange()
{
  var alid2 = $('#categoryChooseBox select[name=design_id]').val();
  loadDictionaries(alid2);
}

/* ddList functions */
function ddList(element) {

  // initialize elements
  var listSize = 7,
      inputEl = element;

  // create the box with arrow elements
  inputEl.after('<br/><div class="ddList"><div class="ddArrowUp"></div><ul class="ddMatches"></ul><div class="ddArrowDown"></div></div>');

  // initialize ddList elements
  var ListEl = inputEl.nextAll('.ddList'),
      arrowUpEl = ListEl.children('.ddArrowUp'),
      matchesEl = ListEl.children('.ddMatches'),
      arrowDownEl = ListEl.children('.ddArrowDown'),
      // initialize counters and pointers
      matches = [],
      actMatchEl,
      prevKeyword = '';

  getList(inputEl.val());
  // set some css
  inputEl.attr('autocomplete','off');
  inputEl.css('margin-bottom','0');
  ListEl.hide();

  arrowDownEl.click(function () {
    if (actMatch < matches.length - 1) {
      setActMatch(actMatch + 1);
    }
  });

  arrowUpEl.click(function () {
    if (actMatch > 0) {
      setActMatch(actMatch - 1);
    }
  });

  function isEnter(e) {
    var KeyId        =  (window.event) ? event.keyCode : e.which;
    switch (KeyId) {
    case 13:    // enter
      copyText();
      return true;
      break;
    }
    return false;
  }

  function copyText() {
    var text = $(actMatchEl).text();
    var pattern = /(.*)\s{1}\(([0-9]+)\)/
    text = text.match(pattern);
    $(inputEl).val(text[1]);
    ListEl.hide();
    return false;
  }

  function keyboardHandler(e) {
    var KeyId        =  (window.event) ? event.keyCode : e.which;
    switch (KeyId) {
    case 38:    // up
      if ($(ListEl).css('display') == 'none') $(ListEl).css('display','block');
      else if (actMatch > 0) setActMatch(actMatch - 1);
    break;

    case 40:    // down
      if ($(ListEl).css('display') == 'none') $(ListEl).css('display','block');
      else if (actMatch < matches.length - 1) setActMatch(actMatch + 1);
    break;

    case 13:    // enter
      return false;
      break;

    case 37:
    case 39:
      return false;
      break;

    default:
      if ($(ListEl).css('display') == 'none') $(ListEl).css('display','block');
      if ($(inputEl).val() == prevKeyword) {return false}
      else {prevKeyword = $(inputEl).val()}
      // Ajax request
      $(inputEl).addClass('spinning');
      // @TODO valtozot valtoztatni, ha elkezdodott egy keres, es a vegen is...
      // ha elkezdodott egy keres a tobbit tiltani
      // vagy a keresett szot elmenteni, es letiltani a regebbiek kiirasat...
      getList(inputEl.val());
      $(inputEl).removeClass('spinning');
    break;
    }
    return true;
  }

  function getList(val) {
    var sub_val = "",
        cat_id = "",
        reg_id = "",
        subdomain = "";

    if ($('#jforms_kereses_searchbox_subcategory_id').length) {
      sub_val = $('#jforms_kereses_searchbox_subcategory_id').val();
    }

    if (sub_val != 0 && sub_val != '') {
      cat_id = sub_val;
    } else {

      if ($('#jforms_kereses_searchbox_category_id').length) {
        cat_id = $('#jforms_kereses_searchbox_category_id').val();
      }
      if ($('#jforms_kereskedok_psearchbox_category_id').length) {
        cat_id = $('#jforms_kereskedok_psearchbox_category_id').val();
      }
    }

    if ( $('#jforms_kereses_searchbox_id_region').length) {
      reg_id =  $('#jforms_kereses_searchbox_id_region').val();
    }


    if ($('#jforms_kereskedok_psearchbox_subdomain').length) {
      subdomain = $('#jforms_kereskedok_psearchbox_subdomain').val();
    }
    $.getJSON("/index.php?searchAction=detailed&type=0&module=bongeszo&action=ajax:getMarka&word=" + val + "&cat_id=" + cat_id + "&reg_id=" + reg_id + "&subdomain=" + subdomain, function(data) {
      matches = data;
      writeList();
    });
  }

  function writeList()
  {
    $(matchesEl).html('');
    var reg = /^\s?$/i;
    $.each(matches, function(i,item){
      if (!reg.test(item['_marka_name'])) $(matchesEl).append('<li>' + item['_marka_name'] + '&nbsp(' + item['count'] + ')</li>');
    });

    // reset the list
    actMatch = null;
    $(matchesEl).children().hide();
    if (matches.length > listSize) arrowDownEl.removeClass('inactive');
    else arrowDownEl.addClass('inactive');
    arrowUpEl.addClass('inactive');
    setActMatch(0);

    // bind list element functions
    matchesEl.children().mouseover(function(){setActMatch(0,this)});
    matchesEl.children().click(function(){copyText()});
  }

  function setActMatch(pointer, el)
  {
    if (el != null) {
      $(matchesEl).children('.active').removeClass('active');
      $(el).addClass('active');
      actMatchEl = el;
      actMatch = matchesEl.children('li').index(el);
      return true;
    }

    // if initialize
    if (actMatch == null) {
      $(matchesEl).children().slice(0,listSize).show();
      $(matchesEl).children(':first').addClass('active');
      actMatch = 0;
      actMatchEl = matchesEl.children(':first');
      return true;
    }

    // set the new match active
    var dir;
    var prevEl = $(matchesEl).children('.active');
    if (pointer > actMatch) {
      actMatchEl = $(prevEl).next();
      dir = "down";
    }
    else {
      actMatchEl = $(prevEl).prev();
      dir = "up";
    }
    $(actMatchEl).addClass('active');
    $(prevEl).removeClass('active');
    actMatch = pointer;

    // if roll the matches, hide and show the needed matches
    if (dir == "up") {
      if ($(actMatchEl).prev(':hidden').length == 1) {
        $(arrowDownEl).removeClass('inactive');
        $(actMatchEl).prev().show();
        $(actMatchEl).siblings(':visible:last').hide();
      }
    } else if (dir == "down") {
      if ($(actMatchEl).next(':hidden').length == 1) {
        $(arrowUpEl).removeClass('inactive');
        $(actMatchEl).next().show();
        $(actMatchEl).siblings(':visible:first').hide();
      }
    }

    // arrows
    if ($(actMatchEl).prevAll().length == 1) $(arrowUpEl).addClass('inactive');
    if (actMatch == matches.length - 2) $(arrowDownEl).addClass('inactive');
    return true;
  }

  // bind functions
  inputEl.keyup(function(e){keyboardHandler(e)});
  inputEl.keypress(function(e){if (isEnter(e)) return false; else return true;});
}

function countView()
{
   $.ajax({
   type: "POST",
   url: "/ajax/getCounter",
   data: "id="+$('div.showAdvert').attr('id'),
   success: function(msg){
     $('.advertInfo .advertViewsCounter #advertCounter').html(msg);
   }
 });

}

function numberFormat(locale,str) {
  var dec = false;
  var group = ' ';
  if (locale == 'en') {
	  dec = false;
  }
  var validChars = '0123456789' + ((dec != false)?dec:'');
  var invalidFirstChars = '0' + ((dec != false)?dec:'');

  // clear non valid characters
  var newStr = "";
  for (var i=0;i<str.length;i++) {
	  if (newStr.length == 0 && invalidFirstChars.indexOf(str.charAt(i)) != -1) {
		  continue;
	  }
	  if (validChars.indexOf(str.charAt(i)) != -1) {
		  newStr += str.charAt(i);
	  }
  }
  // clear non-last dec
  first = -1;
  if (dec != false) {
	  last = newStr.lastIndexOf(dec);
	  first = newStr.indexOf(dec);
	  while(first != last) {
		  newStr = newStr.slice(0, first) + newStr.slice(first+1);
		  first = newStr.indexOf(dec);
		  last = newStr.lastIndexOf(dec);
	  }
  }

  // groupping
  if (first > 0) {
	  integer = newStr.slice(0, first);
	  newStr = newStr.slice(first);
  } else {
	  integer = newStr;
	  newStr = "";
  }
  while (integer.length > 3) {
	  newStr = group + integer.slice(integer.length - 3) + newStr;
	  integer = integer.slice(0, integer.length - 3);
  }

  return integer + newStr;
}

function numberClean(locale, str) {
  if (locale == 'hu') {
	  group = ' ';
  } else if (locale == 'en') {
	  group = ' ';
  }

  // clear groups
  while (str.indexOf(group) > 0) {str = str.replace(group, '')}
  return str;
}

/**
 ************************ onload ************************
 */
$('document').ready(function() {

  /* lekerekítés minden sarokra */
  if ($('.ui-corner-all').length > 0) {
    $('.ui-corner-all').cornerz({
                         radius: 6,
                         corners: 'tl br tr bl'
                       });
  }
  /* ie fix to show them */
  if ($('.ui-corner-all.containerDiv').length > 0) {
    $('.ui-corner-all.containerDiv').cornerz({
                         radius: 6,
                         corners: 'tl br tr bl'
                       });
  }
  if ($('.ui-corner-bottom').length > 0) {
    $('.ui-corner-bottom').cornerz({
       radius: 6,
       corners: 'br bl'
    });
  }
  if ($('#searchTop').length > 0) {
    $('#searchTop').cornerz({
      radius: 6,
      corners: 'br bl tr'
    });
  }
  /* lekerekítés parent-background colorr-al sarokra */
  if ($('.ui-corner-all-getbackground').length > 0) {
    $('.ui-corner-all-getbackground').each(function () {
      var bgcolor = $(this).parent().css('background-color');
      $(this).cornerz({
        radius: 6,
        corners: 'tl br tr bl',
        background: bgcolor
      });
    });
  }

  /* lekerekítés a felső sarkokra */
  if ($('.ui-corner-top').length > 0) {
    $('.ui-corner-top').cornerz({
                         radius: 6,
                         borderWidth: 0,
                         corners: 'tl tr'
                       });
  }

  if ($('#handlerTabs .active').length > 0) {
    $('#handlerTabs .active').cornerz({
                         radius: 4,
                         corners: 'tl tr',
                         borderWidth: 1,
                         borderColor: '#C5C5C5'
                       });
  }

  if ($('#handlerTabs .tab').length > 0) {
    $('#handlerTabs .tab').cornerz({
                         radius: 4,
                         corners: 'tl tr',
                         borderWidth: 1,
                         borderColor: '#E5E5D9'
                       });
  }



  /* lekerekítés a fejlécben aktív modul felső sarkaira*/
  if ($('#modules .current').length > 0) {
    $('#modules .current').cornerz({
                         radius: 10,
                         borderWidth: 0,
                         background: '#85B25D',
                         borderColor: '#ffffff',
                         corners: 'tl tr'
                       });
  }

  if ($('.showAdvert').length > 0) {
    countView();
  }

  /* Kategóriaválasztás 1. szintjére rákerül az esemény ha a select létezik már */
  if ($('#placeNewAd #category_1').length > 0) {
    $('#placeNewAd #category_1').change(function () {
      loadSelect( $('#category_1 option:selected').val(), 1);
    });
  }

  /* Kategóriaválasztás 2. szintjére rákerül az esemény ha a select létezik már */
  if ($('#placeNewAd #category_2').length > 0) {
    $('#placeNewAd #category_2').change(function () {
      loadSelect( $('#category_2 option:selected').val(), 2);
    });
  }

  /* Kategóriaválasztás 3. szintjére rákerül az esemény ha a select létezik már */
  if ($('#placeNewAd #category_3').length > 0) {
    $('#placeNewAd #category_3').change(function () {
      loadSelect( $('#category_3 option:selected').val(), 3);
    });
  }

  if ($('#placeNewAd #fieldset2 div#newDetails').html() != "")
  {
    $('#placeNewAd #fieldset2').css('display', 'block');
  }

  // régióválasztás első select change-re rátesszük az eseményt
  if ($('#placeNewAd select[name=id_region]').length > 0)
  {
    $('#placeNewAd select[name=id_region]').change(function ()
    {
      loadRegionSelect( $('#placeNewAd select[name=id_region] option:selected').val(), 1);
    });
  }

  if ($('#placeNewAd select[name=id_region_2]').length > 0)
  {
    if ($('#placeNewAd select[name=id_region_2] option').size() > 1)
    {
      $('#regionGroup #id_region_2').css('display', 'block');
    }
  }

  // tooltip toggle esemény @TODO make it general
  if ($('.tooltip .collapse').length > 0) {
    $('.tooltip .collapse').click(function () {
      if ($('.tooltip p').css('display') == 'none') {
        $('.tooltip p').css('display', 'block');
        $('.tooltip .collapse').addClass('collapseClose');
        $('.tooltip .collapse').removeClass('collapse');
      }
      else {
        $('.tooltip .collapseClose').addClass('collapse');
        $('.tooltip .collapseClose').removeClass('collapseClose');
        $('.tooltip p').css('display', 'none');
      }
    });
  }

  // a region részletei mező ne látszódjon
  $('#placeNewAd #fieldset2 .jforms-table-group:first tr:last td').css('display', 'none');

  // category select exists
  if ($('#categoryChooseBox select[name=category_id]').length > 0) {

    // if category_id is set
    if ($('#categoryChooseBox select[name=category_id]').val() > 0) {
      $('#categoryChooseBox #subcategoryBox').css('display', 'block');
    }
    // category select change
    $('#categoryChooseBox select[name=category_id]').change(function () {
      category_onChange();
    });
  }

  // subcategory select exists
  if ($('#categoryChooseBox select[name=subcategory_id]').length > 0) {
    // if subcategory_id is set
    if ($('#categoryChooseBox select[name=subcategory_id]').val() > 0) {
      $('#categoryChooseBox #subcategoryBox').css('display', 'block');
    }
    // onChange subcategory
    $('#categoryChooseBox select[name=subcategory_id]').change(function () {
      subCategory_onChange();
    });
  }

  if ($('select.pageselect').length > 0) {
      $('select.pageselect').change(function () {
        sortBySelected(this);
      });
  }


  // design select exists
  if ($('#categoryChooseBox select[name=design_id]').length > 0) {
    // if domain_id is set && some tricky check if design level has meaning
    if ($('#categoryChooseBox select[name=design_id]').val() > 0 ||
        $('#categoryChooseBox select[name=design_id] :eq(2)').val() > 0) {
      $('#categoryChooseBox #designBox').css('display', 'block');
    }
  }

  // remove _target, set window.open on anchors for validators
  $('a.target_blank').click(function() {
      window.open($(this).attr('href'));
      return false;
  });

  $('iframe').each(function() {$(this).attr('src', $(this).attr('src'))});

  // initalize ddLists
  // var ddList1 = new ddList($('#jforms_kereses_searchbox__marka_name'));

  // initalize ddLists
  if ($('#jforms_kereses_searchbox__marka_name').length) {
    var ddList1 = new ddList($('#jforms_kereses_searchbox__marka_name'));
  }

  if ($('#jforms_kereskedok_psearchbox__marka_name').length) {
    var ddList2 = new ddList($('#jforms_kereskedok_psearchbox__marka_name'));
  }

  // format price input
  if( $('#search').length > 0 ) {
    var priceLocale = 'hu';
    $('[name=price_from],[name=price_to]')
    .keyup(function() {
      $(this).val(numberFormat(priceLocale,$(this).val()));
    })
    .blur(function() {
      $(this).val(numberClean(priceLocale,$(this).val()));
    });
  }

  //
    if( $('#copydata').length > 0 ) {
      $('#copydata a').click(function(){
        $('#jforms_regisztracio_regisztracio_contact_name').val($('#jforms_regisztracio_regisztracio_name').val());
        $('#jforms_regisztracio_regisztracio_contact_zip').val($('#jforms_regisztracio_regisztracio_zip').val());
        $('#jforms_regisztracio_regisztracio_contact_city').val($('#jforms_regisztracio_regisztracio_city').val());
        $('#jforms_regisztracio_regisztracio_contact_address').val($('#jforms_regisztracio_regisztracio_address').val());
      });
    };

});

