// set vars
var map = null; // map object
var sv = ""; // streetview object
var geocoder = null;
var encodedLat = "";
var encodedLng = "";
var enclatlng = "";
var geoenc = ""; // holds value to be returned
var collection = new Object();
var kkk = "";
var initLat = "62.8";
var initLng = "15.5";

var adressToGeoencode = "";
var zlev = 5;

// global arrays
var cityMarkerArr = [];
var hotelMarkerArrray = [];
var infowindowArray = [];

function hoverOver(id) {
}

function hoverOut(id) {
}

function goToUrl(url){
	if(url == ""){return null;};
	window.location = url;
}


function commentthis(context, postid) {
			//$j("#general-js-window").empty();
			//$j("#general-js-window").append(html);
	
			//$j('#commentform').show();

			 
				$j.ajax({
					   type: "POST",
					   url: BASEURL + "_core/_ajaxjson/_actions/commentformhtml.php", 
					   success: function(msg){

						$j('body').append(msg);

						$j('#commentform').center();
						$j('#commentform').show().fadeIn("slow");
					}
				
				}); 
				 
			  

}
 
function handleformimputblur(id, defaultVal){
	 
	if( $j('#'+id).val() == "" ){ 
	 	$j('#'+id).val(defaultVal) ;
	};
	
}

function handleformimputfocus(id, defaultVal){
 
	if( $j('#'+id).val() == defaultVal ){ 
	 	$j('#'+id).val("") ;
	};
 
}


function submitCommentform(authorFieldDefault, commentFieldDefault){
 
	var   fou = $j("#focus-commentform-outer").html(); // get form from dom
  
	// validate
	var author = $j("#author").val();
	var comment = $j("#comment").val();
	var pagePl = $j("#pagepl").val();
	var anumber = $j("#anumber").val();
	var vote =  $j("[name=vote]").val();
	
	/*
	if(author=="" || author == authorFieldDefault){  $j("#author").addClass('formfielderror');  }
	if(author!="" && author!=authorFieldDefault){ $j("#author").removeClass('formfielderror'); }
	
	if(comment=="" || comment == commentFieldDefault){ $j("#comment").addClass('formfielderror');}
	if(comment!="" && comment != commentFieldDefault){$j("#comment").removeClass('formfielderror');}
	
	
	*/
	 
	if(
		(
				author != "" && author != authorFieldDefault
		)
		&& 
		(
				comment != "" && comment != commentFieldDefault
		)
	) {}else{
	
		 // null out values for name and comment if only vote is casted 
		var author = "";
		var comment = "";
	}
		
		$j('#focus-commentform').html('<img style="float:left;clear:none;padding-right:10px;" src="http://www.hotellkatalog.nu/images/ajax-loader-transp.gif"/><h4 style="float:left;clear:none;padding-top:7px;border:none;" >Postar ditt omdömme/kommentar!</h4>');

		$j.ajax({
			   type: "POST",
			   url: BASEURL + "_core/_ajaxjson/_actions/commentform_subm.php", 
			   data: ({comment:comment, author:author, pagePl:pagePl, anumber:anumber, vote:vote }), 
			  
			   success: function(msg){
					if(msg=="true"){
						 
						  setTimeout(function(){ 
								$j('#focus-commentform').html(' <h4>Tack för din kommentar!</h4><p style="padding-bottom:0;" >Den kommer publiceras på sajten när vi har godkänt den.</p>   ');
								
								  setTimeout(function(){ 
									  
									  	// show form again
									//	$j('#focus-commentform-outer').html(fou)  ;
											
										// remove error outline
										//$j("#author").removeClass('formfielderror'); 
										//$j("#comment").removeClass('formfielderror'); 
										
									  }, 1800 ); 
								  
							  }, 1200 ); 
							  
					}else{
					
					//	$j('#focus-commentform').html(' <div title="stäng fönstret" class="closex" onclick="$j(\'#commentform\').remove();" >X</div><h5>Något gick fel!</h5><p>Stäng fönstret och testa gärna igen.</p>');
					
					}
					 
					//$j('.formit').html('<p>Tack för din kommentar! Den kommer publiceras när den är godkänd.</p>');
					var message = "";
					//$j('#commentform').remove();
					//$j('.formit').hide();  
					//$j('.generalmessage').html(''); 
					
			   }
		
			 }); 
	/*}*/
}



/**
 * 
 */
jQuery.fn.center = function() {
	this.css("position", "absolute");
	this.css("top", ($j(window).height() - this.height()) / 2
			+ $j(window).scrollTop() + "px");
	this.css("left", ($j(window).width() - this.width()) / 2
			+ $j(window).scrollLeft() + "px");
	return this;
}

