var ajaxConn = new XHConn()
var gi_page = 0
var gi_sortby = "city_name, ven_name"
var gi_sort = ""
var gi_sortby_old = ""
var gi_sortby_memory = "city_name"
var gi_history_sortstring = ""
var gi_fav = ""
var gi_del = ""
var gi_wor = ""
var gi_notes = ""
var gi_coors = ""
var vidX = 63.090780753459335
var vidY = 17.75390625
var vidZoom = 4
var vidzoom_button = 0

function getCities() {
	ajaxConn.connect("ajax_get_cities.asp", "GET", "c="+get_selected("region_list"), setCities)
}
function getRegions() {
	if (document.getElementById("country_list")) {
		var selected_country
		setMap()
		var selected_country = document.getElementById("country_list").value
		ajaxConn.connect("ajax_get_regions.asp", "GET", "l="+selected_country, setRegions)
	}
}
function get_selected(el) {
	var str = ""

	var arr_el = document.getElementById(el).getElementsByTagName("input")
	for (var i=0; i < arr_el.length; i++) {
		if (arr_el[i].checked) str = str + arr_el[i].id + ";"
	}
	return str
}
function setCities(XML) {
	var sb = document.getElementById("city_list")
	var result = unescape(XML.responseText)
	var arr = result.split(";")

	while (sb.hasChildNodes()) sb.removeChild(sb.firstChild)
	for (var i=0; i < arr.length-1; ++i) {
		arr_part = arr[i].split("@")
		addOptionCity(sb, "city", arr_part[0], arr_part[0], arr_part[1])
	}
	searchdialog_onclick()
}
function setRegions(XML) {
	var sb = document.getElementById("region_list")
	var result = unescape(XML.responseText)
	var arr = result.split(";")

	while (sb.hasChildNodes()) sb.removeChild(sb.firstChild)
	for (var i=0; i < arr.length-1; ++i) {
		arr_part = arr[i].split("@")
		addOption(sb, "region", arr_part[0], arr_part[1], arr_part[2])
	}
	getCities()
}

function addOption(el, el_name, text, value, id) {
	var row = document.createElement("p")
	var checker = document.createElement("input")
	var txt = document.createTextNode(text)
	checker.type = "checkbox"
	checker.name = el_name
	checker.id = id
	checker.value = value
	checker.onclick = setMap
	row.appendChild(checker)
	row.appendChild(txt)
	el.appendChild(row)
	checker.checked = true
}
function addOptionCity(el, el_name, text, value, id) {
	var row = document.createElement("p")
	var checker = document.createElement("input")
	var txt = document.createTextNode(text)
	checker.type = "checkbox"
	checker.name = el_name
	checker.id = id
	checker.value = value
	checker.onclick = searchdialog_onclick
	row.appendChild(checker)
	row.appendChild(txt)
	el.appendChild(row)
	checker.checked = true
}

function selAllNone(selector, el) {
	var arr_el = document.getElementById(selector).getElementsByTagName("input")
	var status = el.checked
	var noOfSelected = 0
	for (var i=0; i < arr_el.length; i++) {
		if (arr_el[i].checked) noOfSelected+=1
	}
	
	for (var i=0; i < arr_el.length; i++) {
		arr_el[i].checked = !(noOfSelected > arr_el.length/2)
	}

	if (selector == "region_list") {
		setMap()
	} else {
		searchdialog_onclick()
	}
}

function selAllNone_bak(selector, el) {
	var arr_el = document.getElementById(selector).getElementsByTagName("input")
	var status = el.checked
	for (var i=0; i < arr_el.length; i++) arr_el[i].checked = status
	if (selector == "region_list") {
		setMap()
	} else {
		searchdialog_onclick()
	}
}


function searchdialog_onclick() {
	gi_page = 0
	getResult(gi_page)
}

function setMap() {
/*	var sum = 0
	var arr_el = document.getElementById("region_list").getElementsByTagName("input")
	for (var i=0; i < arr_el.length; i++) {
		if (arr_el[i].checked) {
			sum = sum + arr_el[i].value*1
		}
	}
*/
	if (document.getElementById("country_list")) {
		var selected_country = document.getElementById("country_list").value
	}
//	document.getElementById("regional_map").style.background="url(/images/maps/"+selected_country+"_"+sum+".gif) no-repeat"
	if (document.getElementById("regional_map")) {
		document.getElementById("regional_map").style.background="url(/images/maps/"+selected_country+".jpg) no-repeat"
	}
//	alert("/images/maps/"+selected_country+".jpg")

	getCities()
}

