/* --> Skobbler TOOl Tip */
/*if(SKOBBLERwidgets != 'undefined') {
	SKOBBLERwidgets = {};
}*/

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

try{
    SKOBBLERwidgets = SKOBBLERwidgets || {};
}catch(e){
    SKOBBLERwidgets={};
}


SKOBBLERwidgets.ToolTip = function(elements, options) {

	
	this.init(elements, options);
}	

SKOBBLERwidgets.ToolTip.prototype = {
	init: function(elements, options) {
		this.elements = elements;
		this.options = options;
		
		this.toolTipElem = new Element('div', {
			'class': (this.options.className ? this.options.className+'-tip' : ''),
			'style': 'position:absolute;top:0px;left:0px;'
		});
		if(this.options.width)
			this.setWidth(this.options.width);
		if(this.options.height)
			this.setHeight(this.options.height);
			
		$(document.body).insert(this.toolTipElem);
		this.toolTipElem.hide();
		
		$(this.elements).each(function(el) {
			el.observe('mouseover', this.onShow.bindAsEventListener(this));
			el.observe('mouseout', this.onHide.bindAsEventListener(this));
			el.observe('mousemove', this.onMove.bindAsEventListener(this));
		}.bind(this));
	},
	
	hide: function() {
		this.toolTipElem.hide();
	},
	
	onHide: function(ev) {
		var trg = !Object.isUndefined(ev.target)?ev.target:ev.srcElement;
		trg = $(trg);
		trg.writeAttribute('tooltip', this.options.content);
		this.toolTipElem.hide();
	
	},

	onMove: function(ev) {
		this.setPosition(ev);
	},
	
	setPosition: function(ev) {
		this.toolTipElem.setStyle({top: ev.clientY+document.documentElement.scrollTop+5+"px", 
					left: ev.clientX+25+"px"});
	},
	
	onShow: function(ev) {
		var trg = !Object.isUndefined(ev.target)?ev.target:ev.srcElement;
		trg = $(trg);
		
		this.options.content = '';
		
		if (trg.readAttribute('tooltip')) {
			this.options.content = trg.readAttribute('tooltip');
		} else if (trg.readAttribute('title') || trg.readAttribute('alt')) {
			this.options.content = (trg.readAttribute('title') || trg.readAttribute('alt'));
			trg.removeAttribute('title');
			trg.removeAttribute('alt');
			
		} else if (trg.tagName.toLowerCase() == 'a') {
			this.options.content = trg.readAttribute('href');
		}

		this.toolTipElem.update(new Element('span', {'class': (this.options.className ? this.options.className+'-text' : '')}).insert(this.options.content));
		
		this.setPosition(ev);
		
	
		this.toolTipElem.show();
	},
	
	setWidth: function(w) {
		
		w = parseInt(w);
		if(Object.isNumber(w)) {
			
			this.toolTipElem.setStyle({width: w+"px"});
		} else {
			this.toolTipElem.setStyle({width: w});
		}
	},
	
	setHeight: function(h) {
		
		h = parseInt(h);
		if(Object.isNumber(h)) {
			this.toolTipElem.setStyle({height: h+"px"});
		} else {
			this.toolTipElem.setStyle({height: h});
		}
	
	}
	
	
	
};


var SkobblerToolTipsTags = new SKOBBLERwidgets.ToolTip($$('.ToolTipsTags'), {
		className: 'SkobblerTool',
		width: 400,
		height: 50
	});

	
var SkobblerToolTips = new SKOBBLERwidgets.ToolTip($$('.ToolTips'), {
		className: 'SkobblerTool'
});
	
