
	var current_section = 0;
	var current_navigation = 0;
	var current_module = 0;
	
	// Das automatische Anzeigen der AJAX-ladegrafik
	
	Ajax.Responders.register({
		  onCreate: function(){
			$('ajax_loader').show();
		  }, 
		  onComplete: function(resp){
			  $('ajax_loader').hide();
			  show_message(resp.getHeader('level'), resp.getHeader('message'))
		  }
		});

/**
 * Zeigt für 2 Sekunden eine Nachricht an.
 * @param level Das Fehlerlevel: 0 = alles okee, 1 = Fehler, 2 = kritischer Fehler
 * @param message Die Nachricht die von AJAX-kommt
 * @return
 */
function show_message(level, message) {
	if (message !== null)
	{
		if (level == 0)
		{
			level_message = "<img src='incl/img/tick.png'>";
		}
		if (level == 1)
		{
			level_message = "<img src='incl/img/error.png'>";
		}
		if (level == 2)
		{
			level_message = "<img src='incl/img/exclamation.png'>";
		}
		$('status_message').innerHTML = level_message + " " + message;
		setTimeout("$('status_message').innerHTML = ''", 2000);
	}
}

/**
 * zeigt ein Hinweisfenster an, dessen Inhalt über AJAX geladen wird
 * @param load_page Die URL der AJAX-Seite die geladen werden soll
 * @param values = QueryParamString (z.B. section=test&id=20)
 * @param eval_string - der Funktionsaufruf, der bei onComplete ausgeführt werden soll. Muss als String übergeben werden
 * @return
 */
function notice_window(load_page, action, values, eval_string, parent) {
	$('notice_window').show();
	new Ajax.Updater('notice_window_content', '/ajax.php', {
		method: 'get',
		evalScripts: true,
		parameters: { ajax_page: load_page, action: action, params: values},
		onComplete: function() {Position.Center($('notice_window'), parent); eval(eval_string);}
	});		
}

 Position.GetWindowSize = function(w) {
     w = w ? w : window;
     var width = w.innerWidth || (w.document.documentElement.clientWidth || w.document.body.clientWidth);
     var height = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight);
     return [width, height]
}

 
 Position.Center = function(element, parent) {

     var w, h, pw, ph;
     var d = Element.getDimensions(element);
     w = d.width;
     h = d.height;
     Position.prepare();
     if (!parent) {
             var ws = Position.GetWindowSize();
             pw = ws[0];
             ph = ws[1];
     } else {
    	 	poff = $(parent).cumulativeOffset();
            pw = ws[0];
            ph = poff[1];
     }
     element.style.top = (ph/2) - (h/2) + "px";
     element.style.left = (pw/2) - (w/2) + "px";
}

/**
 * Öffnet ein neues Fenster, in dem die Admin-Oberfläche eines Moduls geöffnet wird
 * @return
 * @todo Parameter festelegen usw...
 */
function admin_window(url, frame) {
	 if (frame == null){
		 frame = true;
		 }
	 fenster=window.open(url+'&frame='+frame, "_blank", "width=930,height=699,status=yes,scrollbars=yes,resizable=yes");
	 fenster.focus();
}


/**
 * Erzeugt aus den Elementen einer UL-Liste drag&drob-bare Sortables
 * Wird aufgerufen in templates/admin/navigation/sections.tpl
 */
function admin_navigation_section_make_sortable() {
	Sortable.create("sections", {
			tag: 'div',
			constraint: 'horizontal',
			onUpdate: function() {
				params = Sortable.serialize("sections");
				params += "&ajax_page=cNavigation&action=save_sections";
				new Ajax.Updater('sections', '/ajax.php', {
					method: 'get',
					evalScripts: true,
					parameters: params,
					onComplete: function() {admin_navigation_section_make_sortable(); admin_navigation_select_section(current_section, current_navigation);}
				});
			}
		});
}

/**
 * Erzeugt aus den Elementen einer UL-Liste drag&drob-bare Sortables
 * Wird aufgerufen in templates/admin/navigation/ajax_navigations.tpl
 */
function admin_navigation_navigation_make_sortable(id) {
	Sortable.create("navigations_"+id, {
			tag: 'div',
			constraint: 'vertical',
			onUpdate: function() {
				params = Sortable.serialize("navigations_"+id);
				params += "&ajax_page=cNavigation&action=save_navigations&section="+id;
				new Ajax.Request('/ajax.php', {
					method: 'get',
					evalScripts: true,
					parameters:  params
				});
			}
		});
}

/**
 * Im Administrationsbereich wird eine Section ausgewählt.
 * Die Dazugehörigen Navigations werden in den dafür vorgesehenenen DIV-Container per AJAX geladen.
 * @param id Die ID der ausgewählten Section
 */