function getResult(page) {
	if (page == -1) {
		page = gi_page
	} else {
		gi_page = page		
	}

	var country_id = document.getElementById("country_list").value
	var	cities = ""
	var orderstring = ""
	freetext = document.getElementById("freetext").value
	if (freetext == SEARCH) freetext = ""
	if (gi_notes != 1) freetext = ""
	document.getElementById("resultTableHolder").className = "dim_out"

	orderstring = gi_sortby
	switch(country_id) {
		case "1":
			// SE
			vidX = 63.090780753459335
			vidY = 17.75390625
			vidZoom = 4
			break
		case "2":
			// UK
			vidX = 52.856
			vidY = -1.868
			vidZoom = 6
			break
		case "3":
			// NO
			vidX = 63.090780753459335
			vidY = 17.75390625
			vidZoom = 4
			break
		case "4":
			// DK
			vidX = 55.9
			vidY = 10.1
			vidZoom = 6
			break
		case "5":
			// FI
			vidX = 63.090780753459335
			vidY = 17.75390625
			vidZoom = 4
			break
		case "6":
			// DE
			vidX = 52.11
			vidY = 9.7
			vidZoom = 5
			break
	}

	var venue_list = document.getElementById("venue_list").value

	ajaxConn.connect("ajax_get_venues.asp", "GET", "c="+get_selected("city_list")+"&k="+venue_list+"&g="+get_selected("genre_list")+"&p="+page+"&sb="+orderstring+"&s="+''+"&f="+gi_fav+"&d="+gi_del+"&n="+gi_notes+"&w="+gi_wor+"&q="+freetext, generateResultTable)
}

function reorder(col) {
	gi_sortby = ""
	var extra_sortstring = ""

	if (gi_sortby_old != col) {
		if ( (col == "Expr1") || (col == "Expr2") || (col == "Expr3") || (col == "Expr4") || (col == "Expr5") || (col == "zipmark") ) {
			gi_sort = "desc"
		} else {
			gi_sort = ""
		}
	} else {
		gi_sort == "" ? gi_sort = "desc" : gi_sort = ""
	}
	gi_sortby_old = col
	if ( !((col == "Expr3") || (col == "Expr4") || (col == "Expr1") || (col == "Expr2") || (col == "Expr6") || (col == "zipmark") || (col == "Expr5")) ) {
		gi_sortby_memory = gi_sortby_old
		gi_history_sortstring = ""
	} else {
		if (gi_history_sortstring.indexOf(col) < 0) gi_history_sortstring = col+" desc, "+gi_history_sortstring
	}

	switch(gi_sortby_memory) {
		case "city_name":
			extra_sortstring = "city_name, ven_name"
			break
		case "ven_name":
			extra_sortstring = "ven_name"
			break
		case "reg_name":
			extra_sortstring = "reg_name, city_name, ven_name"
			break
		case "vencat_id":
			extra_sortstring = "vencat_id, reg_name, city_name, ven_name"
			break
		}
	switch(col) {
		case "city_name":
			gi_sortby = "city_name "+gi_sort+", ven_name"
			break
		case "ven_name":
			gi_sortby = "ven_name "+gi_sort+""
			break
		case "reg_name":
			gi_sortby = "reg_name "+gi_sort+", city_name, ven_name"
			break
		case "vencat_id":
			gi_sortby = "vencat_id "+gi_sort+", reg_name, city_name, ven_name"
			break
		default:
			gi_sortby = gi_history_sortstring+extra_sortstring
			break
	}
	getResult(0)
}

