function dump(obj) {
    var out = "";
    if(obj && typeof(obj) == "object"){
        for (var i in obj) {
            out += i + ": " + obj[i] + "\n";
        }
    } else {
        out = obj;
    }
    alert(out);
}

$(document).ready(function () {
  // События селектов с географией.
  $("select.geo_country").change(function () {
    window._country_id = this.value;
    $('select.geo_state').load('/index.php?page=product&mode=ajax&submode=states&country_id='+this.value, function () {
      $(this).change();
      //$('select.geo_city').load('/index.php?page=product&mode=ajax&submode=cities&country_id='+this.value);
    });
  });
  $("select.geo_state").change(function () {
    $('select.geo_city').load('/index.php?page=product&mode=ajax&submode=cities&state_id='+this.value+'&country_id='+window._country_id, function(){
		if( $(this).attr('id')=='city_id2' || $(this).attr('id')=='city_id3'){
			$(this).prepend('<option value="0"></option>');
		}
		
	});
  });

  if ($("select.geo_country").val() != 0) {
      if ($("select.geo_state").val() == 0) {
          $("select.geo_country").change();
      }
      else if ($("select.geo_city").val() == 0) {
        $("select.geo_state").change();
      }
  }

  style_forms();

  // "default" чекбоксы.
  $('form[default]').each(function (form_idx, form)
  {
    var default_value = $(form).attr('default');
    $('input[default],textarea[default]').each(function (idx, el)
    {
	  var add_options_checkbox = 0;
	  if ($(el).attr("name").indexOf("additional_options") >= 0)
		add_options_checkbox = 1;
      var no_checboxes = window._js_global_default_fields_no_checkboxes || false;
      $(el).attr('old_value', $(el).val());
      if (el.type == 'checkbox' && !add_options_checkbox)
        $(el).prev('input[type=hidden][name="'+el.name+'"]').remove();

      var checkbox = document.createElement('input');
      checkbox.type = 'checkbox';
      checkbox.title = "Use default value";
      checkbox.checked = $(el).attr('is_default') == "1";
      checkbox.className = 'checkbox-default';
      $(el).before(checkbox);
      $(checkbox).css({'vertical-align': 'top'});
      if (no_checboxes && !$(el).hasClass('force_checkboxes')) {
          $(checkbox).css('display', 'none');
      }

      var replacer = document.createElement('div');
      replacer.className = 'default';
      replacer.style.position = 'absolute';
      replacer.style.visibility = 'hidden';
      replacer.innerHTML = 'default';
      var el_offset = $(el).offset();
      replacer.style.top = el_offset.top+'px';
      replacer.style.left = el_offset.left+'px';
      $(el).after(replacer);
      var onclick = function ()
      {
        el.style.visibility = this.checked ? 'hidden' : 'visible';
        replacer.style.visibility = this.checked ? 'visible' : 'hidden';
        if (this.checked)
        {
          $(el).attr('old_value', $(el).val());
		  if (!add_options_checkbox)
			$('*[name="'+$(el).attr('name')+'"]').val(default_value);
		  else
			$('*[name="_'+$(el).attr('name')+'"]').val(default_value);
          if ((el.type == 'checkbox') && add_options_checkbox)
            $(el).after('<input type="hidden" name="_'+el.name+'" value="'+default_value+'" />');
		  else //if (el.type == 'checkbox')
            $(el).after('<input type="hidden" name="'+el.name+'" value="'+default_value+'" />');
        }
        else
        {
          if (!add_options_checkbox)
		    $('*[name="'+$(el).attr('name')+'"]').val($(el).attr('old_value'));
		  else
			 $('*[name="_'+$(el).attr('name')+'"]').val($(el).attr('old_value'));
          if ((el.type == 'checkbox' ) && add_options_checkbox)
            $(el).next('input[type=hidden][name="_'+el.name+'"]').remove();
		  else //if (el.type == 'checkbox')
            $(el).next('input[type=hidden][name="'+el.name+'"]').remove();
        }
      };
      $(checkbox).click(onclick);
      onclick.call(checkbox);
    });

	// Default checkbox for additional options at calendar_item edit
	$('div.cal_additional_options').each(function (idx, div) {

		checked = $(div).attr("is_default");
		value_pointer = $(div).find('input.value_pointer').val();
		default_box = '\
		<div class="default_box">\
			<input type="hidden" name="'+value_pointer+'[default]" value="0">\
			<input type="checkbox" name="'+value_pointer+'[default]"'+(checked ? ' checked="checked"' : '')+'>\
			<div>default</div>\
		</div>';

		
		
		default_box = $(default_box);
		$(default_box).insertAfter($(div).find('div.option_value_name'));
		if (checked)
			$(div).find('div.option_value_params').hide();
		else
			$(div).find('div.default_box > div').hide();
	})
  });

	$('div.default_box > input').click(function() {

		value = $(this).parent().parent();
		default_box = $(this).parent();

		if (!$(this).attr("checked")) {

			$(default_box).find("div").hide();
			$(value).find('div.option_value_params').show();
		}
		else {

			$(default_box).find("div").show();
			$(value).find('div.option_value_params').hide();
		}
	});

	if ($("div.higher_price, div.higher_price_small").length > 0) {

		$("img.higher_price_info_large, img.higher_price_info_small").hover(
			function() {
				$(this).parent().find("div.higher_price, div.higher_price_small").show();
			},
			function() {
				$(this).parent().find("div.higher_price, div.higher_price_small").hide();
			}
		)
	}

	if ($(".add_description").length > 0) {

		$(".add_description").each(function(index, obj) {
			$(obj).bind("click", function() {

				addDescription(this);
			});
		});
	}

	if ($("a.taxes").length > 0)
		$("a.taxes").tooltip();
});

