// alert function �berschreiben, damit man feststellen kann, ob das Formular eine Fehlermeldung ausgegeben hat.
// In diesem Fall, soll das Mailformular nicht abgeschickt werden.
var alrt = false;
alert = function(w) {
	return function(s) {
			alrt = true;
			w.call(this, s);
	}
}(alert);

function tx_amspathfinder_pi1_loadMap() {
	if(GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById('map'+cUid));
		map.setMapType(mapType);
		lat = $.cookie('tx_amspathfinder_pi1_lat');
		lng = $.cookie('tx_amspathfinder_pi1_lng');
		zom = $.cookie('tx_amspathfinder_pi1_zoom');
		$("#position-save").css('display', 'block');
		$("#position-delete").css('display', 'none');
		if(lat && lng && zom) {
			latitude = lat * 1;
			longitude = lng * 1;
			zoom = zom * 1;
			stopFly = true;
			$("#position-save").css('display', 'none');
			$("#position-delete").css('display', 'block');
		}
		map.setCenter(new GLatLng(latitude, longitude), zoom);
		center = map.getCenter();
		zoom = map.getZoom();
		$('#latitude'+cUid).html(center.lat());
		$('#longitude'+cUid).html(center.lng());
		$('#height'+cUid).html(tx_amspathfinder_pi1_getHeight());
		GEvent.addListener(map, 'move', function(overlay, point) {
			center = map.getCenter();
			$('#latitude'+cUid).html(center.lat());
			$('#longitude'+cUid).html(center.lng());
			$('#height'+cUid).html(tx_amspathfinder_pi1_getHeight());
		});
		geocoder = new GClientGeocoder();
		tx_amspathfinder_pi1_startFly();
	}
}
function tx_amspathfinder_pi1_showAddress() {
	if(geocoder) {
		geocoder.getLatLng(
		$('#address'+cUidSearch).val(),
			function(point) {
				if(!point) {
					center = map.getCenter();
					$('#latitude'+cUid).html(center.lat());
					$('#longitude'+cUid).html(center.lng());
					$('#height'+cUid).html(tx_amspathfinder_pi1_getHeight());
					openAlert();
					$("#messagecontent").html(coundNotFindAddress);
					bringToFront('#message-data','.ui-draggable');
				}
				else {
					map.clearOverlays();
					map.setCenter(point, findZoom);
					marker = new GMarker(point);
					$('#latitude'+cUid).html(point.lat());
					$('#longitude'+cUid).html(point.lng());
					$('#height'+cUid).html(tx_amspathfinder_pi1_getHeight());
					map.addOverlay(marker);
					stopFly = true;
				}
			}
		);
	}
}
function tx_amspathfinder_pi1_fly() {
	if(stopFly == false) {
		center = map.getCenter();
		speedFactor = Math.pow((map.getZoom() + 1), 7);
		map.panTo(new GLatLng(center.lat()+(flightSpeed / speedFactor), center.lng()+(flightSpeed / speedFactor)));
	}
}
function tx_amspathfinder_pi1_getHeight() {
	switch (map.getZoom()) {
		case 0:
			return '26214400 m';
		break;
		case 1:
			return '13107200 m';
		break;
		case 2:
			return '6553600 m';
		break;
		case 3:
			return '3276800 m';
		break;
		case 4:
			return '1638400 m';
		break;
		case 5:
			return '819200 m';
		break;
		case 6:
			return '409600 m';
		break;
		case 7:
			return '204800 m';
		break;
		case 8:
			return '102400 m';
		break;
		case 9:
			return '51200 m';
		break;
		case 10:
			return '25600 m';
		break;
		case 11:
			return '12800 m';
		break;
		case 12:
			return '6400 m';
		break;
		case 13:
			return '3200 m';
		break;
		case 14:
			return '1600 m';
		break;
		case 15:
			return '800 m';
		break;
		case 16:
			return '400 m';
		break;
		case 17:
			return '200 m';
		break;
		case 18:
			return '100 m';
		break;
		case 19:
			return '50 m';
		break;
		case 20:
			return '25 m';
		break;
	}
}
function tx_amspathfinder_pi1_savePosition() {
	center = map.getCenter();
	$.cookie('tx_amspathfinder_pi1_lat', center.lat(), { expires: 356 });
	$.cookie('tx_amspathfinder_pi1_lng', center.lng(), { expires: 356 });
	$.cookie('tx_amspathfinder_pi1_zoom', map.getZoom(), { expires: 356 });
	stopFly = true;
	$("#position-save").css('display', 'none');
	$("#position-delete").css('display', 'block');
	openAlert();
	$("#messagecontent").html(savePosition);
	bringToFront('#message-data','.ui-draggable');
}
function tx_amspathfinder_pi1_deletePosition() {
	$.cookie('tx_amspathfinder_pi1_lat', null);
	$.cookie('tx_amspathfinder_pi1_lng', null);
	$.cookie('tx_amspathfinder_pi1_zoom', null);
	stopFly = false;
	$("#position-save").css('display', 'block');
	$("#position-delete").css('display', 'none');
	openAlert();
	$("#messagecontent").html(deletePosition);
	bringToFront('#message-data','.ui-draggable');
}
if(window.attachEvent) {
	window.attachEvent('onload', function() {tx_amspathfinder_pi1_loadMap();});
	window.attachEvent('onunload', function() {GUnload();});
}
else {
	window.addEventListener('load', function() {tx_amspathfinder_pi1_loadMap();}, false);
	window.addEventListener('onunload', function() {GUnload();}, false);
}
function tx_amspathfinder_pi1_startFly() {
	window.setInterval("tx_amspathfinder_pi1_fly()", startFlight);
}
function tx_amsfeuser_pi1_afterLogin() {
	loaded = new Object();
	$('.cb .origurl').each(function () {
		link = $(this).text();
		if (typeof link == 'string' && !loaded[link]) {
			getBoxen(link);
			loaded[link] = true;
		}
	});
	$("#metanavi-box").find('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
}
function tx_amsfeuser_pi1_afterLogout() {
	loaded = new Object();
	$('.cb .origurl').each(function () {
		link = $(this).text();
		if (typeof link == 'string' && !loaded[link]) {
			getBoxen(link);
			loaded[link] = true;
		}
});
//  $('.cb').each(function () {
//     pid = $(this).attr('pid');
//     if (typeof pid == 'string' && !loaded[pid]) {
//       getBoxen("index.php?type=98&id="+pid);
//       loaded[pid] = true;
//     }
//  });
	$("#metanavi-box").find('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
}
function objectSize(obj) {
		var i, v;
		var count = 0;
		//var props = [];
		if (typeof(obj) === 'object') {
			for (i in obj) {
				v = obj[i];
				if (v !== undefined && v !== null && typeof(v) !== 'function') {
//          props[count] = i;
					count++;
				}
			}
		}
		return count;
}
function deleteOldestEntry(obj) {
	var minTime = 0;
	var minId = '';
	var v, i;
	for (i in obj) {
		v = obj[i];
		if (i.indexOf('cb') === 0 && (minTime == 0 || v.t < minTime)) {
			minTime = v.t;
			minId = i;
		}
	}
	if (minTime > 0 && minId != "") {
		delete obj[minId];
	}
	return obj;
}
function deleteOldEntries(obj, keep) {
	var size = objectSize(obj);
	if (size > keep) {
		while (objectSize(obj) > keep) {
			obj = deleteOldestEntry(obj);
		}
	}
	return obj;
}
function saveCookieCurrentPosition(elemObj) {
	var maxItems = 15;
	var tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
	}
	else {
		cookieObj = new Object();
	}
	jetzt = new Date().getTime();

	cookieObj[elemObj.id] = $.extend(
								cookieObj[elemObj.id],
								{ id: elemObj.id ,
									x: $(elemObj).css('left'),
									y: $(elemObj).css('top'),
									z: $(elemObj).css('z-index'),
									t: jetzt
								}
								);
	cookieObj = deleteOldEntries(cookieObj, maxItems);
	jQuery.cookie('ajpositions',JSON.stringify(cookieObj));

	//metanavi beim ersten verschieben vom unteren rand abdocken
	if (elemObj.id == 'metanavi-box' || elemObj.id == 'music-box') {
		$(elemObj).css('bottom','inherit');
		//$(elemObj).css('right','inherit');
	}
}

function restoreCookiePosition(elemObj) {
	tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
		if (cookieObj[elemObj.id]) {
			$(elemObj).css('left', cookieObj[elemObj.id].x);
			$(elemObj).css('top', cookieObj[elemObj.id].y);
			$(elemObj).css('z-index', cookieObj[elemObj.id].z);
			if (elemObj.id == 'metanavi-box' || elemObj.id == 'music-box') {
				$(elemObj).css('bottom','inherit');
				//$(elemObj).css('right','inherit');
			}
		}
	}
}