function toggleFavorites() {
	resetAllButtons("fav")
	gi_fav == "" ? gi_fav = "1" : gi_fav = ""
	el = document.getElementById("but_myfavorites")
	gi_fav == "1" ? el.className = "button_active" : el.className = "button"	
	getResult(0)
}
function toggleRemoves() {
	resetAllButtons("del")
	gi_del == "" ? gi_del = "1" : gi_del = ""
	el = document.getElementById("but_myremoves")
	gi_del == "1" ? el.className = "button_active" : el.className = "button"	
	getResult(0)
}
function toggleWorkings() {
	resetAllButtons("wor")
	gi_wor == "" ? gi_wor = "1" : gi_wor = ""
	el = document.getElementById("but_myworkings")
	gi_wor == "1" ? el.className = "button_active" : el.className = "button"	
	getResult(0)
}
function toggleNotes() {
	resetAllButtons("not")
	gi_notes == "" ? gi_notes = "1" : gi_notes = ""
	el = document.getElementById("but_mynotes")
	gi_notes == "1" ? el.className = "button_active" : el.className = "button"	
	getResult(0)
}
function onNotes() {
	resetAllButtons("not")
	gi_notes = "1"
	el = document.getElementById("but_mynotes")
	el.className = "button_active"
	getResult(0)
}
function resetAllButtons(except) {
	if (except != "fav") {
		document.getElementById("but_myfavorites").className = "button"
		gi_fav = ""
	}
	if (except != "del") {
		document.getElementById("but_myremoves").className = "button"
		gi_del = ""
	}
	if (except != "wor") {
		document.getElementById("but_myworkings").className = "button"
		gi_wor = ""
	}
	if (except != "not") {
		document.getElementById("but_mynotes").className = "button"
		document.getElementById("freetext").value = SEARCH
		gi_notes = ""
	}
}

function saveGenres() {
	ajaxConn.connect("/mypages/setgenrelist.asp", "GET", "r="+get_selected("genre_list"), function() {})
}

function setDefaultQueryText(el) {
	el.select()
	if (el.value == SEARCH) {
		el.value = ""
		onNotes()
	} else {

	}
}
function setRowsPerPage(num) {
	ajaxConn.connect("/mypages/setpagesize.asp", "GET", "r="+num, function() {getResult(0)})
}
function setTextSize(num) {
	textsize = num
	ajaxConn.connect("/mypages/settextsize.asp", "GET", "r="+num, function() {getResult(0)})
}