/*
 * används på stader.php panár inte enbart
 */
function panto(lat, lon, markerLatLngObj, zooml) {

	if (markerLatLngObj == undefined) {

		var myLatLng = new google.maps.LatLng(lat, lon);

	} else {

		myLatLng = markerLatLngObj;

	}

	map.panTo(myLatLng);

}

function clearMarkersFromMap(theMarkersArr, alsoCloseInfowindows) {
	var infoBox = new InfoBox( );
	if (theMarkersArr) {

		if (theMarkersArr.length == 1) {
			theMarkersArr[0].setMap(null);
			if(alsoCloseInfowindows){infoBox.close(map, theMarkersArr[0]);}
			theMarkersArr.length = 0;
			return true;
		}

		for (i in theMarkersArr) {

			if (i < theMarkersArr.length) {
				if(alsoCloseInfowindows){infoBox.close(map, theMarkersArr[i]);}
				theMarkersArr[i].setMap(null);

			}
			// console.log(theMarkersArr[i]);
		}

		theMarkersArr.length = 0;

	}

}

function clearInfowindows(theWindows) {

	if (theWindows) {

		if (theWindows.length == 1) {
			theWindows[0].close();
			theWindows.length = 0;
			return true;
		}

		for (i in theWindows) {

			if (i < theWindows.length) {

				theWindows[i].close();

			}
			// console.log(theMarkersArr[i]);
		}

		theWindows.length = 0;

	}

}

/**
 * fetches data and opens bubble for an existing marker, does both because of
 * async
 */
function openFocusBubbleOnHotel(marker, permlink) {

	$j.ajax( {
		type : "GET",
		url : BASEURL + '_core/_ajaxjson/get_focus_info.php',
		data : "permlink=" + permlink,
		success : function(msg) {
			var infowindow = new google.maps.InfoWindow( {
				content : "test"
			});
			infowindow.open(map, marker);
			infowindowArray.push(infowindow);

		}
	});

}

/**
 * city select boxen för valt värde
 */
function firstpageCitySelectboxSelected() {
	
	var sweCity = $j('#ciychooser').val();
						 
	clearMarkersFromMap(cityMarkerArr, true); // true here means also removes open windows
	 
	focusOnCity(sweCity, false);
	
	 //setMarkers(map, data, cityMarkerArr, 0);
//	 map.setCenter(cityMarkerArr[0].getPosition());
	
	
	$j("#firstpagehotelselectdiv").html("Laddar ...");

	$j.ajax( {
		type : "GET",
		url : BASEURL + '_core/_ajaxjson/firstpage_hotel_select.php',
		data : "sweCity=" + sweCity,
		success : function(msg) {

			$j("#firstpagehotelselectdiv").html(msg); // update hotel select
		// console.log(cityMarkerArr);

	}
	});

	$j('#tofield2').val("");
	// $('consumerID2').value = "";
}

/**
 * city select boxen för valt värde
 */
function pt_firstpageCitySelectboxSelected() {

	var sweCity = ($F('ciychooser'));

	// set the "loading" text for the hotels select
	$('firstpagehotelselectdiv').innerHTML = "Laddar ...";

	// ajax-update the hotels select
	new Ajax.Updater('firstpagehotelselectdiv',
			BASEURL + '_core/_ajaxjson/firstpage_hotel_select.php', {
				method : 'get',
				parameters : {
					sweCity : sweCity
				}
			});

	// blank out ajax-fields
	$('tofield2').value = "";
	// $('consumerID2').value = "";

}

function setHiddenFieldsValuesFromAjaxSearchFields(valueID) {

	$('consumerID').value = valueID;
	$('consumerID2').value = valueID;

}


function gotopl(pl){
	window.open(BASEURL + pl,'_self');
}
function fpAjaxifiedSearchfieldChanged2() {
 
	// blank out values in select-chooser
	var currentCity = $("choosencity-0");

	currentCity.selected = true;
	$('firstpagehotelselect').value = "notchoosen";
	
	new Ajax.Updater('firstpagehotelselectdiv',
			'_core/_ajaxjson/firstpage_hotel_select.php', {
				method : 'get',
				parameters : {
					sweCity : "nochoosencity"
				}
			});
	

}

function fpAjaxifiedSearchfieldChanged() {
 
	// blank out values in select-chooser
	var currentCity = $("choosencity-0");

	currentCity.selected = true;
	$('firstpagehotelselect').value = "notchoosen";
	new Ajax.Updater('firstpagehotelselectdiv',
			'_core/_ajaxjson/firstpage_hotel_select.php', {
				method : 'get',
				parameters : {
					sweCity : "nochoosencity"
				}
			});
	

}

