var userId = null;
var poiArray = new Array();
var poiInfoBalloon = null;
var geocoderClient = new IWSimpleGeocoderClient();
var appId = "hp";



//******Logout********//
function logoutSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	UgcClient.logout(logoutSuccess,systemError);	
	return false;
}
function logoutSuccess(data){
	userId = null;
	setMessageInfo(data.message);
	ugcMenu.setActive(false);
	clearAllForms();
	
	$("#tabLogin").html("Anmelden");
	for(var i=0;i<document.forms.length;i++){
		form = document.forms[i];
		if(form.elements["userId"] !=null){
			form.elements["userId"].value=null;
		}			
	}
	setContentAktiv('loginContent');
	$("#l_email").val("");
	$("#l_passwd").val("");
	showPrivatePOIs(true);
	if(ugcMarker != null){		
		ugcMarker.setVisible(false);
	}
}
//******Login********//

function loginSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	
	var param ={};
	param["email"]=$("#l_email").val();
	param["passwd"]=$("#l_passwd").val();	
	param["appId"]=appId;
	UgcClient.loginAndGetPoiList(param,loginSuccess,systemError);
	return false;
}

function loginSuccess(data){
	clearMessage();
	if(data.result == true){
		userId = data.userId;
		ugcMenu.setActive(true);		
		setMessageInfo(data.message);
		$("#tabLogin").html("Favoriten");
		$("#logout").removeClass("hidden");
		for(var i=0;i<document.forms.length;i++){
			form = document.forms[i];
			if(form.elements["userId"] !=null){
				form.elements["userId"].value=userId;
			}			
		}
		
		if(data.pois !=null){
			if(data.pois.length >0){
				showPoiList(data);
			}
			else{
				setContentAktiv('poiSaveContent');				
			}			
		}		
	}
	else{
		setMessageError(data.message);
	}
}
function systemError(jqXHR, textStatus, errorThrown){
	setMessageError("Systemfehler: "+textStatus+" "+errorThrown);
}
//******Create Account********//
function createAccountSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var param ={};
	param["email"]=$("#email").val();
	if($("#passwd").val() !=$("#passwdRep").val()){
		setMessageError("mar_mc-5");
		return false;
	}
	param["passwd"]=$("#passwd").val();		
	param["appId"]=appId;
	UgcClient.createUserAccount(param,createAccountSuccess,systemError);
	
	return false;
}

function createAccountSuccess(data){	
	clearMessage();
	if(data.result == true){
		userId = data.userId;	
		ugcMenu.setActive(true);
		setMessageInfo(data.message);
		setContentAktiv('poiSaveContent');
		$("#logout").removeClass("hidden");
	}
	else{
		setMessageError(data.message);
	}
}
function loginAndDeleteAccountSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var param ={};
	param["email"]=$("#deleteAccount_email").val();
	param["passwd"]=$("#deleteAccount_passwd").val();	
	param["appId"]=appId;
	UgcClient.loginAndDeleteAccount(param,loginAndDeleteAccountSuccess,systemError);
	return false;
}

function loginAndDeleteAccountSuccess(data){
	clearMessage();
	clearAllForms();
	userId = null;
	if(data.result == true){
		userId = null;
		ugcMenu.setActive(false);		
		setMessageInfo(data.message);
		$("#tabLogin").html("Anmelden");		
		for(var i=0;i<document.forms.length;i++){
			form = document.forms[i];
			if(form.elements["userId"] !=null){
				form.elements["userId"].value=userId;
			}						
		}
		setContentAktiv('loginContent');	
	}
	else{
		setMessageError(data.message);
	}
}
//******Request E-Mail****//

function requestMailSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var param ={};
	param["email"]=$("#erEmail").val();
	param["appId"]=appId;
	UgcClient.requestUsersPassword(param,requestMailSuccess,systemError);
	return false;
}
function requestMailSuccess(data){	
	clearMessage();
	if(data.result == true){			
		setMessageInfo(data.message);
		setContentAktiv('loginContent');
		$("#logout").removeClass("hidden");
	}
	else{
		setMessageError(data.message);
	}
}
//******Save POI ********//

function savePoiSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	$('#adressSearchResult p').remove();
	if($("#x").val().length==0 ||$("#y").val().length==0){
		//geocodieren
		var adress = new IWAddress();
		adress.setStreet($("#strasse").val());
		adress.setHouseNumber($("#hnr").val());
		adress.setZipCode($("#plz").val());
		adress.setCity($("#ort").val());
		adress.setCountryCode('D');
		geocoderClient.geocodeAddress(adress,true);
	}
	else{
		var params = {};
		params["name"]=$("#poiNameText").val();
		params["zip"]=$("#plz").val();
		params["city"]=$("#ort").val();
		params["street"]=$("#strasse").val();
		params["hnr"]=$("#hnr").val();
		params["descr"]=$("#beschreibungText").val();
		params["icon"]=$("#logoCombo").val();
		params["wgs_x"]=$("#x").val();
		params["wgs_y"]=$("#y").val();
		params["userId"]=$("#userId").val();
		params["poiId"]=$("#poiId").val();
		params["publish"]=$("#publish").val();
		params["appId"]=appId;
		
		UgcClient.savePoiAndGetPoiList(params,savePoiSuccess,systemError);
		
	}
	return false;
}

function savePoiSuccess(data){
	clearMessage();
	if(data.result == true){
		if(data.pois !=null){
			setContentAktiv('poiListContent');
			showPoiList(data);
			setMessageInfo(data.message);
		}
	}
	else{
		setMessageError(data.message);
	}
	
}

//******Create POI ********

function createPoiSend(coordX,coordY,create){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}	
	var params = {};
	params["x"]=coordX;
	params["y"]=coordY;
	params["appId"]=appId;
	jQuery_1_5_1.ajax({	
		type: 'GET',		
		crossDomain:true,			
		scriptCharset: "ISO-8859-1",
		dataType: "jsonp",
		url: appUrl+"/"+appName+"zvo.html",
		data:params,			
		success: function  (data, textStatus, jqXHR) {				
			createPoiSuccess(data, textStatus, jqXHR);  
		},		
		jsonpCallback: "ugcCallback"				
		//error:errorCallback			
		});		
		
	/*jQuery_1_5_1.post(appUrl+"/"+appName+"zvo.html", params,function(data){
		createPoiSuccess(data); 		  
		 }, "json");*/
	return false;
}

function createPoiSuccess(data,create){
	clearMessage();
	if(data!=null && data.error.length ==0){
		if(create == true){
			fillCreateForm("",data.address.zipcode,data.address.city,data.address.street,data.address.housenumber,data.address.x,data.address.y);
		}
		else{
			fillUpdateForm("",data.address.zipcode,data.address.city,data.address.street,data.address.housenumber,data.address.x,data.address.y);
		}
	}
	else{
		$("#message").removeClass("hidden");
		$("#message").addClass("visible");
		$("#message").html("Für diese Position wurde keine Adresse gefunden.");
	}
	
}

//******Attribute für  POI ********//

function getPoiAttributeSend(poiId){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var params = {};
	params["userId"]=$("#poiListForm #userId")[0].value;
	params["poiId"]=poiId;
	params["appId"]=appId;
	UgcClient.getPoiAttribute(params,getPoiAttributeSuccess,systemError);	
	return false;	
}

function getPoiAttributeSuccess(data){
	clearMessage();
	if(data.result == true){		
		
		setContentAktiv('poiSaveContent');
		form = document.forms['poiSaveForm'];
		
		
		form.elements["poiNameText"].value=data.name;
		form.elements["plz"].value=data.zip;
		form.elements["ort"].value=data.city;
		form.elements["strasse"].value=data.street;	
		form.elements["hnr"].value=data.hnr;
		form.elements["beschreibungText"].value=data.descr;
		form.elements["publish"].value=data.publish;
		
			
		var cb = form.elements["logoCombo"];
		for (i=0;i<cb.options.length;i++){
			if (data.icon == cb.options[i].text){
				cb.options[i].selected=true;
				$(cb).change();
			}
		}
		
		form.elements["x"].value=data.wgs_x;
		form.elements["y"].value=data.wgs_y;
		form.elements["userId"].value=data.userId;
		form.elements["poiId"].value=data.poiId;
		var coordinate = new IWCoordinate(data.wgs_x,data.wgs_y,IWCoordinate.WGS84).toMercator();
		setUGCMarker(coordinate);
		map.panTo(coordinate);
	}
	else{
		setMessageError(data.message);
		if(data.error ==2){
			logoutSend();
		}
	}
}