function resetDefaultQueryText(el) {
	if (el.value == "") el.value = SEARCH
}
function generateResultTable(XML) {
	var result = unescape(XML.responseText)
//	document.getElementById("debug").innerHTML = result
	var pre_arr = result.split("|||")
	var arr = pre_arr[3].split(";")
	var tooltip = TOOLTIP.split(";")

	var lang = pre_arr[0].split(";")
	var noOfRecords = pre_arr[1]
	var rowsPerPage = pre_arr[2]

	var pageBottom = ((gi_page*1+1)*rowsPerPage)
	if (pageBottom > noOfRecords) pageBottom = noOfRecords

	var noOfPages = Math.ceil(noOfRecords/rowsPerPage)

	var prev_page = gi_page - 1
	if (prev_page < 0 ) prev_page = 0
	
	var next_page = gi_page + 1
	if (next_page >= noOfPages ) next_page = noOfPages-1

	var tableString = ""
	var tableHeadString = ""

	tableHeadString+= "<div id=\"pageinfo_holder\">"+DISPLAYING+" "+(gi_page*rowsPerPage+1)+"-"+pageBottom+" "+OF+" "+noOfRecords+"</div>"
	tableHeadString+= "<div id=\"pagination_holder\"><a class=\"pagination\" href=\"#\" onclick=\"getResult("+prev_page+")\"><</a> "
	tableHeadString+= "<select id='page_selector' onchange=\"getResult(this.value)\">"
	for (var i = 1; i < noOfPages+1; i++) {
		if (i == (gi_page*1+1)) {
			tableHeadString+= "<option selected value='"+(i-1)+"'>sida " + i + "</option>"
//			tableHeadString+= "<a class=\"pagination_active\" href=\"#\" onclick=\"getResult("+(i-1)+")\">" + i + "</a> "
		} else {
			tableHeadString+= "<option value='"+(i-1)+"'>sida " + i + "</option>"
//			tableHeadString+= "<a class=\"pagination\" href=\"#\" onclick=\"getResult("+(i-1)+")\">" + i + "</a> "
		}
	}
	tableHeadString+= "</select>"
	tableHeadString+= "<a class=\"pagination\" href=\"#\" onclick=\"getResult("+next_page+")\">></a></div>"

	tableHeadString+= "<div id='settings_holder'><select onchange='setRowsPerPage(this.value)' id='rows_per_page'>"
	for (var i = 4; i < 11; i++) {
		if (i*5 == rowsPerPage) {
			tableHeadString+= "<option selected value='"+(i*5)+"'>" + i*5 +" "+ROWS_PER_PAGE+"</option>"
		} else {
			tableHeadString+= "<option value='"+(i*5)+"'>" + i*5 + " "+ROWS_PER_PAGE+"</option>"
		}
	}
	tableHeadString+= "</select></div>"

	tableHeadString+= "<div id='size_holder'><select onchange='setTextSize(this.value)' id='text_size'>"
	for (var i = 8; i < 16; i++) {
		if (i == textsize) {
			tableHeadString+= "<option selected value='"+i+"'>"+TEXTSIZE+" " + i + "</option>"
		} else {
			tableHeadString+= "<option value='"+i+"'>"+TEXTSIZE+" " + i + "</option>"
		}
	}
	
//	tableHeadString+= "</select><a href=\"#\" id=\"but_all\" class=\"zoombutton\" onclick=\"loadCities()\">all</a>/<a href=\"#\" id=\"but_vid\" class=\"zoombutton\" onclick=\"map_zoom_vid()\">vid</a>/<a href=\"#\" id=\"but_zoom\" class=\"zoombutton\" onclick=\"map_zoom_zoom()\">zoom</a></div>"
	tableHeadString+= "</select></div>"

	tableHeadString+= "<div style=\"clear: both\"></div>"

	tableString+="<table id=\"table_venue_result\">"
	tableString+="<thead><tr>"
	tableString+="<th title=\""+tooltip[0]+"\" id=\"col2\"><a href=\"#\" onclick=\"reorder('Expr1')\">"+lang[1]+"</a></th><th title=\""+tooltip[1]+"\" id=\"col3\"><a href=\"#\" onclick=\"reorder('Expr6')\">"+lang[2]+"</a></th><th title=\""+tooltip[2]+"\" id=\"col4\"><a href=\"#\" onclick=\"reorder('Expr2')\">"+lang[3]+"</a></th><th title=\""+tooltip[3]+"\" id=\"col5\"><a href=\"#\" onclick=\"reorder('ven_name')\">"+lang[4]+"</a></th><th title=\""+tooltip[4]+"\" id=\"col6\"><a href=\"#\" onclick=\"reorder('city_name')\">"+lang[5]+"</a></th><th title=\""+tooltip[5]+"\" id=\"col7\"><a href=\"#\" onclick=\"reorder('reg_name')\">"+lang[6]+"</a></th><th title=\""+tooltip[6]+"\" id=\"col8\"><a href=\"#\" onclick=\"reorder('Expr3')\">"+lang[7]+"</a></th><th title=\""+tooltip[7]+"\" id=\"col9\"><a href=\"#\" onclick=\"reorder('Expr4')\">"+lang[8]+"</a></th><th title=\""+tooltip[8]+"\" id=\"col10\"><a href=\"#\" onclick=\"reorder('Expr5')\">"+lang[9]+"</a></th><th title=\""+tooltip[10]+"\" id=\"col11\"><a href=\"#\" onclick=\"reorder('zipmark')\">"+lang[11]+"</a></th><th title=\""+tooltip[9]+"\" id=\"col11\"><a href=\"#\" onclick=\"reorder('vencat_id')\">"+lang[10]+"</a></th>"
	tableString+="</tr></thead><tbody>"

	gi_coors = ""
	for (var i=0; i < arr.length-1; ++i) {
		i % 2 ? altclass = "odd" : altclass = "even"
		arr_part = arr[i].split("**")
//		tableString+="<tr onclick=\"parent.$.fn.colorbox({onClosed:function(){getResult(-1)},width:'570px', height:'380px', overlayClose:false, iframe:true, href:'/venues/"+arr_part[0]+"/'}); return false;\" class=\""+altclass+"\">"
		tableString+="<tr onclick=\"parent.$.fn.colorbox({onClosed:function(){},width:'570px', height:'380px', overlayClose:true, iframe:true, href:'/venues/"+arr_part[0]+"/'}); return false;\" class=\""+altclass+"\">"		
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[1] + "</div></td>"
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[12] + "</div></td>"
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[2] + "</div></td>"
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[3] + "</div></td>"
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[4] + "</div></td>"
		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[5] + "</div></td>"

		tableString+="<td><div style=\"font-size: "+textsize+"px;"
		if (arr_part[14] == "Homepage") tableString+="color: red;"
		tableString+="\" class=\"ellipsis\">" + arr_part[6] + "</div></td>"

		tableString+="<td><div style=\"font-size: "+textsize+"px;"
		if (arr_part[14] == "E-mail") tableString+="color: red;"
		tableString+="\" class=\"ellipsis\">" + arr_part[7] + "</div></td>"

		tableString+="<td><div style=\"font-size: "+textsize+"px;"
		if (arr_part[14] == "Myspace") tableString+="color: red;"
		tableString+="\" class=\"ellipsis\">" + arr_part[8] + "</div></td>"

		tableString+="<td><div style=\"font-size: "+textsize+"px;"
		if (arr_part[14] == "Snail mail") tableString+="color: red;"
		tableString+="\" class=\"ellipsis\">" + arr_part[13] + "</div></td>"

		tableString+="<td><div style=\"font-size: "+textsize+"px;\" class=\"ellipsis\">" + arr_part[9] + "</div></td>"

		tableString+="</tr>"
		gi_coors+=arr_part[10] + "x" + arr_part[11] + ";"
	}
	tableString+="</tbody></table>"

	document.getElementById("resultTableHolder").className = ""
	document.getElementById("resultTableHolder").innerHTML = tableString
	document.getElementById("resultHeaderHolder").innerHTML = tableHeadString

	map_init()
//	loadCities()
}

