
jQuery(
	function() {
		if (jQuery.browser.msie && jQuery.browser.version && jQuery.browser.version.length>0 && jQuery.browser.version.charAt(0)<'7' ) {
			// extra fkt for IE5-6: Show/hide navigation
			jQuery("#navigation-div li").hover(
				function() {
					jQuery(">ul",this).show();
				},
				function() {
					jQuery(">ul",this).hide();
				}		
			);
		}

		//bind event on options
		jQuery("#subcategory_select").change(function(source) {
			var url = jQuery("#subcategory_select").val();
			//alert("url="+url);	
			document.location.href = url;
		})
	}
);

var editnavigation = editnavigation || {
	areas : ['navigation-div','breadcrumbs','categories','subcategories','content','teaser']
};

editnavigation.removeEditNavigation = function() {
	jQuery('#edit-navigation-menu').remove();
};
editnavigation.getSelectedElement = function(e) {
	var t = jQuery(e).parents();
	var p = null;
	for(var i=0; i<t.length; i++) {
		if (jQuery(t[i]).hasClass('editnavigationelement')) {
			p = t[i];
			break;
		}
	}
	return p;
}

editnavigation.dummyFunktion = function(){ return false; }; 
		
editnavigation.moveHover = function() {
	var t = jQuery(this);
	var p = t.parent();
	var h = jQuery('#navigationhover');
	if (h.length<1) {
		h = jQuery('<div id="navigationhover"/>');
	}
	if (h.parent()!=t.parent()) {
		var jp = jQuery(t.parent());
		jp.append(h);
		var zindex = parseInt(jp.css('z-index'));
		if (zindex) {
			zindex += 100;
			jQuery('>*',p).css('z-index',zindex+2);
			h.css('z-index',zindex);
		}
	}
	var pos = t.position();
	h.stop(true, false).animate({
		left: pos.left,
		top : pos.top,
		width : t.width(),
		height : t.height()
	}, 100);
};

editnavigation.createEditNavigation = function(navfkts, context, xmlrequest) {
	if (!navfkts && xmlrequest) {
		var xmltext = xmlrequest.responseText;
		if (xmltext) {
			navfkts = jQuery.parseJSON(xmltext);
		}
	}
	//alert('navfkts='+navfkts+'\ncontext='+context+'\nxmlrequest='+xmlrequest+'\nxmltext='+xmltext);
	editnavigation.removeEditNavigation();
	if (navfkts && navfkts.length>0) {
		var d = jQuery('<div id="edit-navigation-menu"/>');
		jQuery(context).append(d);
		d.hide();
		for(var i=0; i<navfkts.length; i++) {
			var e = navfkts[i];
			var orgclick = e.click;
			if ( (typeof e.click) === 'string' ) {
				e.click = eval('(' + e.click + ')');
				if (!e.click) {
					eval('var linkClickFunction='+orgclick+';');
					e.click=linkClickFunction;
				}
			}
			//var ea = jQuery('<a><img src="/r/i/images/icons/' + e.icon + '"/>' + e.title + '</a>');
			//ea.click(e.fkt);
	
			var extraclass = e.cssclass ? e.cssclass : '';
			extraclass = ((typeof e.click) === 'function') ? extraclass : extraclass + ' disabled';
			var extrastyle = e.css ? ' style="' + e.css + '"' : '';
			var iconstyle = e.icon ? ' style="background-image: url(/r/i/images/icons/' + e.icon + ');"' : '';
			var title = e.title ?  '<span'+iconstyle+'>' + e.title + '</span>' : '';
			var li = jQuery('<div class="'+extraclass+'"'+extrastyle+'>' + title + '</div>');
			d.append(li);

			if (((typeof e.click) === 'function')) {
				var fkt = (function(x) {
					return function() {
						var e = jQuery(editnavigation.getSelectedElement(this));
						
						var navigationmenuentry = jQuery('#edit-navigation-menu');
						jQuery(navigationmenuentry.parent()).hide();
						navigationmenuentry.remove();
						
						if ( (typeof x) === 'function' ) {
							x(e);
						}
						 
						return false; 
					} 
				})(e.click);
				li.click(fkt);
				li.hover(editnavigation.moveHover, editnavigation.dummyFunktion);
			} else {
				li.click(editnavigation.dummyFunktion);
			}
			//li.append(ea);
		}
		d.hover(editnavigation.dummyFunktion, editnavigation.hideEditNavigation);
		
		d.fadeIn('fast');
		//d.show();
	}
	return false;
};