function admin_navigation_select_section(id, nav_id) {
	current_section = id;
	current_navigation = nav_id;
	hide_all_sections();
	$('section_'+id).addClassName('section_active');
	$('sec_l_'+id).show();
	$('sec_r_'+id).show();
	$('navigations_'+id).show();
	
	if (document.getElementById('toolbar_section_'+id))
	{
		$('toolbar_section_'+id).show();
	}
	
	/*elements = $$('section');
	elements.each(function(element, index) {								// Alle Elemente Iterieren...
		if (element.id != $('section_'+id).id) element.removeClassName('section_active'); 
		}
	)*/

	//Event.stopObserving($('section_'+id), 'mouseleave');
	admin_navigation_navigation_make_sortable(id);
	
	new Ajax.Updater('region_wrap', '/ajax.php', {
		method: 'get',
		evalScripts: true,
		parameters: { ajax_page: 'cModule_Assignment', current_section: id, section: id, current_navigation: nav_id},
		onComplete: function() {admin_module_assignment_dragdrop(); }
	});
}

 
 function navigation_select_section(id, nav_id) {
		current_section = id;
		current_navigation = nav_id;
		hide_all_sections(1);
		
		$('section_'+id).addClassName('section_active');
		$('sec_l_'+id).show();
		$('sec_r_'+id).show();
		$('navigations_'+id).show();
		
		if (document.getElementById('toolbar_section_'+id))
		{
			$('toolbar_section_'+id).show();
		}
		
		/*elements = $$('section');
		elements.each(function(element, index) {								// Alle Elemente Iterieren...
			if (element.id != $('section_'+id).id) element.removeClassName('section_active'); 
			}
		)*/

		//Event.stopObserving($('section_'+id), 'mouseleave');
		admin_navigation_navigation_make_sortable(id);
		
		new Ajax.Updater('region_wrap', '/ajax.php', {
			method: 'get',
			evalScripts: true,
			parameters: { ajax_page: 'cModule_Assignment', current_section: id, section: id, current_navigation: nav_id},
			onComplete: function() {admin_module_assignment_dragdrop(); }
		});
	}


/**
 * Eine Section speichern
 */
function admin_save_section(id, event) {
	if (!event || event.keyCode == 13)
	{
		var formhash = new Hash($('admin_section_form').serialize(true));   	// Neuen Hash aus allen Formularelementen erstellen ==> http://www.prototypejs.org/api/hash
		formhash.set('ajax_page', 'cNavigation');
		formhash.set('action', 'save_section');
		formhash.set('current_section', id);
		formhash.set('current_navigation', current_navigation);
		new Ajax.Updater('sections', '/ajax.php', {
			method: 'get',
			parameters: formhash.toQueryString(),
			onComplete: function() {admin_navigation_section_make_sortable(); $('notice_window').hide();}
		});
	}
}


/*
 * checkt ob der Input numerisch ist...
 */
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }


/**
 * versteckt alle sections...
 * @return
 */
function hide_all_sections(dest){
	$$('div.section_active').invoke('removeClassName','section_active');

	if (dest) admin_navigation_section_make_sortable();
	
	elements = Sortable.sequence($('sections'));
	elements.each(
		function(sec_id) {
			if(IsNumeric(sec_id))
			{
				$('sec_l_'+sec_id).hide();
				$('sec_r_'+sec_id).hide();
				$('navigations_'+sec_id).hide();
				if (document.getElementById('toolbar_section_'+sec_id))
				{
					$('toolbar_section_'+sec_id).hide();
				}
				//toggle_nav(sec_id);
			}
		}
	)
	
	if (dest) Sortable.destroy($('sections'));
}

/**
 * Im Admin-Bereich wird ein Navigationspunkt ausgewählt
 * @param nav_id Die ID der ausgewählten Navigation
 * @param sec_id Die ID der ausgewählten Section
 */
function admin_navigation_select_navigation(nav_id, sec_id) {
	current_section = sec_id;
	current_navigation = nav_id;
	elements = Sortable.sequence($('navigations_'+sec_id));
	elements.each(
		function(id) {
			//$('navigation_'+id).style.backgroundColor = "#2e3436";
			$('toolbar_navigation_'+id).hide();
		}
	)
	//$('navigation_'+nav_id).style.backgroundColor = "#FABB00";
	$('toolbar_navigation_'+nav_id).show();
	
	new Ajax.Updater('region_wrap', '/ajax.php', {
		method: 'get',
		parameters: { ajax_page: 'cModule_Assignment', current_section: sec_id, current_navigation: nav_id},
		onComplete: function() {admin_module_assignment_dragdrop();}
	});	
}

 function navigation_select_navigation(nav_id, sec_id) {
		current_section = sec_id;
		current_navigation = nav_id;
		//$('navigation_'+nav_id).style.backgroundColor = "#FABB00";
		
		//$('toolbar_navigation_'+nav_id).show();
		
		new Ajax.Updater('region_wrap', '/ajax.php', {
			method: 'get',
            evalScripts: true,
			parameters: { ajax_page: 'cModule_Assignment', current_section: sec_id, current_navigation: nav_id},
			onComplete: function() {admin_module_assignment_dragdrop();}
		});	
	}

 