var map
var gmarkers = []

function map_zoom_vid() {
	vidzoom_button = 1
	map.setCenter(new GLatLng(vidX,vidY),vidZoom)
	document.getElementById("but_vid").style.color = "red"
	document.getElementById("but_zoom").style.color = "#000"
}
function map_zoom_zoom() {
	vidzoom_button = 2
	map_init()
	document.getElementById("but_vid").style.color = "#000"
	document.getElementById("but_zoom").style.color = "red"
}
var map

function loadCities() {
	var country_id
	if (document.getElementById("country_list")) {
		var country_id = document.getElementById("country_list").value
	}
	GDownloadUrl("/ajax_get_cities_coords.asp?c="+country_id, function(doc) {
		var xmlDoc = GXml.parse(doc)
		var markers = xmlDoc.documentElement.getElementsByTagName("marker")  
        for (var i = 0; i < markers.length; i++) {
			// obtain the attribues of each marker
			var lat = parseFloat(markers[i].getAttribute("lat"))
			var lng = parseFloat(markers[i].getAttribute("lng"))
			var point = new GLatLng(lat,lng)
			var html = markers[i].getAttribute("html")
			var label = markers[i].getAttribute("label")
			// create the marker
			var marker = createMarker(point,label,html)
			map.addOverlay(marker)
		}
	})
}

function map_init() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas"))
		map.addControl(new GSmallMapControl())
		map.setCenter(new GLatLng(59.040555,14.326172),4)

		var mt = map.getMapTypes()
		for (var i=0; i<mt.length; i++) {
			mt[i].getMinimumResolution = function() {return 4}
			mt[i].getMaximumResolution = function() {return 10}
		}
		var bounds = new GLatLngBounds()
//		map.setZoom(map.getBoundsZoomLevel(bounds))
//		map.setCenter(bounds.getCenter())

		var arr_coors = gi_coors.split(";")
		var arr_coors_xy
		for (var i=0; i < arr_coors.length; i++) {
			arr_coors_xy = arr_coors[i].split("x")
			if (!arr_coors_xy[0]=="") {
				var point = new GLatLng(parseFloat(arr_coors_xy[0].replace(",",".")),parseFloat(arr_coors_xy[1].replace(",",".")))
				var marker = createMarker(point)
				map.addOverlay(marker)
				bounds.extend(point)
			}
		}
		if (!gi_coors=="") {
			map.setZoom(map.getBoundsZoomLevel(bounds))
			map.setCenter(bounds.getCenter())
		}
	}
	if (vidzoom_button == 1) map_zoom_vid()
}

function createMarker(point) {
	icon = new GIcon(G_DEFAULT_ICON, '/images/red-dot.png')
	icon.shadow = "/images/msmarker.shadow.png"
	icon.shadowSize = new GSize(59,32)
	icon.iconSize = new GSize(32,32)
	var marker = new GMarker(point, icon)
	gmarkers.push(marker)
	return marker
}

function init() {
	getRegions()
}

var typewatch = function(){ 
    var timer = 0
    return function(callback, ms){ 
        clearTimeout (timer)
        timer = setTimeout(callback, ms)
    }
}()

function mail(str) {
	str = str.split('').reverse().join('')
	document.location.href="mai"+"lto:"+str
	return false
}

window.onload = init
