$(function() {
	
	var var_name = $("#name"),
	var_email = $("#email"),
	var_password = $("#password"),
	var_report = $("#hike-report"),
	var_review_report = $("#hike-report-review"),
	var_description = $("#hike-description"),
	allFields = $([]).add(var_name).add(var_email).add(var_password).add(var_report).add(var_review_report).add(var_description);
	
	$("#trail-report, #trail-photos, #google-map").hide();	
	
	
	$('#keywords')
		.focus(function(){if($(this).val() == 'Keywords')$(this).val("");})
		.blur(function(){if(!$(this).val()) $(this).val("Keywords");});
	$('#address')
		.focus(function(){if($(this).val() == 'Your Zip/City/Address') $(this).val("");})
		.blur(function(){if(!$(this).val()) $(this).val("Your Zip/City/Address");});
		
    $("#container_top, #dialog-search, #container_content").keypress(function(e){ 
    	if (e.keyCode=='13') { search(); }	
    });
    $("#mytip").keypress(function(e){ 
    	if (e.keyCode=='13') { calculateDriveT() }	
    });
    
    $("#tip_zip").keyup(function(){
    	
    })
	//trail url link
	$.history.init(callback);
    $("a.history").click(function(){$.history.load(this.href.replace(/^.*#/, '')); return false; });
});

function callback(hash) {
	if(hash) {
		row_json = eval("("+Base64.decode(hash)+")");
        id = row_json.id;
       	
        window.activity_json_store = row_json.data_json;
        window.search_json_store = row_json.search_json;
        window.compare_json_store = row_json.compare_json;
        window.order_json_store = row_json.order_json;
        window.pagination_json_store = row_json.pagination_json;
    	//populate search fields
        
        selectCountry(row_json.search_json['country']);
        $("#state_id").val(window.search_json_store['state_id']);

    	$("#region_id").prev().html(row_json.search_json['region_name']);
    	$("#state_id").prev().html(row_json.search_json['state_name']);
    	$("#keywords").val(row_json.search_json['keywords']);
    	
    	//alert(reloadPage())
    	
    	if (reloadPage())  getActs("", 1); 
    	else {
         	detailActivity(id);
         	$("#reloadPage").val(1);
         	
    	}
	}    
}

function selectCountry(country) {
	$("#country").val(country);
	//country = country == 'usa' ? 'sua' : country;
	$("#usa-sub").hide();
	$("#canada-sub").hide();
	$("#europe-sub").hide();
	
	$("#"+country+"-sub").show();
	
	if(country == 'europe') {
		
		$("#ski-header-usa").hide()
		$("#ski-header-europe").show();		
	}
	
	$("#usa-tab, #europe-tab, #canada-tab").parent().removeClass("selected");
	$("#"+country+"-tab").parent().addClass("selected");	
}

function getActsCallback(nr) {
	if( nr==1 ) {
    	detailActivity(id);
	}
}

function resetBoxBackground(element) {
	$(element).find(".scroll_wrapper").css({
		"background":"#F4F4F4"
	});
}

function detailActivity(act_id) {
	
	$("#trail-report-sub, #trail-status-sub, #stats-weather, #trail-photos-sub").html("");
	$("#trail-report, #trail-status, #trail-photos, #google-map").find(".scroll_wrapper").css({
		"background":"#F4F4F4 url("+window.bUrl+"/img/loading.gif) no-repeat center center"
	});
	
	$("#status-advertise").hide();
	
	$("#all-trails, #trail-report, #trail-status, #trail-photos, #google-map").show();
	
	//set activity id 
	window.act_id = act_id;
	
	//detailActivityReviews(act_id);
	
	officialReview(act_id)
	
	//load status info
	detailActivityStatus(act_id);
	//load photos
	
	//window.settings.upload_url = window.bUrl+'/ajax/upload-photo/act_id/'+act_id;
	
	//console.log(window.swfu);
	
	window.description_ids = [];
	window.delete_ids = [];
	
	detailActivityPhotos(act_id);
	//load google map
	detailActivityMap(act_id);
	currentRow(act_id);
	startInlineMenu(act_id);
}


function search(act_id) {
	$("#trail-report, #trail-status, #trail-photos, #google-map").hide();
	$("#status-advertise").show();
	$("#all-trails").show();
	
	//reset pagination
	if(window.pagination_obj == undefined) {
		pagination_obj = {}
		pagination_obj.pagination_start = 0;
		pagination_obj.pagination_max = 0;
		pagination_obj.pagination_limit = $("#pagination_limit").val();
		pagination_obj.current_page = 1;
		pagination_obj.max_pages = 0;
		window.pagination_json_store = pagination_obj;
	}
	
	//reset region label
	//$("#region_id").prev().html("");
	
	//reset search
	window.activity_json_store = {};

	window.search_json_store = {};
	if(window.compare_json_store == undefined)
		window.compare_json_store = {};
	window.order_json_store = {};
	
	var_state = $("#state_id").val();
	
	regionId = $("#region_id").val() ? $("#region_id").val() : 0;
	google_address = $("#address").val();
	
	var_driving_timeA = $("#driving_timeA").val()
	var_driving_timeB = $("#driving_timeB").val()

	if (!var_state) {
		alert('Please select a state.');
		return;
	}	
		
	search_obj = {};
	activity_obj = {};
	//get narrow serack values for ski
	
	activity_obj = getNarrowObj();
	
	search_obj['state_id'] = $("#state_id").val();
	search_obj['country'] = $("#country").val();
	search_obj['region_id'] = regionId;
	//search_obj['state_name'] = $("#state_id").prev().html();
	//search_obj['region_name'] = $("#region_id").prev().html();
	search_obj['keywords'] = $("#keywords").val();
	
	window.activity_json_store = activity_obj;
	window.search_json_store = search_obj;
	
	
	getActs("search");
	
}

function getActs(type, callbackNr) {
	//old search function

	if(type == "") {
		$("#status-advertise").hide();
		$("#all-trails, #trail-report, #trail-status, #trail-photos, #google-map").show();
	} else {
		$("#trail-report, #trail-status, #trail-photos, #google-map").hide();
		$("#status-advertise").show();
	}	

	$("#act-location").html(" - "+$("#state_id option:selected").text());
	loadRegions('', '', 1, window.search_json_store['region_id']);
	
	activity_json = JSON.stringify(window.activity_json_store);
	search_json = JSON.stringify(window.search_json_store);
	order_json = JSON.stringify(window.order_json_store);
	pagination_obj = window.pagination_json_store;
	pl = parseInt(pagination_obj.pagination_limit);
	ps = parseInt(pagination_obj.pagination_start);
	pm = parseInt(pagination_obj.pagination_max);
	
	display_loading = 1;
	if(type == 'next') {
		if(ps + pl < pm ) {
			ps = ps + pl;
		} else {
			display_loading = 0;
		}
	} else if(type == 'previous') {
		if(ps > 0 ) {
			ps = Math.max(ps - pl, 0);
		} else {
			ps = 0;
			display_loading = 0;
		}
	}
	
	if(display_loading == 1) {
		$("#all-act-sub").html("");
		$("#all-trails").find(".scroll_wrapper").css({
			"background":"#F4F4F4 url("+window.bUrl+"/img/loading.gif) no-repeat center center"
		});
	}

	pagination_obj.pagination_start = ps;
	pagination_obj.pagination_max = pm;
	window.pagination_json_store = pagination_obj;

	$.post(window.bUrl+"/ajax/load-trails/act/"+window.act+"/start/"+ps+"/per_page/"+pl, {activity_json: activity_json, search_json: search_json, order_json: order_json}, function(data){
		//store data for sorting
		
		data = evaluate(data);
		//alert(data.dt.length);
		
		if(data.dt.length) {
			
			//console.log(JSON.stringify(data.dt));
			
			$("#data_store").html(JSON.stringify(data.dt));

			str = getAdventuresTable(data.dt);
			
			$("#all-act-sub").html("");
			resetBoxBackground($("#all-trails"));
			
			$("#all-act-sub").html(str);
			autoCheckCompare();
			
			act_id = $("#act_id").val();
			if(act_id) {
				currentRow(act_id);
			}
			
			startInlineMenu(act_id);
			
			google_address = $("#address").val();
			//pagination max
			pagination_obj = window.pagination_json_store;
			pl = parseInt(pagination_obj.pagination_limit);
			ps = parseInt(pagination_obj.pagination_start);
			pm = data.mx
			curr_page = ps/pl + 1;
			maxPages = Math.ceil(data.mx/pl);
			//$("#pagination_start").val(ps);
			//$("#pagination_max").val(data.mx);
			curr_page_str = '';
			for(i=1; i <= maxPages; i++) {
				curr_page_str += (i == curr_page) ? "<option selected='selected' value='"+i+"'>"+i+"</option>" : "<option value='"+i+"'>"+i+"</option>"; 				
			}
			curr_page_str = "<select id='current_page_select' onchange='jumpTo()'>"+curr_page_str+"</select>";
			//$("#current_page").html(curr_page);
			$("#current_page").html(curr_page_str);
			
			$("#max_pages").html(maxPages);
			
			pagination_obj.pagination_start = ps;
			pagination_obj.pagination_max = data.mx;
			pagination_obj.current_page = curr_page;
			pagination_obj.max_pages = maxPages;
			pagination_obj.pagination_limit = $("#pagination_limit").val();

			window.pagination_json_store = pagination_obj;
			
			//alert('aici'+JSON.stringify(window.pagination_json_store));
			
			$("#navigation-span").show();
			
			getActsCallback(callbackNr)
		} else {
			action = getActivityName(true);
			str = '<div class="no-item-msg">There are no '+action+'.</div>';
			resetBoxBackground($("#all-trails"));
	 		$("#all-act-sub").html(str);
		}
	});
	
	$("#trail-report-sub, #trail-status-sub, #stats-weather, #trail-photos-sub").html("");
	
}

function jumpTo() {
	cp = $("#current_page_select").val();
	window.pagination_json_store.current_page = cp;
	pl = window.pagination_json_store.pagination_limit;
	window.pagination_json_store.pagination_start = pl * ( cp - 1);
	getActs();
}

function currentRow(act_id) {
	//remove current Row
	$("#all-act-sub table tr.prow").each(function(){
	    if(this.id != "") $("#"+this.id).removeClass('currentRow').removeClass('current')
	})
	//add current Row for selected tr
	$("#"+act_id).addClass("currentRow");
}

function startInlineMenu(tid) {
	//if(hidden == undefined) hidden = true;
/*	if(hidden == true) 
		offset2 = [-355, -400];
    else 
		offset2 = [-787, -400];
*/

	$("#trails-table tr.prow").tooltip1({ 
		offset: [-109, -235],
		position: 'center right',
		tip: $('#mytip'),
		cancelDefault: false,
		delay: 300,
		onBeforeHide: function(){
		    tid = $("#tip_tid").val();
		    $("tr#"+tid).removeClass('current');
		    //return false;
		},
		events: {
			def: 	"mouseenter,mouseleave",
			input: 	"focus,blur",
			widget:	"focus mouseover,blur mouseout",
			tooltip1:"mouseenter,mouseleave"
		}	
	});
	
	$('#scroll1').jScrollPane();
	$("#scroll1 tr.prow").hover(function(){
		$(this).addClass("current");
		//populate tooltip box
		tid = this.id;
		$("#tip_tid").val(tid);
		
		inlineMenu(tid);
		
		$(".star").rating();
		$(".readonly_star").rating();
		$(".readonly_star").rating('readOnly');

		$("#tip_lat").val(getField(tid, 'lat'));
		$("#tip_long").val(getField(tid, 'lng'));
		$("#tip_zip").val("");
		$("#google_results").html("");
		$(".loading_div").hide();
		
		//zip cookie
		advzzip = readCookie('advzzip');
		zip = advzzip ? advzzip : 'Zip';
		$("#tip_zip").val(zip);
		$("#tip_zip").click(function(){
			if($("#tip_zip").val() == "Zip")
				$("#tip_zip").val("");
		});
	});
}


function edit_time(act_id, time) {
	if (time==undefined) time = 0;
	time = Math.round(time);
	h = Math.floor(time / 60);
	m = time - (h * 60);
	$("#edit_hour").val(h);
	$("#edit_minute").val(m);
	hh = h < 10 ? '0'+h : h;
	mm = m < 10 ? '0'+m : m;
	
	str='<b><span class="left" id="display_edit_hour">'+hh+'</span></b>'+
		'<div class="left edit_up_down">'+
			'<div onclick="hourMove('+act_id+', \'up\')" class="edit_up"></div>'+
			'<div onclick="hourMove('+act_id+', \'down\')" class="edit_down" ></div>'+
		'</div>'+
		'<span class="left">:</span>'+
		'<b><span class="left" id="display_edit_minute">'+mm+'</span></b>'+
		'<div class="left edit_up_down">'+
			'<div onclick="minuteMove('+act_id+', \'up\', 1)" class="edit_up"></div>'+
			'<div onclick="minuteMove('+act_id+', \'down\', 1)" class="edit_down"></div>'+
		'</div>'+
		'<b><span class="left"> h</span></b>'+
		'<span class="left" style="cursor: pointer; margin: 2px 0px 0px 2px; height:16px" onclick="save_time('+act_id+')"><img src="'+window.bUrl+'/img/floppy.png" /></span>'+
		
		'<div style="clear: left"></div>';
	
	$("#time_my").html(str);
}	

function save_time(act_id) {
	if(!limitMyActions()) return;
	h = parseInt($("#edit_hour").val());
	m = parseInt($("#edit_minute").val());
	t = h * 60 + m;
	$.post(window.bUrl+"/ajax/save-time/act_id/"+act_id+"/time/"+t+"/act/"+window.act, {}, function(data){
		data = evaluate(data);
		setField(act_id, 'ptime', t);
	});
}

function save_rating(act_id) {
	if(!limitMyActions()) return;
	diff = $("input[type=radio][name='rate_my']:checked").val();
	$.post(window.bUrl+"/ajax/save-rating/act_id/"+act_id+"/rate/"+diff+"/act/"+window.act, {}, function(data){
		data = evaluate(data);
		setField(act_id, 'prating', diff);
	});
}

function save_scenic(act_id) {
	if(!hasIdentity()) return;
	rate = $("input[type=radio][name='scen_my']:checked").val();
	$.post(window.bUrl+"/ajax/save-scenic/act_id/"+act_id+"/rate/"+rate+'/act/'+window.act, {}, function(data){
		evaluate(data);
		setField(act_id, 'pscenic', rate);
	});
}

/*

function save_diff(act_id) {
	//diff = parseInt($("#edit_diff").val());
	if(!limitMyActions()) return;
	diff = $("input[type=radio][name='diff_my']:checked").val();
	$.post(window.bUrl+"/ajax/edit-avg-diff/act_id/"+act_id+"/diff/"+diff+"/act/"+window.act, {}, function(data){
		data = evaluate(data);
		setRatingField(act_id, diff);
	});
}

function save_scenic(act_id) {
	if(!hasIdentity()) return;
	rate = $("input[type=radio][name='scen_my']:checked").val();
	$.post(window.bUrl+"/ajax/save-scenic/act_id/"+act_id+"/rate/"+rate, {}, function(data){
		evaluate(data)
		setField(act_id, 'personal_scenic', rate);
	});
}

*/

function setField(act_id, what, value) {
	dataStore = $("#_conquest").val() == 1 ? 'data_store_ski' : 'data_store';
	data = $("#"+dataStore).html();
	data = eval(data);
	
	for(i=0; i<data.length; i++ ){
		if(data[i].id == act_id)
			data[i][what] = value;
	}
	$("#"+dataStore).html(JSON.stringify(data));
}

function getField(act_id, what) {
	dataStore = $("#_conquest").val() == 1 ? 'data_store_ski' : 'data_store';
	data = $("#"+dataStore).html();
	data = eval(data);
	for(i=0; i<data.length; i++ ){
		if(data[i].id == act_id)
			return data[i][what];
	}
}


function hourMove(act_id, dir) {
	h = parseInt($("#edit_hour").val());
	m = parseInt($("#edit_minute").val());
	if(dir == 'up') {
		if(h<24) h++;
	} else {
		if(h>0) h--;
	}
	time = h * 60 + m;
	setField(act_id, 'time_trip', time);
	$("#edit_hour").val(h);
	h = h < 10 ? '0'+h : h;
	$("#display_edit_hour").html(h);
}

function minuteMove(act_id, dir, inc) {
	h = parseInt($("#edit_hour").val());
	m = parseInt($("#edit_minute").val());
	if(dir == 'up') {
		if(m+inc<60) m=m+inc;
		else m=60;
	} else {
		if(m-inc>0) m=m-inc;
		else m=0;
	}
	time = h * 60 + m;
	setField(act_id, 'time_trip', time);
	$("#edit_minute").val(m);
	m = m < 10 ? '0'+m : m;
	$("#display_edit_minute").html(m);
}



function display_time(t) {
	if(t>0) {
		t = Math.round(t);
		h = Math.floor(t / 60);
		m = Math.ceil(t) - (h * 60);
		if(m==60) {
			m = 0;
			h = h + 1;
		}
		h = h <= 9 ? '0'+h : h;
		m = m <= 9 ? '0'+m : m;
		return h+':'+m+' h';
	} else {
		return '?';
	}
}

function myUrl(act_id) {
	data_json = JSON.stringify(window.activity_json_store);
	search_json = JSON.stringify(window.search_json_store);
	compare_json = JSON.stringify(window.compare_json_store);
	order_json = JSON.stringify(window.order_json_store);
	pagination_json = JSON.stringify(window.pagination_json_store);
	url_json = '{"id":"'+act_id+'","data_json":'+data_json+',"search_json":'+search_json+',"compare_json":'+compare_json+',"order_json":'+order_json+',"pagination_json":'+pagination_json+'}'; 
	document.location.hash = Base64.encode(url_json);
}

function reloadPage() {
	return $("#reloadPage").val() == 1 ? 1 : 0;
}

function loadTrail(act_id) {
	myUrl(act_id); 
	$("#reloadPage").val(0);
	if($.browser.safari || $.browser.msie) detailActivity(act_id);
}

function update_stats(link) {
	var query = location.href.split('#');
	document.cookie = ['anchor', '=', query[1]].join('');
	document.location.href = link;
}