/**
 * Eine neue Section wird erstellt
 */

function admin_new_section() {
	new Ajax.Updater('sections', '/ajax.php', {
		method: 'get',
		parameters: {ajax_page: 'cNavigation', action: 'new_section'},
		onComplete: function() 
		{
			admin_navigation_section_make_sortable();
		}
	});
}

/**
 * Section löschen
 */
function section_delete(id) {
	if (confirm("Soll das Element wirkich gelöscht werden?")) {
		new Ajax.Updater('sections', '/ajax.php', {
			method: 'get',
			parameters: { ajax_page: 'cNavigation', action: 'delete_section', admin_navigation_section: id},
			onComplete: function() {admin_navigation_section_make_sortable();}
		});
	}
}

 
 /**
  * Eine neue Navigation wird erstellt
  */
 function admin_new_navigation() {
	var section = $('admin_section_id').value;
 	new Ajax.Updater('admin_navigation_navigation_container', '/ajax.php', {
 		method: 'get',
 		parameters: { ajax_page: 'cNavigation', action: 'new_navigation', admin_navigation_section: section},
 		onComplete: function() {admin_navigation_navigation_make_sortable();}
 	});
 }

 /**
  * Eine Navigation speichern
  */
 function admin_save_navigation(id, event) {
	if (!event || event.keyCode == 13)
	{
	 	var formhash = new Hash($('admin_navigation_form').serialize(true));   	// Neuen Hash aus allen Formularelementen erstellen ==> http://www.prototypejs.org/api/hash
	 	formhash.set('ajax_page', 'cNavigation');
	 	formhash.set('section', current_section);
	 	formhash.set('action', 'save_navigation');
	 	formhash.set('admin_navigation_navigation', id);
	 	new Ajax.Updater('sections', '/ajax.php', {
	 		method: 'get',
	 		parameters: formhash.toQueryString(),
            evalScripts: true,
	 		onComplete: function() {admin_navigation_section_make_sortable(); admin_navigation_select_section(current_section, current_navigation); $('notice_window').hide();}
	 	});
	}
 }
 
  
  /**
   * Navigation löschen
   */
  function navigation_delete(id) {
  	if (confirm("Soll das Element wirkich gelöscht werden?")) {
  	 	var section = current_section;
  		new Ajax.Updater('sections', '/ajax.php', {
  			method: 'get',
  			parameters: { ajax_page: 'cNavigation', action: 'delete_navigation', admin_navigation_navigation: id, admin_navigation_section: section},
            evalScripts: true,
  			onComplete: function() {admin_navigation_navigation_make_sortable();}
  		});
  	}
  }
   
   /**
    * Eine neuer Benutzertypus
    */
   function admin_new_type() {
    new Ajax.Updater('admin_types_container', '/ajax.php', {
   		method: 'get',
   		parameters: { ajax_page: 'cTypes', action: 'new_type'}
   		});
		elements = $('admin_types').childElements();
		x=elements.last().id.search('type_');
		last=(elements.last().id.substr(x+5));
   	new Ajax.Updater('admin_type_info', '/ajax.php', {
   		method: 'get',
   		parameters: { ajax_page: 'cTypes', action: 'get_type', admin_show_type: last}
   	});
   }

   /**
    * Im Administrationsbereich wird ein Typ ausgewählt und farbig markiert.
    * Die dazugehörigen Daten werden in den dafür vorgesehenenen DIV-Container per AJAX/Prototype geladen.
    * @param id Die ID der ausgewählten Benutzergruppe
    */
   function admin_type_select(id) {
    	/*elements = $('admin_types').childElements();
    	elements.each(
    		function(id) {
    			$(id).style.backgroundColor = "#eeeeec";
    		}
    	) 
    	$('admin_type_'+id).style.backgroundColor = "#FFBB00";*/
   	new Ajax.Updater('admin_type_info', '/ajax.php', {
   		method: 'get',
   		parameters: { ajax_page: 'cTypes', action: 'get_type', admin_show_type: id}
   	});
   }
    
    /** 
     * Löschen einer Benutzergruppe
     */
    function admin_type_delete(id) {
    	elements = $('admin_types').childElements();
    	x=elements.first().id.search('type_');
    	first=(elements[0].id.substr(x+5));
    	if (confirm("Soll die Benutzergruppe wirkich gelöscht werden?")) {
    		new Ajax.Updater('admin_types_container', '/ajax.php', {
    			method: 'get',
    			parameters: { ajax_page: 'cTypes', action: 'delete_type', admin_type: id, adm_adm: first}
    		});
    	   	new Ajax.Updater('admin_type_info', '/ajax.php', {
    	   		method: 'get',
    	   		parameters: { ajax_page: 'cTypes', action: 'get_type', admin_show_type: first}
    	   	});
    	}
    }
    
    /**
     * Speichern eines Benutzertypus/-Gruppe
     */
    function admin_type_save(id) {
    	var formhash = new Hash($('admin_type_form').serialize(true));   	// Neuen Hash aus allen Formularelementen erstellen ==> http://www.prototypejs.org/api/hash
    	formhash.set('ajax_page', 'cTypes');
    	formhash.set('action', 'save_type');
    	formhash.set('admin_type', id);
    	new Ajax.Updater('admin_types_container', '/ajax.php', {
    		method: 'get',
    		parameters: formhash.toQueryString()
    	});
    }
     
    /**
     * Ein Modul wurde verschoben und wird jetzt gespeichert
     * @param das draggable objekt
     * @param das droppable objekt
     */   
    function admin_module_assignment_assign(current_navigation, module, region) {
    	changed = 0;
    	i = 0;
    	elements = region.childElements();										// Alle Elemente im Ziel-Container aufsammeln
    	elements.each(function(element, index) {								// Alle Elemente Iterieren...
    		if (element.id != "")
    		{
    			i++;
	    		if (element.id == module.id)										// Ist das Modul das gleiche wie in der Iterierung?
	    			changed = i;												// Dann in Changed speichern
	    		}
    		}
    	)
    	new Ajax.Updater('region_wrap', '/ajax.php', {
    		method: 'get',
    		evalScripts: true,
    		parameters: { ajax_page: 'cModule_Assignment', action: 'add_assignment', current_navigation: current_navigation, region_id: region.id, module_id: module.id, order: changed},
    		onComplete: function(resp) {admin_module_assignment_dragdrop();}
    	});	
    }
    
    /**
     * Speichert die Sichtbarkeiten (auch die zeitlich gesteuerte Sichtbarkeit) eines Moduls ab
     * @author Valentin Sauer
     * @param module_id
     * @param navigation_id
     * @param region_id
     * @param frontend_id
     * @param ds_id
     * @param value
     * @return
     */
    function admin_save_mapping(mapping_id) {
	 	var formhash = new Hash($('admin_module_form').serialize(true));   	// Neuen Hash aus allen Formularelementen erstellen ==> http://www.prototypejs.org/api/hash
	 	var section = current_section;
	 	formhash.set('ajax_page', 'cmodule_assignment');
	 	formhash.set('action', 'save_mapping');
	 	formhash.set('mapping_id', mapping_id);
	 	formhash.set('current_navigation', current_navigation);
	 	new Ajax.Updater('mapping_'+mapping_id, '/ajax.php', {
	 		method: 'get',
	 		parameters: formhash.toQueryString(),
	 		onComplete: function() {$('notice_window').hide(); admin_module_assignment_dragdrop();}
	 	});
    }
    
    /**
     * Aktualisiert ein einzelnes Modul durch AJAX
     * @param module_id
     * @param navigation_id
     * @param region_id
     * @param frontend_id
     * @param ds_id
     * @param value
     * @return
     */
    function refresh_module(mapping_id){
    	new Ajax.Updater('mapping_'+mapping_id, '/ajax.php', {
    		method: 'get',
    		evalScripts: true,
    		parameters: { ajax_page: 'cmodule_assignment', action: 'refresh_module', mapping_id: mapping_id},
    		onComplete: function() {$('notice_window').hide(); admin_module_assignment_dragdrop();}
    		})
    } 
    
    
    /**
     * erstellt die Draggables und Droppables der Module
    */
    function admin_module_assignment_dragdrop() {
    	 show_toolbars_oh();
    	 /*
    	draggables = new Array('center_module', 'rightbar_module', 'footer_module', 'selection_element');

 	Droppables.add('center', {
    		accept: draggables,
        	hoverclass: 'region_hover',
        	onDrop: function(module, region) {
			admin_module_assignment_assign(current_navigation, module, region);
    			}
    	});
  
    	Sortable.create("center", 
    			{
					tag:'div',
					only:'center_module',
					handle: 'toolbar_move'
    			});

    	Droppables.add('rightbar', {
    		accept: draggables,
        	hoverclass: 'region_hover',
        	onDrop: function(module, region) {
			admin_module_assignment_assign(current_navigation, module, region);
    			}
    	});
    	
    	Sortable.create("rightbar", 
    			{
					tag:'div',
					only:'rightbar_module',
					handle: 'toolbar_move'
    			});

    	Droppables.add('footer', {
    		accept: draggables,
        	hoverclass: 'region_hover',
        	onDrop: function(module, region) {
			admin_module_assignment_assign(current_navigation, module, region);
    			}
    	});
    	
    	Sortable.create("footer", 
    			{
					tag:'div',
					only:'footer_module',
					handle: 'toolbar_move'
    			});
    			
    	
    	elements = $('toolbar_modules').childElements();
    	elements.each(
        		function(element) {
        			new Draggable(element, { revert: true });
        		}
        	)
        	     	
        elements = $('center').childElements();
    	elements.each(
        		function(element) {
        			if (element.className  != 'center_module_inherit' && element.className  != 'module_add_header')
        			{
        				new Draggable(element, { revert: true, handle: 'toolbar_move'});
        			}
        		}
        	)
        	  
        elements = $('rightbar').childElements();
    	elements.each(
        		function(element) {
        			if (element.className  != 'rightbar_module_inherit' && element.className  != 'module_add_header')
        			{
        				new Draggable(element, { revert: true, handle: 'toolbar_move'});
        			}
        		}
        	)
        
        elements = $('footer').childElements();
    	elements.each(
        		function(element) {
        			if (element.className  != 'footer_module_inherit' && element.className  != 'module_add_header')
        			{
        				new Draggable(element, { revert: true, handle: 'toolbar_move'});
        			}
        		}
        	)
    	  */
    }
 
    
    
    /**
     * Löscht das Mapping eines gemappten Modul
     */
    function module_delete(mapping_id){
    	new Ajax.Updater('region_wrap', '/ajax.php', {
    		method: 'get',
    		parameters: { ajax_page: 'cModule_Assignment', action: 'delete_assignment', current_navigation: current_navigation, mapping_id: mapping_id},
    		onComplete: function() {admin_module_assignment_dragdrop();}
    	});	
    }
    
    /**
     * schaltet zwischen tabs hin und her...
     * Der Container, der alle Tabs enthält muss tab_wrap heißen...
     * @param tab
     * @return
     */
    function switch_tab(tab){
      switch_com_tab(tab);
    }
    
    /**
     * schaltet zwischen tabs hin und her...
     * Der Container, der alle Tabs enthält muss tab_wrap heißen...
     * @param tab
     * @return
     * @autor Stefan Volz
     */
    function switch_com_tab(tab){
    	elements = $('tab_wrap').childElements();										// Alle Elemente im Ziel-Container aufsammeln
    	elements.each(function(element) {										// Alle Elemente Iterieren...
    			element.className = 'tab';
    			$(element.id+'_content').style.display = 'none';
    		}
    	)
    	tab.className = 'tab_aktiv';
    	$(tab.id+'_content').style.display = 'block';
    }
    
    /**
     * konvertiert eine RegionID zu text
     */
    function getRegionById(region_id){
    	   if (region_id == 1)
    	   {
    		   region = 'ce';
    	   }
    	   else if (region_id == 2)
    	   {
    		   region = 'rb';  
    	   }
    	   else if (region_id == 3)
    	   {
    		   region = 'fo'; 
    	   }
    	return region;   
    	}
  
    
 /* ------------------------ SUBPAGES -------------------------------------------------- */
    
    /**
     * Lässt eine Subpage aufklappen
     * @author Valentin Sauer
     */
    function subpage_open_frontend(id){
    	elements = $('subpage_frontends_wrap').childElements();
    	elements.each(function(element) {										// Alle Elemente Iterieren...
    		$('sections_'+element.id).hide();
		})
    	Effect.BlindDown('sections_frontend_'+id, {duration: 0.3});
    }
    
    /**
     * Lässt eine Section aufklappen
     * @author Valentin Sauer
     * @param id
     * @param frontend_id
     * @return
     */
    function subpage_open_section(id, frontend_id){
    	elements = $('sections_frontend_'+frontend_id).childElements();
    	elements.each(function(element) {										// Alle Elemente Iterieren...
    		if (element.id.substr(0,8) == "section_")
    		{
    			$('navigations_section_'+element.id.substr(8)).hide();
    		}
		})
    	Effect.BlindDown('navigations_section_'+id, {duration: 0.3});
    }
   
