var editor
function init_map2() {
	editor = new QMap($('editor'));
	editor.setCenter(new QLatLng(53, -113), 8, Q_NORMAL_MAP);
	editor.enableEditing();
	editor.addControl(new GLargeMapControl());
	editor.addControl(new GMapTypeControl());
	editor.setCenter(new GLatLng(51.32031367286622,6.560039520263672), 13); 
	geocoder = new GClientGeocoder();
	//editor.loadXml("", false)
}

/*GEvent.addListener(map, "click", function(marker, point) {
  if (marker) {
    map.removeOverlay(marker);
  } else {
    map.addOverlay(new GMarker(point));
  }
});*/

function init_map2() {
	var map = new GMap2(document.getElementById("editor"));
	map.setCenter(new GLatLng(37.4419, -122.1419), 13);
	GEvent.addListener(map, "click", function(marker, point) {
	  var polyline = new GPolyline([new GLatLng(point)], "#ff0000", 10);
		map.addOverlay(polyline);
		//if (marker) {
	  //  map.removeOverlay(marker);
	  //} else {
	  //  map.addOverlay(new GMarker(point));
	  //}
	  //console.log(polyline);
	  //console.log(point);
	});
	
	var polyline = new GPolyline([
	  new GLatLng(37.4419, -122.1419),
	  new GLatLng(37.4519, -122.1519)
	], "#ff0000", 10);
	//map.addOverlay(polyline);
	
	
	
}

function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " nicht gefunden");
            } else {
              map.setCenter(point, 13);
              //var markera = new GMarker(point);
              //editor.addOverlay(markera);
              //markera.openInfoWindowHtml(address);
            }
          }
        );
      }
    }




function add_marker(){
	//map.addOverlay(new GMarker(map.getCenter()));
	var marker=new GMarker (map.getCenter(), {draggable:true, icon:smallIcon});
	map.addOverlay(marker);
	marker.enableDragging();
	GEvent.addListener(marker,"dragend", function () {dragMarker(this);});
	aWegMarker.push(marker);
}



/////////////////////////////////////
var map;
var smallIcon;
var aWegPunkte = new Array;
var aWegLienen = new Array;
var aWegMarker = new Array;
var editPoints = new Array;

var sEinheit='km';
var earthRadius=3959;


getDistance = function(p1, p2) {
	return Math.acos(Math.sin(p1.latRadians())*Math.sin(p2.latRadians()) + Math.cos(p1.latRadians())*Math.cos(p2.latRadians())*Math.cos(p2.lngRadians()-p1.lngRadians())) * earthRadius;
}

var distance=0.0;


calcDistance = function(){
	distance=0.0;
	for (var i=0; i<(aWegPunkte.length-1); i++){
		distance+=getDistance(aWegPunkte[i].getPoint(), aWegPunkte[i+1].getPoint());
	}
	distance = distance * 1.609;
	document.getElementById('totalDistance').innerHTML='Tour-L&auml;nge: '+distance.toFixed(2)+' '+sEinheit;
}

function distanceTo(j) {
	d=0.0;
	for (var i=0; i<j; i++) {
		d+=getDistance(aWegPunkte[i].getPoint(), aWegPunkte[i+1].getPoint());
	}
	return d;
}

function dragMarker(m) {
	if (m.waypointId>0){
		var prevLine=aWegLienen[m.waypointId-1];
		map.removeOverlay(prevLine);
		var newPrevLine=new GPolyline([aWegPunkte[m.waypointId-1].getPoint(),aWegPunkte[m.waypointId].getPoint()],  '#0000ff', 4);
		map.addOverlay(newPrevLine);
		aWegLienen[m.waypointId-1]=newPrevLine;
	}
	if (m.waypointId<(aWegPunkte.length-1)){
		var nextLine=aWegLienen[m.waypointId];
		map.removeOverlay(nextLine);
		var newNextLine=new GPolyline([aWegPunkte[m.waypointId].getPoint(),aWegPunkte[m.waypointId+1].getPoint()],  '#0000ff', 4);
		map.addOverlay(newNextLine);
		aWegLienen[m.waypointId]=newNextLine;
	}
	calcDistance();
}