function updateMainImage(link, tid) {
	$j('#bigimga').attr("href", link);
	$j('#bigimgthmbimg').animate( {
		opacity : 0
	}, 200, function() {
		$j("#bigimgthmbimg").attr("src", link);
		$j('#bigimgthmbimg').animate( {
			opacity : 100
		}, 300, function() {
		});
	});

}

function bubble(title, text) {
	var x = "";
	x += '<div id="infobubble">' + title;
	x += text;
	x += '	<p>' + text + '</p>';
	x += '</div>';
	return x;
}

function initFocusPage(lat, lng, zlev, adressToGeoencode, contentToBeShownInBubble, name) {
 
	var innerarray = [];

	initMapV3();

	if (lat == "" || lng == "") {
		
		 codeAddress(adressToGeoencode, contentToBeShownInBubble, name);
		
	} else {
		var myLatLng = new google.maps.LatLng(lat, lng);
		map.setCenter(myLatLng);

		innerarray[0] = name;
		innerarray[1] = lat;
		innerarray[2] = lng;
		innerarray[3] = 10; // zlev
		innerarray[4] = contentToBeShownInBubble;
		var arr = [];
		arr[0] = innerarray;
		setMarkers(map, arr, cityMarkerArr, 0, 'bigflag', true);

		staticMaps(lat, lng);

		doStreetView(myLatLng);

	}
/*
	  var panoramioLayer = new google.maps.panoramio.PanoramioLayer();
	  panoramioLayer.setMap(map);
	*/  
	return true;

}

function staticMaps(lat, lng) {
 
 
	 
	if(   lng  == "" ){
		$j("div#static_canvas_outer").remove();
		
		 return false;
	}
	// static maps
	var staticWidth = "198";
	var staticHeight = "150";
	var statmaps = '<img src="http://maps.google.com/maps/api/staticmap?center='
			+ lat
			+ ','
			+ lng
			+ '&zoom=4&size='
			+ staticWidth
			+ 'x'
			+ staticHeight
			+ '&maptype=roadmap&markers=color:red|color:red|size:mid|'
			+ lat
			+ ',' + lng + '&sensor=false" />';
	statmaps += '<img style="float:right;clear:none;" src="http://maps.google.com/maps/api/staticmap?center='
			+ lat
			+ ','
			+ lng
			+ '&zoom=9&size='
			+ staticWidth
			+ 'x'
			+ staticHeight
			+ '&maptype=roadmap&markers=color:red|color:red|size:mid|'
			+ lat
			+ ',' + lng + '&sensor=false" />';
	$j("#static_canvas_outer").html(statmaps);

}

/**
 * starts streetview
 */
function doStreetView(gPoint) {

	$j("#streetview_canvas").show();

	var panoramaOptions = {
		position : gPoint,
		pov : {
			heading : 34,
			pitch : 10,
			zoom : 0
		}
	};
	var panorama = new google.maps.StreetViewPanorama(document
			.getElementById("streetview_canvas"), panoramaOptions);

	map.setStreetView(panorama);

}

function init() {
	initMapV3();

	// sv = new google.maps.StreetViewService();

	// var initialMarkerData = "test"; // niu, if populated will show!

	// showCityMarkers("onlyImporantPlaces"); // ajaxplace markers

	// we have markers array -

	/*
	 * if(cityArr.length < 1){
	 *  }
	 */

}

 

/**
 * used on citypage
 */
function citypage(sweCity){
	
	new Ajax.Request(BASEURL + '_core/_ajaxjson/hotelmarkers.json.php', {
		method : 'get',
		evalScripts : "false",
		parameters : {
			city : sweCity
		},
		requestHeaders : {
			Accept : 'application/json'
		},

		onSuccess : function(transport) {

			var json = transport.responseText.evalJSON(true);
	 
			var setMarkersArray = setMarkers(map, json, hotelMarkerArrray, 0, 'bigflag', false);
			
			panto("", "", setMarkersArray[0].getPosition());
			
			//zoomToShowAllMakers(setMarkersArray, map, 8);
			 
			staticMaps(setMarkersArray[0].getPosition().lat(), setMarkersArray[0].getPosition().lng());
			
	}
	});
	
	//var cityMarkerArr = addHotelMarkers(sweCity);
	//staticMaps(cityMarkerArr[0].getPosition().lat(), cityMarkerArr[0].getPosition().lng());
}

/**
 * used on citypage
 * now in jquery
 */
