function buildUrl(queryString, clientPg)
{
  var url = queryString.replace(/-/g, '%2526');
  url = url.replace(/=&amp;/g, '---');
  url = url.replace(/=&/g, '---');
  url = url.replace(/&amp;/g, '--');
  url = url.replace(/&/g, '--');
  url = url.replace(/=/g, '-');

  if(clientPg == undefined)
    url = clientPage + getParamName + url;

  return url;
}

function removeElementsFromArray(someArray, filter)
{
  var newArray = [];
  for(var index = 0; index < someArray.length; index++)
  {
    if(filter(someArray[index]) == false)
      newArray.push(someArray[index]);
  }
  return newArray;
}

function isNullOrUndefined(item)
{
  return (item == null || typeof(item) == "undefined");
}

function setCategories()
{
	var categories = cli.query("#ct").children().size();
	var cats = [];

	if(categories)
	{
  	for (var i = 0; i< categories; i++)
  	{
  	  if(cli.query("#at"+i).attr('checked') == true)
  		cats[i] = cli.query("#at"+i).attr('value');
  	}
  	var results = removeElementsFromArray(cats, isNullOrUndefined);
  	var append = results.join('|');
  	document.getElementById("categories").value = append;
	}
}

function saveSearchFormData(data)
{
	var today = new Date();
	var exp = new Date(today.getTime()+999*24*60*60*1000);

	var string = (buildUrl(data, true));

	setCookie('searchData', string, exp);
}

function submitGetForm(formName)
{	
	if(formName == 'search')
	  setCategories();
	
	var data = cli.query('form[name=' + formName + ']').serialize();

	window.location = buildUrl(data);
	return false;
}

function refillBreadcrumb(val)
{
	document.getElementById("q").value = val.innerHTML;

	window.location = buildUrl(cli.query('form[name=search]').serialize());
	return false;
}

//ISO format without dashes
var dateFormatISO = 'yymmdd'; 
cli.query.datepicker.setDefaults({
	  //dateFormat: 'dd.mm.yy', language default
	  altFormat: dateFormatISO,
	  minDate: 0,
	  maxDate: '+2y',
	  defaultDate: new Date(2010, 6 - 1, 1)
});

// onLoad
cli.query(document).ready(function()
{
  // Autocompleter setup: load on end of <body> for IE6 z-index
  var autoComplete = 
    '<span class="autocompleter_holder">'
    + '  <ul class="suggestionList">'
    + '   <li class="ajaxLoader">&nbsp;</li>'
    + '  </ul>'
    + '</span>';  
  
  cli.query('body').append(autoComplete);
  cli.query('.autocompleter_holder').bgiframe();
  cli.query('.searchInputPlace').attr('autocomplete', 'off');

  function getDPValue(customField, defaultField)
  {
    if(cli.query(customField).val())
      return cli.query(customField).val();
    else
      return cli.query(defaultField).val();
  }
  
  cli.query(".tooltip").wTooltip({
    className: "toolTip", 
    style: false,
    offsetY: 22,
    offsetX: 30
  });
  
	if(cli.query("#dialog").length != 0)
	{
	  cli.query('#dialog').dialog({
	  	modal: true,
	  	autoOpen: false
	  	/* Konfirmacija redirecta
	  	buttons: {
	  		OK: function() {
		  		cli.query(this).dialog('close');
					window.location = cli.query('#reservationBtn').attr('href');
				},
				Cancel: function() {
					cli.query(this).dialog('close');
				}
			}
			*/
		});
	}
  
  // Datepickers setup
	if(cli.query("#datepicker").length != 0)
	{
		cli.query("#datepicker").datepicker({altField: '#ifrom'});
		cli.query("#datepicker").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ifrom').val()));
	
		cli.query("#datepicker2").datepicker({altField: '#ito'});
		cli.query("#datepicker2").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ito').val()));
	
		cli.query("#datepicker").change(function()
		{
			var toDate = cli.query.datepicker.parseDate('yymmdd', cli.query("#ifrom").val());
			toDate.setDate(toDate.getDate() + 7); // Add 7 days
			cli.query("#datepicker2").datepicker('setDate', toDate);
		});
	}
	if(cli.query("#datepicker3").length != 0)
	{
		cli.query("#datepicker3").datepicker({altField: '#ifrom_order'});
		cli.query("#datepicker3").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, getDPValue('#ifrom_order', '#ifrom')));
	
		cli.query("#datepicker4").datepicker({altField: '#ito_order'});
		cli.query("#datepicker4").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, getDPValue('#ito_order', '#ito')));
	
		cli.query("#datepicker3").change(function()
		{
			var toDate = cli.query.datepicker.parseDate('yymmdd', cli.query("#ifrom_order").val());
			toDate.setDate(toDate.getDate() + 7); // Add 7 days
			cli.query("#datepicker4").datepicker('setDate', toDate);
		});
	}
	if(cli.query("#datepicker5").length != 0)
	{
		cli.query("#datepicker5").datepicker({altField: '#ifrom_one'});
		cli.query("#datepicker5").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ifrom').val()));
	
		cli.query("#datepicker6").datepicker({altField: '#ito_one'});
		cli.query("#datepicker6").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ito').val()));
	
		cli.query("#datepicker5").change(function()
		{
			var toDate = cli.query.datepicker.parseDate('yymmdd', cli.query("#ifrom_one").val());
			toDate.setDate(toDate.getDate() + 7); // Add 7 days
			cli.query("#datepicker6").datepicker('setDate', toDate);
		});
		
	}
	if(cli.query("#datepicker7").length != 0)
	{
		cli.query("#datepicker7").datepicker({altField: '#ifrom_two'});
		cli.query("#datepicker7").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ifrom').val()));
	
		cli.query("#datepicker8").datepicker({altField: '#ito_two'});
		cli.query("#datepicker8").datepicker('setDate', cli.query.datepicker.parseDate(dateFormatISO, cli.query('#ito').val()));
		
		cli.query("#datepicker7").change(function()
		{
			var toDate = cli.query.datepicker.parseDate('yymmdd', cli.query("#ifrom_two").val());
			toDate.setDate(toDate.getDate() + 7); // Add 7 days
			cli.query("#datepicker8").datepicker('setDate', toDate);
		});
	}
	
	setCategories();
	saveSearchFormData(cli.query("form[name='search']").serialize());
	
	cli.query("a[rel='prettyPhoto']").prettyPhoto();
});