function addDescription(obj) {

	obj = $(obj).parent();

	// already have textarea
	if ($(obj).find("textarea.ticket_description").length > 0)
		return;

	ticket_type_id = $(obj).find("input[type=radio]").val();

	$(obj).append('<br><textarea class="ticket_description" name="tickets['+ticket_type_id+'][description]"></textarea>');

	return;
}

function style_forms()
{
  // Поля для ввода даты.
  $('input.date').date_input();

  $('form.form-common input[type="submit"]').addClass('submit').prev('label.field-label').remove();
}

function setCookie (name, value, expires, path, domain, secure)
{
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "; path=/") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name)
{
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return(setStr);
}

function ticketType(calendar)
{

	calendar = calendar || false;

	$.fn.makeSelect = function(id){
		var elems=available.split(';');
		for (var i = 0; i < elems.length; i++)
		{
			tmp=elems[i].split(':');
			if (tmp[0] == id)
			{
				$(this).empty();
				var len = (tmp[1] > 20) ? 20:tmp[1];
				for (var j = 0; j < len; j++)
					$(this).append($('<option>').attr('value',j + 1).html(j + 1));
			}
		}
		return $(this);
	}
	


	function _change()
	{
		if (this.value!=-1) {

			//$(this).next('span').remove().end().next().show().makeSelect(this.value).attr('name','tickets['+this.value+']').before($('<span>').html(' '));
			$(this).next().show().makeSelect(this.value).attr('name','tickets['+this.value+']');

			// Hide 'view ticket description' link for empty description
			if (tickets_description[this.value] == '')
				$(this).parent().find("a.ticket_description").hide();
			else
				$(this).parent().find("a.ticket_description").show();
		}
		else
			//$(this).next().remove().end().next().attr('name','').hide();
			$(this).next().attr('name','').empty();
	}

	//
	var select = $('select#tickets');
	select.parent().html("<div>"+select.parent().html()+"</div>");

	// исходный элемент
	var select=$('select#tickets').attr('name','').change(_change);
	// данные о кол-ве билетов
	var available=select.attr('available');
	// удаляем чтобы не мешались)
	select.removeAttr('available');
	select.removeAttr('name');
	//
	var input=$('<select>').append('<option>-</option>').css({/*display:'none',*/width:'60px',marginLeft:'6px'});
	select.after(input);
	//

	select.parent().append('<a class="ticket_description" title="test">View Ticket Description</a>');
	$("a.ticket_description").tooltip({
		effect: 'slide',
		offset: [10],
		tipClass: 'tooltip ticket_description_tooltip',
		onBeforeShow: function(event) {

			var element = this.getTrigger();
			$("div.ticket_description_tooltip").html(tickets_description[$(element).parent().find('select#tickets').val()]);
		}
	});

	//
	if (available.split(';').length > 1)
		var add_link = $('<input type="button" value="Add ticket type">').css('margin','5px 0 0 '+(calendar ? '90' : '210')+'px').click(function(){
			
			var div = $('<div>').css('paddingLeft',(calendar ? '85' : '210')+'px');

			var del_link = $('<a class="remove_ticket" title="Remove this ticket">').append('<img src="http://'+window.location.hostname+'/img/cross.png"/>').css('marginLeft','4px').click(function(){
				$(this).parent().remove();
				return false;
			});

			div.append(select.clone().find('option:first').attr('selected','selected').end().change(_change)).
				 append(input.clone().css({display:'',marginLeft:'6px'}).val('')).
				 append(del_link).
				 append('<a class="ticket_description" title="test">View Ticket Description</a>').
				 find("select#tickets:last").change().end().
				 find("a.ticket_description").tooltip({
					effect: 'slide',
					offset: [10],
					tipClass: 'tooltip ticket_description_tooltip',
					onBeforeShow: function(event) {

						var element = this.getTrigger();
						$("div.ticket_description_tooltip").html(tickets_description[$(element).parent().find('select#tickets').val()]);
					}
				});

			$(this).before(div);

			if ($('#calitem_details').length > 0)
				resizeHeight($('#calitem_details'));

			return false;
		});
	select.parent().parent().append(add_link);

	// Choose tickets count for first ticket
	select.change();
}