function citypage2(sweCity){
	$j.ajax({
		  url: BASEURL + '_core/_ajaxjson/hotelmarkers.json.php',
		  dataType: 'json',
		  data: {city:sweCity},
		  success: function(transport) {
			 
		var json = transport;
		 
		var setMarkersArray = setMarkers(map, json, hotelMarkerArrray, 0, 'bigflag', false);
		
		panto("", "", setMarkersArray[0].getPosition());
		
		//zoomToShowAllMakers(setMarkersArray, map, 8);
		 
		staticMaps(setMarkersArray[0].getPosition().lat(), setMarkersArray[0].getPosition().lng());
			}
		});
	/*
	new Ajax.Request(, {
		method : 'get',
		evalScripts : "false",
		parameters : {
			city : sweCity
		},
		requestHeaders : {
			Accept : 'application/json'
		},

		onSuccess : function(transport) {

			var json = transport.responseText.evalJSON(true);
	 
			var setMarkersArray = setMarkers(map, json, hotelMarkerArrray, 0, 'bigflag', false);
			
			panto("", "", setMarkersArray[0].getPosition());
			
			//zoomToShowAllMakers(setMarkersArray, map, 8);
			 
			staticMaps(setMarkersArray[0].getPosition().lat(), setMarkersArray[0].getPosition().lng());
			
	}
	});
	*/
	//var cityMarkerArr = addHotelMarkers(sweCity);
	//staticMaps(cityMarkerArr[0].getPosition().lat(), cityMarkerArr[0].getPosition().lng());
}




/**
 * used on firstpage when selectbox is selected
 */
function focusOnCity(sweCity, addAllCityHotels, maxZ) {
 
	if (city == undefined) {
		var city = "";
	}
	$j.ajax( {
		type : "GET",
		// dataType:"json",
		url : BASEURL + '_core/_ajaxjson/citys.json.php',
		data : {
			city : sweCity,
			addAllCityHotels : addAllCityHotels
		},
		success : function(data) {	// data is array here, no need to parse like in prototype
 
			if (data == 'E_nocitydata') { // data not ok, so geoencode

				geocodeFocusOnCity(sweCity, city);

			} else {
				setMarkers(map, data, cityMarkerArr, 0, 'bigflag', true, true);
				 //setMarkers(map, data, cityMarkerArr, 0, true);
				map.setCenter(cityMarkerArr[0].getPosition());
				//var cityMarkerArr = addHotelMarkers(sweCity);
				//staticMaps(cityMarkerArr[0].getPosition().lat(), cityMarkerArr[0].getPosition().lng());
			}

		}
	});

}
 

function showCityMarkers(city) {

	if (city == undefined) {
		var city = "";
	}
	$j.ajax( {
		type : "GET",
		// dataType:"json",
		url : BASEURL + '_core/_ajaxjson/citys.json.php',
		data : "city=" + city,
		success : function(data) {// data is array here, no need to parse like in prototype
 
			setMarkers(map, data, cityMarkerArr);
 
		}
	});

}
/*
function pr_showCityMarkers() {

	new Ajax.Request(BASEURL + '_ajaxjson/citys.json.php', {
		method : 'get',
		evalScripts : "false",
		// parameters : { restrictions:restrictions } ,
		requestHeaders : {
			Accept : 'application/json'
		},

		onSuccess : function(transport) {

			var json = transport.responseText.evalJSON(true);

			var setMarkersArray = setMarkers(map, json);

		}
	});

}

function xfocusOnCity(city) {

	new Ajax.Request(BASEURL + '_ajaxjson/citys.js6on.php', {
		method : 'get',
		evalScripts : "false",
		parameters : {
			city : city
		},
		requestHeaders : {
			Accept : 'application/json'
		},

		onSuccess : function(transport) {

			var json = transport.responseText.evalJSON(true);

			var setMarkersArray = setMarkers(map, json);
			console.log(setMarkersArray);
			//panto("", "", setMarkersArray[0].latlng);
			// zoomToShowAllMakers(setMarkersArray,map);
	}
	});

}
*/
/*
function addHotelMarkers(city) {

	new Ajax.Request(BASEURL + '_ajaxjson/hotelmarkers.json.php', {
		method : 'get',
		evalScripts : "false",
		parameters : {
			city : city
		},
		requestHeaders : {
			Accept : 'application/json'
		},

		onSuccess : function(transport) {

			var json = transport.responseText.evalJSON(true);
	 
			var setMarkersArray = setMarkers(map, json, hotelMarkerArrray, 0, 'bigflag', false);
			//console.log(setMarkersArray[0]);
			panto("", "", setMarkersArray[0].getPosition());
			zoomToShowAllMakers(setMarkersArray,map);
	}
	});

}
*/