/* ------------------------------------Overhead Navigation --------------------------------------- */
     var current_frontend = 0;
     
     function admin_overhead_save(mod) {
    	 var formhash = new Hash($('admin_overhead_form').serialize(true));   	// Neuen Hash aus allen Formularelementen erstellen ==> http://www.prototypejs.org/api/hash
    	 if (mod == 0) {formhash.set('ovhn_id', 0);}
    	 formhash.set('ajax_page', 'coverhead');
    	 formhash.set('action', 'save_overhead');
    	 new Ajax.Updater('admin_overhead_navs_container', '/ajax.php', {
			method: 'get',
			parameters: formhash.toQueryString(),
			onComplete: function() { admin_overhead_make_sortable(); }
			}
    	 );
     }
  	
     function admin_overhead_make_sortable() {
    		Sortable.create("admin_oh_navs", {
    				constraint: 'horizontal',
    				onUpdate: function() {
    					params = Sortable.serialize("admin_oh_navs");
    					params += "&ajax_page=coverhead&action=save_overheads&frontend_id="+current_frontend;
    					new Ajax.Updater('admin_overhead_navs_container', '/ajax.php', {
    						method: 'get',
    						parameters: params,
    						onComplete: function() {admin_overhead_make_sortable();}
    					});
    				}
    			});
     }
     
     function admin_overhead_select_nav (fe_id, id) {
    	 	current_frontend = fe_id;
    		elements = $('admin_oh_navs').childElements();
    		elements.each(
    			function(id) {
    				$(id).style.backgroundColor = "#eeeeec";
    			}
    		) 
    		$('admin_ohnav_'+id).style.backgroundColor = "#FFBB00";
    		new Ajax.Updater('overhead_edit', '/ajax.php', {
    			method: 'get',
    			evalScripts: true,
    			parameters: { ajax_page: 'coverhead', action: 'get_overhead', admin_show_ohnav: id, frontend_id: fe_id}
    		});
    	}
    	
     function admin_overhead_delete_nav(id) {
     	elements = $('admin_oh_navs').childElements();
     	if (confirm("Soll der Eintrag wirkich gelöscht werden?")) {
     		new Ajax.Updater('admin_overhead_navs_container', '/ajax.php', {
     			method: 'get',
     			parameters: { ajax_page: 'coverhead', action: 'del_overhead', admin_ohn: id, frontend_id: current_frontend},
     			onComplete: function () {admin_overhead_make_sortable();}
     		});
     	}
     }
     
     
     