function mapClick(marker, point) {
	if(point) {
		unsaved=true;
		var marker=new GMarker (point, {draggable:true, icon:smallIcon});
		marker.waypointId=aWegPunkte.length;
		map.addOverlay(marker);
		marker.enableDragging();

		GEvent.addListener(marker,"dragend", function () {dragMarker(this);});

		aWegPunkte.push(marker);
		if (aWegPunkte.length>1){
			var markerLine=new GPolyline([aWegPunkte[aWegPunkte.length-2].getPoint(),aWegPunkte[aWegPunkte.length-1].getPoint()],  '#0000ff', 4);
			map.addOverlay(markerLine);
			aWegLienen.push(markerLine);
			calcDistance();
		}
		//if (document.getElementById('autoPanTick').checked) {map.panTo(point);}
	}
}

function confirmExit() {
  if (unsaved) {
     return "Your route has not been saved, and will be lost if you leave this page";
  }
}

function init_map() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("editor"), {draggableCursor:'crosshair',draggingCursor:'hand'});
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl(),new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(100,0)))
		map.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(2,2)));
		//map.enableScrollWheelZoom();
		map.setCenter(new GLatLng(51.311730269032594,6.55059814453125),10); 
		smallIcon = new GIcon();
		smallIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		smallIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		smallIcon.iconSize = new GSize(12, 20);
		smallIcon.shadowSize = new GSize(22, 20);
		smallIcon.iconAnchor = new GPoint(6, 20);
		smallIcon.infoWindowAnchor = new GPoint(5, 1);
		GEvent.addListener(map, "click", mapClick);
		//window.onbeforeunload = confirmExit;
		geocoder = new GClientGeocoder();
	}
}

function rueckgangig(){
	if (aWegPunkte.length>1){
		var markerLine=aWegLienen.pop();
		map.removeOverlay(markerLine);
	}
	var marker=aWegPunkte.pop();
	map.removeOverlay(marker);
	calcDistance();
	return false;
}

function outAndBack(){
  var inRoutes=aWegPunkte.length-2;
  unsaved=true;
  for (var i=inRoutes; i>=0; i--) {
    var point=aWegPunkte[i].getPoint();
    var marker=new GMarker (point, {draggable:true, icon:smallIcon});
    marker.waypointId=aWegPunkte.length;
    map.addOverlay(marker);
    marker.enableDragging();

    GEvent.addListener(marker,"dragend", function () {dragMarker(this);});

    aWegPunkte.push(marker);
    if (aWegPunkte.length>1){
      var markerLine=new GPolyline([aWegPunkte[aWegPunkte.length-2].getPoint(),aWegPunkte[aWegPunkte.length-1].getPoint()],  '#0000ff', 4);
      map.addOverlay(markerLine);
      aWegLienen.push(markerLine);
      calcDistance();
    }
  }
  //if (document.getElementById('autoPanTick').checked) {map.panTo(point);}
	map.panTo(point);
  return false;
}


function saveRoute() {
  var routeData = "";
  var bFirstSet = 0;
	if (aWegPunkte.length == 0) {
		alert("Du hast noch keine Wegpunkte eingezeichnet.");
	} else {
		routeData =  '<?xml version="1.0"?>';
		routeData += '<data>';
		routeData += '<meta x="'+aWegPunkte[0].getPoint().lng()+'" y="'+aWegPunkte[0].getPoint().lat()+'" zoom="13" maptype="2"/>';
		routeData += '<overlays>';
		routeData += '<o type="draw" points="';
		for (var i=0; i<(aWegPunkte.length); i++){
			if (bFirstSet == 0) {
				routeData += '('+aWegPunkte[i].getPoint().lat()+','+aWegPunkte[i].getPoint().lng()+')';
				bFirstSet = 1;
			} else {
				routeData += ',('+aWegPunkte[i].getPoint().lat()+','+aWegPunkte[i].getPoint().lng()+')';
			}
		}
		routeData += '" colour="#003399" width="5"/>';
		routeData += '</overlays>';
		routeData += '</data>';
		//xajax_save_map(routeData,aWegPunkte[0].getPoint().lat(),aWegPunkte[0].getPoint().lng(),distance.toFixed(2));
		document.getElementById('routeData').value=routeData;
		document.getElementById('routeLat').value=aWegPunkte[0].getPoint().lat();
		document.getElementById('routeLng').value=aWegPunkte[0].getPoint().lng();
		document.getElementById('routeDistance').value=distance.toFixed(2);
		document.getElementById('routeForm').submit();
	}
}