function zoomToShowAllMakers(markerArray, mapObject, maxZoom) {

	var bounds = new google.maps.LatLngBounds();
	 
	// Go through each... 
	for ( var i = 0, LtLgLen = markerArray.size(); i < LtLgLen; i++) {
		bounds.extend(markerArray[i].getPosition());
	}
	 
	// Fit these bounds to the map
	 map.fitBounds(bounds);
	/*
	var center = getCenter(map);
	console.log(center);
	setCenter(center);
	map.setZoom(7);
 
	if(map.getZoom() > 8){
		
		
		
	}
	
	*/
}

/**
 * map func v3 only initiates the map basics
 */
function initMapV3() {

	var mapInitPos = new google.maps.LatLng(initLat, initLng);

	// Set up the map options, uses only globals
	var mapOptions = {
		center : mapInitPos,
		zoom : zlev,
		mapTypeId : google.maps.MapTypeId.ROADMAP,
		streetViewControl : false,
		disableDoubleClickZoom : true,
		scrollwheel : false
	};

	// setup the map
	map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);


	// streetview
	// panorama = new
	// google.maps.StreetViewPanorama(document.getElementById("pano"));
	// $()
	// 

	geocoder = new google.maps.Geocoder(); // instantiate it for later use
  
	
}

/*
 * 2nd version of the geoencode
 */
function geocodeFocusOnCity(address, name) {

	geocoder.geocode( {
		'address' : address
	}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {

			geoenc = results[0].geometry.location;

			var innerarray = [];
			innerarray[0] = name;
			innerarray[1] = geoenc.lat();
			innerarray[2] = geoenc.lng();
			innerarray[3] = 10; // zlev
			innerarray[4] = address;
			var arr = [];
			arr[0] = innerarray;

			setMarkers(map, arr, cityMarkerArr, 0, true);

			map.setCenter(geoenc);

		}
		;

	});

}

/**
 * geoencodes a location and prints marker
 */
function processSVData(data, status) {
	// console.log('test');
	// has streetview
	if (status == google.maps.StreetViewStatus.OK) {

		$('pano').style.display = "block";

		// create a marker
		var marker = new google.maps.Marker( {
			position : data.location.latLng,
			map : map,
			title : data.location.description
		});

		panorama.setPano(data.location.pano);
		panorama.setPov( {
			heading : 270,
			pitch : 0,
			zoom : 1
		});
		panorama.setVisible(true);

		google.maps.event.addListener(marker, 'click', function() {

			var markerPanoID = data.location.pano;
			// Set the Pano to use the passed panoID
				panorama.setPano(markerPanoID);
				panorama.setPov( {
					heading : 270,
					pitch : 0,
					zoom : 1
				});
				panorama.setVisible(true);
			});

	} else { // no pano data ...

		$('pano').style.display = "none";

		// add a marker then, because the above func did not
		var marker = new google.maps.Marker( {
			map : map,
			position : enclatlng
		});

	}

	/*
	 * // add infowindow to the initial marker var contentString = '<div
	 * id="content"><h5> test </h5></div>';
	 * 
	 * var infowindow = new google.maps.InfoWindow({ content: contentString });
	 * 
	 * infowindow.open(map ,marker);
	 */

}

/**
 * returns image for the map, an "if-wrapper".
 */
function returnMarkerImageDataObj(size){

	
	if(size=="bigflag"){
		var returnArr = []
		var image = new google.maps.MarkerImage(
								'http://code.google.com/apis/maps/documentation/javascript/examples/images/beachflag.png',
								// This marker is 20 pixels wide by 32 pixels tall.
								new google.maps.Size(20, 32),
								// The origin for this image is 0,0.
								new google.maps.Point(0, 0),
								// The anchor for this image is the base of the flagpole at 0,32.
								new google.maps.Point(0, 32));
 
		var shadow = new google.maps.MarkerImage(
				'http://code.google.com/apis/maps/documentation/javascript/examples/images/beachflag_shadow.png',
				// The shadow image is larger in the horizontal dimension
				// while the position and offset are the same as for the main image.
				new google.maps.Size(37, 32), new google.maps.Point(0, 0),
				new google.maps.Point(0, 32));
		// Shapes define the clickable region of the icon.
		// The type defines an HTML &lt;area&gt; element 'poly' which
		// traces out a polygon as a series of X,Y points. The final
		// coordinate closes the poly by connecting to the first
		// coordinate.
		var shape = {
			coord : [ 1, 1, 1, 20, 18, 20, 18, 1 ],
			type : 'poly'
		};
	}
	
	var returnObj = new Object(); 
	returnObj.image = image;
	returnObj.shadow = shadow;
	returnObj.shape = shape;
	
	return returnObj;
	
}






/**
 * adds markers to map from array returns mdarr with markers[1] and latlng[0] -
 * locations variable might be json returned data popThisMarkerBubble = marker
 * to append open infowindow to
 * - adds markers to "arrayToAppendMarkerRefTo" array variable
 * - returns new markers in array to
 */