/**
 * Setzt ein Input Feld auf
 */
function resetField(fieldname) {
	$(fieldname).value='';
}

 /* ------------------------ VERSCHIEDENE AUTOCOMPLETER ------------------------------- */
   
  /**
   * Erstellt das Autocompleter-Objekt für die Suche nach Navigation
   * @author Valentin Sauer
   */  
 function autocompleter_navigations()
 {
	 new Ajax.Autocompleter("aci_navigation", "ac_navigation", "/ajax.php", {
		 paramName: 'searchstring',
		 parameters: 'ajax_page=cnavigation&action=get_nav_autocomplete',
		 afterUpdateElement: function getACSelId(text, element) {
		 	$('nav_id').value=element.id;
	 	}
	 }
	 );
}

 /**
  * Erstellt das Autocompleter-Objekt für die Suche nach Contents
  * @author Valentin Sauer
  */
function autocompleter_contents() {
	new Ajax.Autocompleter("search_titel", "titel_dropdown", "/ajax.php", {
			paramName: 'searchstring',
			parameters: 'ajax_page=content_mod&action=get_contents',
			afterUpdateElement: function getACSelId(text, element) {
				$('selection_id').value=element.id;
			}
	 }
);

}

/**
 * Erstellt das Autocompleter-Objekt für die Suche nach Contents
 * @author Frank Wehrsenger
 */