function deleteCookiePosition(elemObj) {
	tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
		if (cookieObj[elemObj.id]) {
			cookieObj[elemObj.id] = null;
			jQuery.cookie('ajpositions',JSON.stringify(cookieObj));
		}
	}
}

function deleteAllCookiePositions() {
	jQuery.cookie('ajpositions',JSON.stringify(new Object()));
}

function init() {
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});

	$('#zoom-in').click( function () {
		map.zoomIn();
	});
	$('#zoom-out').click( function () {
		map.zoomOut();
	});
	$('#mainnavi-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#imagepopup').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#metanavi-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#music-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#metanavi-box .tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
	$(".cb").draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag, .h, .f, .move", stack: { group: '.cb', min: 50 }, stop: function() {saveCookieCurrentPosition(this)} });
	$(".ui-draggable").each( function() {
		restoreCookiePosition(this);
	});
	$('.ui-draggable').click( function () {
		bringToFront(this,'.ui-draggable');
	});
	$('.close').click(function() {
		$(this).parent().remove();
	});
	$('.closeMessageImage').click(function() {
		$(this).parent().css('display', 'none');
	});
	$('.minimize').click(function() {
		$(this).parent().toggleClass("min");
	});
	$('#reset-layout').click(function() {
		resetLayout();
	});
	$(this).find('.jqueryform form').submit(function() {
		sendForm(this);
		return false;
	});
	$('#jqueryform').bind('submit', function() {
	//$('#jqueryform').submit(function(event) {
		sendForm(this);
		return false;
	});
	$('#message-data').jqm();
};