function setMarkers(map, locations, arrayToAppendMarkerRefTo, popThisMarkerBubble, markerImageSizeSpec, showBubbleOnload, useDefaultInfowindow) {
	
	var returnArray = [];
	var total = "";
	// Marker sizes are expressed as a Size of X,Y
	// where the origin of the image (0,0) is located
	// in the top left of the image.

	var imageObject = returnMarkerImageDataObj(markerImageSizeSpec); // only returns flag image, nothing advanced, parameter sent is "bigflag" or something simiar
	var image = 	imageObject.image;
	var shadow = 	imageObject.shadow;
	var shape = 	imageObject.shape;
	
	// loop markers to map
	j = 0;
	 
	for ( var i = 0; i < locations.length; i++) {
		createMarker(locations[i] );
	}
	
 
		function createMarker(locations) {
	
			var arrayObject = new Object();
	
			var pointData = locations;
			 
			var myLatLng = new google.maps.LatLng(pointData[1], pointData[2]);
			
			var marker = new google.maps.Marker( {
				position : myLatLng,
				map : map,
				shadow : shadow,
				icon : image,
				shape : shape,
				//title : pointData[0],
				zIndex : pointData[3]
			});
	
	
			// adds to array so we can delete later
			arrayToAppendMarkerRefTo.push(marker); // array is whithin scope from outer function
			returnArray.push(marker);
 
			if(useDefaultInfowindow!= true ){
				
				var boxText = document.createElement("div");
				boxText.style.cssText = "  ";
		 
				if(showBubbleOnload){ // shows per default (focuspage)
	 
					var closeBoxMarginData = "5px 18px 0 0";
					var closeBoxURL = "http://www.hotellkatalog.nu/images/close.gif";
					boxText.innerHTML = '<h5 class="focuspageh5" >' +pointData[4]+'</h5>';
					
				}else{
	
					var closeBoxMarginData =  "";
					var closeBoxURL = ""; 
					boxText.innerHTML = '<div class="bubbleimgwrapper"><img class="thebubbleimg" src="' + pointData[6] + '"></div>' + 
					'<h5>' +pointData[4]+'</h5>';
				}
				
				var myOptions = {
					 boxClass:"infoboxhover",
					 content: boxText
					,disableAutoPan: false
					,maxWidth: 0
					,alignBottom:false
					,pixelOffset: new google.maps.Size(-95, -10)
					,zIndex: null
					,boxStyle: { 
							background: "url('http://www.hotellkatalog.nu/images/hk_marker_bubble.png') no-repeat",
					   //opacity: 1
							width: "190px"
						   ,height:"78px"
					 } 
	
					 ,closeBoxMargin: closeBoxMarginData
					 ,closeBoxURL: closeBoxURL
					,infoBoxClearance: new google.maps.Size(1, 1)
					,isHidden: false
					,pane: "floatPane"
					,enableEventPropagation: false
				};
				
				
	 
				var infoBox = new InfoBox(myOptions);
				
				if(showBubbleOnload){ // shows per default (focuspage)
					 infoBox.open(map, marker);
				     google.maps.event.addListener(marker, 'mouseup', function () {
				    	 infoBox.open(map, marker);
				     });
				}else{
			        google.maps.event.addListener(marker, 'mouseover', function () {
			            infoBox.open(map, marker);
			        });
			        google.maps.event.addListener(marker, 'mouseout', function () {
			            infoBox.close(map, marker);
			        }); 
			        google.maps.event.addListener(marker, 'mouseup', function () {
			        	gotolink(BASEURL+pointData[7]+'/');
			        });
				}
			
			}else{ // use normal infowindow
		        
			    var infowindow = new google.maps.InfoWindow({
			        content: '<h5>' + pointData[4] + '</h5>'  
			    });
 
			     infowindow.open(map,marker);
	 
			}


		} // end of createmarker()
 
	return returnArray;
	
}
 

 
 
var helper = function(event, id)
{
	collection[id].open(map, this);
	//console.log(collection[id]);
};

 
/**
 * skapar en "container" av objekt som sedan går att nå 
 *//*
function makeObject(objectName, myOptions ) {
	if(!collection[objectName]) {
		collection[objectName] = new InfoBox(myOptions);
	}
}*/


