﻿var hf = {
	showOptions : function(id) {
		var idx = "hf_searchoptions_"+id;
		if (document.getElementById(idx).style.display == "inline") {
			document.getElementById(idx).style.display = "none";
		} else {
			document.getElementById(idx).style.display = "inline";
		}
		if (id !== "a") {document.getElementById("hf_searchoptions_a").style.display = "none";}
		if (id !== "b") {document.getElementById("hf_searchoptions_b").style.display = "none";}
		if (id !== "c") {document.getElementById("hf_searchoptions_c").style.display = "none";}
	},
	hideOptions : function(id) {
		var idx = "hf_searchoptions_"+id;
		document.getElementById(idx).style.display = "none";
	},
	selectOption : function(id,txt,value) {
		document.getElementById("hf_searchtext_"+id).innerHTML = txt;
		document.getElementById("hf_searchvalue_"+id).value = value;
		document.getElementById("hf_searchtext_hid_"+id).value = txt;
		
		this.hideOptions(id);
		this.submitSearch();
	},
	searchText : "search by words or city",
	setSearchSort : function(txt) {
		document.getElementById("hf_searchvalue_sort").value = txt;
		this.submitSearch();
	},
	textBlur : function(obj,txt,cls) {
		if (obj.value == "") {
			obj.value = txt;
			obj.className = cls;
		}
	},
	textFocus : function(obj,txt,cls) {
		if (obj.value == txt) {
			obj.value = "";
			obj.className = cls;
		}
	},
	submitSearch : function() {
		document.getElementById("hf_pagenumber").value = "1";
		this.loadResults();
	},
	clearSearch : function() {
		
	},
	loadResults : function() {
		var value_ttd = document.getElementById("hf_searchvalue_a").value;
		var value_region = document.getElementById("hf_searchvalue_b").value;
		var value_trip = document.getElementById("hf_searchvalue_c").value;
		var value_search = document.getElementById("hf_searchtext").value;
		var value_sort = document.getElementById("hf_searchvalue_sort").value;
		
		if (value_search == hf.searchText) {
			value_search = "";
		}
		
		var text_ttd = document.getElementById("hf_searchtext_hid_a").value;
		var text_region = document.getElementById("hf_searchtext_hid_b").value;
		var text_trip = document.getElementById("hf_searchtext_hid_c").value;
		
		document.getElementById("hf_searchtext_a").innerHTML = text_ttd;
		document.getElementById("hf_searchtext_b").innerHTML = text_region;
		document.getElementById("hf_searchtext_c").innerHTML = text_trip;
		
		var tips_text = "";
		
		if (value_ttd !== "" || value_region !== "" || value_trip !== "" || value_search !== "") {
			tips_text = "<span style=\"color:#0BBEF8;\">Showing results for:</span><br /><b>" + text_ttd + ", " + text_region + ", " + text_trip + "</b>";
			if (value_search !== "") {
				tips_text += ", " + value_search;
			}
		}
		
		document.getElementById("hf_search_tips").innerHTML = tips_text;
		
		//alert("TTD: "+value_ttd+"\nRegion: "+value_region+"\nTrip: "+value_trip+"\nSearch: "+value_search);
		
		var pagenumber = document.getElementById("hf_pagenumber").value;
		
		if (arguments.length > 0) {
			pagenumber = arguments[0];
		}
		
		document.getElementById("hf_pagenumber").value = pagenumber;
		
		if (value_sort == "MostRecent") {
			document.getElementById("hf_MostRecent").className = "hf_sort_item hf_sort_item_on";
			document.getElementById("hf_HighestRated").className = "hf_sort_item hf_sort_item_off";
		} else {
			document.getElementById("hf_MostRecent").className = "hf_sort_item hf_sort_item_off";
			document.getElementById("hf_HighestRated").className = "hf_sort_item hf_sort_item_on";
		}
		
		var _url = "/portlets/widgets/hfsearch.aspx?ttd="+value_ttd+"&region="+value_region+"&trip="+value_trip+"&pagenumber="+pagenumber+"&search="+value_search+"&sort="+value_sort;
		
		//alert(_url);
		
		hf.loadRecs();
		
		$.ajax({
			url:_url,
			dataType:"xml",
			cache:false,
			success:function(data){ hf.loadResults_returned(data);},
			error:function(xhr,err,e){ alert( "Error: " + err ); }
		});
	},
	loadResults_returned : function(xml) {
		var results = readXMLNode(xml,"RESULTS");
		var paging = readXMLNode(xml,"PAGING");
		var pagetext = readXMLNode(xml,"PAGETEXT");
		
		//document.getElementById("searchresults_container").innerHTML = paging + results + paging;
		document.getElementById("hf_search_results").innerHTML = results;
		document.getElementById("hf_search_nav_top").innerHTML = paging;
		document.getElementById("hf_search_nav_bot").innerHTML = paging;
		document.getElementById("hf_search_nav_text").innerHTML = pagetext;
	},
	loadRecs : function() {
		var value_ttd = document.getElementById("hf_searchvalue_a").value;
		var value_region = document.getElementById("hf_searchvalue_b").value;
		var value_trip = document.getElementById("hf_searchvalue_c").value;
		widgets.hfrecs("hf_rec_widget",value_ttd,value_region,value_trip);
	},
	bodyOnLoad : function() {
		fixTemplate();
		hf.loadResults();
	},
	bodyOnLoadDetails : function() {
		fixTemplate();
		hf.loadRecs();
	},
	search_enter : function(e) {
		var characterCode //literal character code will be stored in this variable
		if(e && e.which){ //if which property of event object is supported (NN4)
			characterCode = e.which; //character code is contained in NN4's which property
		} else{
			e = event;
			characterCode = e.keyCode; //character code is contained in IE's keyCode property
		}
		if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
			hf.submitSearch();
			return false;
		} else {
			return true;
		}
	}
}