//******get POI List ********//

function poiListSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var params = {};
	
	var publish ="";
	var unpublish ="";	
	
	$.each($('.cb_publish'), function(index, value) {
		var entry = $(this);	
		var id = entry[0].id.substring(3);
		if(entry[0].checked){
			publish = publish.length>0?publish+";"+id:id;
		}
		else{
			unpublish = unpublish.length>0?unpublish+";"+id:id;
		}	
    });
	params["userId"]=$("#poiListForm #userId")[0].value;
	params["publish"]=publish;
	params["unpublish"]=unpublish;
	params["appId"]=appId;
	UgcClient.publishPoiList(params,showPoiList,systemError);
	
	return false;
}
 function UGCMarker(map, coordinate) { 
               
	IWOverlay.call(this, map, coordinate);  
	var container = this.getContainer(); 		                   
	var img = document.createElement('img');  
	container.appendChild(img);  
	var toolTipDiv =  $('<div id="ugc_tt_div">');                   
	img.ondrag = function() { return false; }; 
	img.ttdiv = toolTipDiv;
	img.onmouseup = function(e) {
		if (!e){			
			e = window.event;
		}		
		var tt = $(this.ttdiv);
		tt.ugcTooltip('show');
	};
	img.src = 'http://iw.mapandroute.de/MapAPI-1.0/examples/tutorial/img/pin.gif'; 
	
	$(container).append($(toolTipDiv).ugcTooltip({  
		  top : img.height
	}));	       
	this.setHotspot(new IWPoint(4, 33));  
	this.setDraggable(true);                  
}
 
 function setAllFormsHidden(){
	 $('#loginContent').addClass("hidden");
	 $('#createAccountContent').addClass("hidden");
	 $('#emailRequestContent').addClass("hidden");
	 $('#poiListContent').addClass("hidden");
	 $('#poiSaveContent').addClass("hidden");
	 $('#deleteAccountContent').addClass("hidden");
 }
 function setContentAktiv(content){
	 setAllFormsHidden();
	 $('#'+content+'').removeClass("hidden");
	 $('input[name=userId]').val(userId);
 }
function showPoiList(data){
	
	var tab ="";
	if(ugcMarker != null){
		$('#ugc_tt_div').ugcTooltip('hide');
		ugcMarker.setVisible(false);		
	} 
	if(data.message.length >0){
		if(data.result == true  ){
			setMessageInfo(data.message);
		}
		else{
			setMessageError(data.message);
			return false;
		}
	}
	if(data.pois !=undefined){
	poiArray_tmp=[];
	for(var i =0;i< data.pois.length;i++){
		var poi = data.pois[i];		
		tab +="<tr><td><a href='#' style='text-decoration:underline;' onclick='getPoiAttributeSend("+poi.poiId+")'>"+poi.name+"</a></td><td><img src='http://maps.mapandroute.de/MapCms/images/poi/"+poi.icon+"'style='padding-left: 10px'/></td><td><input type='checkbox' id='cb_"+poi.poiId+"' class = 'cb_publish' title='poiPublish' ";
		if(poi.publish == true){
			tab +=" checked /></td>";
		}
		else{
			tab +=" /></td>";
		}
		var coordinate = new IWCoordinate(poi.wgs_x,poi.wgs_y,IWCoordinate.WGS84).toMercator();
		
		poiMarker = new PoiMarker(map, coordinate);
		poiArray_tmp[i]=poiMarker;
			
		poiMarker.setId(poi.poiId);
		poiMarker.setPoiName(poi.name);
		poiMarker.setPlz(poi.zip);
		poiMarker.setOrt(poi.city);
		poiMarker.setStrasse(poi.street);
		poiMarker.setHnr(poi.hnr);
		poiMarker.setBeschreibung(poi.descr);
			
		icon = new IWIcon('http://maps.mapandroute.de/MapCms/images/poi/'+poi.icon, new IWPoint(10, 31));
		poiMarker.setDefaultIcon(icon ) ;
		map.getOverlayManager().getLayer(0).addOverlay(poiMarker);
		}
	
	
	for(var i=0;i<poiArray.length;i++){
		map.getOverlayManager().getLayer(0).removeOverlay(poiArray[i]);
	}
	poiArray = poiArray_tmp;
	poiArray_tmp =[];
	setContentAktiv('poiListContent');
	$('#poiListForm table').find("tr:gt(0)").remove();
	$('#poiListForm table').find("tbody:gt(0)").remove();
	$('#poiListForm table').html($('#poiListForm table').html()+tab);
	$('.cb_publish').ugcFormTooltip();
	}
}
function returnToPoiList(){
	if(ugcMarker != null){
		ugcMarker.setVisible(false);
		$('#ugc_tt_div').ugcTooltip('hide');
	} 
	clearMessage();
	setContentAktiv('poiListContent');	
}