function codeAddress(address, contentToBeShownInBubble, name) {
	//alert("geoencoding");
	geocoder.geocode( {
		'address' : address
	}, function(results, status) {

		if (status == google.maps.GeocoderStatus.OK) {
			 
			xxx = results[0].geometry.location;  
 
			map.setCenter(xxx);
			var innerarray = [];
			innerarray[0] = name;
			innerarray[1] = xxx.lat();
			var lat = xxx.lat();
			innerarray[2] = xxx.lng();
			var lng = xxx.lng();
			innerarray[3] = 10; // zlev
			innerarray[4] = contentToBeShownInBubble;
			var arr = [];
			arr[0] = innerarray;
 /* do this in separate file in relation to creation of viewtable... better
			// save that data so we dont have to retrieve again
			$j.ajax({
				   type: "POST",
				   url: BASEURL + "_ajaxjson/_actions/savegeodata.php", 
				   data: "name=name&lat=lat&lng=lng",
				   success: function(msg){
		 
				}
			
			}); 
			*/
			
			
			setMarkers(map, arr, cityMarkerArr, 0, 'bigflag', true);
			 
			staticMaps(xxx.lat(), xxx.lng());

			doStreetView( new google.maps.LatLng( xxx.lat(), xxx.lng() ) );

		}

	});

}
 

 

function activateThis(id) {
	var liid = document.getElementById(id);
	liid.style.borderColor = '#000000';
	liid.style.backgroundColor = '#FFF4CE';
	liid.value = "";
}

function deactivateThis(id) {
	var liid = document.getElementById(id);
	liid.style.borderColor = '#7C8E39';
	liid.style.backgroundColor = '#ffffff';
	liid.value = "";
}

function showAddress(address) {
	if (geocoder) {
		geocoder.getLatLng(address, function(point) {
			if (!point) {
				// alert(address + " hittades inte p� kartan");
				var titleVar = document.getElementById("maptitle");

			} else {
				map.setCenter(point, 11);
				var marker = new GMarker(point);
				map.addOverlay(marker);

			}
		});
	}
}

function focusInputfield(id, defaultValue) {
	var e = $(id);
	if (e.value == defaultValue) {
		e.value = "";
	}
}

function blurInputField(id, defaultValue) {
	var e = $(id);
	if (e.value == "") {
		e.value = defaultValue;
	}
}

/**
 * closes niceAlert
 * 
 * @return
 */
function closeMessageWin(tid) {
	Effect.Fade(tid, {
		duration : 0.2
	});
}

/**
 * The alertwindow
 * 
 * @param headline
 * @param message
 * @return
 */
function niceAlert(headline, message) {

	$('mainInfoWindowHead').innerHTML = '<h5>' + headline + '</h5><div id="closebtn">Stäng [x]</div>';
	$('mainInfoWindowContent').innerHTML = ' ' + message + ' ';

	middle("mainInfoWindow");

	Effect.Appear('mainInfoWindow', {
		duration : 0.1
	});
	new Draggable('mainInfoWindow', {});

	// get enviroment params

	Event.observe('closebtn', 'click', function(event) {
		closeMessageWin('mainInfoWindow');
	});
	/*
	 * Event.observe(document, 'keypress', function(event){ if(event.keyCode ==
	 * Event.KEY_TAB) { closeNiceAlertWin(); } });
	 */

}

function middle(id) {

	// get enviroment params
	var vpHeight = document.viewport.getHeight();
	var vpWidth = document.viewport.getWidth();
	var alertWidth = $(id).getWidth();
	var alertheight = $(id).getHeight();

	// align correctly
	$(id).style.left = ((vpWidth / 2) - (alertWidth / 2))
			+ document.viewport.getScrollOffsets().left + "px";
	$(id).style.top = (vpHeight / 2) - (alertheight / 2)
			+ document.viewport.getScrollOffsets().top + "px";

}

function middle2(id) {

	// get enviroment params
	var vpHeight = document.viewport.getHeight();
	var vpWidth = document.viewport.getWidth();
	var alertWidth = $(id).getWidth();
	var alertheight = $(id).getHeight();

	// align correctly
	var lalign = ((vpWidth / 2) - (alertWidth / 2))
			+ document.viewport.getScrollOffsets().left + "px";
	var talign = (vpHeight / 2) - (alertheight / 2)
			+ document.viewport.getScrollOffsets().top + "px";

	$(id).style.left = lalign;
	$(id).style.top = talign;

}
 

function middle3(id) {
//	console.log($j(window).height());
	  
		$j(id).css("position", "absolute");
	  	$j(id).css("top", (($j(window).height() - $j(id).outerHeight()) / 2) + $j(window).scrollTop() + "px");
	  	$j(id).css("left", (($j(window).width() - $j(id).outerWidth()) / 2) + $j(window).scrollLeft() + "px");
}