hfc = {
	showOptions : function(id) {
		var idx = "hf_createoptions_"+id;
		if (document.getElementById(idx).style.display == "inline") {
			document.getElementById(idx).style.display = "none";
		} else {
			document.getElementById(idx).style.display = "inline";
		}
		if (id !== "a") {document.getElementById("hf_createoptions_a").style.display = "none";}
		if (id !== "b") {document.getElementById("hf_createoptions_b").style.display = "none";}
	},
	hideOptions : function(id) {
		var idx = "hf_createoptions_"+id;
		document.getElementById(idx).style.display = "none";
		hfc.setTip('top','DEFAULT');
	},
	selectOption : function(id,txt,value) {
		var hid_id = this["options_"+id];
		document.getElementById("hf_createtext_"+id).innerHTML = txt;
		document.getElementById(hid_id).value = value;
		document.getElementById("hf_createtext_hid_"+id).value = txt;
		
		this.hideOptions(id);
		//this.submitSearch();
	},
	count : function(obj,maxlen) {
		var maxlength = new Number(maxlen); // Change number to your max length.
		if(obj.value.length > maxlength){
			obj.value = obj.value.substring(0,maxlength);
			alert(" You have reached the " + maxlen + " character limit!");
		}
	},
	agrees : function(oSrc, args){
		args.IsValid = document.getElementById("agrees").checked;
	},
	tips : {
		DEFAULT : "Note: <b>Your list should post in a few minutes.</b> We review all submissions and reserve the right to discard any deemed inappropriate.",
		LISTNAME : "Tip: <b>Have an interesting topic.</b> Anything goes for a California Five, but an overall theme makes a better list. All your items should have something in common, whether specific (best foot massages), or wide ranging (must-do activities).",
		CATEGORY : "Tip: <b>Choose a category and vacation type.</b> Make it easy for people to find your list by choosing a category (don't worry if it's not exactly right) and a trip type.",
		CITY : "Tip: <b>Enter a city.</b> Be as accurate as you can, but don't worry if it's not exact. The nearest town, associated city, or your best guess are all fine.",
		DESCRIPTION : "Tip: <b>Write in a quick description of each California Five item.</b> What do you think other travellers would find useful? Please share."
	},
	setTip : function(id, tip) {
		document.getElementById("hf_tip_"+id).innerHTML = this.tips[tip];
	},
	showHideContact : function(num) {
		var obj = document.getElementById("contact_"+num);
		if (obj.style.display == "none") {
			obj.style.display = "inline";
			document.getElementById("contact_text_"+num).innerHTML = "Close contact information.";
			document.getElementById("contact_img_"+num).src = "/portlets/docs/images/fives/arr_on.jpg";
		} else {
			obj.style.display = "none";
			document.getElementById("contact_text_"+num).innerHTML = "Add contact information.";
			document.getElementById("contact_img_"+num).src = "/portlets/docs/images/fives/arr_off.jpg";
		}
	}
}