/* <-- Skobbler Tool Tip */
function ToolTip(elements, options) {
    var options = options;
    
    if (!ToolTip.toolTip) {
        ToolTip.toolTip = new Element('div', {
			'class': (options.className ? options.className+'-tip' : ''),
			'style': 'position:absolute;top:0px;left:0px'
		});
		
		document.body.insert(ToolTip.toolTip);
		ToolTip.toolTip.hide();
    }
    
    onHide = function(ev) {
        this.writeAttribute('tooltip', options.content);
        ToolTip.toolTip.hide();
    };
    
    onMove = function(ev) {
        ToolTip.setPosition(ToolTip.toolTip, ev);
    };
    
    onShow = function(ev) {
        options.content = '';
    
        if (this.readAttribute('tooltip')) {
           options.content = this.readAttribute('tooltip');
        } else if (this.readAttribute('title') || this.readAttribute('alt')) {
            options.content = (this.readAttribute('title') || this.readAttribute('alt'));
            this.removeAttribute('title');
            this.removeAttribute('alt');
        } else if (this.tagName.toLowerCase() == 'a') {
            options.content = this.readAttribute('href');
        }
    
        ToolTip.toolTip.update(new Element('span', {'class': (options.className ? options.className+'-text' : '')}).insert(options.content));
    
        ToolTip.setPosition(ToolTip.toolTip, ev);
        ToolTip.toolTip.show();
    };
    
    $(elements).each(function(el) {
        el.observe('mouseover', this.onShow);
        el.observe('mouseout', this.onHide);
        el.observe('mousemove', this.onMove);
    });
}

ToolTip.setPosition = function(el, ev) {
    el.setStyle({top: ev.clientY+document.documentElement.scrollTop+5+"px", 
                 left: ev.clientX+25+"px"});
}


// scroller-functions
function lauf(direct) {
	var maxScroll = $$('div.box div.image_box ul.slider img').length * 40 - 110;
	var actPos=$('scrollArea').scrollLeft;
	if(anim) {
		switch(direct) {
			case 'rechts':
				if (actPos<=maxScroll) {
					$('scrollArea').scrollLeft=actPos+5;
				}
				break; 
			case 'links':
				$('scrollArea').scrollLeft=actPos-5;
				break;
		}
		setTimeout("lauf('"+direct+"')",50);
	}
}

function slide(i) {
	var imgs = $$('div.scrollArea div.innerScroll img');
	var imglen = $$('div.scrollArea div.innerScroll img').length;	
	if (!i) { i=0; } if (!sliderun && sliderun !=false) { sliderun=true; }
	if (sliderun) {
		//$('scrollArea').scrollLeft=$('scrollArea').scrollLeft+imgs[i].width+40;
		$('scrollArea').scrollLeft=$('scrollArea').scrollLeft+640;
		i++;
		//$('zaehlwerk').innerHTML = i + " von " + imglen;
		if (i<imglen) {
			setTimeout("slide("+i+")",2000);
		} else {
			i=0;
			$('scrollArea').scrollLeft=0;
		 	setTimeout("slide("+i+")",2000);
		}
	} else {
		sliderun=false;
		setTimeout("slide("+i+")",2000);
	}
}

