jQuery.noConflict();

function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = jQuery("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
} 
/*
 * I18n
 */
 
function toggleMore(section){
	jQuery("#more_"+ section).toggle();
}

function pretty_num(n) {
	n += '';
	var o = '';
	for (i=n.length; i>3; i-=3) {
		o = i18n.thousands_sep + n.slice(i-3, i) + o;
	}
	o = n.slice(0, i) + o;
	return o;
}

function _(s) {
	if (typeof(i18n)!='undefined' && i18n[s]) {
		return i18n[s];
	}
	return s;
}

function pluralise(s, p, n) {
	if (n != 1) {return _(p);}
	return _(s);
}

function sprintf(s) {
	var bits = s.split('%');
	var out = bits[0];
	var re = /^([ds])(.*)$/;
	for (var i=1; i<bits.length; i++) {
		p = re.exec(bits[i]);
		if (!p || arguments[i] === null) {continue;}
		if (p[1] == 'd') {
			out += parseInt(arguments[i], 10);
		} else if (p[1] == 's') {
			out += arguments[i];
		}
		out += p[2];
	}
	return out;
}

var prefocustext;
/*
 * Globals
 */

var glob_cur = 0;
var glob_size = 10;
var functionHistory= "";
var edit_page = "";
/*
 * OpenLayers - Map definitions and globals
 */
var a, b, q;
var limit = 10;
var dir = "";
var activeTab = 0;
//var markers;


function clearInput(){
	jQuery("#s_where").val("");
	jQuery("#s_what").val("");
	jQuery("#s_branches").val("0");
}

jQuery(document).ready(function(){
	//jQuery('#basicModalContent').modal(); // jQuery object; this demo
	jQuery("#s_what").blur(function () {
		//jQuery(this).val(prefocustext);
	});
	jQuery("#s_what").focus(function () {
		if(jQuery("#s_what").val() == _('What')) {
			prefocustext = jQuery(this).val();
			jQuery(this).val("");
		}
	});

	jQuery("#s_where").blur(function () {
		//jQuery(this).val(prefocustext);
	});
	jQuery("#s_where").focus(function () {
		if(jQuery("#s_where").val() == _("Where")) {
			prefocustext = jQuery(this).val();
			jQuery(this).val("");
		}
	});

	externalLinks();
});

function branches() { 
//enhance this function with subsets, sort and so on
jQuery.getJSON("/b.php", function(data){
		//alert("json request result");
		jQuery.each(data.results, function(i,item){
			jQuery("#s_branches").append("<option value=\"" + item.branch_id + "\">" + item.branch + "</option>");
		});
	});
}

function logAction(action,vars) {
	//action is the click action a user performed
	//vars is an array of variables that need to be stored in the log
	var vrs = vars.toString();
	jQuery.get("/log.php?a=" + action + "&q=" + vrs);
}


/*
 * Pagination
 */
function createSort () {
	var p_sort = document.createElement("span");
	//sort function
	s_sort = "<select id=\"s_sort\" onchange=\"javascript:changeSort(0);\">";
	if (dir === "DESC") {
		s_sort = s_sort + "<option value=\"ASC\">A-Z</option><option SELECTED value=\"DESC\">Z-A</option></select>";
	} else {
		s_sort = s_sort + "<option SELECTED value=\"ASC\">A-Z</option><option value=\"DESC\">Z-A</option></select>";
	}
	jQuery(p_sort).append(" "  + _('sort') + ": " + s_sort);
	//limit function
	s_limit = " "  + _('hits per page') + ": <select id=\"s_limit\" onchange=\"javascript:changeLimit();\">";
	var i = 0;
	//alert(limit);
	for (i=5; i <= 25; i += 5){
		if (i == limit){
			//alert("Selected");
			s_limit = s_limit + "<option SELECTED value=\"" + i + "\">" + i + "</option>";
		} else {
			s_limit = s_limit + "<option value=\"" + i + "\">" + i + "</option>";
		}
	}
	jQuery(p_sort).append(s_limit + "</select>");
	return p_sort;
}
function createPaging(total,start,limit,func) {
	var p_paging = document.createElement("span");
	var pages = Math.ceil(total / limit);
	//If there is only one page, show no paging
	if(pages > 1) {
		//for (var u = 1; u <= pages; u++) {
		//	var pstart = (u * limit)-limit;
			//if (u === 1) {
			//	jQuery(p_paging).append("<a href=\"javascript:void(0);\" class=\"paging-highlight\" onclick=\"highLightPaging(this);" + func + "(" + pstart + ",false);\">" + u + "</a> ");
			//} else {
				
				if (parseInt(start) !== 0){
jQuery(p_paging).append("<a href=\"javascript:void(0);\" onclick=\"highLightPaging(this);" + func + "(" + (parseInt(start) - parseInt(limit)) + ",false);\">previous</a> ");
					jQuery(p_paging).append(" | " + _('result ') + (parseInt(start)+ 1) + _(' to ') + (parseInt(start)+ parseInt(limit)) + _(' from <b>') + total + "</b> | ");
					jQuery(p_paging).append("<a href=\"javascript:void(0);\" onclick=\"highLightPaging(this);" + func + "(" + (parseInt(start) + parseInt(limit)) + ",false);\">next</a> ");
				} else if (parseInt(start) === 0)  {
					jQuery(p_paging).append(_('result ') + (parseInt(start)+ 1) + _(' to ') + (parseInt(start)+ parseInt(limit)) + _(' from <b>') + total + "</b> | ");
					jQuery(p_paging).append("<a href=\"javascript:void(0);\" onclick=\"highLightPaging(this);" + func + "(" + (parseInt(start) + parseInt(limit)) + ",false);\">next</a> ");
				}
			//}
		//}
		return p_paging;
	} else {
		return "";
	}
}
/*
 * Entries
 */