//******delete POI  ********//

function deletePoiSend(){
	try{
		UgcClient;
	}
	catch(exception){
		setMessageError(messagesCodeArray["mar_mc-6"]);
		return false;
	}
	var params = {};	
	params["userId"]=$("#poiSaveForm input[name=userId]").val();
	params["pois"]	=$("#poiSaveForm input[name=poiId]").val();
	params["appId"]=appId;
	
	UgcClient.deletePoisAndGetPoiList(params,deletePoiSuccess,systemError);
	
	return false;
}
	function deletePoiSuccess(data){
		clearMessage();
		if(data.result == false){
			setMessageError(data.message);
		}
		else{
			if(data.pois !=null){
				setMessageInfo(data.message);
				clearCreateForm();
				showPoiList(data);				
			}
		}
	}
	function clearAllForms(){
		$("#tabPanesLogin input[type=text]").val("");
		$('#poiListForm table').find("tr:gt(0)").remove();
		$('#poiListForm table').find("tbody:gt(0)").remove();
	}
	function clearCreateForm(){
		clearCreateFormAttribute();
		if(ugcMarker != null){
			ugcMarker.setVisible(false);
		}
		return false;
	}
	function clearCreateFormAttribute(){
		setContentAktiv('poiSaveContent');
		form = document.forms['poiSaveForm'];	
		form.elements["poiNameText"].value="";
		form.elements["plz"].value="";
		form.elements["ort"].value="";
		form.elements["strasse"].value="";	
		form.elements["hnr"].value="";
		form.elements["beschreibungText"].value="";	
		form.elements["publish"].value="";	
			
		var cb = form.elements["logoCombo"];
		cb.options[0].selected=true;	
		$(cb).change();

		form.elements["x"].value="";
		form.elements["y"].value="";
		
		form.elements["poiId"].value="";
		
		return false;
	}
	function fillUpdateForm(name,plz,ort,strasse,hnr,x,y,logo){
		
		setContentAktiv('poiSaveContent');
		form = document.forms['poiSaveForm'];		
		if(name.length >0){
			form.elements["poiNameText"].value=name;
		}
		form.elements["plz"].value=plz;
		form.elements["ort"].value=ort;
		form.elements["strasse"].value=strasse;	
		form.elements["hnr"].value=hnr;	
		
		var cb = form.elements["logoCombo"];
		for (i=0;i<cb.options.length;i++){
			if (logo == cb.options[i].text){
				cb.options[i].selected=true;
				$(cb).change();
			}
		}
		
		var coordWGS = new IWCoordinate(x,y,IWCoordinate.MERCATOR).toWGS84();
		form.elements["x"].value=coordWGS.getX().toFixed(8);
		form.elements["y"].value=coordWGS.getY().toFixed(8);
		if(ugcMarker != null ){
			ugcMarker.setVisible(true);
			var coordinate = new IWCoordinate(x,y);
			markerCoordinate = ugcMarker.getCoordinate();
			if(coordinate.getX()!=ugcMarker.getCoordinate().getX() ||coordinate.getY()!=ugcMarker.getCoordinate().getY() ){
				ugcMarker.setCoordinate(coordinate) ;
				ugcMarker.redraw(); 
			}
		}
		
		
		return false;
	}

	function fillCreateForm(name,plz,ort,strasse,hnr,x,y){
		clearCreateFormAttribute();
		fillUpdateForm(name,plz,ort,strasse,hnr,x,y);
		
		
		return false;
	}

	function PoiMarker(map, coordinate)
	{		
		IWMarker.call(this, map, coordinate);
		
		var id ="";
		var poiName="";
		var plz="";
		var ort="";
		var strasse="";
		var hnr="";
		var beschreibung="";
		var coord = coordinate;
		
		this.setId = function(poiId){
			id=poiId;
		};
		this.getId = function(){
			return id;
		};
		
		this.setPoiName = function(poi){
			poiName=poi;
		};
		this.getPoiName = function(){
			return poiName;
		};
		
		this.setPlz = function(poi){
			plz=poi;
		};
		this.getPlz = function(){
			return plz;
		};
		
		this.setOrt = function(poi){
			ort=poi;
		};
		this.getOrt = function(){
			return ort;
		};
		
		this.setStrasse = function(poi){
			strasse=poi;
		};
		this.getStrasse = function(){
			return strasse;
		};
		this.setHnr = function(poi){
			hnr=poi;
		};
		this.getHnr = function(){
			return hnr;
		};
		this.setBeschreibung = function(poi){
			beschreibung=poi;
		};
		this.getBeschreibung = function(){
			return beschreibung;
		};
		
		
		IWEventManager.addListener(this, 'onclick', function(e)  {
			if (poiInfoBalloon != null) {
	            map.removeWindowOverlay(poiInfoBalloon);
	            poiInfoBalloon.destroy();
	            poiInfoBalloon = null;
	        }
	        var div = document.createElement('div');
	        div.style.position = 'relative';  

	        var boldName = createTextParagraph(poiName.replace(/\u0020/g, '&nbsp;'));
	        boldName.style.fontWeight = 'bold';
	        boldName.style.color ='black';
	        div.appendChild(boldName);
	        var strHnr ="";
	        if(strasse != undefined && strasse.length >0){
	        	strHnr+=strasse;
	        }
	        if(hnr != undefined && hnr.length >0){
	        	strHnr+='&nbsp;' + hnr;
	        }
	        div.appendChild(createTextParagraph(strHnr));
	        
	        var plzOrt="";	        
	        if(plz!= undefined && plz.length >0){
	        	plzOrt+=plz;
	        }
	        if(ort!= undefined && ort.length >0){
	        	plzOrt+=ort; 
	        }	        
	        div.appendChild(createTextParagraph(plzOrt));	       
	        
	        poiInfoBalloon = new InfoBalloon(map, coord, div);            
		    map.addWindowOverlay(poiInfoBalloon);
		 });
		IWEventManager.addListener(this, 'onmouseover', function(e) {
			stopProp();
			if(beschreibung.length >0){
				Tip(beschreibung ,FOLLOWMOUSE, false, DURATION, 5000, DELAY, 100,CLICKCLOSE,true,BGCOLOR,'#4A8CC6',FONTCOLOR,'white',TITLE,poiName,BORDERCOLOR,'#623A6F');
			}
			else{
				Tip(poiName ,FOLLOWMOUSE, false, DURATION, 5000, DELAY, 100,CLICKCLOSE,true,BGCOLOR,'#4A8CC6',FONTCOLOR,'white',BORDERCOLOR,'#623A6F');
			}
		});
		IWEventManager.addListener(this, 'onmouseout', function(e) {
			UnTip();
		});
		stopProp = function(e) {
			if (e && e.stopPropogation)
			  e.stopPropogation();
			else if (window.event && window.event.cancelBubble)
			  window.event.cancelBubble = true;
			};
			 
			
	}
	function showPrivatePOIs(checked){
		for(var i=0;i<poiArray.length;i++){
			poiArray[i].setVisible(checked);
		}
	}
	
	function setMessageInfo(message){
		message = message.replace(/POI/g, "Favoriten");
		$("#message").removeClass("hidden");
		$("#message").addClass("visible");
		if(messagesCodeArray[message]!=null && messagesCodeArray[message].length >0){
			$("#message").html(messagesCodeArray[message]);
		}
		else{
			$("#message").html(message);
		}
		$("#message").addClass("messageInfo");	
		$("#message").removeClass("messageError");
	}
	function setMessageError(message){
		message = message.replace(/POI/g, "Favoriten");
		$("#message").removeClass("hidden");
		$("#message").addClass("visible");
		if(messagesCodeArray[message]!=null && messagesCodeArray[message].length >0){
			$("#message").html(messagesCodeArray[message]);
		}
		else{
			$("#message").html(message);
		}
		
		$("#message").addClass("messageError");	
		$("#message").removeClass("messageInfo");
	}
	function clearMessage(){
		$("#message").removeClass("messageError");	
		$("#message").removeClass("messageInfo");
		$("#message").html("");
	}
	var onGeocodeListener = IWEventManager.addListener(geocoderClient, 'ongeocode', function(event) {
		geocoderClient.setUrl(geocoderUrl + 'gc_simple/Simple.jsp?');
		var results = event.results;
		
		if (results.length == 0) {			
			setMessageError('Die gesuchte Adresse wurde nicht gefunden! Ändern Sie die Eingabe und versuchen Sie noch ein Mal.');
			geocodingComplet = true;
			return;
		} 
		else {			
			results.reverse();
				
			$('#adressSearchResult p').remove();
				for ( var i = 0; i < results.length; i++) {

				var text = formatAddressString(results[i].getAddress());
				var value = results[i].getAddress().getWGS84().getX() + ',' + results[i].getAddress().getWGS84().getY();
				
				if (results.length == 1) {
					adress = results[i].getAddress();
					showAddress(value,text);
					var coord = parseCoordinate(value);
					fillUpdateForm('',adress.getZipCode(),adress.getCity(),adress.getStreet(),adress.getHouseNumber(),coord.getX(),coord.getY(),'');
					savePoiSend();
				}
				else{
					
					var link = document.createElement('a');
					link.href = "#";
					link.className = "underlink";
					link.result = value;
					link.addText = text;
					link.adress = results[i].getAddress();
					link.onclick = function() {	
						var v = this.result;
						var t = this.addText;
						selectedAdress =this.adress;						
						showAddress(v,t);
						var coord = parseCoordinate(v);
						fillUpdateForm('',this.adress.getZipCode(),this.adress.getCity(),this.adress.getStreet(),this.adress.getHouseNumber(),coord.getX(),coord.getY(),'');
					};
					link.innerHTML = text + '</br>';
					$('<p>').append(link).appendTo($('#adressSearchResult') );
				
				}
			}
	}	
	geocodingComplet = true;
	});
	
	function showAddress(value,text) {		

		var coordinate = parseCoordinate(value);
		var event = new IWAddressSearchEvent();
		
		if (coordinate && coordinate!=null){
			setUGCMarker(coordinate);
			map.panTo(coordinate);
		}		
		
	}
	function setUGCMarker(coordinate){
		
		if(ugcMarker == null){		
			ugcMarker = new UGCMarker(map, coordinate);
			map.getOverlayManager().getLayer(125).addOverlay(ugcMarker); 		
		}
		else{
			ugcMarker.setVisible(true);
			ugcMarker.setCoordinate(coordinate) ;
			ugcMarker.redraw();		
		}
		
	}
	
	function parseCoordinate(stringCoordinate) {
		var coord = null;
		
		try {
			var chunks = stringCoordinate.split(',');
			var x = parseFloat(chunks[0]);
			var y = parseFloat(chunks[1]);
			coord = new IWCoordinate(x, y, IWCoordinate.WGS84).toMercator();
			
		} catch (e) {
			throw 'Cant parse coordinate string: ' + stringCoordinate;
		}
		return coord;
	}
	function formatAddressString(address) {
		var s = '';

		if (address.getStreet() != null) {
			s = s.concat(address.getStreet());

			if (address.getHouseNumber() != null) {
				s = s.concat(' ');
				s = s.concat(address.getHouseNumber());
			}
		}
		if (address.getZipCode() != null) {
			if (s.length > 0) {
				s = s.concat(' ');
			}
			s = s.concat(address.getZipCode()).concat(' ');
		}
		if (address.getCity() != null) {
			s = s.concat(address.getCity());
		}
		if (address.getPart() != null) {
			var part = ' / ' + address.getPart();
			s = s.concat(part);
		}
		if (address.getDistrict() != null && address.getDistrict() != address.getCity()) {

			var district = ' ( Bez.: ' + address.getDistrict() + ') ';
			s = s.concat(district);

		}
		return s;
	}
	var messagesCodeArray =  new Array();
	messagesCodeArray["mar_mc-5"]="Die eingegebenen Passworte sind nicht gleich.";
	messagesCodeArray["mar_mc-6"]="Der Dienst steht z.Zeit nicht zur Verfühgung.";
	messagesCodeArray["mc-1"]="Bitte melden Sie sich noch mal an.";
	messagesCodeArray["mc-5"]="Die Anmeldung ist fehlgeschlagen. Falsche Application definiert.";
	messagesCodeArray["mc-10"]="Die Anmeldung ist fehlgeschlagen. E-Mail oder Passwort ist nicht definiert.";
	messagesCodeArray["mc-15"]="Ihre E-Mail Adresse ist falsch oder Sie haben noch kein Konto.";
	messagesCodeArray["mc-20"]="Ihr Passwort ist falsch.";
	messagesCodeArray["mc-25"]="Benutzer mit eingegebenen E-mail und ApplicationID existiert bereits.";
	messagesCodeArray["mc-35"]="UserID ist leer oder nicht numerisch.";
	messagesCodeArray["mc-40"]="User mit eingegebener E-Mail ist nicht registriert.";
	messagesCodeArray["mc-45"]="Sie haben mehr als 3-Mal falsche Anmeldedaten eingegeben. Ihre Anmeldung wird für 1 min. gesperrt.";
	messagesCodeArray["mc-46"]="Falsche E-mail Adresse eingegeben.";
	messagesCodeArray["mc-50"]="Benutzer mit eingegebenen userID ist nicht angemeldet.";
	messagesCodeArray["mc-55"]="Koordinate wgs_x ist in falschem Format übergeben oder ist leer.";
	messagesCodeArray["mc-60"]="Koordinate wgs_y ist in falschem Format übergeben oder ist leer.";
	messagesCodeArray["mc-65"]="POI ID ist leer oder ist nicht numerisch.";
	messagesCodeArray["mc-70"]="CallbackFunktion ist nicht definiert.";
	messagesCodeArray["mc-75"]="POI mit eingegebenen ID existiert nicht.";
	messagesCodeArray["mc-80"]="Status \"Öffentlich\" für POIs wurde nicht geändert. POIs wurden nicht publiziert.";
	messagesCodeArray["mc-85"]="Passwort darf aus max. 100 Zeichen bestehen.";
	messagesCodeArray["mc-90"]="POI Name ist nicht definiert.";
	messagesCodeArray["mc-95"]="POI Name darf aus max. 100 Zeichen bestehen.";
	messagesCodeArray["mc-100"]="POI Beschreibung darf aus max. 1000 Zeichen bestehen.";
	
	messagesCodeArray["mc-1000"]="Konto wurde erfolgreich erstellt.";
	messagesCodeArray["mc-1002"]="Sie sind erfolgreich angemeldet.";
	messagesCodeArray["mc-1005"]="Sie sind erfolgreich abgemeldet.";
	messagesCodeArray["mc-1006"]="Ihr Konto ist erfolgreich gelöscht.";
	messagesCodeArray["mc-1010"]="POI wurde erfolgreich gespeichert.";
	messagesCodeArray["mc-1015"]="Die Anmeldedaten wurde an die eingegebene E-Mail Adresse gesendet.";
	messagesCodeArray["mc-1020"]="POI wurde erfolgreich gelöscht.";
	messagesCodeArray["mc-1025"]="POI Attributes wurde erfolgreich ermittelt.";
	messagesCodeArray["mc-1030"]="POI List wurde erfolgreich ermittelt.";
	messagesCodeArray["mc-1035"]="Icons wurde erfolgreich ermittelt.";
	messagesCodeArray["mc-1040"]="POIs wurde erfolgreich publiziert.";
	
	
	messagesCodeArray["mc-2000"]="System Error. Ihre Konto kann nicht erstellt werden.";
	messagesCodeArray["mc-2005"]="System Error. POIs werden nicht publiziert.";
	messagesCodeArray["mc-2010"]="System Error. POI kann nicht gelöscht werden.";
	messagesCodeArray["mc-2015"]="System Error. E-Mail kann nicht gesendet werden.";
	messagesCodeArray["mc-2020"]="System Error. POI kann nicht gespeichert werden.";
	messagesCodeArray["mc-2025"]="System Error. POI kann nicht ermittelt werden.";
	messagesCodeArray["mc-2030"]="System Error. POI List nicht ermittelt werden.";