function autocompleter_dschools() {
	new Ajax.Autocompleter("aci_dschool", "ac_dschool", "/ajax.php", {
			parameters: 'ajax_page=cdrivingschools&action=get_acsdscorp',
			afterUpdateElement :  function getACSelId(text, li) {
									$('ds_id').value=li.id;
								  }
			}
	);
 }


/**
 * Erstellt das Autocompleter-Objekt für die Suche nach Contents
 * @author Nick Steinwand
 */
function autocompleter_global(dsid_field, search_field, result_box) {
	new Ajax.Autocompleter(search_field, result_box, "/ajax.php", {
			parameters: 'ajax_page=cdrivingschools&action=get_acsdscorp',
			afterUpdateElement :  function getACSelId(text, li) {
									$(dsid_field).value=li.id;
									j('#'+dsid_field).trigger('change');
								  }
			}
	);
 }

/**
 * Macht je nach Angabe in "val" einen script.aculo.us 
 * BlindUp oder BlindDown Effekt auf ein angegebenes DIV.
 * @author Nick Steinwand
 */
function BlindUpDown (val, box) {
	if (val == "d") {
		new Effect.BlindDown(box, {duration: 0.3});
	} else {
		new Effect.BlindUp(box, {duration: 0.3});
	}
}

/**
 * Speichert einen Wert zu einem Mapping
 * @param mapping_id
 * @param value
 * @return
 */