function showEntry(data) {
	var tbl = document.createElement("table");
	jQuery(tbl).addClass("entry_tbl");
	jQuery.each(data.results, function(i,item){
		var tr1 = document.createElement("tr");
		var td1_1 = document.createElement("td");
		td1_1.rowSpan="4";
		jQuery(td1_1).addClass("entry_td1_1");
		jQuery(td1_1).append("&nbsp;");

		var td1_2 = document.createElement("td");
		td1_2.colSpan="3";
		jQuery(td1_2).addClass("entry_td1_2");
		var td1_2img = document.createElement("img");
		td1_2img.src = "/images/map/balloon_" + item.result_letter + ".png";
		td1_2img.alt = item.result_letter + " - ";
		td1_2img.height = 16;
		td1_2img.width = 16;
		jQuery(td1_2).append(td1_2img);
		// Company
		if (item.company !== null){
			jQuery(td1_2).append("<span class=\"entry title\">" + item.company + "</span>");
		}
		//td rowspan = 2
		//another td rowspan = 2
		jQuery(tr1).append(td1_1);
		jQuery(tr1).append(td1_2);
		jQuery(tbl).append(tr1);
		
		//var a_branch = document.createElement("a");
		//jQuery(a_branch).append(item.branch);
		//jQuery(div_company).append(a_branch);
		//jQuery(a_branch).click(function () {
		//	branch(0,item.branch_id);
		//});
		var tr2 = document.createElement("tr");
		var td2_1 = document.createElement("td");
		var td2_2 = document.createElement("td");
		var td2_3 = document.createElement("td");
		jQuery(td2_3).addClass("entry_td2_3");
		jQuery(tr2).append(td2_1);
		jQuery(tr2).append(td2_2);
		jQuery(tr2).append(td2_3);
		jQuery(tbl).append(tr2);

		
		//Address
			var p_address_street = document.createElement("p");
			jQuery(p_address_street).addClass("street-address");
			//var a_street = document.createElement("a");
			//a_street.href="javascript:void(0);";

			if (item.ad_nr_extra !== null){
				ad_nr_extra = item.ad_nr_extra;
			} else {
				ad_nr_extra = "";
			}

			var full_address = item.street + " " + item.ad_nr + " " + ad_nr_extra;
			jQuery(p_address_street).append(full_address);
			if (item.district !== null){
				jQuery(p_address_street).append("<br />" + item.district);
			}
			jQuery(td2_1).append(p_address_street);
		// Contact
		if (item.telephone_ !== null) {
			var p_address_telephone = document.createElement("p");
			jQuery(p_address_telephone).addClass("telephone");
			jQuery(p_address_telephone).append("(+297)" + item.telephone_);
			jQuery(td2_1).append(p_address_telephone);
		}
		//e-mail
		if (item.email !== null) {
			var p_address_email = document.createElement("p");
			jQuery(p_address_email).addClass("email");
			var a_mailto = document.createElement("a");
			a_mailto.href = "mailto:" + item.email + "?subject=mail%20from%20ArubaBestPages.com";
			jQuery(a_mailto).click(function () {
					//showOnMap(item.address_id);
					logAction("mailto-link",[].construct(item.company,item.ogc_fid, item.email,a_mailto.href));
				});
			jQuery(a_mailto).append(item.email);
			jQuery(p_address_email).append(a_mailto);
			jQuery(td2_1).append(p_address_email);
		}
		//website url
		if (item.website !== null && typeof item.website !== "undefined") {
			var p_address_site = document.createElement("p");
			jQuery(p_address_site).addClass("website");
			var a_website = document.createElement("a");
			a_website.href = item.website;
			a_website.target = "_blank";
			jQuery(a_website).append(item.website);
			//jQuery(a_website).append("<a href=\"" + item.website + "\" target=\"_blank\">" + item.website + "</a>");
			jQuery(a_website).click(function () {
					//showOnMap(item.address_id);
					logAction("website-link",([item.company,item.ogc_fid, item.website]));
				});
			jQuery(p_address_site).append(a_website);
			jQuery(td2_1).append(p_address_site);
		}
		//logo
		if (item.logo !== null && typeof item.logo !== "undefined") {
			var img_div = document.createElement("div");
			jQuery(img_div).addClass("entry_logo_div");
			var img_logo = document.createElement("img");
			img_logo.src = "/images/uploads/" + item.logo;
			jQuery(img_div).append(img_logo);
			jQuery(td2_3).append(img_div);
		}
		if (item.info_text !== null && typeof item.info_text !== "undefined") {
			jQuery(td2_3).append("<br />" + item.info_text);
			if (item.package > 1) {
				//jQuery(td2_3).append("<br />more" + item.info_text);
				jQuery(td2_3).append("<br /><a href=\"javascript:void(0);\" onclick=\"toggleMore('" + item.result_letter + "');\">" + _('show/hide details') + "</a><br />");
				var tr3 = document.createElement("tr");
				var td3_1 = document.createElement("td");
				td3_1.colSpan="4";
				jQuery(td3_1).addClass("entry_td3_1");
				
				jQuery(td3_1).append("<div id=\"more_" + item.result_letter + "\" class=\"custom\" style=\"display: none;\">" + item.detail_text + "</div>");
				jQuery(tr3).append(td3_1);
				jQuery(tbl).append(tr3);
			} else {
				var tr3 = document.createElement("tr");
				var td3_1 = document.createElement("td");
				td3_1.colSpan="4";
				jQuery(td3_1).addClass("entry_td3_1");
				
				jQuery(td3_1).append("&nbsp;");
				jQuery(tr3).append(td3_1);
				jQuery(tbl).append(tr3);

			}
		}
		//Map
		if (item.address_id !== null && typeof item.address_id !== "undefined") {
			var a_map = document.createElement("a");
			a_map.href="javascript:void(0);";
			jQuery(a_map).click(function () {
				showOnMap(item.address_id, item.result_letter);
			});
			jQuery(a_map).append(" " + _('[Map]'));
			jQuery(td2_2).append(a_map);
			//place the icon on the map too
			var center = new (OpenLayers.LonLat)(item.x, item.y).transform(map.displayProjection,map.projection);
			//map.setCenter(center,17);

			var size = new (OpenLayers.Size)(16, 16);
			var icon = new (OpenLayers.Icon)("/images/map/balloon_"  + item.result_letter + ".png", size);
			markers.addMarker(new (OpenLayers.Marker)(center, icon));
		} else {
			var a_mapthis = document.createElement("a");
			a_mapthis.href = "eb2.php?ogc_fid="+ item.ogc_fid;
			jQuery(a_mapthis).click(function () {
					//showOnMap(item.address_id);
					logAction("mapthis-link",[].construct("",item.ogc_fid, "", a_mapthis.href));
				});
			jQuery(a_mapthis).append(_('I want to help [Map] this!'));
			jQuery(td2_2).append(a_mapthis);
		}
	
		var tr4 = document.createElement("tr");
		var td4_1 = document.createElement("td");
		td4_1.colSpan="3";
		
		jQuery(td4_1).addClass("entry_td4_1");

		if (item.keywords !== null && typeof item.keywords !== "undefined" && item.keywords !== "") {
			//split the keywords at spaces
			//create a hyperlink for every single keyword	
			keyword_text = "<span class=\"keywords\">" + _('Keywords') + ": ";
			var keyword_array = item.keywords.split(" ");
			for ( var k=0, len=keyword_array.length; k<len; ++k ){
				keyword_text = keyword_text + "<a href=\"javascript:void(0);\" onclick=\"what(0,false,'" + keyword_array[k] + "');\">" + keyword_array[k] + "</a> ";
			}
			//loop the keyword_array
			keyword_text = keyword_text + "</span>";
			jQuery(td4_1).append(keyword_text);
		}
		var a_correct = document.createElement("a");
		var s_correct = document.createElement("span");
		jQuery(s_correct).addClass("id");

			a_correct.href = edit_page + ".php?ogc_fid="+ item.ogc_fid;
			jQuery(a_correct).click(function () {
					//showOnMap(item.address_id);
					logAction("correct-link",[].construct("",item.ogc_fid, "", a_mapthis.href));
				});
			jQuery(a_correct).append(_('change:'));
			jQuery(s_correct).append(a_correct);
			jQuery(s_correct).append(item.ogc_fid);
			jQuery(td4_1).append(s_correct);
		jQuery(tr4).append(td4_1);
		jQuery(tbl).append(tr4);
		var tr_spacer = document.createElement("tr");
		var td_spacer = document.createElement("td");
		td_spacer.colSpan="4";
		jQuery(td_spacer).addClass("entry_spacer");
		jQuery(td_spacer).html("&nbsp;");
		jQuery(tr_spacer).append(td_spacer);
		jQuery(tbl).append(tr_spacer);
	});
	jQuery("#result").append(tbl);
}