function readXMLNode(_node , _tag) {
	if(_node.getElementsByTagName(_tag).length >= 1) {
		if(_node.getElementsByTagName(_tag)[0].childNodes.length >= 1) {
			return _node.getElementsByTagName(_tag)[0].firstChild.nodeValue;
		}
	}
	return "";
}


function openReportModal() {
	document.getElementsByTagName("html")[0].style.overflow = "hidden";
	document.getElementById("hf_report_modal_overlay").style.display = "inline";
	document.getElementById("hf_report_modal").style.display = "inline";
}

function closeReportModal() {
	document.getElementsByTagName("html")[0].style.overflow = "auto";
	document.getElementById("hf_report_modal_overlay").style.display = "none";
	document.getElementById("hf_report_modal").style.display = "none";
}

function submitReportModal() {
	// send in the report;
	var list_guid = document.getElementById("list_guid").value;
	var comments = document.getElementById("report_comments").value;
	if (comments == "Comments (Optional)") {comments = "";}
	var _url = "/portlets/widgets/hfreport.aspx?list="+list_guid+"&action=report&comments="+escape(comments);

	$.ajax({
		url:_url,
		dataType:"html",
		cache:false,
		success:function(data){ submitReportModalReturn(data);},
		error:function(xhr,err,e){ alert( "Error: " + err ); }
	});
	
}

function submitReportModalReturn(data) {
	document.getElementById("hf_report_text").innerHTML = document.getElementById("hf_report_thanks").innerHTML;
}

var rating_mode = false;
var rating_src = "";
function rateThisOn() {
	if (!rating_mode) {
		rating_mode = true;
		rating_src = document.getElementById("rate_stars_img").src;
		document.getElementById("rate_stars_img").src = "/portlets/docs/images/fives/stars_0.jpg";
		document.getElementById("rate_stars_img").style.cursor = "pointer";
	}
}
function rateThisHover(i) {
	if (document.getElementById("rate_stars_img").className == "on") {
		if (i == 0) {
			var rating_orig = document.getElementById("rating_source").value;
			document.getElementById("rate_stars_img").src = "/portlets/docs/images/fives/stars_"+rating_orig+".jpg";
			document.getElementById("rate_stars_img").style.cursor = "default";
			document.getElementById("rate_text").innerHTML = "&nbsp;&nbsp;rate it!";
		} else {
			document.getElementById("rate_stars_img").src = "/portlets/docs/images/fives/stars_on_"+i+".jpg";
			document.getElementById("rate_stars_img").style.cursor = "pointer";
			var rate_txt = "";
			switch(i) {
				case 1: {rate_txt = "Not For Me";break;}
				case 2: {rate_txt = "Fair";break;}
				case 3: {rate_txt = "It's OK";break;}
				case 4: {rate_txt = "Good";break;}
				case 5: {rate_txt = "Love It!";break;}
			}
			document.getElementById("rate_text").innerHTML = '&nbsp;&nbsp;"'+rate_txt+'"';
		}
	}
}

function submitRating(i) {
	if (document.getElementById("rate_stars_img").className == "on") {
	
		var rating_orig = document.getElementById("rating_source").value;
		document.getElementById("rate_stars_img").src = "/portlets/docs/images/fives/stars_"+rating_orig+".jpg";
		document.getElementById("rate_stars_img").style.cursor = "default";

		//document.getElementById("rate_stars_img").src = rating_src;
	
		var list_guid = document.getElementById("list_guid").value;
		var _url = "/portlets/widgets/hfreport.aspx?list="+list_guid+"&action=rate&rating="+i;

		$.ajax({
			url:_url,
			dataType:"html",
			cache:false,
			success:function(data){window.location.reload(true);},
			error:function(xhr,err,e){ alert( "Error: " + err ); }
		});
	}
}