var ITEMS_PER_PAGE = 10;

var AREA = '0';
var COUNTRY = '1';
var CITY = '2';

// location main panel
var l_main_panel = $("#search_item");
var l_panel = $("#search_onpress");

var ajaxFindChildren = function(loc_id, foundChildrenCallback) {
	$.getJSON("/location/get_children_json/"+loc_id+"/", foundChildrenCallback);
}

// render ajax data to $("#id_l_main_panel")
var renderDataMain = function(loc_type, loc_name) {
	var ul;
	if (loc_type == CITY) {
		ul = $("#id_home_ul");
	} else if (loc_type == COUNTRY) {
		ul = $("#id_abroad_ul");
	} else if (loc_type == AREA) {
		ul = $("#id_area_ul");
	}

	var a = $("<a href='javascript:void(0)' />").append(loc_name);
	ul.append($("<li/>").append(a));
	return a;
};

var renderData = function(loc_type, loc_name) {
	var a = $("<a href='javascript:void(0)' />").append(loc_name);
	$("#id_ul").append($("<li/>").append(a));
	return a;
};

var drillDown = function(loc_type, loc_id, loc_name) {
	//console.log("drillDown loc_type=%s, loc_id=%s, loc_name=%s", loc_type, loc_id, loc_name);

	$("#id_location_q").val(loc_name); // send name to input box
	$("#id_location_q").focus();
	//console.log('typeof(loc_type)='+typeof(loc_type));
	if (loc_type == CITY) {
		return;
	} else if (loc_type == AREA || loc_type == COUNTRY) {
		//console.log('loc_id='+loc_id);
		ajaxFindChildren(loc_id, function(data) {
			//console.log("ajaxFindChildrenCallback loc_id="+loc_id);
			$("#id_ul").empty();
			var list = data.children_list;
			var pageCallback = function(page_index, container) {
				$("#search_onpress").slideDown("slow");
				$("#id_location_q").focus();
				$("#id_ul").empty();
				var max_elem = Math.min((page_index+1) * ITEMS_PER_PAGE, list.length);
				for (var i = page_index * ITEMS_PER_PAGE; i<max_elem; i++) {
					var loc_id = list[i].pk;
					var loc_name = list[i].fields.name;
					var loc_type = list[i].fields.location_type;
					var a = renderData(loc_type, loc_name);
					//console.log("pageCallback: loc_id=%s, loc_name=%s, loc_type=%s",loc_id,loc_name,loc_type);
					a.attr("onclick", "drillDown('"+loc_type+"','"+loc_id+"','"+loc_name+"')");
					//a.click(function() {
					//console.log("a.click() loc_id=%s, loc_name=%s, loc_type=%s",loc_id,loc_name,loc_type);
					//drillDown(loc_type, loc_id, loc_name);
					//});
				}

			};
			$("#Pagination").pagination(list.length, {
				items_per_page: ITEMS_PER_PAGE,
				//					num_edge_entries: 1,
				num_display_entries: 5,
				link_to: "javascript:void(0)",
				prev_text:"<-",
				next_text:"->",
				//					ellipse_text:"...",
				prev_show_always:false,
				next_show_always:false,
				callback: pageCallback
			});
			pageCallback(0, null);
			/*				
			$(data.childrenList).each(function() {
				var loc = this;
				var loc_id = loc[0];
				var loc_name = loc[1];
				var loc_type = loc[2];
				var a = renderData(loc_type, loc_name);
				a.click(function() {
					drillDown(loc_type, loc_id, loc_name);
				});
				$("#id_l_panel").slideDown("slow");
			});
*/
		});
	}
};

var initDataList = function(url,o){
	var dateList = [];
	$.getJSON(url, function(data){
		$(data.list).each(function(){
			dateList.push(this.name);
		});				
		o.autocomplete(dateList, {
			autoFill: true,
			scroll: true,
			scrollHeight: 380
		});
	});
};

var LocationResultUtil = function(sname){
	$.getJSON("/location/by_name_json/"+sname+"/", function(data) {
		var item = data.location;
		var loc_id = item.pk;
		var loc_name = item.fields.name;
		var loc_type = item.fields.location_type;
		drillDown(loc_type, loc_id, loc_name);
	});	
};


// init
$.getJSON("/location/home_abroad_json/", function(data) {
	$(data.home_list).each(function() {
		var loc = this;
		var loc_id = loc.pk;
		var loc_name = loc.fields.name;
		var loc_type = loc.fields.location_type;
		//			console.log("loc_id is %s,loc_name is %s,loc_type is %s",loc_id,loc_name,loc_type);
		var a = renderDataMain(2, loc_name);
		a.click(function() {
			drillDown(loc_type, loc_id, loc_name);
		});
	});
	$(data.abroad_list).each(function() {
		var loc = this;
		var loc_id = loc.pk;
		var loc_name = loc.fields.name;
		var loc_type = loc.fields.location_type;
		//			console.log("loc_id is %s,loc_name is %s,loc_type is %s",loc_id,loc_name,loc_type);
		var a = renderDataMain(1, loc_name);
		a.click(function() {
			drillDown(loc_type, loc_id, loc_name);
		});
	});
});	

$(document).ready(function() {
	tabs = $("#search");
	list = $("#search > ul:first");
	lis = $('li:has(a[href])', list);
	anchors = lis.map(function() { return $('a', this)[0]; });
	containers = $("div.tabs-container", tabs);
	anchors.each(function(i, a) {
		var href = $(a).attr('href');
		var tab_id = href.split('#')[1];
		$(a).click(function(ev) {
			ev.preventDefault();
			li = $(this).parent();
			if ( ! li.hasClass("tabs-selected")) {
				li.siblings().removeClass("tabs-selected");
				li.addClass("tabs-selected");
			}
			containers.each(function() {
				$(this).addClass('tabs-hide');
			});
			$('#'+tab_id).removeClass('tabs-hide');
		});
	});
	//	initDataList("/shop!showAllShop.json",$("#id_retailer_q"));
	//$('#search').tabs();

	
	// autocomplete init
	$("#id_retailer_q").autocomplete(shopNameList, {
		autoFill: true,
		scroll: true,
		scrollHeight: 380
	});	
	
	$("#id_location_q").autocomplete(locationNameList, {
		autoFill: true,
		scroll: true,
		scrollHeight: 380
	}).result(function(event, data, formatted){
		LocationResultUtil(formatted);
	});
	
	// adjust panel position
	//	var offset = $("#id_location_q").offset();
	//	$("#id_l_main_panel").css({
	//width: $("#id_location_q").width()-14,
	//		top: offset.top + $("#id_location_q").height() + 5,
	//		left: offset.left
	//	});
	//	$("#id_l_panel").css({
	//		width: 240,
	//		top: offset.top + $("#id_location_q").height() + 5,
	//		left: offset.left
	//	});

	// bind events to input box
	$("#id_location_q").focus(function() {
		if (! $(this).val()) { // if empty input box
			$("#search_item").slideDown(240);
		}
	}).click(function() {
		if (! $(this).val()) { // if empty input box
			$("#search_item").slideDown(240);
		}
	}).keypress(function() {
		$("#search_item").hide();
		$("#search_onpress").hide();
	}).blur(function() {
		$("#search_item").fadeOut("slow");
		$("#search_onpress").fadeOut("slow");
		//$("#id_l_main_panel").hide();
		//$("#id_l_panel").hide();
	});


	




});
