var _defaultLocation = "go:blog";
var _homeData = "";

var responseReaction = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "add" || splitted[0] == "edit") {				
			toggle('addReaction' + splitted[2].trim());
			var d = document.getElementById('msg' + splitted[2].trim());			
			if (d) d.innerHTML = "Your comment has been added!";
			var d = document.getElementById('nrOfReactions');
			if (d) d.innerHTML = '' + (parseInt(d.innerHTML) + 1);
			return true;
		}
	}
	var d = document.getElementById("msg");
	d.innerHTML = "Something went wrong, please try again.";							
}

function postReaction(reactionId) {
	Connect.setForm('addReactionForm' + reactionId);
	var cObj = Connect.asyncRequest('POST', '/call/add/blogpostreaction' , responseReaction);
}

var responseChangePage = function(o, success) {
	if (success) {				
		var d = document.getElementById("blogposts");
		d.innerHTML = o.responseText;
		return true;		
	}
	var d = document.getElementById("msg");
	d.innerHTML = "Something went wrong, please try again.";
}

function changePage(topage, curpage) {
	if(parseInt(Number(topage)) < 1) return;	
//	dhtmlHistory.add(''+topage, 'GET:/call/get/blogposts/'+topage+':responseChangePage');
//		if (histId != '' && histId != null) {
//			var splitted = histId.split(':');
//			dhtmlHistory.add(splitted[0], ''+ method + ':' + uri + ':' + splitted[1]);
//		}

	var cObj = Connect.asyncRequest('GET', '/call/get/blogposts/'+topage, responseChangePage, topage+':responseChangePage');
}

var responseAddFriend = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "add") {				
			var d = document.getElementById('friendLink');
			if (d) d.innerHTML = "<li><a href='#'>Invitation has been sent!</a></li>";		
			return true;
		}
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";							
}

function addFriend(userId) {
	var cObj = Connect.asyncRequest('GET', '/call/add/friend/' + userId, responseAddFriend);
}

function updateFriend(userIdOne, userIdTwo, status) {
	var cObj = Connect.asyncRequest('GET', '/call/friendlink/' + userIdOne + '/' + userIdTwo + '/' + status, responseUpdateFriend);
}

var responseUpdateFriend = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "add") {				
			var d = document.getElementById("friends_msg");
			if (d) d.innerHTML = 'friend added';
			setTimeout("hide('friends_box');", 1000);
			setTimeout("document.getElementById('friends_msg').innerHTML = ''", 1000);			
			return true;
		}
		if(splitted[0] == "remove") {				
			var d = document.getElementById("friends_msg");
			if (d) d.innerHTML = 'friend declined';
			setTimeout("hide('friends_box');", 1000);	
			setTimeout("document.getElementById('friends_msg').innerHTML = ''", 1000);			
			return true;
		}
	}
}

/**
* This area is for the show trayle functions. advanced panning etc.
*
*/ 

function overviewTrayle(userId, blogId, blogPostId, trayleId, blogPostCategoryId) {
	map.DetachEvent("onchangeview", navigateMap);
	clearTimeout(panTrayleTimeoutId);
	hide("trayleslideshow");
	var call = '/call/xml/trayletree.php?go=advtrayletree&userId='+userId+'&blogId='+blogId+'&blogPostId='+blogPostId+'&trayleId='+trayleId+'&blogPostCategoryId='+blogPostCategoryId;
	var cObj = Connect.asyncRequest('GET', call, setDynamicTrayleContent, null);
}

