// SCRATCHPAD FOR MARKERS
// (c) 2006 by klickTel AG, Essen.
// All rights reserved. Unauthorized duplication and use prohibited.

Scratchpad = Base.extend ({
	
	isOpen:0,
	tableID:'',
	ppmObject:null,
	divID:'',
	lastMarkerFound:null,
	deleteAll:'',
	type:null,
	title:'',
	
	constructor: function (ppmObject, type) {
		this.isOpen=0;
		this.type=type;
		this.ppmObject=ppmObject;
		this.divID=this.ppmObject.parentNode.id+'_Scratchpad_'+type;
		this.tableID=this.divID+'_MarkerTable';
		if(type=='user') {
			this.title='Meine Markierungen';
		} else {
			this.title='Empfangene Markierungen';
		}
		this.updateTitle();
	},
	
	updateTitle:function()
	{
		c=0;
		if(this.type=='user') {
			this.ppmObject.PpmMarkers.userMarkers.each(function(marker) {
				if(marker.visible == true) {
					c++;
				}
			});
			Element.update($(this.divID+'_title'), this.title+' ('+c+')');
		} else {
			this.ppmObject.PpmMarkers.linkMarkers.each(function(marker) {
				if(marker.visible == true) {
					c++;
				}
			});
			Element.update($(this.divID+'_title'), this.title+' ('+c+')');
		}
	},
	
	
	addMarker: function (marker, ppmObject, fake, addedManually)
	{		
		if(addedManually == null) {
			addedManually=false;
		}
		
		markerTable=$(this.tableID);
		tr=document.createElement('tr');
		td=document.createElement('td');
		aLnk=document.createElement('a');
		aLnk.href='#';
		
		tr.setAttribute("id", this.ppmObject.parentNode.id+'_ScratchPadMarkerEntry_'+this.type+'_'+marker.myID);
		aLnk.id=this.ppmObject.parentNode.id+'_ScratchPad_marker_img_'+this.type+'_'+marker.myID;
		td=document.createElement('td');
		td.setAttribute('align', 'center');
		aLnk.onclick=function() { return false; };
		if(ppmObject == null) {
			ppmObject=this.ppmObject;
		}
		img=document.createElement('img');
		img.width=marker.width;
		img.height=marker.height;
		//img.src=marker.imagePath;
		img.src = 'http://'+location.hostname+'/kt_map/images/pin_small.png';
		img.border='0';
		img.height='20';
		img.width='16';
		img.alt=marker.myID;
		img.title=marker.myID;
		
		//img.onmouseover=function() { ppmObject.showHelpWin($(this), 'scratchpad_marker_hover', 'topleft', 'event', null, null, 0, ((-1)*$(ppmObject.parentNode.id+'_Scratchpad_user_scrollcontent').scrollTop), false); }
		//img.onmouseout=function() { ppmObject.hideHelpWin(); }
		aLnk.appendChild(img);
		td.appendChild(aLnk);
		tr.appendChild(td);
		
		textLink=document.createElement('a');
		textLink.href='#';
		textLink.id=this.ppmObject.parentNode.id+'_ScratchPad_marker_text_'+this.type+'_'+marker.myID;
		textLink.style.padding = "6px 6px 0px 0px;";
		textLink.onclick=function() { return false; };
		Element.addClassName (textLink, "textLinkAnchor");
		//textLink.onmouseover=function() { ppmObject.showHelpWin($(this), 'scratchpad_marker_hover', 'topleft', 'event', null, null, 0, ((-1)*$(ppmObject.parentNode.id+'_Scratchpad_user_scrollcontent').scrollTop), false); }
	//	textLink.onmouseout=function() { ppmObject.hideHelpWin(); }
		
		if (fake == true) {
			Event.observe(textLink, 'click', function(e) { ppmObject.markerController.moveToMarker(marker, function() { 
			ppmObject=this.ppmObject;
			for (i=ppmObject.icons.length-1; i>=0 ;i--) {
				icon = ppmObject.icons[i];
				if(icon.domId == marker.poiID) {
					icon.showInfoWindow();
					Event.stop(e);
				}
			}
			});});
			
			Event.observe(aLnk, 'click', function(e) { ppmObject.markerController.moveToMarker(marker, function() {
			ppmObject=this.ppmObject;
			for (i=ppmObject.icons.length-1; i>=0 ;i--) {
				icon = ppmObject.icons[i];
				if(icon.domId == marker.poiID) {
					icon.showInfoWindow();
					Event.stop(e);
				}
			}			
			}); 
			});

		} else {		
			Event.observe(textLink, 'click', function(e) { ppmObject.markerController.moveToMarker(marker, function() {  marker.showInfoWindow(ppmObject);}); });
			Event.observe(aLnk, 'click', function(e) { ppmObject.markerController.moveToMarker(marker, function() {  marker.showInfoWindow(ppmObject);}); });
		}
	
		tdText=document.createElement('td');
		Element.addClassName(tdText, "scratchpad_textLink");
		wrappedText=wordWrap(marker.displayName, 14, '<br>', true);
		
		//alert(wrappedText);		

		textLink.innerHTML=wrappedText;		
		tdText.appendChild(textLink);
		tr.appendChild(tdText);			
		

		if(this.type=='user') {
			tdDeleteBt=document.createElement('td');
			tdDeleteBt.setAttribute('align', 'center');
			tdDeleteLink=document.createElement('a');
			tdDeleteLink.setAttribute('href', '#');
			tdDeleteLink.onclick=function() { return false; };
			tdDeleteImg=document.createElement('img');
			tdDeleteImg.border='0';
			tdDeleteImg.src='/kt_map/images/close_x_red.png';
			Event.observe(tdDeleteLink, 'click', function(e) { ppmObject.scratchPads.userMarkers.confirmDeleteMarker(e, marker) });
			tdDeleteLink.appendChild(tdDeleteImg);
			tdDeleteBt.appendChild(tdDeleteLink);
			tr.appendChild(tdDeleteBt);	
		} else {
			tdCopyBt=document.createElement('td');
			tdCopyLink=document.createElement('a');
			tdCopyLink.setAttribute('href', '#');
			tdCopyLink.onclick=function() { return false; };
			tdCopyImg=document.createElement('img');
			tdCopyImg.border='0';
			tdCopyImg.id=ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+marker.myID;
			tdCopyImg.src='kt_map/images/plus_scratchpad_uebernehmen.gif';
			tdCopyImg.style.padding = "6px 6px 0 14px;";		
			Event.observe(tdCopyLink, 'click', function(e) { ppmObject.scratchPads.linkMarkers.copyMarker(e, marker) });
			tdCopyLink.appendChild(tdCopyImg);
			tdCopyBt.appendChild(tdCopyLink);
			tr.appendChild(tdCopyBt);
		}
		markerTable.tBodies[0].appendChild(tr);
		
		this.updateTitle();
	
		/*
		if(addedManually) {
			this.ppmObject.helpStatus.markerAdd++;
			if(this.ppmObject.helpStatus.markerAdd <= this.ppmObject.helpStatusCount.markerAdd) {
			//	this.ppmObject.showInfoLayer('marker_added_manually', 'auto');
				this.ppmObject.showHelpWin(this.ppmObject.parentNode.id+'_help_bubble_scratchpad_user', 'marker_added_manually', 'topleft', 'auto');
			}
		}
		*/
	},
	
	
	
	confirmDeleteMarker: function (e, marker)
	{	this.ppmObject.markerEditWindow.close();
		this.ppmObject.hideInfoWindow();
		this.ppmObject.contextMenuController.hide();
		this.ppmObject.contextMenuController.hideDynamicMenu();
		this.ppmObject.cleanupUI();
		this.ppmObject.markerConfirmDialogDeleteWindow.marker=marker;
		this.ppmObject.markerConfirmDialogDeleteWindow.open('Markierung l&ouml;schen', 'Wollen Sie die Markierung "'+shortenString(marker.displayName, 16)+'" wirklich l&ouml;schen?');
						
	},
	
	
	getLastMarkerFound: function()
	{	
		return this.lastMarkerFound;
	},


	deleteMarker: function (marker)
	{	
		var c=0;
		this.ppmObject.markerConfirmDialogDeleteWindow.close();
		if($(this.ppmObject.parentNode.id+'_ScratchPadMarkerEntry_'+this.type+'_'+marker.myID) != null) {
			Element.remove($(this.ppmObject.parentNode.id+'_ScratchPadMarkerEntry_'+this.type+'_'+marker.myID));
		}		
		
		if(marker.refID) {
			markerFound=ppmObject.findMarkerByID(ppmObject.PpmMarkers.linkMarkers, marker.refID);
			if(markerFound != null) {
				mkID=ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+markerFound.myID;
				mkID=mkID.replace(/_user_/, '_link_');
				if($(mkID) != null) {
					$(mkID).style.display='block';
					$(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll').style.display='block';	
				} else {
					localLog('ERROR - Oops, marker is null!');
				}
			}
		} else {
			
		}
	},
	
	
	hide: function()
	{	
		new Effect.BlindUp($(this.divID), {duration:0.6});
	},
	
	
	open: function()
	{
		if(this.ppmObject.pageMode != 'local') {
			$(this.ppmObject.parentNode.id+'_scratchpad_container').style.display='none';
			return;
		}
		if($(this.divID).style.display='none')  {
			$(this.divID).style.display='block';
		}
		if(this.isOpen == 0)	{		 	
		 	this.isOpen=1;
		}

		if($(this.divID+'_ToggleBt') != null) {
			$(this.divID+'_ToggleBt').open();
		}
	},
	
	
	close: function()
	{
		if(this.isOpen == 1)	{
		 	new Effect.BlindUp($(this.divID+'_Content'), {duration:0.3});
		 	this.isOpen=0;
		}
	},

	update: function()
	{
		if(this.ppmObject.pageMode != 'local') {
			$(this.ppmObject.parentNode.id+'_scratchpad_container').style.display='none';
			return;
		}
		
		if(this.type=='user') {
			mArray=this.ppmObject.PpmMarkers.userMarkers;
		} else if(this.type=='link') {
			mArray=this.ppmObject.PpmMarkers.linkMarkers;
		}

		uType=this.type;
		scratchPad=this;
		deleted=0;
		ppmObject=this.ppmObject;
		type=this.type;
		mineCounter=0;
		if(this.type=='user') {
			if(mArray.length > 0) {
				mArray.each( function(marker) {								
					if(marker.refID) {
						markerFound=ppmObject.findMarkerByID(ppmObject.PpmMarkers.linkMarkers, marker.refID);
						if(markerFound != null) {
							mkID=ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+markerFound.myID;
							mkID=mkID.replace(/_user_/, '_link_');
							if($(mkID) != null) {
								$(mkID).style.display='none';
							} else {
								localLog('ERROR - Oops, marker is null!');
							}
						}
					}
					
					if(marker.isMine) {
						mineCounter++;
						MineMarker=ppmObject.findMarkerByID(ppmObject.PpmMarkers.linkMarkers, marker.markerDBID);
						if(MineMarker != null) {
							mkID=ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+MineMarker.myID;
							if($(mkID) != null) {
								$(mkID).style.display='none';
							}
						}
					}
										
					if(marker.visible == false) {
						scratchPad.deleteMarker(marker);
						deleted++;
					} else {					
						if($(ppmObject.parentNode.id+'_ScratchPad_marker_text_'+type+'_'+marker.myID) != null) {
							wrappedText=wordWrap(marker.displayName, 14, '<br>', true);
							Element.update($(ppmObject.parentNode.id+'_ScratchPad_marker_text_'+type+'_'+marker.myID), wrappedText);
						}
					}
				});
				
				
				if(mineCounter > 0) {
					if($(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll') != null) {
						$(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll').style.display='none';
					}
				}
				
				if(scratchPad.type=='user') {
					$(this.ppmObject.parentNode.id+'_Scratchpad_user_empty').style.display='none';
					$(this.ppmObject.parentNode.id+'_Scratchpad_user_content').style.display='block';
				}
				this.open();
				
			} else {
	
				if(this.type=='user') {
					this.ppmObject.scratchPads.userMarkers.open();
					$(this.ppmObject.parentNode.id+'_Scratchpad_user_empty').style.display='block';
					$(this.ppmObject.parentNode.id+'_Scratchpad_user_content').style.display='none';
					
				}
			}
			
		} else {
			if(this.ppmObject.PpmMarkers.userMarkers.length == 0) {
				if(this.ppmObject.PpmMarkers.linkMarkers.length > 0) {
					this.ppmObject.PpmMarkers.linkMarkers.each(function(mk) {
						mkID=ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+mk.myID;
						$(mkID).style.display='block';
					});
				}
			} else {
				
				// Have all link markers already been copied?
				c=0;
				ppmObject=this.ppmObject;
				this.ppmObject.PpmMarkers.linkMarkers.each(function(mk) {
					markerFound=ppmObject.findMarkerByRefID(ppmObject.PpmMarkers.userMarkers, mk.markerDBID);
					if(markerFound != null) {
						c++;
					} else {// wird eine Markierung per mail verschickt, existiert die refID noch nicht!
						this.ppmObject.PpmMarkers.userMarkers.each(function(umk) {
							if (umk.isMine != 0) {;
								$(this.ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+mk.myID).style.display='none';
							}
						});
					}
				});
				if(c == this.ppmObject.PpmMarkers.linkMarkers.length) {
					$(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll').style.display='none';					
				}
								
			}
		}
		
		
		if(this.type=='link') {
			if(this.ppmObject.PpmMarkers.linkMarkers.length > 0) {
				if(!this.ppmObject.scratchPads.linkMarkers.isOpen) this.ppmObject.scratchPads.linkMarkers.open();
			} else {
				this.ppmObject.scratchPads.linkMarkers.hide();
			}
		}
		
		if(this.type=='user') {
			if(deleted > 0 && (mArray.length - deleted == 0)) {
				$(this.ppmObject.parentNode.id+'_Scratchpad_user_content').style.display='none';
				$(this.ppmObject.parentNode.id+'_Scratchpad_user_empty').style.display='block';
				
			}
		}
		this.updateTitle();
	},	
	

	confirmDeleteMarkerAll: function (e)
	{	
		this.ppmObject.hideInfoWindow();
		this.ppmObject.contextMenuController.hide();	
		this.ppmObject.contextMenuController.hideDynamicMenu();
		this.ppmObject.cleanupUI();
		this.ppmObject.markerConfirmDialogDeleteAllWindow.open('Ablage l&ouml;schen', 'Wollen Sie wirklich alle Markierungen in Ihrer Ablage l&ouml;schen?');
	},
	
	deleteMarkerAll: function ()
	{
		this.ppmObject.hideInfoWindow();
					
		if(this.type=='user') {
			mArray=this.ppmObject.PpmMarkers.userMarkers;
		} else if(this.type=='link') {
			return;
		}
		
		for(var i = 0; i < mArray.length; i++) {
			if($(this.ppmObject.parentNode.id+'_ScratchPadMarkerEntry_'+this.type+'_'+mArray[i].myID) != null) {
				Element.remove($(this.ppmObject.parentNode.id+'_ScratchPadMarkerEntry_'+this.type+'_'+mArray[i].myID));
			}
			
			if($(mArray[i].icon.domId) != null) {
				Element.remove($(mArray[i].icon.domId));
			}
			
			// EagleView
			if($('ev_'+mArray[i].icon.domId) != null) {
				Element.remove($('ev_'+mArray[i].icon.domId));
			}
		}	
				
		if(this.type=='user') {
			this.ppmObject.PpmMarkers.userMarkers = Array ();
		} else {
			this.ppmObject.PpmMarkers.linkMarkers = Array ();
		}
		
		this.update();
		
		if(this.type=='user') {
			this.ppmObject.scratchPads.linkMarkers.update();
		}
	},
	
	getDeleteAll: function()
	{	
		return this.deleteAll;
	},
	
	
	sendAllPerMail: function()
	{	
		if(this.ppmObject.eagleView == 2) {
			this.ppmObject.processes++;
			query = "/kt_map/ajax/evgetgeo.php";
			var screenX=this.ppmObject.evWidth/2-this.ppmObject.evX;
			var screenY=this.ppmObject.evHeight/2-this.ppmObject.evY;
			
			if (this.ppmObject.evZoomLevel == 1) {
				screenX *= 3;
				screenY *= 3;
			}
			
			ppmObject=this.ppmObject;
			scratchPad=this;
			
			var evAjax = new Ajax.Request (
				query, {
					parameters: "Customer=999&x="+this.ppmObject.evLongitude+"&y="+this.ppmObject.evLatitude+"&screenx="+screenX+"&screeny="+screenY+"&d="+this.ppmObject.evDirection,
					method: 'get',
					onComplete: function (originalRequest) {
						ppmObject.processes--;
						localLog (originalRequest.responseText);
						json = eval("(" + originalRequest.responseText + ")");
						var url = path='http://'+location.hostname+'/kt_map/ajax/getMarkerLink.php';
						var pars = 'type=all&dom='+escape(location.hostname)+"&path="+escape(location.pathname)+"&maptype=eagleview&longitude="+json.longitude+"&latitude="+json.latitude+"&zoomlevel="+ppmObject.evZoomLevel+'&direction='+ppmObject.evDirection;
						var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars,  onComplete: function(obj) { scratchPad.sendAllByMailFinished(obj, ppmObject); }}); 
					}
			}
			);
		} else {
			
			ppmObject=this.ppmObject;
		
			var mapType;
			if(ppmObject.hybrid)
			{
				mapType='hybrid';
			} else if(ppmObject.aerial) {
				mapType='aerial';
			} else if(ppmObject.eagleView) {
				mapType='eagleview';
			} else {
				mapType='map';
			}
			
			scratchPad=this;
			var url = path='http://'+location.hostname+'/kt_map/ajax/getMarkerLink.php';
			var pars = 'type=all&dom='+escape(location.hostname)+"&path="+escape(location.pathname)+"&maptype="+mapType+"&longitude="+ppmObject.longitude+"&latitude="+ppmObject.latitude+"&zoomlevel="+ppmObject.zoomLevel;
			var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars,  onComplete: function(obj) { scratchPad.sendAllByMailFinished(obj, ppmObject); }}); 
		}
	},
	

	sendAllByMailFinished: function(obj, ppmObject)
	{
		this.ppmObject=ppmObject;
		var pipeOffset=obj.responseText.indexOf('|');
		var statusCode=obj.responseText.substr(0, pipeOffset);
		var url=obj.responseText.substr(pipeOffset+1);
		if(statusCode=='ERROR') {
			this.ppmObject.markerController.handleError(statusCode);
		} else {
			top.location.href="mailto:?subject=Markierungen%20bei%20klickTel&body=Um%20die%20Ihnen%20zugesandten%20Markierungen%20bei%20klickTel%20aufzurufen,%20klicken%20Sie%20bitte%20auf%20den%20nachfolgenden%20Link:%0A%0A"+url+"%0A%0A%0A%0AMarkieren%20Sie%20Ihre%20Lieblingsorte%20auf%20http://www.klicktel.de%20!%0ARoutenplaner%20und%20lokale%20Suche%20sind%20ein%20kostenloser%20Service%20der%20klickTel%20AG.";
		}
	},
	
	copyAllMarkers: function ()
	{
		ppmObject=this.ppmObject;
		copyMarker=this.copyMarker;
		
		if(this.ppmObject.PpmMarkers.linkMarkers.length > 0) {
			ppmObject.PpmMarkers.linkMarkers.each(function(marker){
				copyMarker(null, marker);
			});
			$(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll').style.display = 'none';
			this.ppmObject.cleanupUI();
			ppmObject.markerInfoDialogWindow.open('Empfangene Markierungen &uuml;bernommen','Die empfangenen Markierungen wurden zu Ihren Markierungen hinzugef&uuml;gt.');
		} else {
			localLog('ERROR - Wer ruft mich auf? Ich hab da nix zum kopieren!!');	
		}
	},
	
	copyMarker: function (e, marker)
	{
		// Already copied?
		markerFound=ppmObject.findMarkerByRefID(ppmObject.PpmMarkers.userMarkers, marker.markerDBID);
		if(markerFound != null) {
			return;
		}
		
		mk=this.ppmObject.markerController.createNewMarker(marker.x, marker.y, marker.longitude, marker.latitude, marker.displayName, marker.description, true);
		$(this.ppmObject.parentNode.id+'_ScratchPad_marker_link_img_'+marker.myID).style.display='none';
		this.ppmObject.scratchPads.userMarkers.addMarker(mk, this.ppmObject, false);
		mk.refID=marker.markerDBID;
		mk.poiID=marker.poiID;
		mk.makePersistent("save", ppmObject, mk);
		
		// Have all link markers already been copied?
		c=0;
		ppmObject=this.ppmObject;
		this.ppmObject.PpmMarkers.linkMarkers.each(function(mk) {
			markerFound=ppmObject.findMarkerByRefID(ppmObject.PpmMarkers.userMarkers, mk.markerDBID);
			if(markerFound != null) {
				c++;
			}
		});
		if(c == this.ppmObject.PpmMarkers.linkMarkers.length) {
			if($(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll') != null) {
				$(this.ppmObject.parentNode.id+'_Scratchpad_link_CopyAll').style.display='none';
			}
		}

		this.ppmObject.scratchPads.userMarkers.update();
		this.ppmObject.cleanupUI();
		ppmObject.markerInfoDialogWindow.open('Empfangene Markierung &uuml;bernommen','Die empfangene Markierung wurde zu Ihren Markierungen hinzugef&uuml;gt.');
	}
	
});