// COOKIE functions
//Set cookie function does all magic work, the formal paramters are value for all settings options
function setCookie(name, value, expires, path, domain, secure)
{
	// We must trace the string of vlaues and check time of expiration
	// Simple concatenation stores all vars
	document.cookie= name + "=" + escape(value) +
	  ((expires) ? "; expires=" + expires.toGMTString() : "") +
	  ((path) ? "; path=" + path : "") +
	  ((domain) ? "; domain=" + domain : "") +
	  ((secure) ? "; secure" : "");
}

function getCookie(name)
{
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1)
  {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  }
  else
    begin += 2;

  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  
  return unescape(dc.substring(begin + prefix.length, end));
}

// Helper function deletes cookie by name
function delCookie(name)
{
	document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}

function setLanguageCookie(cookieName, val)
{
  // Date manipulation
  var today = new Date();
  var exp   = new Date(today.getTime()+999*24*60*60*1000); // 999 days
  var cookieLangName = cookieName; // Name the cookie
  setCookie(cookieLangName, val, exp); // Set the cookie
}

//Vertical sliders
/*
function handleChange(e, ui)
{
  var maxScroll = cli.query("#galleryMenuHolder").attr("scrollHeight") - cli.query("#galleryMenuHolder").height();
  cli.query("#galleryMenuHolder").animate({scrollTop: -ui.value * (maxScroll / 100)}, 1000);
}
handleChangeThumbs(e, ui)
{
  var maxScroll = cli.query("#galleriesThumbs").attr("scrollHeight") - cli.query("#galleriesThumbs").height();
  cli.query("#galleriesThumbs").animate({scrollTop: -ui.value *(maxScroll / 100)}, 1000);
}
*/

function handleSlide(e, ui)
{
  var maxScroll = cli.query("#galleryMenuHolder").attr("scrollHeight") - cli.query("#galleryMenuHolder").height();
  cli.query("#galleryMenuHolder").attr({scrollTop: -ui.value * (maxScroll / 100)});
}
function handleSlideThumbs(e, ui)
{
  var maxScroll = cli.query("#galleriesThumbs").attr("scrollHeight") - cli.query("#galleriesThumbs").height();
  cli.query("#galleriesThumbs").attr({scrollTop: -ui.value * (maxScroll / 100)});
}

// Autocompleter functions
function lookup(inputString, id, lang)
{
  cli.query('.suggestionList').html('<li class="ajaxLoader">&nbsp;</li>');
  cli.query('.autocompleter_holder').css({
    'left': cli.query('#autocomplete' + id).offset().left,
    'top': cli.query('#autocomplete' + id).offset().top + cli.query('#autocomplete' + id).height() - 3
  });
  
 if(inputString.length == 0)
  {
    cli.query('.autocompleter_holder').hide();
  }
  else
  {
    cli.query('.autocompleter_holder').show();

    cli.query.get(enviroment + "wshtml.php?module=autocomplete&lang=" + lang + "&acid=" + id, {queryString: inputString}, function(data)
    {
      if(data.length > 1)
      {
        cli.query('.autocompleter_holder').show();
        cli.query('.suggestionList').html(data);
      }
      else
        cli.query('.autocompleter_holder').hide();
    });
  }
}

// Autocompleter functions
function fill(name, value, id)
{
  if(name !== null)
    cli.query('.searchInputPlace').val(name);
    
  if(value != null)
  	cli.query('.searchInputId').val(value);
  	
  setTimeout("cli.query('.autocompleter_holder').hide();", 200);
}

function filterKeyboard(e, val, id, lang)
{
  if(!(e.keyCode==16 || (e.keyCode==9 && e.shiftKey)))
    lookup(val, id, lang);
}