function setDynamicTrayleContent(o, success) {
	if (!success) return false;
	ShowMap();
	clearTimeout(panTrayleTimeoutId);
	map.DeleteAllPushpins();
	map.DeleteAllPolylines();
	destlocs = new Array;
	desttitles = new Array;
	destwebnames = new Array;
	destdescs = new Array;
	desttrayledescs = new Array;
	destpois = new Array;
	try {	
	var roots = o.responseXML.getElementsByTagName("trayle");
	for (var i=0;i<roots.length;i++) {
		for (var j=0;j<roots[i].childNodes.length;j++) {	
			if (roots[i].childNodes[j].tagName == "destination") {
				var centerlatlong = createCenterLatLong(roots[i].childNodes[j].getAttribute('lat1'), roots[i].childNodes[j].getAttribute('long1'), roots[i].childNodes[j].getAttribute('lat2'), roots[i].childNodes[j].getAttribute('long2'));
				if (centerlatlong.Latitude != 0.1 && centerlatlong.Longitude != 0.1) {
		           	destlocs.push(centerlatlong);
					desttitles.push(getNodeValue(roots[i].childNodes[j], 'name'));
					destwebnames.push(roots[i].childNodes[j].getAttribute('webname'));											
					destdescs.push(getNodeValue(roots[i].childNodes[j], 'description'));					
					desttrayledescs.push(getNodeValue(roots[i].childNodes[j], 'trayledescription'));
					currentpois = new Array;
					destpois.push(currentpois);		    
					for (var n=0;n<roots[i].childNodes[j].childNodes.length;n++) {																
						if (roots[i].childNodes[j].childNodes[n].tagName == "poi") {
							var newlatlong = createNewLatLong(roots[i].childNodes[j].childNodes[n], '');
							var poi = new Poi();														
							poi.id = 'poi'+j+'_'+n;
							poi.title = getNodeValue(roots[i].childNodes[j].childNodes[n], 'name');
							poi.webname = roots[i].childNodes[j].childNodes[n].getAttribute('webname');
							poi.type = roots[i].childNodes[j].childNodes[n].getAttribute('categoryTypeId');
							poi.stars = roots[i].childNodes[j].childNodes[n].getAttribute('avgRating');
							//var photo = roots[i].childNodes[j].childNodes[n].getAttribute("photo");
							//if (photo != '') var desc = "<img align='right' src=\""+photo+"\" width='100'>";
							var desc = getNodeValue(roots[i].childNodes[j].childNodes[n],'description');
							poi.desc = desc;
							if (newlatlong.Latitude != 0.1 && newlatlong.Longitude != 0.1) {
								poi.loc = newlatlong;								
							} else {
								poi.loc = centerlatlong;
							}
							currentpois.push(poi);														
						}
					}
				}
			}
		}
	}
	for (var j = 0; j < destlocs.length; j++) {			
		if (desttitles.length > j && destdescs.length > j && destwebnames.length > j) {
			AddPin(j, destlocs[j], desttitles[j], destdescs[j], destwebnames[j]); 
			if (destpois.length > j) {
				for ( var i = 0; i < destpois[j].length; i++) {
					AddPoiPin(destpois[j][i].id, destpois[j][i].loc, destpois[j][i].title, destpois[j][i].desc, destpois[j][i].type, destpois[j][i].webname, destpois[j][i].stars);
				}	
			}
		}
	}
	var mil = document.getElementById('mapitems');
	var mapitemswidth = 0;
	if (mil) {	
		var inner = '<ul>';
		for (var i = 0; i < destlocs.length; i++) {
				mapitemswidth += (desttitles[i].length * 12);
				inner = inner + '<li><a id="map_'+i+'" href="#" onclick="trayleSelectMapItem(\'map_'+i+'\', this); return false;" onfocus="blur()">' + desttitles[i] + '</a></li>';
				if (i != (destlocs.length - 1)) {
					inner = inner + '<li class="sep">&nbsp;</li>';
				}
		}	
		inner += '</ul>';
	}		
	mil.innerHTML = inner;	
	mil.style.width = mapitemswidth + "px";

	PanMap(null,null,null,destlocs, 896, 250);
	setTimeout("DrawPoly('poly', destlocs, 2, new VEColor(250,250,50,1.0))", 500);	
	}catch (e) {
		alert(e.message);
	}
}


function showTrayle(userId, blogId, blogPostId, trayleId, blogPostCategoryId, mapwidth, mapheight) {
	map.DetachEvent("onchangeview", navigateMap);
	map.DetachEvent("onchangeview", navigateQuickMap);	
	
	if (mapwidth != undefined && mapwidth != null) {
		globalMapwidth = mapwidth;
	} 
	if (mapheight != undefined && mapheight != null) {
		globalMapheight = mapheight;
	} 
	clearTimeout(panTrayleTimeoutId);
	show("trayleslideshow");
	var call = '/call/xml/trayletree.php?go=advtrayletree&userId='+userId+'&blogId='+blogId+'&blogPostId='+blogPostId+'&trayleId='+trayleId+'&blogPostCategoryId='+blogPostCategoryId;
	if (isSmallMap()) {
		call += '&latest=1';		
	}
//	alert(call);
	var cObj = Connect.asyncRequest('GET', call, setAdvDynamicXMLContent, null);
}