function isEmpty(obj) { 
    for(var prop in obj) { 
        if(obj.hasOwnProperty(prop)) 
            return false; 
    } 
    return true; 
}

function show_activities(activities, lvl) {

	var html = '';
	for (activity in activities) {

		var padding = 0;
		if (lvl == 0)
			padding = 3;
		else
			for (var i = 0; i < lvl; i++)
				padding += 16;

		html += '<option style="padding-left: '+padding+'px" value="'+activities[activity]['id']+'">'+activities[activity]['name']+'</option>';

		if (!isEmpty(activities[activity]['childs']))
			html += show_activities(activities[activity]['childs'], (lvl + 1));
	}

	return html;
}

$(function(){
	//
	if ($('select#tickets').length > 0)
		ticketType();
		
	
	var $activity = $('#activity');

	if (window.activities) {

		$activity.append(show_activities(activities, 0));
		var _empty = '<option value="0">Any</option>';

		$('#city').change(function(){
			if ($(this).attr("value") == 0)
				$activity.empty().append(_empty + show_activities(activities, 0));
			else
				$activity.empty().append(_empty + show_activities(cities[$(this).attr("value")]['activities'], 0));
		});
	}
});

function resizePricingHeight(obj) {

	obj = $('div.pricing_plan_dialog_content');
	dialog = $("div.pricing_plan_dialog");

	$(dialog).height($(obj).innerHeight() + 25);
	$(dialog).outerHeight($(dialog).height());
}

function showPricingPlan(trip_id, date_from) {

	$('div.pricing_plan_dialog').
		data('trip_id', trip_id).
		data('date_from', date_from).
		dialog("open");
}
$(document).ready(function () {

	$('div.pricing_plan_dialog').dialog({
		autoOpen: false,
		height: 'auto',
		width: 600,
		modal: true,
		draggable: false,
		resizable: false,
		zIndex: 9000,
		open:function(){

			$('div.pricing_plan_dialog').dialog("option", "title", '');

			var trip_id = $(this).data('trip_id');
			var date_from = $(this).data('date_from');

			$('div.pricing_plan_dialog_content').html('loading...');
			$('div.pricing_plan_dialog_content').load(
				'/details/pricinglist/' + trip_id + '/' + date_from + '/ div#pricing_list',
				function () {

					$('div.pricing_plan_dialog').dialog("option", "title", $("div.pricing_plan_dialog").find("div#pricing_title").html());
					resizePricingHeight();
				}
			);
		}
	});
});