function assign_value(mapping_id, value){
 	new Ajax.Updater('mapping_'+mapping_id, '/ajax.php', {
 	method: 'get',
 	parameters: { ajax_page: 'cmodule_assignment', action: 'assign_value', mapping_id: mapping_id, value: value},
 	onComplete: function() {$('notice_window').hide(); admin_module_assignment_dragdrop();}
 	})
 }
 
 /**
  * Leert sämtliche Formularelemente des Formulars 'id' mit Ausnahme von Button/Submit/Reset-Elementen
  * @param id
  * @return
  */
 function reset_form(id){
		var arr = $(id).getElements();
		arr.each(function(item) {
			if (item.type!='button' && item.type!='submit' && item.type != 'reset' && item.type != 'hidden') 
				if (item.type=='checkbox') item.checked=false; 
				else item.value='';
	    });
		if (tinyMCE) tinyMCE.activeEditor.setContent('');
	}
 
 /**
  * liefert eine Zufallzahl zwischen min und max
  * @param min
  * @param max
  * @return
  */
 function GetRandom( min, max ) {
         if( min > max ) {
                 return( -1 );
         }
         if( min == max ) {
                 return( min );
         }
         return( min + parseInt( Math.random() * ( max-min+1 ) ) );
 }

  function add_openingtimes(otid) {
	  var timId = 0;
	  var timArr = $$('.ot');

	  if (timArr.length > 0) { 
		  var tempVal = timArr.last().name.split('_');
		  timId = ++tempVal[2];
	  }
	  
	  $('openingtimes_add'+otid).innerHTML+=('<span style="padding: 5px 4px 5px 3px; display: inline-block; background-color: #f0d24f;"><select class="ot" name="ot'+otid+'add_day_'+timId+'" style="margin-right: 4px;"><option value="1">Montag</option><option value="2">Dienstag</option><option value="3">Mittwoch</option><option value="4">Donnerstag</option><option value="5">Freitag</option><option value="6">Samstag</option></select>&nbsp;&nbsp;Von: <input type="text" name="ot'+otid+'add_timefrom_'+timId+'" size="6" maxlength="8" /> &nbsp;&nbsp;Bis: <input type="text" name="ot'+otid+'add_timetill_'+timId+'" size="6 maxlength="8" /></span><br />');
  }
  
  function selectAll(selectBox,selectAll) {
		// have we been passed an ID
		if (typeof selectBox == "string") {
			selectBox = document.getElementById(selectBox);
		}
		// is the select box a multiple select box?
		if (selectBox.type == "select-multiple") {
			for (var i = 0; i < selectBox.options.length; i++) {
				selectBox.options[i].selected = selectAll;
			}
		}
	}

function hideRBmodulesButFirst() {
	  Cookie.init({name: 'academy-rbmod-prefs', expires: 90, path:"/"});
	  var mid=null;
	  var lastEl = null;

	  $$('.modules_rb').each(function(el){
		  mid = el.id.substr(12);
		  lastEl = el;
		  if (Cookie.getData(mid)==true) { 
			  el.show();
			  $('module_head_img_'+mid).src="/incl/img/layoutn/arrow_up2.png";;
		  }
	  	});

	  var fmod = $$('.modules_rb').first(); fmod.show();
	  //$('module_head_img_'+fmod.id.substr(12)).src="/incl/img/layoutn/arrow_up2.png";
	  //$('module_head_img_'+fmod.id.substr(12)).src="/incl/img/layoutn/arrow_up2.png";
  }