var destlocs = new Array;
var desttitles = new Array;
var destdescs = new Array;
var desttrayledescs = new Array;
var destwebnames = new Array;
var destpois = new Array;
var panTrayleTimeoutId = 0;
var tdescription = '';
function setAdvDynamicXMLContent(o, success) {
//alert(o.responseText);
//document.getElementById('msg').innerHTML = o.responseText;
if (!success) return false;
	ShowMap();
	clearTimeout(panTrayleTimeoutId);
	inPois = false;
	looper = 0;
	poilooper = 0;
	map.DeleteAllPushpins();
	map.DeleteAllPolylines();
	destlocs = new Array;
	desttitles = new Array;
	destwebnames = new Array;
	destdescs = new Array;
	desttrayledescs = new Array;
	destpois = new Array;
	try {	
	var roots = o.responseXML.getElementsByTagName("trayle");
	for (var i=0;i<roots.length;i++) {
		for (var j=0;j<roots[i].childNodes.length;j++) {	
			if (roots[i].childNodes[j].tagName == "destination") {
				var centerlatlong = createCenterLatLong(roots[i].childNodes[j].getAttribute('lat1'), roots[i].childNodes[j].getAttribute('long1'), roots[i].childNodes[j].getAttribute('lat2'), roots[i].childNodes[j].getAttribute('long2'));
				if (centerlatlong.Latitude != 0.1 && centerlatlong.Longitude != 0.1) {
		           	destlocs.push(centerlatlong);
					desttitles.push(getNodeValue(roots[i].childNodes[j], 'name'));
					destwebnames.push(roots[i].childNodes[j].getAttribute('webname'));											
					destdescs.push(getNodeValue(roots[i].childNodes[j], 'description'));					
					desttrayledescs.push(getNodeValue(roots[i].childNodes[j], 'trayledescription'));
					currentpois = new Array;
					destpois.push(currentpois);		    
					//alert(getNodeValue(roots[i].childNodes[j], 'trayledescription'));
					for (var n=0;n<roots[i].childNodes[j].childNodes.length;n++) {																
						if (roots[i].childNodes[j].childNodes[n].tagName == "poi") {
							var newlatlong = createNewLatLong(roots[i].childNodes[j].childNodes[n], '');
							var poi = new Poi();														
							poi.id = 'poi'+j+'_'+n;
							poi.title = getNodeValue(roots[i].childNodes[j].childNodes[n], 'name');
							poi.webname = roots[i].childNodes[j].childNodes[n].getAttribute('webname');
							poi.type = roots[i].childNodes[j].childNodes[n].getAttribute('categoryTypeId');
							poi.stars = roots[i].childNodes[j].childNodes[n].getAttribute('avgRating');
							//var photo = roots[i].childNodes[j].childNodes[n].getAttribute("photo");
							//if (photo != '') var desc = "<img align='right' src=\""+photo+"\" width='100'>";
							var desc = getNodeValue(roots[i].childNodes[j].childNodes[n],'description');
							//alert('poi.desc' + desc);
							poi.desc = desc;
							if (newlatlong.Latitude != 0.1 && newlatlong.Longitude != 0.1) {
								poi.loc = newlatlong;								
							} else {
								poi.loc = centerlatlong;
							}
							currentpois.push(poi);														
						}
					}
				}
			}
		}
	}
	for (var j = 0; j < destlocs.length; j++) {			
		if (desttitles.length > j && destdescs.length > j && destwebnames.length > j) {
			tdescription = '';			
			if (desttrayledescs[j] != '') {				
				tdescription = desttrayledescs[j];				
			} else {
				tdescription = destdescs[j];
			}
			if (o.getArgument(0) == 'iframe') {					
				AddIframePin(j, destlocs[j], desttitles[j], tdescription, destwebnames[j]); 
			} else {
				AddPin(j, destlocs[j], desttitles[j], tdescription, destwebnames[j]); 
			}
			if (destpois.length > j) {				
				for ( var i = 0; i < destpois[j].length; i++) {
					AddPoiPin(destpois[j][i].id, destpois[j][i].loc, destpois[j][i].title, destpois[j][i].desc, destpois[j][i].type, destpois[j][i].webname, destpois[j][i].stars);
				}	
			}
		}
	}
	var mil = document.getElementById('mapitems');
	var mapitemswidth = 0;
	if (mil) {	
		var inner = '<ul>';
		for (var i = 0; i < destlocs.length; i++) {
				mapitemswidth += (desttitles[i].length * 12);
				inner = inner + '<li><a id="map_'+i+'" href="#" onclick="trayleSelectMapItem(\'map_'+i+'\', this); return false;" onfocus="blur()">' + desttitles[i] + '</a></li>';
				if (i != (destlocs.length - 1)) {
					inner = inner + '<li class="sep">&nbsp;</li>';
				}
		}	
		inner += '</ul>';
		if (mapitemswidth > document.getElementById('mapitemlist').style.width) {
			document.getElementById('scrolllist').onmouseover = startScrolling;
		}
		mil.innerHTML = inner;	
		mil.style.width = mapitemswidth + "px";
	}		
	if (destlocs.length > 0) {
		if (iframemap || destlocs.length < 2) {
			PanMap(null,null,null,destlocs);
		} else {
			g_playing = false;
			traylePlayOrPause();
			map.SetZoomLevel(destinationZoomLevel);
			map.PanToLatLong(destlocs[0]);
			panTrayleTimeoutId = setTimeout("panAdvTrayle()", 100);
		}
	}
	map.AttachEvent("onclick", goOnClickTrayle);
	}catch (e) {
		alert('trayleshow _ '+e.message);
	}
}

function goOnClickTrayle() {
	nrOfLoops = maxNrOfLoops;
	map.DetachEvent("onchangeview", manShowPushpinExt);
	map.AttachEvent("onchangeview", navigateMap);
}

var nrOfLoops = 0;
var maxNrOfLoops = 11;
var curid = '';
var curtitle = '';
var curdesc = '';
var curwebname = '';
var curloc = null;
var curstars = 0;
var inPois = false;
var poilooper = 0;