editnavigation.showEditNavigation = function() {
	var t = jQuery(this);
	var paddingTop = parseInt(t.css('padding-top'));
	var paddingLeft = parseInt(t.css('padding-left'));
	var pos = t.position();
	var a = jQuery('a.nav-edit',this);
	a.css({
		left : pos.left + t.outerWidth() - a.width() - paddingLeft,
		top  : paddingTop + pos.top + 2
	}).show();
};

editnavigation.hideEditNavigation = function() {
	jQuery('a.nav-edit',this).hide();
};

editnavigation.requestEditMenuContent = function(element) {
	var context = element && element.tagName ? element : this;
	var t = jQuery(context).parent().get(0);
	
	var data = {};
	var attr = t.attributes;
	for(var i=0; i<attr.length; i++) {
		var a = attr[i];
		var n = String(a.name);
		if (n.length>=4 && n.substr(0,4) === 'edit') {
			data[n] = a.value;
		}
	}
	
	jQuery.ajax({
		url : '/r/i/f/editmenu',
		cache : false,
		data : data,
		dataType : 'json'
				, success : function(data, textStatus, XMLHttpRequest) {
								editnavigation.createEditNavigation(data, context, XMLHttpRequest);
							}
	});
	return false;
};

/**
 * callback zum erstellen des edit buttons auf this
 */
editnavigation.createEditButton = function(){
	var a = jQuery('<a class="nav-edit"/>');
	a
	.hover( editnavigation.dummyFunktion , editnavigation.removeEditNavigation )
	//.click(createEditNavigation)
	.click(editnavigation.requestEditMenuContent)
	.css({
		'position' : 'absolute',
		'width': '16px',
		'height': '16px',
		'background': 'url(/r/i/images/icons/edit.gif) right top no-repeat',
		'margin': '0px',
		'padding': '0px',
		'z-index': 1999
	})
	.hide();
	jQuery(this)
	.addClass('editnavigationelement')
	.append(a)
	//.hover(editnavigation.showEditNavigation, editnavigation.dummyFunktion);
	.hover(editnavigation.showEditNavigation, editnavigation.hideEditNavigation);
};

editnavigation.initializeEditButtons = function() {
	if (jQuery.browser.msie && jQuery.browser.version && jQuery.browser.version.length>0 && jQuery.browser.version.charAt(0)<'7' ) {
		/* exclude old IE */
		return;
	}
	
	var areas = editnavigation.areas;
	for(var area=0; area<areas.length; area++) {
		var e = areas[area];
		// nun die edit buttons erstellen
		jQuery('#'+e+' *[edit]').attr('editarea', e).each(editnavigation.createEditButton);
	}
}

jQuery(editnavigation.initializeEditButtons);


editnavigation.ajax = function(name, options) {
	jQuery.ajax({
		type : 'POST',
		url : '/r/i/f/'+name,
		cache : false,
		data : options,
		dataType : 'script'
	});
	return false;
}


function editNavigationTitle(selectedElement) {
	var text = selectedElement.text();
	var text = prompt("Geben Sie einen neuen Titel an:", text);
	//var text = prompt("Insert a new Title:", text);
	if (text) {
		editnavigation.ajax('navigationEditTitle', { id : selectedElement.attr('edit'), value:text, url:document.location.pathname });
	}
}

function deleteNavigation(selectedElement) {
	if (confirm("Soll das Element " + selectedElement.text() + " wirklich gelöscht werden? Alle Unterelemente werden ebenfalls gelöscht!")) {
	//if (confirm("The Element " + selectedElement.text() + " should be really deleted? All Elements within will be delete too!")) {
		editnavigation.ajax('deleteNavigation', { id : selectedElement.attr('edit') });
	}
}