function what(start, initial, q_optional) {
	if (typeof q_optional !== "undefined") {
    		q = q_optional;
  	}
	req_str = ""; 
	edit_page = "eb2";
	

	if(jQuery("#s_where").val() !== _('Where') && jQuery("#s_where").val() !== "") {
		a = jQuery("#s_where").val();
	} else {
		a = "";
	}
	if(jQuery("#s_what").val() !== _('What') && jQuery("#s_what").val() !== "") {
		q = jQuery("#s_what").val();
	} else {
		q = "";
	}
	if(q !== "") {
		req_str = req_str + "/find/" + q;
	}

	if(a !== ""){
		req_str = req_str + "/at/" + a + "/";
	}
	//if the req_str does not end with a / add it.
	var last_char = req_str.charAt(req_str.length-1);
	if (last_char !== "/"){
		req_str = req_str + "/";
	}

	jQuery.get(req_str, function(data){
		//Show single detail
		location.href = req_str;
	});

}

function changeSort(){
	dir = jQuery("#s_sort").val();
	what(0,false);
}

function changeLimit(){
	limit = jQuery("#s_limit").val();
	what(0,false);
}
function highLightPaging(e) {
	jQuery("a").removeClass("paging-highlight");
	jQuery(e).addClass("paging-highlight");
}