function manShowPushpinAdv() {
try {
	if (nrOfLoops < maxNrOfLoops) {
//alert('test' + looper);
		var looper2 = looper;
		var center = map.GetCenter();
		var geo2 = Microsoft.Web.Geometry;
		var ppobj = geo2.Functions.getElementPosition(document.getElementById(curid + '_' + map.GUID));
		var maxtries = 1000;
		var currenttry = 0;
		var left = map.GetLeft();
		var top = map.GetTop();
		var right = left + 896;
		var bottom = top + 250;
		if (ppobj.x > right || ppobj.x < left || ppobj.y > bottom || ppobj.y < top) {
			setTimeout("manShowPushpinAdv()", 100);
			return;
		}		
		if (popupType == 'poi') {
			manShowPoiPushpinDetail(curid, curtitle, curdesc, curwebname, curloc, true, curstars);
		} else {						
			manShowDestPushpinDetail(curid, curtitle, curdesc, curwebname, curloc, true);		
		}

		if (!inPois && !iframemap) trayleSelectMapItem('map_'+curid);

		map.DetachEvent("onchangeview", manShowPushpinAdv);		

		if (destpois[looper] != null && destpois[looper].length > 1) {
			inPois = true;					
			if (destpois[looper].length == poilooper) {				
				inPois = false;
				poilooper = 0;
			}
		} else {
			inPois = false;
		}

		if (!inPois) {
			if ((destlocs.length != 1)) {
				if (looper < (destlocs.length - 1)) {
					looper = parseInt(looper) + 1;
					panTrayleTimeoutId = setTimeout("panAdvTrayle()",timePan);
				} else {
					nrOfLoops = nrOfLoops + 1;
					looper = 0;
					panTrayleTimeoutId = setTimeout("panAdvTrayle()",timePan);
				}
			} else {
				traylePlayOrPause();
			}
		} else {
			panTrayleTimeoutId = setTimeout("panAdvTrayle()",timePan);
		}
	} else {
		//map.AttachEvent("onchangeview", navigateMap);
	}
} catch (e) {
	if (showCatchAlert) alert(e.message);
}
}

var popupType = 'destination';
function panAdvTrayle() {
try {
	if (nrOfLoops < maxNrOfLoops) {		
		if (inPois) {
			//alert('inpoi_' + looper + '_' + poilooper);
			if (destpois[looper] != null) {
				popupType = 'poi';
				curid = destpois[looper][poilooper].id;
				curloc = destpois[looper][poilooper].loc;
				curtitle = destpois[looper][poilooper].title;
				curdesc = destpois[looper][poilooper].desc;
				curstars = destpois[looper][poilooper].stars;				
				curwebname = destpois[looper][poilooper].webname;
				poilooper = poilooper + 1;
				map.SetZoomLevel(poiZoomLevel);				
			}
		} else {
			//alert('notinpoi' + looper);
			popupType = 'destination';
			curid = looper;
			curloc = destlocs[looper];
			curtitle = desttitles[looper];
			curstars = 0;
			if (desttrayledescs[looper] != '') {				
				curdesc = desttrayledescs[looper];				
			} else {
				curdesc = destdescs[looper];
			}	
			curwebname = destwebnames[looper];
			if (destpois[looper] != null && desttrayledescs[looper] != null && destpois[looper].length == 1 && desttrayledescs[looper] == '') {
				curtitle = destpois[looper][0].title;								
				curdesc = destpois[looper][0].desc;			
				curwebname = destpois[looper][0].webname;			
				curstars = destpois[looper][0].stars;		
				popupType = 'poi';
			}
			if (destlocs.length > (looper + 2)) {			
				PanMap(null,null,null, destlocs.slice(looper, looper+2), 896, 250)
			} else {
				map.SetZoomLevel(destinationZoomLevel);
			}
		}
		map.AttachEvent("onchangeview", manShowPushpinAdv);
		VEPushpin.Hide(true);
		//alert(curloc);
		if (curloc != null) {		
			map.PanToLatLong(curloc);
		}
	} else {
		//map.AttachEvent("onchangeview", navigateMap);
	}
} catch (e) {
	if (showCatchAlert) alert('Error: '+ e.message + curloc);
}
}

var g_playing = false;
function traylePlayOrPause() {
	map.DetachEvent("onchangeview", navigateMap);
	map.DetachEvent("onchangeview", traylePlayOrPause);
	var o = document.getElementById('trayleplaypauseimg');
	if (o) {
		if(g_playing == false) {
			//playing
			o.src = '/img/map/toolbar/pause.gif';
			g_playing = true;
			
//			document.getElementById("trayleprogressindicator").style.width = "1px";
//			trayleTrackProgressBar();
			if (nrOfLoops == maxNrOfLoops) {
				nrOfLoops = 0;
				stopPan = false;
				panTrayleTimeoutId = setTimeout(panAdvTrayle, 1);			
			}
		}else{
			//paused
			g_playing = false;
			o.src = '/img/map/toolbar/play.gif';
			nrOfLoops = maxNrOfLoops;			
			clearTimeout(panTrayleTimeoutId);		
		}
	}
}


function trayleTrackProgressBar() {
	var o = document.getElementById("trayleprogressindicator");
	var w = o.style.width.substr(0, o.style.width.length - 2);
	w = parseInt(w) + 1;
	if(w > 66) {
		w = 1;
	}
	o.style.width = w + "px";
	if(g_playing == true) {
		progressTimeoutId = setTimeout(trayleTrackProgressBar, 150);
	}
}