window.onload = function(e) {
	$$('div.slideshow').each(function(el) {
		// preload images
		//document.write("Die Bilder werden geladen");
		//var imgs = $$('div.scrollArea div.innerScroll img');
		//for (i=0; i < imgs.length; i++) {
		//	var Bild = new Image();
		//	Bild.src = imgs[i];
  		//}
		sliderun=true;
		$('scrollArea').scrollLeft=0;
		slide();
	});

	$$('img.slide').each(function(el) {
		Event.observe(el, 'mouseover', function(e) {
			sliderun=false;
		});
	});

	$$('img.slide').each(function(el) {
		Event.observe(el, 'mouseout', function(e) {
			sliderun=true;
		});
	});

	$$('a.resume').each(function(el) {
		Event.observe(el, 'click', function(e) {
			sliderun=true;
		});
	});

	$$('a.stopp').each(function(el) {
		Event.observe(el, 'click', function(e) {
			sliderun=false;
		});
	});

	$$('div.box div.image_box img.backButt').each(function(el) {
		Event.observe(el, 'mouseover', function(e) {
			anim=true;
			el.src='img/poi_details/thumb_nav_left.png';
			lauf('links');
		});
	});

	$$('div.box div.image_box img.backButt').each(function(el) {
		Event.observe(el, 'mouseout', function(e) {
			el.src='img/poi_details/thumb_nav_left.png';
			anim=false;
			lauf('links');
		});
	});

	$$('div.box div.image_box img.foreButt').each(function(el) {
		Event.observe(el, 'mouseover', function(e) {
			el.src='img/poi_details/thumb_nav_right.png';
			anim=true;
			lauf('rechts');
		});
	});

	$$('div.box div.image_box img.foreButt').each(function(el) {
		Event.observe(el, 'mouseout', function(e) {
			el.src='img/poi_details/thumb_nav_right.png';
			anim=false;
			lauf('rechts');
		});
	});

	$$('div.box div.image_box ul.slider a').each(function(el) {
		Event.observe(el, 'click', function(e) {
			var li_preview = $$('.preview li');
			var li_checks = $$('.deletePicture li');

			for (var i = 0; i < li_checks.length; i++) {
				$(li_checks[i]).setStyle({display:'none'});
			}

			for(var i = 0; i < li_preview.length; i++) {
				$(li_preview[i]).removeClassName('active');

				if(li_preview[i].getElementsByTagName('a')[0].id == el.rel) {
					$(li_preview[i]).addClassName('active');

					for (var j = 0; j < li_checks.length; j++) {
						if (li_checks[j].readAttribute('rel') == el.rel) {
							$(li_checks[j]).setStyle({display:'block'});
							break;
						}
					}
				}
			}
		});
	});
/* // commenting out because it's not working anyway; if used, proper testing should be added for 'title_box'
	$$('form.progress_layout label').each(function(el) {
		Event.observe(el, 'mouseover', function(e) {
			var info = el.getElementsBySelector('span.info')[0];

			if(info) {
				var info_position = info.cumulativeOffset();
				info.setStyle({backgroundPosition: '-34px -381px'});
				  
				   var title_box = $('title_box');

                    title_box.setStyle({display: 'block'});
                    title_box.setStyle({position: 'absolute'});

                    title_box.setStyle({top: (info_position.top + 16) + 'px'});
                    title_box.setStyle({left: (info_position.left - 136) + 'px'});
					title_box.setStyle({border: "solid 1px #A9A9A9" , backgroundColor:"#FFFFFF" , fontSize: "14px", maxWidth:"300px" }) ;
					
				if(el.readAttribute('title') != '') {
					el.writeAttribute('rel', el.readAttribute('title'));
					el.writeAttribute('title', '');
				}

				var eles = title_box.childElements();
				for (var i = 0; i < eles.length; i++) {
					eles[i].remove(title_box);
				}
				title_box.insert(new Element('span').insert(el.readAttribute('rel')));
			}
		});
		Event.observe(el, 'mouseout', function(e) {
			var info = el.getElementsBySelector('span.info')[0];
			if(info) {
				info.setStyle({backgroundPosition: '-2px -381px'});
			    $('title_box').setStyle({display: 'none'});
			}
		});
	});
*/
	$$('#add_list_entry_form').each(function(x) {
		x.hide();
	});
	$$('#add_list_entry').each(function(el) {
		Event.observe(el, 'click', function(e) {
			$('add_list_entry_form').toggle();
		});
	});
	$$('#toggle_add_list_entry_form').each(function(el) {
		el.observe('click', function(e) {
	  	$('newListPublic').checked = false;
	  	$('addToNewList').clear();
  		$('add_list_entry_form').toggle();
	  	e.stop();
		});
	});

	
	// simple tagging
	function processTag(tag) {
		tag = new String(tag);
		//var chars = new Array(" ", ",", ";", ".", "!", "?");
		// consider just the space separator
		var chars = new Array(" ");
		for(var k=0; k<chars.length; k++) {
			if(tag.indexOf(chars[k]) >-1) {
				return '"'+tag+'"';
			}
		}
		return tag;
	}
	
	if ($('poiViewTagDiv') && $('poiTagList') && $('poiViewTagEditDiv') && $('form-poi-tags')) {
		var showDiv = $('poiViewTagDiv');
		var tagList = $('poiTagList');
		var editTags = $('editTags');
		var editDiv = $('poiViewTagEditDiv');
		var form = $('form-poi-tags');
			Event.observe($('editTags'), 'click', function(e) {
			if(showDiv.visible) {
				showDiv.hide();
				editDiv.show();
			}
			Event.stop(e)
		}); /**/
		if(form) {
			var input = $('fe-tags');
			SKOBBLER_INPUT_TAGS = input.value; //.readAttribute('value');
			
			var hiddenField = new Element('input', {
				'type': 'hidden',
				'name': 'ajax',
				'value': 'true'
			});

			form.insert(hiddenField);			
			editDiv.hide();

			Event.observe(form, 'submit', function(f) {
				/**
				 * Prevent the submit event
				 * if something new, submit
				 */
				Event.stop(f);
			
				if(SKOBBLER_INPUT_TAGS != input.value) {
					input.addClassName('ajax-loading');

					var result = '';
					/*form.request({
						onComplete: function(result) {
							input.removeClassName('ajax-loading');
							showDiv.show()
							editDiv.hide();
							if (result.responseText == poiTagEditError) {
								alert(poiTagEditError);
							} else {
								tagList.innerHTML = result.responseText;
								inputvalue = input.getValue();
								if (inputvalue != '') {
									editTags.innerHTML = labelTagsEdit;
								} else {
									editTags.innerHTML = labelTagsCreate;
								}
							}
						}
					});*/
					var defaultKeywords = $('poiTagList').innerHTML;
					var SKOBBLER_home = window.location.href;
					var h = new String(window.location.href);
					var ind1 = h.indexOf("//");
					var ind2 = h.indexOf("/", ind1+2);
					if(ind2>-1){
						SKOBBLER_home = h.substring(0, ind2);
					} 
		
					new Ajax.Request(form.action, {
						method: 'POST', 
						parameters: {tags: $('fe-tags').value, language: $('fe-tag-language').value, ajax: 'true'},
						evalJSON: 'force',
						onFailure: function(data) {
							input.removeClassName('ajax-loading');
							showDiv.show()
							editDiv.hide();
							$('poiTagList').update(defaultKeywords);
							$('poiTagList').innerHTML;
						},
						onSuccess: function(data) {
                           if(Object.isUndefined(data.responseJSON)) {
								window.location.href = SKOBBLER_home;
							}
							
							var keywords = data.responseJSON.content;
							
							input.removeClassName('ajax-loading');
							showDiv.show()
							editDiv.hide();
							
							/* --> Update tags */
							
							var tagTemplate = new Template('<a href="#{tagsearchUrl}">#{name}</a>');
                            var tagTemplate_2 = new Template('#{name}');
							var content = "";
							var input_tags = $("fe-tags");
							input_tags.value = "";
							var _inputValue = "";
							var tagsArray = [];
							for(var i =0; i< keywords.length; i++)  {
                                if(typeof keywords[i].tagsearchUrl != 'undefined') {
                                    content += tagTemplate.evaluate(keywords[i]) + ", ";
                                } else {
                                    content += tagTemplate_2.evaluate(keywords[i]) + ", ";
                                }
								_inputValue += input_tags.value + " "+processTag(keywords[i].name);
								tagsArray[i] = keywords[i].name;
							}
							SKOBBLER_INPUT_TAGS = _inputValue; //need for comparing if content changed
							content = new String(content);
							content = content.substr(0, content.length-2);
							input_tags.value = _inputValue;
							
							var tagListElem = $('poiTagList');
							tagListElem.update(content);
							tagListElem.innerHTML;
						
							if (_inputValue != '') {
									editTags.innerHTML = labelTagsEdit;
							} else {
									editTags.innerHTML = labelTagsCreate;
							}
							/* <-- Update tags */
							
							//--> update google maps Poi info
							skobbler.SEARCH_RESULT[0].info_short.tags = tagsArray;
							//<-- update google maps Poi info
						
						}
					});
								
					
				} else {
					showDiv.show()
					editDiv.hide();
				}
			});
		}
	}

	/*var SkobblerToolTips = new ToolTip($$('.ToolTips'), {
		className: 'SkobblerTool'
	});*/
	
	/*
	var SkobblerToolTipsTags = new ToolTip($$('.ToolTipsTags'), {
		className: 'SkobblerTool'
	});*/
	
	
	// the Cycle
	/*if(typeof leUseCycle != "undefined" && leUseCycle && typeof leActiveInterval == "undefined") {
		leActiveInterval = window.setInterval("leActive()", 4000);
		leUpdateInterval = window.setInterval("leUpdate()", 5000);
		leInit();
	}*/

	//make a hint	
	$$('.makehint').each(function(el){
		var options = el.readAttribute('rel').evalJSON() || {};

		Event.observe(el, 'focus', function(event) {
			el.setStyle('color', '#000');
			if (el.value == options.display){
				el.value="";
			}
		});

		Event.observe(el, 'blur', function(event) {
			if (el.value==""){
				el.value = options.display;
				el.setStyle('color', '#888');
			}
		});

		if (el.value==""){
				el.value = options.display;
				el.setStyle('color', '#888');
		}
	});

	// tooltips
	var SkobblerToolTipsKarma = new ToolTip($$('.karmaPerCentLine'), {
		className: 'SkobblerTool'
	});

	var SkobblerToolTipsGalleryImage = new ToolTip($$('.imageList a img'), { 
		className: 'SkobblerTool'
	});

	if($('commentFormDiv')) {
		var commentFormSlide = $('commentFormDiv');
		
		$$('.js_toggle').each(function(el){

			Event.observe(el, 'click', function(e){
				new Effect.toggle(commentFormSlide, 'slide');			
				Effect.ScrollTo('anchor_comment_form');
				Event.stop(e);
			});
			
			
			
		});
	}
	if($('poiViewTagDiv') && $('poiViewTagEditDiv')) {
		var showDiv = $('poiViewTagDiv');
		var editDiv = $('poiViewTagEditDiv');
		editDiv.hide();

		Event.observe($('editTags'), 'click', function(e){
			showDiv.hide();
			editDiv.show();
			Event.stop(e);
		});
	}

	$$('#showDoFriend').each(function(item) {
	   item.observe('mouseover', function(ev) {
	       var el = this.up('li').down('#doFriend');
	       if (el)
	           el.toggle();
	   });
	   
	   item.observe('mouseout', function(ev) {
	       var el = this.up('li').down('#doFriend');
	       if (el)
	           el.toggle();
	   });
	})

	{
		var SKOBBLER_home = window.location.href;
		var h = new String(window.location.href);
		var ind1 = h.indexOf("//");
		var ind2 = h.indexOf("/", ind1+2);
		if(ind2>-1){
			SKOBBLER_home = h.substring(0, ind2);
		} 
		var f = true;
		$$('.js_showHeroDetail').each(function(el) {
			
                var tileid  = el.immediateDescendants()[0].innerHTML;
                if((typeof skobbler_TILE_ID != 'undefined' && skobbler_TILE_ID == tileid) || (typeof skobbler_TILE_ID == 'undefined'  && f == true)) {
                    el.up().addClassName('border');

                    var tilelon = el.immediateDescendants()[1].innerHTML;
                    var tilelat = el.immediateDescendants()[2].innerHTML;
                    var options = new Object();
                    options.parameters = {tileid:tileid};
                    $('js_herodetailslot').innerHTML = '<img src="img/misc/spinner.gif" />';

                    /*var stuff = new Ajax.Updater($('js_herodetailslot'),$('js_herodetailurl').innerHTML,options);*/
                    var hdElem  = $('js_herodetailslot');
                    var url = new String($('js_herodetailurl').innerHTML);
                    url = url.trim();
                    new Ajax.Request(url, {
                      method: 'get',
                      parameters: options.parameters,
                      onSuccess: function(transport) {
                        var tr = new String(transport.responseText);
                        if(tr.indexOf("<!-- SKOBBLER_INDEX -->") > -1) {
                            window.location.href = SKOBBLER_home;
                        } else if(tr.indexOf("<!-- SKOBBLER_HINWEIS -->") > -1) {
                            hdElem.update("");
                            hdElem.innerHTML;
                        } else {
                            hdElem.update(transport.responseText);
                            hdElem.innerHTML;
                        }
                      },
                      onFailure: function(tr) {
                            hdElem.update("");
                            hdElem.innerHTML;
                      }
                    });


                    var point = new GLatLng(tilelat,tilelon);
                    //setCenter does not need to be called b/c it's called
                    //in LocalHeroes.js already using the correct coordinates
                    //window.application.map.setCenter(point);
                    f = false;
                }
			
			
			Event.observe(el,'click',function(e) {
				$$('.js_showHeroDetail').each(function(item) {
					item.up().removeClassName('border');
				});
				el.up().addClassName('border');
				var tileid  = el.immediateDescendants()[0].innerHTML; 
				var tilelon = el.immediateDescendants()[1].innerHTML; 
				var tilelat = el.immediateDescendants()[2].innerHTML; 
				var options = new Object();
				//options.evalScripts = true;
				options.parameters = {tileid:tileid};
				$('js_herodetailslot').innerHTML = '<img src="img/misc/spinner.gif" />';
				
				/*var stuff = new Ajax.Updater($('js_herodetailslot'),$('js_herodetailurl').innerHTML,options);*/
				var hdElem  = $('js_herodetailslot');
                var url = new String($('js_herodetailurl').innerHTML);
                url = url.trim();
				new Ajax.Request(url, {
				  method: 'get',
				  parameters: options.parameters,
				  onSuccess: function(transport) {
					var tr = new String(transport.responseText);
					if(tr.indexOf("<!-- SKOBBLER_INDEX -->") > -1) {
						window.location.href = SKOBBLER_home;
					} else if(tr.indexOf("<!-- SKOBBLER_HINWEIS -->") > -1) {
						hdElem.update("");
						hdElem.innerHTML;
					} else {
						hdElem.update(transport.responseText);
						hdElem.innerHTML;
					}
				  },
				  onFailure: function(tr) {
						hdElem.update("");
						hdElem.innerHTML;
				  }
				});

				
				var point = new GLatLng(tilelat,tilelon);
				window.application.map.setCenter(point);
			});
		});
	}

/*
	$$('div.poi_details div.image_box ul.preview a.boxed').each(function(el) {
		Event.observe(el, 'click', function(e) {
			new Event(e).stop();
			SqueezeBox.fromElement(el);
		});
	});
*/
}

if (window.createPopup && document.compatMode && document.compatMode=="CSS1Compat")
{
	document.onreadystatechange = onresize = function fixIE6AbsPos()
	{
		if (!document.body) return;
		if (document.body.style.margin != "0px") document.body.style.margin = 0;
		onresize = null;
		document.body.style.height = 0;
		setTimeout(function(){ document.body.style.height = document.documentElement.scrollHeight+'px'; }, 1);
		setTimeout(function(){ onresize = fixIE6AbsPos; }, 100);
	}
}