$(document).ready(init);

function resetLayout() {
	//alle contentboxen schließen
	$('.cb').remove();
	//positionscookie löschen
	deleteAllCookiePositions();
	//positionen zurücksetzen
	$('#mainnavi-box').css('left',leftPosMainNavi);
	$('#mainnavi-box').css('top',topPosMainNavi);
	$('#metanavi-box').css('left','inherit');
	$('#metanavi-box').css('top','inherit');
	$('#metanavi-box').css('bottom',bottomPosMetaNavi);
	$('#metanavi-box').css('right',rightPosMetaNavi);
	$('#music-box').css('top','inherit');
	$('#music-box').css('left',leftPosMusicBox);
	$('#music-box').css('bottom',bottomPosMusicBox);
	// Funktionsarray leeren
	jsFunc = new Array();
}

var zmax = 0;
function bringToFront(item, selector) {
	//den max-wert aller boxen finden, die per selector definiert sind
	$( selector ).each(function() {
		var cur =  $( this ).css( 'zIndex');
		zmax = cur > zmax ? cur : zmax;
	});
	//die eigentliche box nach oben setzen, wenn sie nicht oben ist
	$( item ).css( 'zIndex', ++zmax );
	//das mainmenu und das metamenu immer nach ganz oben holen
	$('#mainnavi-box, #metanavi-box, #music-box, .find, .height, .latitude, .longitude').css( 'zIndex', zmax );
}