var stopPan = false;
function trayleSelectMapItem(mapwebname, obj) {
	var as = document.getElementById("mapitemlist").getElementsByTagName("a");
	for(var i = 0; i < as.length; i++) {
		as[i].className = "inactive";
	}
	var selected = document.getElementById(''+mapwebname);
	if (selected) selected.className = "active";	
	if (obj != null && obj != 'undefined') {
		var split = obj.id.split('_');
		nrOfLoops = 0;
		map.DetachEvent("onchangeview", navigateMap);		
		looper = split[1];		
		//poilooper = 0;
		//stopPan = true;
		inPois = false;
		clearTimeout(panTrayleTimeoutId);
		panAdvTrayle();
		//g_playing = true;
		//map.AttachEvent("onchangeview", traylePlayOrPause);
	}
}

/**
*
*	END: advanced trayle panning
*/

function showDynamicXMLContent(o, success) {	
	if(success) {
		if (o.responseXML != null) {
			setDynamicXMLContent(o);
		}
	}
}

var locs = new Array;
var descs = new Array;
var titles = new Array;
var types = new Array;
var stars = new Array;
var webnames = new Array;
var looper = 0;	
	
function setDynamicXMLContent(o) {
//alert(o.responseText);
	ShowMap();
	map.DeleteAllPushpins();
	map.DeleteAllPolylines();
	try {	
	var roots = o.responseXML.getElementsByTagName("user");
	locs = new Array;
	descs = new Array;
	titles = new Array;
	types = new Array; 	
	stars = new Array; 	
	webnames = new Array; 	
	for (var i=0;i<roots.length;i++) {
		for (var j=0;j<roots[i].childNodes.length;j++) {	
			if (roots[i].childNodes[j].tagName == "blog") {
				for (var k=0;k<roots[i].childNodes[j].childNodes.length;k++) {	
					if (roots[i].childNodes[j].childNodes[k].tagName == "blogpost") {					
						for (var l=0;l<roots[i].childNodes[j].childNodes[k].childNodes.length;l++) {	
							if (roots[i].childNodes[j].childNodes[k].childNodes[l].tagName == "trayle") {					
								for (var m=0;m<roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes.length;m++) {									
									if (roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m].tagName == "poi") {
										var newlatlong = createNewLatLong(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m], '');
//										alert('1   '+ newlatlong);
										if (newlatlong.Latitude != 0.1 && newlatlong.Longitude != 0.1) {
//										alert('add');
											locs.push(createNewLatLong(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m],''));
											titles.push(getNodeValue(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m], 'name'));
											webnames.push(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m].getAttribute('webname'));
											stars.push(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m].getAttribute('avgRating'));
											types.push(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m].getAttribute('categoryTypeId'));
											descs.push(getNodeValue(roots[i].childNodes[j].childNodes[k].childNodes[l].childNodes[m], 'description'));
										}
//										map.AttachEvent("onchangeview", addTraylePinsEvent);
									}
								}
							}
						}
					}
				}
			}
		}
	}

	for (var i = 0; i < locs.length; i++) {			
		if (titles.length > i && descs.length > i && types.length > i && webnames.length > i) {
			AddPoiPin(i, locs[i], titles[i], descs[i], types[i], webnames[i], stars[i]); 
		}
	}
	if (locs.length > 0) {
		map.SetZoomLevel(destinationZoomLevel);
		map.PanToLatLong(locs[0]);
		setTimeout("panTrayle()", 100);
	}
	map.AttachEvent("onclick", goOnClickTrayle);

	}catch (e) {
//		alert(e.message);
	}
}

function goOnClickTrayle() {
	nrOfLoops = maxNrOfLoops;
	map.DetachEvent("onchangeview", manShowPushpinExt);
}

var nrOfLoops = 0;
var maxNrOfLoops = 11;

function manShowPushpinExt() {
	if (nrOfLoops < maxNrOfLoops) {
		var looper2 = looper;
		var center = map.GetCenter();
		var geo2 = Microsoft.Web.Geometry;
		var ppobj = geo2.Functions.getElementPosition(document.getElementById(looper2 + '_' + map.GUID));
		var maxtries = 1000;
		var currenttry = 0;
		var left = map.GetLeft();
		var top = map.GetTop();
		var right = left + 896;
		var bottom = top + 250;
		if (ppobj.x > right || ppobj.x < left || ppobj.y > bottom || ppobj.y < top) {
			setTimeout("manShowPushpinExt()", 100);
			return;
		}
		manShowPoiPushpinDetail(looper2, titles[looper2], descs[looper2], webnames[looper2], 'pinTitleStyle','pinDetailStyle', true, stars[looper2]);
		map.DetachEvent("onchangeview", manShowPushpinExt);
		if (looper < (locs.length - 1)) {
			looper = looper + 1;
			setTimeout("panTrayle()",timePan);
		} else {
			nrOfLoops = nrOfLoops + 1;
			looper = 0;
			setTimeout("panTrayle()",timePan);
		}
	} else {
		map.AttachEvent("onchangeview", navigateMap);
	}
}

function panTrayle() {
	if (nrOfLoops < maxNrOfLoops) {
		map.AttachEvent("onchangeview", manShowPushpinExt);
		VEPushpin.Hide(true);
		map.PanToLatLong(locs[looper]);
	} else {
		map.AttachEvent("onchangeview", navigateMap);
	}
}