function submit_form(){
	
	//alert(arguments.length);
	if (arguments.length > 2) { // 
		for(i = 2; i < arguments.length; i++){
			//document.getElementById("bimage_"+arguments[i]).src="http://{CORE.shortname}.images.liebt.de/avatar/tn"+arguments[i]+".jpg";
			document.getElementById(arguments[i]).value = get_ed_text(arguments[i]);
			alert(arguments[i]);
		}
	};
	//sForm,sCheckDataStoredIn,aFormEditors
	//if (aFormEditors.length > 0) {
	//	for(i = 0; i < aFormEditors.length; i++){
	//		//document.getElementById("bimage_"+arguments[i]).src="http://{CORE.shortname}.images.liebt.de/avatar/tn"+arguments[i]+".jpg";
	//		document.getElementById(arguments[i]).value = get_ed_text(arguments[i]);
	//	}
	//};
  //document.getElementById('p_startseitentext').value = get_ed_text("startseitentext");
	//xajax.$('submitButton').value="bitte warten ...";
	
	//console.log(xajax.getFormValues(arguments[0]));
	
	xajax_submit_form(xajax.getFormValues(arguments[0]),arguments[1]);
	return false;
}

//Change Log:
//* Updated: July 11th, 07: Fixed bug with persistence not working. Doh.
//* Updated: July 9th, 07: Added session only persistence to tabs (set "enabletabpersistence" var below). Only .js file changed.
//* Updated Nov 8th, 06. Ability to select a tab dynamically, by calling a method (ie: via a link). Only .js file changed.

var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var enabletabpersistence=1 //enable tab persistence via session only cookies, so selected tab is remembered (1=yes, 0=no)?

////NO NEED TO EDIT BELOW////////////////////////
var loadedobjects=""
var defaultcontentarray=new Object()
var bustcacheparameter=""

function ajaxpage(url, containerid, targetobj){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li")
for (var i=0; i<ullist.length; i++)
ullist[i].className=""  //deselect all tabs
targetobj.parentNode.className="selected"  //highlight currently clicked on tab
if (url.indexOf("#default")!=-1){ //if simply show default content within container (verus fetch it via ajax)
document.getElementById(containerid).innerHTML=defaultcontentarray[containerid]
return
}
document.getElementById(containerid).innerHTML=loadstatustext
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}

function loadobjs(revattribute){
if (revattribute!=null && revattribute!=""){ //if "rev" attribute is defined (load external .js or .css files)
var objectlist=revattribute.split(/\s*,\s*/) //split the files and store as array
for (var i=0; i<objectlist.length; i++){
var file=objectlist[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}
}

function expandtab(tabcontentid, tabnumber){ //interface for selecting a tab (plus expand corresponding content)
var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
if (thetab.getAttribute("rel")){
ajaxpage(thetab.getAttribute("href"), thetab.getAttribute("rel"), thetab)
loadobjs(thetab.getAttribute("rev"))
}
}

function savedefaultcontent(contentid){// save default ajax tab content
if (typeof defaultcontentarray[contentid]=="undefined") //if default content hasn't already been saved
defaultcontentarray[contentid]=document.getElementById(contentid).innerHTML
}

function startajaxtabs(){
for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
var ulobj=document.getElementById(arguments[i])
var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
var persisttabindex=(enabletabpersistence==1)? parseInt(getCookie(arguments[i])) : "" //get index of persisted tab (if applicable)
var isvalidpersist=(persisttabindex<ulist.length)? true : false //check if persisted tab index falls within range of defined tabs
for (var x=0; x<ulist.length; x++){ //loop through each LI element
var ulistlink=ulist[x].getElementsByTagName("a")[0]
ulistlink.index=x
if (ulistlink.getAttribute("rel")){
var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
ulistlink.setAttribute("href", modifiedurl) //replace URL's root domain with dynamic root domain, for ajax security sake
savedefaultcontent(ulistlink.getAttribute("rel")) //save default ajax tab content
ulistlink.onclick=function(){
ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this)
loadobjs(this.getAttribute("rev"))
saveselectedtabindex(this.parentNode.parentNode.id, this.index)
return false
}
if ((enabletabpersistence==1 && persisttabindex<ulist.length && x==persisttabindex) || (enabletabpersistence==0 && ulist[x].className=="selected")){
ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink) //auto load currenly selected tab content
loadobjs(ulistlink.getAttribute("rev")) //auto load any accompanying .js and .css files
}
}
}
}
}

