function collapseMenu(menuId){
	var myMenuId = menuId;
	var mySpace = jq("#"+menuId).width();
	var myWidth = 0;
	var myChild = 0;
	jq("#"+menuId+" > li > a").each(function() { myWidth += jq(this).width(); myChild++; });
	if(myWidth > 0){
		var myPadding = Math.floor(((mySpace-myWidth)/myChild)/2);
		if(myWidth+(myPadding*2*myChild) <= mySpace){ jq("#"+menuId+" > li").each(function() {jq(this).css({"padding-left":myPadding, "padding-right":myPadding});});}
		else {setTimeout("collapseMenu('"+myMenuId+"')", 400);}
	} else {setTimeout("collapseMenu('"+myMenuId+"')", 400);}
}

var dropLanguage = {
	init: function(mydiv){
		jq('#'+ mydiv).css({"height":"20px", "overflow":"hidden"});
		jq('#'+ mydiv).hover(
			function(){jq(this).css({"height":"auto"});},
			function(){jq(this).css({"height":"20px"});}
		);
	}
}
var dropOrder = {
	init: function(mydiv){
		jq('#'+ mydiv).css({"height":"20px", "overflow":"hidden", "position":"absolute"});
		jq('#'+ mydiv).hover(
			function(){jq(this).css({"height":"auto"});},
			function(){jq(this).css({"height":"20px"});}
		);
	},
	setSend: function(myId){
		var mio_div = document.getElementById('myOrderRadio');
		if(mio_div){
			var elements = mio_div.getElementsByTagName("input");
			for (var i = 0; i < elements.length; ++i) {
				name_radio = (elements[i].getAttribute("name") + "[" + i + "]");
				if (name_radio == myId) {
					document.getElementById('struct_ord_'+i).setAttribute("checked","checked");
				} else {
					document.getElementById('struct_ord_'+i).removeAttribute("checked");
				}
			}
			var ievs = (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
			if (ievs){
				var iev = new Number(RegExp.$1);
				if (iev < 7) ievs = true;
			} else { ievs = false; }
			if (ievs){
				document.Invia = function() { document.getElementById("searchForm").submit();}
				setTimeout("document.Invia();", 10);
			} else {
				document.forms['searchForm'].submit();
			}
		} else {
			alert(mio_div +' non esiste.');
		}
	}
}

var resetBox = {
	options:{ myBlock: "boxSearch", myHeight: 0, myLiHeight: 0, speed: 1000 },
	init: function(opts) {
		for (name in opts) resetBox.options[name] = opts[name];
		if(jq('#'+ resetBox.options.myBlock).length){
			resetBox.options.myHeight = jq('#'+ resetBox.options.myBlock).height();
			resetBox.options.myLiHeight = jq('#contOption').innerHeight();
			jq('#numList').change(function(){ resetBox.set(jq(this).val()); });
		} else alert("attenzione: "+ resetBox.options.myBlock +" non esiste.");
	},
	set: function(myValue){
		myValuePass = parseInt(myValue);
		if(myValue > 1) myValue++;
		var heightB = resetBox.options.myHeight + (resetBox.options.myLiHeight*(myValue*1-1));
		var onFinish = true;
		if(jq('#'+ resetBox.options.myBlock).height() < heightB){ setRoom(myValuePass, name_adults, name_children, name_childage, name_room, name_rooms); onFinish = false; }
		if(onFinish){ jq('#'+ resetBox.options.myBlock).animate({height: heightB}, resetBox.options.speed, function(){
			setRoom(myValuePass, name_adults, name_children, name_childage, name_room, name_rooms);});
		} else { jq('#'+ resetBox.options.myBlock).animate({height: heightB}, resetBox.options.speed); }
	}
}

function setChildAge(nchild, chdid, roomn, label_children_age){
	var selectHtml = "";
	if(nchild > 0){
		selectHtml = '<label>'+ label_children_age +'</label>';
		for (var cc=1; cc<=nchild; cc++) {
			selectHtml =  selectHtml + '<select name="bform[reqRooms]['+roomn+'][childAge][' + cc + ']" class="selectSmall">' +
                '<option value="0">&lsaquo; 1</option>';
				for(var k=1; k<=18; k++){
					k_opt = k<10 ? "&nbsp;"+ k : k;
					selectHtml =  selectHtml + "\n" + '<option value="'+ k +'">'+ k_opt +'</option>';
				}
				selectHtml =  selectHtml + '</select>';
		}
	}
	if(document.getElementById(chdid)){
		document.getElementById(chdid).innerHTML = selectHtml;
	}
}

function createSelect(num, init, label, labels, selected){
	if(label != "")	label = " "+ label;
	labels = (labels != "")? " "+ labels : label;
	var mySel = "";
	for(var k=init; k<=num; k++){
		if(k!=init) label = labels;
		if (selected != 0 && selected == k){
			mySel = mySel + "\n" + '<option value="'+ k +'" selected="selected">'+ k + label +'</option>';
		} else {
			mySel = mySel + "\n" + '<option value="'+ k +'">'+ k + label +'</option>';
		}
	}
	return mySel;
}

function setRoom(nrooms, label_adults, label_children, label_children_age, label_room){
	var myResults = "";
	myResults = myResults + '<ul>\n';
	for (var i=1; i<=nrooms; i++){
		if ( nrooms > 1){
			myResults = myResults + '	<li><strong>'+ label_room +' '+ i +'</strong>\n';
		} else {
			myResults = myResults + '	<li>\n';
		}
		myResults = myResults + '		<span>\n'+
		'			<label>'+ label_adults +'</label>\n'+
		'			<select name="bform[reqRooms]['+ i +'][adults]" class="selectSmall">\n'+
		'			'+ createSelect(6, 1, "", "", 2) + 
		'			</select>\n'+
		'		</span>\n'+
		'		<span>\n'+
		'			<label>'+ label_children +'</label>\n'+
		'			<select name="bform[reqRooms]['+ i +'][child]" class="selectSmall" onchange="setChildAge(this.value,\'chdAge_'+ i +'\', '+ i +',\''+ label_children_age +'\');">\n'+
		'			'+ createSelect(4, 0, "", "", 0) + 
		'			</select>\n'+
		'		</span>\n'+
		'		<span class="childAge" id="chdAge_'+ i +'"></span>\n'+
		'	</li>\n';
	}
	myResults = myResults + '</ul>\n';
	if (document.getElementById('contOption')){
		document.getElementById('contOption').innerHTML = myResults;
	} else {
		alert("blocco non valido");
	}
}

function set_room(select_id, value, where){
	var my_options = "";
	var my_block = document.getElementById(select_id);
	if (value=="5" || value=="6" || value=="7" || value=="8"){
		my_options = my_options + '<label>'+ name_apartment +'</label>'+"\n";
		if(where == "home"){
			my_options = my_options + '<select name="bform[numRooms]" onchange="resetBox.set(this.value);">'+"\n";
		} else {
			my_options = my_options + '<select name="bform[numRooms]" onchange="setRoom(this.value, name_adults , name_children, name_childage, name_apartment, name_apartments);">'+"\n";
		}
		my_options = my_options + '<option value="1">1 '+name_apartment+'</option>'+"\n";
		my_options = my_options + '<option value="2">2 '+name_apartments+'</option>'+"\n";
		my_options = my_options + '<option value="3">3 '+name_apartments+'</option>'+"\n";
		my_options = my_options + '<option value="4">4 '+name_apartments+'</option>'+"\n";
		my_options = my_options + '</select>'+"\n";
		my_block.innerHTML = my_options;
		if(where == "home"){
			resetBox.set(1);
			setTimeout("setRoomHome(1, name_adults , name_children, name_childage, name_apartment, name_apartments)", 1000);
		} else {
			setRoom(1, name_adults , name_children, name_childage, name_apartment, name_apartments);
		}
	} else {
		my_options = my_options + '<label>'+ name_room +'</label>'+"\n";
		if(where == "home"){
			my_options = my_options + '<select name="bform[numRooms]" onchange="resetBox.set(this.value);">'+"\n";
		} else {
			my_options = my_options + '<select name="bform[numRooms]" onchange="setRoom(this.value, name_adults, name_children, name_childage, name_room, name_rooms);">'+"\n";
		}
		my_options = my_options + '<option value="1">1 '+name_room+'</option>'+"\n";
		my_options = my_options + '<option value="2">2 '+name_rooms+'</option>'+"\n";
		my_options = my_options + '<option value="3">3 '+name_rooms+'</option>'+"\n";
		my_options = my_options + '<option value="4">4 '+name_rooms+'</option>'+"\n";
		my_options = my_options + '</select>'+"\n";
		my_block.innerHTML = my_options;
		if(where == "home"){
			resetBox.set(1);
			setTimeout("setRoomHome(1, name_adults , name_children, name_childage, name_room, name_rooms)", 1000);
		} else {
			setRoom(1, name_adults , name_children, name_childage, name_room, name_rooms);
		}
	}
}

var jbase64 = {
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = jbase64._utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		}
		return output;
	},
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = jbase64._utf8_decode(output);
		return output;
	},
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) utftext += String.fromCharCode(c);
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}