var responseSearch = function(o, success) {
	//alert('piet' + o.responseText);
	if (success) {				
		var d = document.getElementById(o.getArgument(0) + 'content');
		d.innerHTML = o.responseText;
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";
}

function searchTrayles() {		
	Connect.setForm('searchTraylesForm');
	Connect.setArgument('mid:')
	var cObj = Connect.asyncRequest('POST', '/call/search/trayles', responseSearch);
}

function responseFriends(o, success) {
	if (success) {
		var d = document.getElementById('friends_content');
		if (d) d.innerHTML = o.responseText;
		showBox('friends_box', 720, 70);
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";
}

function toMyFriends() {
	var cObj = Connect.asyncRequest('GET', '/call/friends', responseFriends);
}

function showBlog(precont, userId, blogId, blogPostId, trayleId, blogPostCategoryId, date) {	
	showLoadingContent(precont);
	if (userId > 0) {
		Connect.setArgument(precont+":user:"+userId); 
		var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=user&userId='+userId+'&precont='+precont, responseShowBlog);
	} else if (blogId > 0) {
		Connect.setArgument(precont+":blog:"+blogId+":"+blogPostCategoryId+":"+date);
		var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=blog&blogId='+blogId+'&blogPostCategoryId='+blogPostCategoryId+'&date='+date+'&precont='+precont, responseShowBlog);			
	} else if (blogPostId > 0) {
		Connect.setArgument(precont+":blogpost:"+blogPostId); 
		var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=blogPost&blogPostId='+blogPostId+'&precont='+precont, responseShowBlog);			
	} else if (trayleId > 0) {
		Connect.setArgument(precont+":trayle:"+trayleId+":0:0");
		var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=trayle&trayleId='+trayleId+'&precont='+precont, responseShowBlog);
	}	
}

var responseShowBlog = function(o, success) {
	if (success) {		
		var d = document.getElementById(o.getArgument(0)+'content');
		if (d) d.innerHTML = o.responseText;
		try {
			if (o.getArgument(1) == 'user') { 
				//showTrayle(o.getArgument(2),0,0,0,0,0); 
				dhtmlHistory.add(o.getArgument(0)+':user:'+o.getArgument(2), o.responseText);
				selectTab(3);
			}
			if (o.getArgument(1) == 'blog') {				
				showTrayle(0,o.getArgument(2),0,0,o.getArgument(3), 0); 
				dhtmlHistory.add(o.getArgument(0)+':blog:'+o.getArgument(2)+':'+o.getArgument(3)+':'+o.getArgument(4), o.responseText);
				selectTab(1);
			}
			if (o.getArgument(1) == 'blogpost') { 	
				showTrayle(0,0,o.getArgument(2),0,0,0); 
				dhtmlHistory.add(o.getArgument(0)+':blogpost:'+o.getArgument(2), o.responseText);
				selectTab(1);
			}
			if (o.getArgument(1) == 'trayle') { 	
				showTrayle(0,0,0,o.getArgument(2),0,0); 
				dhtmlHistory.add(o.getArgument(0)+':'+o.getArgument(1)+':'+o.getArgument(2)+':'+o.getArgument(3)+':'+o.getArgument(4), o.responseText);
			}			
			var pt = document.getElementById('pageTitle');
			if (pt) setPageTitle(pt.innerHTML);
		} catch (e) {
			alert(e.message);
		}
		trayleTagHovers('doublecontent');
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";
	

}

function showPhoto(userId, photoAlbumId) {
	Connect.setArgument("double:photoalbum:"+userId+":"+photoAlbumId);
	var cObj = Connect.asyncRequest('GET', '/call/photoalbum/'+userId+'/'+photoAlbumId, responsePhotoalbum);
}

function showMyMaps(userId) {
	Connect.setArgument("double:mymaps:"+userId);
	var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=mymaps&userId='+userId, responseMyMaps);
}

function showMyReviews(userId) {
	Connect.setArgument("double:reviwws:"+userId);
	var cObj = Connect.asyncRequest('GET', '/call/blog.php?go=reviews&userId='+userId, responseMyReviews);
}

function responseMyMaps(o, success) {
	if(success) {
		var d = document.getElementById(o.getArgument(0) + 'content');
		d.innerHTML = o.responseText;	
		dhtmlHistory.add(o.getArgument(0)+':mymaps:'+o.getArgument(2), o.responseText);
		selectTab(4);
		var pt = document.getElementById('pageTitle');
		if (pt) setPageTitle(pt.innerHTML);
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";	
}

function responseMyReviews(o, success) {
	if(success) {
		var d = document.getElementById(o.getArgument(0) + 'content');
		d.innerHTML = o.responseText;	
		dhtmlHistory.add(o.getArgument(0)+':reviews:'+o.getArgument(2), o.responseText);
		selectTab(5);
		var pt = document.getElementById('pageTitle');
		if (pt) setPageTitle(pt.innerHTML);
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";	
}

function selectTab(index) {
	var a = document.getElementById("tabBlog");
	var b = document.getElementById("tabPhoto");
	var c = document.getElementById("tabUser");
	var d = document.getElementById("tabMaps");
	var e = document.getElementById("tabReviews");
	
	if (index == 1)  a.className = 'on'; else a.className = '';
	if (index == 2)  b.className = 'on'; else b.className = '';
	if (index == 3)  c.className = 'on'; else c.className = '';
	if (index == 4)  d.className = 'on'; else d.className = '';
	if (index == 5)  e.className = 'on'; else e.className = '';
}

function responsePhotoalbum(o, success) {
	if (success) {
		var d = document.getElementById(o.getArgument(0) + 'content');
		d.innerHTML = o.responseText;			
		dhtmlHistory.add(o.getArgument(0)+':photoalbum:'+o.getArgument(2)+':'+o.getArgument(3), o.responseText);
		selectTab(2);
		return true;
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again.";
}

var responseDeleteReaction = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "add" || splitted[0] == "edit" || splitted[0] == "del") {
			hide('addReaction' + splitted[2].trim());
			var d = document.getElementById('msg' + splitted[2].trim());
			if (d) d.innerHTML = "The comment has been deleted!";// + o.responseText;
			var d = document.getElementById('nrOfReactions');
			if (d) d.innerHTML = '' + (parseInt(d.innerHTML) - 1);						
			return true;
		}
	}
	var d = document.getElementById("msg");
	d.innerHTML = "Something went wrong, please try again. " + o.responseText;
}

function deleteBlogPostReaction(blogPostId, blogPostReactionId) {
	if (confirmDelete()) var cObj = Connect.asyncRequest('GET', '/call/del/blogpostreaction/' + parseInt(blogPostId) + '/' + parseInt(blogPostReactionId), responseDeleteReaction);
}

function deleteBlogPost(blogPostId) {	
	if (confirmDelete()) var cObj = Connect.asyncRequest('GET', '/call/del/blogpost/' + parseInt(blogPostId) , responseDeleteBlogPost);
}

function responseDeleteBlogPost(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "del") {
			//hide('blogPost' + splitted[1].trim());			
			var d = document.getElementById('blogPost' + splitted[1].trim());			
			if (d) d.innerHTML = "The post has been deleted!";
			return true;
		}
	}
	var d = document.getElementById("msg");
	if (d) d.innerHTML = "Something went wrong, please try again. " + o.responseText;
}

function loadPoi(editable) {
	map.DetachEvent("onchangeview", navigateMap);
	if (editable) {
		var el = document.createElement('div');
		el.style.padding = "4px";
		el.style.left = "2px";
		el.style.top = "0px";
		el.style.width = "888px";
		el.style.float = "right";
		el.style.background = "Yellow";		
		el.innerHTML = "Click on the map to set your Home";
		
		map.AddControl(el);	
		map.AttachEvent("onclick", setPoi);
	}
	
	var lat = document.getElementById('personalLat');
	var long = document.getElementById('personalLong');
	if (lat && long && lat.value != 0 && long.value != 0) {
		map.DeleteAllPushpins();
		var latlong = new VELatLong(lat.value, long.value);
		map.AddPushpin(new VEPushpin(1, latlong, '/img/map/flags/red.gif' , 'My Home', ''));	
		PanMap(null, null, null, new Array(latlong), 890, 500);
	}
}

function setPoi(e) {
	map.DeleteAllPushpins();
	map.AddPushpin(new VEPushpin(1, e.view.LatLong, '/img/map/flags/red.gif' , 'My Home', ''));
	var lat  = document.getElementById('personalLat');
	var long = document.getElementById('personalLong');
	if (lat && long) {
		lat.value  = e.view.LatLong.Latitude;
		long.value = e.view.LatLong.Longitude;
	}
}

function setBlogSubtitle(txt) {
	document.getElementById('blogsubtitle').innerHTML = txt;

}

var responseSendEmailLink = function(o, success) {
	if (success) {	
		var d = document.getElementById(o.getArgument(0) + 'content');
		d.innerHTML = o.responseText;			
		dhtmlHistory.add(o.getArgument(0)+':'+o.getArgument(1)+':'+o.getArgument(2), o.responseText);
		return true;
	}
	var d = document.getElementById("msg");
	d.innerHTML = "Something went wrong, please try again.";							
}

function sendEmailLink(userId) {
	Connect.setArgument("double:sendemail:"+userId);
	var cObj = Connect.asyncRequest('GET', '/call/sendemail/'+userId, responseSendEmailLink);
}

var responseSendEmail = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "ok") {
			var d = document.getElementById("msg");
			if (d) d.innerHTML = "Email sent!" + o.responseText;
			if (splitted[1]) showBlog('double',0,splitted[1],0,0,0,0);
			return true;
		}
		if(splitted[0] == "error") {
			var d = document.getElementById("msg");
			if (d) d.innerHTML = "<h4>Error with input or while submitting, please try again.</h4>";
			return true;
		}
	} else {
		var d = document.getElementById("msg");
		d.innerHTML = "Something went wrong, please try again.";
	}
}