function login(e){
	if (!e) {
	jQuery("#result").empty();
	//jQuery("#result").load("/login.php");
	} else {
	alert(_('got to post, but cannot do yet'));
	}

}
function toggleHelp(e) {
	jQuery("#result").empty();
	jQuery("#result").load("/faq.php");
}

function toggleTerm(e) {
	jQuery("#result").empty();
	jQuery("#result").load("/terms.php");
}

function switchTab(tab) {
	jQuery('#tabWhere').toggleClass("activeTab");
	jQuery('#tabWhat').toggleClass("activeTab");
	if( jQuery(tab).attr("id") === "tabWhat" ){
	
		//What (or business) selected
		activeTab = 0;
		jQuery(tab).addClass("what-bg");
		jQuery('#tabWhere').removeClass("where-bg");
		jQuery('#search').css({'background-color' : '#4C76B3'});
		jQuery("#result").empty();
		//show branch
		jQuery('#d_what').show();
		jQuery('#d_branch').show();
	} else {
		//Where (or address) selected
		activeTab = 1;
		jQuery(tab).addClass("where-bg");
		jQuery('#tabWhat').removeClass("what-bg");
		jQuery('#search').css({'background-color' : '#F9D616'});
		jQuery("#result").empty();
		//hide branch
		jQuery('#d_what').hide();
		jQuery('#d_branch').hide();
		

	}
	clearInput();
	jQuery('#info').empty();
	map.setCenter(
		new OpenLayers.LonLat(
			-69.96883,12.50211
		).transform(map.displayProjection, map.projection),11
	);

}