function attachInfoBox(marker, text, myMap, url, offsetTop) {
	google.maps.event.addListener(marker, "mouseover", function() {
		infoBox = new InfoBox({latlng:this.position, map: maps, html: text, offsetV: offsetTop, offsetH: -110, height: 90, width: 220});
		this.setZIndex(markerZIndex + 1);
		markerZIndex++;
	});
	google.maps.event.addListener(marker, "mouseout", function() { infoBox.setMap(null); });
	google.maps.event.addListener(marker, "click", function() { parent.location.href = url; });
}

function attachURL(marker, url) {
	google.maps.event.addListener(marker, "click", function() { parent.location.href = url; });
}

function loadStructure() {
	var markerBounds = new google.maps.LatLngBounds();
	infoBox = new BFInfoWindow();
	var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }
	maps = new google.maps.Map(document.getElementById("mapStructures"), myOptions);
	var fluster = new Fluster2(maps);
	
	for (var i=0; i<HotelPoint.length; i++){
		var marker = new google.maps.Marker({
			position: new google.maps.LatLng(parseFloat(HotelPoint[i]['lat']), parseFloat(HotelPoint[i]['lon'])),
			icon: HotelPoint[i]['icon'],
			title: HotelPoint[i]['title'],
			zIndex: markerZIndex
		});
		if(HotelPoint[i]['description'] != "" || HotelPoint[i]['photo'] != "") {
			var infoBoxText = "";
			infoBoxText = '<div class="hotel"><h2>'+ HotelPoint[i]['title'] +'</h3><p><image src="'+ HotelPoint[i]['photo'] +'" border="0" alt="" />'+ HotelPoint[i]['description'] +'</p></div>';
			attachInfoBox(marker, infoBoxText, maps, HotelPoint[i]['href'], -135);
		} else if(HotelPoint[i]['href'] != "" && HotelPoint[i]['href'].substr(0,4) != "java") {
			attachURL(marker, HotelPoint[i]['href']);
		}
		markerZIndex++;
		markerBounds.extend(new google.maps.LatLng(parseFloat(HotelPoint[i]['lat']), parseFloat(HotelPoint[i]['lon'])));
		fluster.addMarker(marker);
	}
	fluster.initialize();
	maps.fitBounds(markerBounds);
	google.maps.event.addListener(maps, 'zoom_changed', function() {
		if(changeZoom == false){
			changeZoom = true;
			if(HotelPoint.length == 1 && maps.getZoom()>11) maps.setZoom(11);
			//if(HotelPoint.length > 3) maps.setZoom(maps.getZoom()-1);
		} 
	});
	fluster.styles = {
		0: {
			image: '/images/maps/icon_group.png',
			imageHover: '/images/maps/icon_groupH.png',
			textColor: '#FFFFFF',
			width: 23,
			paddingRight: 4,
			height: 25,
			paddingTop: 2,
			lineHeight: 16
		}
	};
}