function sendEmail(userId) {
	if (!checkEmail(document.sendEmailForm.youremailaddress.value)) {
		var d = document.getElementById('form_displayemailmsg');
		if (d) d.innerHTML = "Incorrect email address";
		return false;
	}
	Connect.setForm('sendEmailForm');
	var cObj = Connect.asyncRequest('POST', '/call/sendemail/'+userId, responseSendEmail);
}

var responseLink = function(o, success) {
	if (success) {				
		var splitted = o.responseText.split('|');
		if(splitted[0] == "ok") {
			toggle('addOrUpdateLink');
			hide('nolinksyet');
			var d = document.getElementById('linklist');
			var newlink = "<li id=\"link"+splitted[1]+"\">";
			newlink += "<a target=\"_blank\" href=\""+splitted[3]+"\">"+splitted[2]+"</a>";
			newlink += "<a href=\"#\" onClick=\"deleteLink("+splitted[1]+","+ splitted[4]+"); return false;\"><img src=\"/img/del.gif\" width=\"7\" height=\"9\" border=\"0\" alt=\"delete\" title=\"delete link\" /></a>";
			newlink += "</li>";
			d.innerHTML = d.innerHTML + newlink;
			return true;
		}
	} else {
		var d = document.getElementById("linkmsg");
		d.innerHTML = "Something went wrong, please try again.";							
	}
}