function toggleModule(modId) {
	  Cookie.init({name: 'academy-rbmod-prefs', expires: 90, path:"/"});
	  
	  var mod = $('module_body_'+modId);
	  var modArrImg = $('module_head_img_'+modId);
	  
	  if (mod.style.display != 'none') {
		  Effect.BlindUp(mod, {duration: 0.6 });
		  modArrImg.src="/incl/img/layoutn/arrow_down2.png";
		  Cookie.removeData(modId);
	  }
	  else {
		  Effect.BlindDown(mod, {duration: 0.6 });
		  modArrImg.src="/incl/img/layoutn/arrow_up2.png";
		  Cookie.setData(modId, true);
	  }
  }
  
  mapping_edit = function (order_num, mod_id, reg_id) {
	  $('region_wrap_wrap').style.height = $('region_wrap').offsetHeight+'px';
		new Ajax.Updater('region_wrap', '/ajax.php', {
			method: 'get',
			evalScripts: true,
			parameters: { ajax_page: 'cmodule_assignment', action: 'add_assignment', current_navigation: current_navigation, order: order_num, region_id: reg_id, module_id: mod_id},
			onComplete: function() {
				if (mod_id==1 || mod_id==72) { notice_window('content_mod', 'get_content', 'mapping_id='+$('last_map').value); }
				else if (mod_id==69) { notice_window('cs_video_mod', 'insert_video_form', 'mapping_id='+$('last_map').value); }
				else if (mod_id==70) { notice_window('cs_picture_mod', 'insert_picture_form', 'mapping_id='+$('last_map').value); }
				else if (mod_id==71) { notice_window('cs_headline_mod', 'insert_headline_form', 'mapping_id='+$('last_map').value); }
				else if (mod_id==73) { }
				else if (mod_id==74) { notice_window('fileupload_mod', 'upload_form', 'mapping_id='+$('last_map').value); }
				admin_module_assignment_dragdrop();
				}
		});
		
	}
  
  module_sort = function (map_id, type) {
	  	$('region_wrap_wrap').style.height = $('region_wrap').offsetHeight+'px'; 
		new Ajax.Updater('region_wrap', '/ajax.php', {
			method: 'get',
			evalScripts: false,
			parameters: { ajax_page: 'cmodule_assignment', action: 'module_sort', current_navigation: current_navigation, mapping_id: map_id, order_change: type},
			onComplete: function() {admin_module_assignment_dragdrop();}
		});
  }
  
  
  /**
   * Toggelt zwischen den beiden angegebenen Integern umher und setzt sie als z-index.
   */
  function toggleZIndex(obj, int1, int2) {
	  if ($(obj).style.zIndex == int1) {
		  $(obj).style.zIndex = int2;
	  } else {
		  $(obj).style.zIndex = int1;
	  }
	  //alert ($(obj).style.zIndex)
  }
   
   /*show_toolbar = function(map_id) {

	   var map = $('module_header_'+map_id);
	   var door = $('module_toolbar_'+map_id);
	   if (map != null) {
	   
	    map.observe('mouseenter', function(event) {
	      door.show();
	      toggleZIndex(map, 100, 20);
	      }
	    );
		map.observe('mouseleave', function(event) {
	      door.hide();
	      toggleZIndex(map, 100, 20);
	      }
	    );
	    
	   }
	}*/
   
   show_toolbars_oh = function() {
	   
	  $$('.module_header').each(function(el){
		  map_id = el.id.substr(14);
		  
		  if (map_id != null) {
		   
		   var map = el;
		   var door = $('module_toolbar_'+map_id);
		   
		   if (door != null) {
			
		    map.observe('mouseenter', function(event) {
		      door.show();
		      j('.center_module').css("zIndex","50");
		      var parent_box = j(map).parent().attr("id");
		      j('#'+parent_box).css("zIndex","100");
		      toggleZIndex(map, 301, 20);
		      }
		    );
		    
		    map.observe('mouseleave', function(event) {
		      door.hide();
		      j('.center_module').css("zIndex","100");
		      toggleZIndex(map, 20, 301);
		      }
		    );
		    
		   }
		  }
		  
	  	});
	}
   
   toggle_nav = function(sec_id) {
	   var sec = $('section_'+sec_id);
	   var door = $('navigations_'+sec_id);
	   var footl = $('sec_l_'+sec_id);
	   var footr = $('sec_r_'+sec_id);
	   
	    sec.observe('mouseenter', function(event) {
	      door.show(); 
	      if (sec_id == current_section) { 
	      	elements = $$('sec_header_border');
	    	/*elements.each(function(element, index) {								// Alle Elemente Iterieren...
	    		if (element.id != footl.id && element.id != footr.id ) element.hide();
	    		}
	    	)*/
	        footl.show(); footr.show(); 
	      }
	    });
	    sec.observe('mouseleave', function(event) {
	      door.hide(); 
	      if (sec_id != current_section) { footl.hide(); footr.hide(); } 
	    }); 
	    
	}

   
   
   
   function slideToggle(id) {
		if (j('#'+id).css("display") == "block") {
			j('#'+id).slideUp();
		} else {
			j('#'+id).slideDown();
		}
	}   
   
   
   
   
	function module_deleteconfirm(mapping_id) {
		del_confirm = confirm("Wollen Sie dieses Modul wirklich löschen?");
		if (del_confirm == true) {
			module_delete(mapping_id);
		}
	}

	
	
	
	
	
	
	