function fullsizeIt(id) {

	var height = document.viewport.getHeight();
	var offset = document.viewport.getScrollOffsets().top;

	// window.document.documentElement.clientHeight
	// window.document.body.clientHeight ;
	// (window.document.body.clientHeight);
	$(id).style.height = (window.document.body.clientHeight) + "px";
	$(id).style.width = document.viewport.getWidth() + "px";

	Event.observe(window, 'resize', function() {
		$(id).style.height = (window.document.body.clientHeight) + "px";
		$(id).style.width = document.viewport.getWidth() + "px";
	})

}

function gotolink(link){ 
	window.open(link,'_self');
}


function clickedhotellli(id,pl){
	 
	gotolink(pl);
	
}

function activatehotellli(id){
	 
	$j('#'+id).addClass("activeli");
	
}
function deactivatehotellli(id){
	 
	$j('#'+id).removeClass("activeli");
	
}

/**/

function changemapsize(inflateordeflate){
	
	  var mapcenter = map.getCenter();
	   
	   persentZoom = map.getZoom();
	 
	if(inflateordeflate == "inflate"){
		$j("#map_canvas").addClass("bigmap");
		$j("#mapcol").css("width",'100%');
	 
		//options = { to: { width: 1037, height:200  } };
		//$j("#map_canvas").addClass("offsetmaptoleft");
		//$j("#map_canvas").css('width','1307px');
		// $j("#map_canvas").effect( "size", options, 300 )
//	 google.maps.event.trigger(map, 'resize'); 
		//setTimeout("google.maps.event.trigger(map, 'resize');  ",800);
		//setTimeout("map.setZoom(4);",700);
		//setTimeout("map.setZoom(persentZoom);",800);
		//setTimeout("map.mapcenter(mapcenter);",900);
		$j('#inflatemap').addClass('active');
		$j('#deflatemap').removeClass('active');
		
		// hide static and streetview
		$j('#static_canvas_outer, #streetview_canvas, #mapdisclamer').hide();
	}
	 
	if(inflateordeflate == "deflate"){
		
 		$j("#map_canvas").removeClass("bigmap");
 		$j("#mapcol").css("width",'415px');
		//options = { to: { width: 405, height:200} };
	//	$j("#map_canvas").css('width','405px');
	//	$j("#map_canvas").effect( "size", options, 300  )
		
		
		//setTimeout("map.setZoom(4);",700);
		//setTimeout("map.setZoom(persentZoom);",800);
	 
		$j('#deflatemap').addClass('active');
		$j('#inflatemap').removeClass('active');
		
		//   static and streetview
		$j('#static_canvas_outer, #streetview_canvas, #mapdisclamer').show();
		
	}
	 google.maps.event.trigger(map, 'resize');  
	// setTimeout("map.mapcenter('mapcenter');",400);
	 map.setCenter(mapcenter); 
	// run the effect
	
 
}
 



/*
 * clickhandler
 * */
/*
var triggerAddPage = function(triggerthing, permlink){
  
	middle3('#bigpop');

	$j("#bigpop").html('<img src="http://www.hotellkatalog.nu/images/ajax-loader.gif"> Laddar ...</a>');
	
	$j('#bigpop').css('display', 'block');
	http://www.hotellkatalog.nu/images/ajax-loader.gif
	$j.ajax( {
		type : "GET",
		url : BASEURL + '_core/_ajaxjson/_actions/contribute_show.php',
		data : {"type" : triggerthing, "permlink" : permlink,},
		success : function(msg) {

			$j('#bigpop').html(msg); 
			
			middle3('#bigpop');
			
			$j("#close").click(function(event){
				
				$j('#bigpop').css('display', 'none');
				$j('#bigpop').html(""); 
				
				
			});
			$j("#bigpop #send").click(function(event){
				
				alert('håller på och fixar detta...');
				
			});
			
			
		}
		
	});
	
	/*
	$j("#closebigpop").click(function(event){
		
		$j('#bigpop').html("");
 
	}):
	*/

	
	
/*}
*/
/*

function triggerModal( ){ 
 
	//Get the screen height and width
    var maskHeight = $j(document).height();
    var maskWidth = $j(window).width();
 
    //Set height and width to mask to fill up the whole screen
    $j('#mask').css({'width':maskWidth,'height':maskHeight});
 
    //transition effect    
    $j('#mask').fadeIn(1000);   
    $j('#mask').fadeTo("slow",0.8); 
 
    //Get the window height and width
    var winH = $j(window).height();
    var winW = $j(window).width();
 
    //Set the popup window to center
   // $j(triggerid).css('top',  winH/2-$j(triggerid).height()/2);
   // $j(triggerid).css('left', winW/2-$j(triggerid).width()/2);
 
    //transition effect
   // $j(triggerid).fadeIn(2000); 
    
      
}


*/