function postLink() {
	if (document.addOrUpdateLinkForm.linkName.value != '' && checkURL(document.addOrUpdateLinkForm.linkUrl.value)) {
		Connect.setForm('addOrUpdateLinkForm');
		var cObj = Connect.asyncRequest('POST', '/call/add/link' , responseLink);
	} else {
		var d = document.getElementById("linkmsg");
		if (document.addOrUpdateLinkForm.linkName.value == '') {
			d.innerHTML = "Please fill in a name.";
		} else {
			d.innerHTML = "Url is incorrect.";
		}
	}
}

function deleteLink(linkId, blogId) {
	if (confirmDelete()) var cObj = Connect.asyncRequest('GET', '/call/del/link/' + parseInt(linkId) + '/' + parseInt(blogId), responseDeleteLink);
}

var responseDeleteLink = function(o, success) {
	if (success) {
		var splitted = o.responseText.split('|');
		if(splitted[0] == "del") {
			toggle('link'+splitted[1]);
			return true;
		}
	}
	var d = document.getElementById("linkmsg");
	d.innerHTML = "Something went wrong, please try again.";
}

function trayleTagHovers(ox) {
	var o = document.getElementById(ox);
	if(o) {
		var spans = o.getElementsByTagName('span');
		for(var i = 0; i < spans.length; i++) {
			if(spans[i].className == "trayle") {
				spans[i].onmouseover = showCursorHelp;
				spans[i].onmouseout = hideTrayleInfo;
				spans[i].onmousedown = showTrayleInfo;
			}
		}
	}
}

function showCursorHelp(e) {
	if (!e) var e = window.event;
	//this could show the popup
}

function showTrayleInfo(e) {

	if (!e) var e = window.event;
	var o = null;
	if (e.target) { 
		o = e.target;
	}else if (e.srcElement) {
		o = e.srcElement;
	}
	if (o.nodeType == 3) o = o.parentNode;
	
	//find the mothernode which has the initial onmouse event
	for(var i = 0; i < 10; i++) {
		if(o.nodeName == "SPAN" && o.className == "trayle") {
			break;
		}
		o = o.parentNode;
	}




	//mouse position
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}


	var to = getTrayleTagObject(o);

	var rh = "";
	if(to.recommendable != 0) 		rh += '<li><label>Recommendable</label>'+buildStarsReturn(to.recommendable*2)+'</li>';
	if(to.qualityofservice != 0) 	rh += '<li><label>Quality of service</label>'+buildStarsReturn(to.qualityofservice*2)+'</li>';
	if(to.atmosphere != 0) 			rh += '<li><label>Atmosphere</label>'+buildStarsReturn(to.atmosphere*2)+'</li>';
	if(to.looks != 0) 				rh += '<li><label>Looks</label>'+buildStarsReturn(to.looks*2)+'</li>';
	if(to.valueformoney != 0) 		rh += '<li><label>Value for money</label>'+buildStarsReturn(to.valueformoney*2)+'</li>';		
	if(to.pricelevel != 0) 			rh += '<li><label>Pricelevel</label>'+buildStarsReturn(to.pricelevel*2)+'</li>';
	

	if(rh.length != 0) {
		setHTML("tih_ratings", "<ul>"+rh+"</ul>");
	}else{
		document.getElementById("tih_ratings").innerHTML = "&nbsp;";
	}

	setInfoOrHide("tih_fnorg", to.fnorg);
	setInfoOrHide("tih_street_address", to.streetAddress);
	setInfoOrHide("tih_postal_code", to.postalCode);
	setInfoOrHide("tih_locality", to.countryCode + " " + to.locality);

	document.tih_locs.lat1.value = to.latitude;
	document.tih_locs.long1.value = to.longitude;

	var pop = document.getElementById('trayleinfohover');
	pop.style.display = "block";
	pop.style.left = (posx + 20) + "px";
	pop.style.top = posy + "px";


}

function setInfoOrHide(id, html) {
	if(html == '') {
		hide(id);
	}else{
		show(id);
		setHTML(id, html);
	}
}

function hideTrayleInfo(e) {
	if (!e) var e = window.event;
	var o = document.getElementById('trayleinfohover');
	if(o){ 
		o.style.display = 'none';
	}
}