////////////Persistence related functions//////////////////////////

function saveselectedtabindex(ulid, index){ //remember currently selected tab (based on order relative to other tabs)
if (enabletabpersistence==1) //if persistence feature turned on
setCookie(ulid, index)
}

function getCookie(Name){ 
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""
}

function setCookie(name, value){
document.cookie = name+"="+value //cookie value is domain wide (path=/)
}

function select_new_tab(targetobj,sLoadingId){
	document.getElementById(sLoadingId).style.display='block';
	if(sLoadingId!=' '){
		document.getElementById(sLoadingId).innerHTML=loadstatustext;
	};
	var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li");
	for(var i=0;i<ullist.length;i++){
		ullist[i].className="";
	}
	targetobj.parentNode.className="selected"
}


function toggle_profil(sDiv) {
	document.getElementById('profil_hunde').style.display='none';
	document.getElementById('profil_fotos').style.display='none';
	document.getElementById('profil_eigene_touren').style.display='none';
	document.getElementById('profil_gelaufene_touren').style.display='none';
	document.getElementById('profil_freunde').style.display='none';
	//document.getElementById('profil_gaestebuch').style.display='none';
	document.getElementById(sDiv).style.display='block';
}

function toggle_tour(sDiv) {
	if (document.getElementById('gelaufen_von')) {
		document.getElementById('gelaufen_von').style.display='none';
	};
	if (document.getElementById('div_verabreden')) {
		document.getElementById('div_verabreden').style.display='none';
	};
	if (document.getElementById('informationen_zu_dieser_tour')) {
		document.getElementById('informationen_zu_dieser_tour').style.display='none';
	};
	if (document.getElementById('einkehrm')) {
		document.getElementById('einkehrm').style.display='none';
	};
	if (document.getElementById('bewerten')) {
		document.getElementById('bewerten').style.display='none';
	};
	document.getElementById(sDiv).style.display='block';
}


function textCounter_obs(field, countfield, maxlimit) {
	entry = document.getElementById(field);
	counter = document.getElementById(countfield);
	if (entry.value.length > maxlimit) {// if too long...trim it!
		entry.value = entry.value.substring(0, maxlimit);
	} else {
		counter.value = maxlimit - entry.value.length + " Zeichen übrig";
	}
}


function textCounter(textSource, infodiv, limit) {
	var textarea = document.getElementById(textSource);
	var text = textarea.value;
	var textlength = text.length;
	var info = document.getElementById(infodiv);
	
	if(textlength > limit) {
		info.value = '0 Zeichen übrig';
		textarea.value = text.substr(0,limit);
		return false;
	} else {
		info.value = (limit - textlength) + ' Zeichen übrig';
		return true;
	}
}

function verabreden (iTourID) {
	var checkBoxes = document.getElementsByName("verabreden_ids[]");
	var sDels = "";
	for (i = 0; i < checkBoxes.length; i++) {
		//console.log(i);
		if (checkBoxes[i].checked == true) {
			if (sDels == "") {
				sDels = checkBoxes[i].value;
			} else {
				sDels = sDels + "!" + checkBoxes[i].value;
			}
		}
	}
	if (sDels != "") {
		//console.log(sDels);
		xajax_verabreden(iTourID,sDels)
	}
}

function toggle_admin(div) {
	layer = document.getElementById(div);
	if (layer.style.display == "none") {
		layer.style.display = "";
	} else {
		layer.style.display = "none";
	}
}

function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}

function selectall(obj) {
	var checkBoxes = document.getElementsByTagName("input");
	for (i = 0; i < checkBoxes.length; i++) {
		if (obj.checked == true) {
			checkBoxes[i].checked = true;
		} else {
			checkBoxes[i].checked = false;
		}
	}
}