function showBoxen(htmlresponse, origin) {
	// Funktionsarray leeren
	jsFunc = new Array();

	//content boxen im ajax rückgabewert in versteckten container laden
	$('#content-hidden').append(htmlresponse);
	$('#content-hidden .cb').each(function () { //alle nachgeladenen boxen durchlaufen
		thisid = $(this).attr('id');
		//$('#'+thisid).log();
		if (origin == false) origin = "";
		if ($('#content-container #'+thisid).size()) { //aktuelle box id ist bereits auf der seite sichtbar
			//$(this).log("gefunden: "+thisid);
			//inhalt kopieren
			$('#content-container #'+thisid+' .c').html($(this).find('.c .w').get());
			$('#content-container #'+thisid+' .origurl').html(origin);
			//box aus dem hidden-container löschen
			$(this).remove();

			//A-Tags im inhalt mit ajax callback versehen
			$('#content-container #'+thisid+' .c a[target!="_blank"][href!="#"]').click(function(){ getBoxen(this);return false;});

			// browse links in den suchergebissen der indexed_search umbauen
			$('#content-container #'+thisid+' .tx-indexedsearch-browsebox a').each(function() {
				oc = $(this).attr('onclick') + '';
				$(this).removeAttr('onclick');
				oc = oc.split('"');
				$(this).attr('name', oc[3] + '#' + oc[7]);
				$(this).click(function() {
					n = $(this).attr('name').split('#');
					$('#tx_indexedsearch_pointer').val(n[0]);
					$('#tx_indexedsearch_freeIndexUid').val(n[1]);
					sendForm($('#tx_indexedsearch'));
					return false;
				});
			});

			// muß in den ersten Filter integriert werden!!!!!!
			//$('#content-container #'+thisid+' .c a[target!="thePicture"]').click(function(){ getBoxen(this);return false;});
			test = $('.jqueryform form');
			$('.jqueryform form').submit(function() {
				sendForm(this,test);
				return false;
			});
			$('#jqueryform').bind('submit', function() {
			//$('#jqueryform').submit(function() {
				sendForm(this);
				return false;
			});
		}
		else { //aktuelle box id ist neu

			//$(this).log("nicht gefunden: "+thisid);

			//events für die neue box definieren
			$(this).draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag, .h, .f, .move", stack: { group: '.cb', min: 50 }, stop: function() {saveCookieCurrentPosition(this)} });

			$(this).click( function () {
				bringToFront(this,'.ui-draggable');
			});
			$(this).find('.close').click(function() {
				$(this).parent().remove();
			});
			$(this).find('.minimize').click(function() {
				$(this).parent().toggleClass("min");
			});

			$(this).prepend("<div class='origurl' style='display:none'>"+origin+"</div>");
			$(this).find('.c a[target!="_blank"][href!="#"]').click(function(){ getBoxen(this);return false;});
			// muß in den ersten Filter integriert werden!!!!!!
			//$(this).find('.c a[target!="thePicture"]').click(function(){ getBoxen(this);return false;});
			$(this).find('.jqueryform form').submit(function() {
				sendForm(this);
				return false;
			});
			$('#jqueryform').bind('submit', function() {
			//$('#jqueryform').submit(function(event) {
				sendForm(this);
				return false;
			});

			//position aus Cookie laden
			restoreCookiePosition(this);

			//neue box kopieren
			$('#content-container').append($(this).get());

			//box aus dem hidden-container löschen
			$('#content-hidden #'+thisid).remove();
		}
		bringToFront('#'+thisid,'.ui-draggable');
	});
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});
	hideLoadBar();
	// call all javascript functions
	runFunc();
}
function getBoxen(link) {
	if(link.href) {
		link = link.href
	}
	if(link.indexOf('javascript') != 0) {
		showLoadBar();
		if (link == "") return false;
		if (link.indexOf('type=98') == -1 && link.indexOf(realurlPageTypeFileName) == -1) {
				link = link.replace(/([^#?]*)(\??[^#]*)(#?.*)/,'$1'+realurlPageTypeFileName+'$2$3');
		}
		$.get(link,function(htmlresponse) {
			showBoxen(htmlresponse, link);
		});
	}
	else {
		js = link.replace(/javascript:/,'');
		eval(js);
	}
}
var olddata = "";
var oldurl = "";
function sendForm(form) {
	if(!alrt) {
	theform = $(form);
	if(theform.find('#jqueryformremoveOnSuccess').length) {
		if((typeof doValidate == 'function') && !doValidate()) return false;
	}
	showLoadBar();
	theform.find('input[name="submitpage"]').val(theform.find('input[name="submitpage"]').val()+realurlPageTypeFileName);
	submitbutton = theform.find('input[type="submit"]');
	dataString = theform.serialize()+'&'+submitbutton.attr('name')+'='+submitbutton.val();
	url = theform.attr('action');
	if (url.indexOf('type=98') == -1 && url.indexOf(realurlPageTypeFileName) == -1) {
		url = url + realurlPageTypeFileName;
	}
	if (olddata == dataString && oldurl == url) {
		//$.log("doublecall");
		//workaround weil sendForm manchmal doppelt aufgerufen wird
		//ursache muss noch gefunden werden
		return false;
	}
	else {
		olddata = dataString;
		oldurl = url;
	}
	$.ajax({
		type: "POST",
		url: url,
		data: dataString,
		success: function(htmlresponse) {
			if (theform.find('#jqueryformremoveOnSuccess').length && (theform.parents().find('#'+$(htmlresponse)[0].id).length == 0)) {
				//das abschickende formular soll samt box verschwinden wenn es ein hiddenfeld mit ID=jqueryformremoveOnSuccess gibt (bzw. name=removeOnSuccess)
				// und wenn die danke-seite eine andere cID hat

					//theform.parent().parent().parent().remove();
					theform.parent().parent().parent().parent().remove();
			}
			showBoxen(htmlresponse, false);
			olddata = "";
			oldurl = "";
		}
	});
	}
	alrt = false;
	return false;
}
function openPic(url, winName, winParams) {
	imagepopup = $('#imagepopup');
	imagepopup.css('top', $(window).scrollTop() + 50);
	$.get(url,function(htmlresponse) {
		contenthidden = $('#content-hidden').clone();
		contenthidden.html(htmlresponse);
		imagepopup.find('#imagepopupcontent').html(contenthidden.find('img').get());
		bringToFront('#imagepopup','.ui-draggable');
		imagepopup.fadeIn();
		contenthidden.remove();
		hideLoadBar();
	});
}
function tx_amsforum_pi1_afterAssign() {
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});
	$('.tx-amsforum-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsmessages_pi1_afterAssign() {
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});
	$('.tx-amsmessages-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsfeuser_pi1_afterAssign() {
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});
	$('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsmediaupload_pi1_afterAssign() {
	// replace all checkboxes
	$('input:checkbox').checkbox({empty: 'clear.gif'});

	// replace all radio buttons
	$('input:radio').checkbox({cls:'jquery-radio', empty: 'clear.gif'});
	$('.tx-amsmediaupload-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function showLoadBar() {
	$('#load-data').css('display', 'block');
	$('#load-bar').css('left', '22px');
	$('#load-bar').animate({left: "211px"}, 1000);
	bringToFront("#load-data", ".ui-draggable");
}
function hideLoadBar() {
	$('#load-data').css('display', 'none');
}
function closeAlert() {
	$('#message-data').jqmHide();
};
function openAlert() {
	window.scrollTo(0, 0);
	bringToFront("#message-data", ".ui-draggable");
	$('#message-data').jqmShow();
};
function addFunc(name) {
	add = true
	for(i = 0; i < jsFunc.length; i++) {
		if(jsFunc[i] == name) {
			add = false;
		}
	}
	if(add) {
		jsFunc.push(name);
	}
}

function runFunc() {
	for(i = 0; i < jsFunc.length; i++) {
		eval(jsFunc[i]);
	}
}
