/*
 *
 * Copyright (c) 2006 Sam Collett (http://www.texotela.co.uk)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Addepted to select an option by Mathias Bank (http://www.mathias-bank.de)
 */
 
/*
 * Adds (single/multiple) options to a select box (or series of select boxes)
 *
 * @name     addOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @example  $("#myselect").addOption("Value", "Text"); // add single value (will be selected)
 *           $("#myselect").addOption("Value 2", "Text 2", false); // add single value (won't be selected)
 *           $("#myselect").addOption({"foo":"bar","bar":"baz"}, false); // add multiple values, but don't select
 *
 */
jQuery.fn.addOption = function()
{
	if(arguments.length == 0) return this;
	// select option when added? default is true
	var selectOption = true;
	// multiple items
	var multiple = false;
	if(typeof arguments[0] == "object")
	{
		multiple = true;
		var items = arguments[0];
	}
	if(arguments.length >= 2)
	{
		if(typeof arguments[1] == "boolean") selectOption = arguments[1];
		else if(typeof arguments[2] == "boolean") selectOption = arguments[2];
		if(!multiple)
		{
			var value = arguments[0];
			var text = arguments[1];
		}
	}
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			if(multiple)
			{
				for(var v in items)
				{
					jQuery(this).addOption(v, items[v], selectOption);
				}
			}
			else
			{
				var option = document.createElement("option");
				option.value = value;
				option.text = text;
				this.options.add(option);
			}
			if(selectOption)
			{
				this.options[this.options.length-1].selected = true;
			}
		}
	)
	return this;
}

/*
 * Removes an option (by value or index) from a select box (or series of select boxes)
 *
 * @name     removeOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @example  jQuery("#myselect").removeOption("Value"); // remove by value
 *           jQuery("#myselect").removeOption(0); // remove by index
 *
 */
jQuery.fn.removeOption = function()
{
	if(arguments.length == 0) return this;
	if(typeof arguments[0] == "string") var value = arguments[0];
	else if(typeof arguments[0] == "number") var index = arguments[0];
	else return this;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			if(value)
			{
				var optionsLength = this.options.length;
				for(var i=optionsLength-1; i>=0; i--)
				{
					if(this.options[i].value == value)
					{
						this.options[i] = null;
					}
				}
			}
			else
			{
				this.remove(index);
			}
		}
	)
	return this;
}

/*
 * Sort options (ascending or descending) in a select box (or series of select boxes)
 *
 * @name     sortOptions
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @param    ascending   Sort ascending (true/undefined), or descending (false)
 * @example  // ascending
 *           jQuery("#myselect").sortOptions(); // or jQuery("#myselect").sortOptions(true);
 *           // descending
 *           jQuery("#myselect").sortOptions(false);
 *
 */
jQuery.fn.sortOptions = function(ascending)
{
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			// default sort is ascending if parameter is undefined
			ascending = typeof ascending == "undefined" ? true : ascending;
			// get number of options
			var optionsLength = this.options.length;
			// create an array for sorting
			var sortArray = [];
			// loop through options, adding to sort array
			for(var i = 0; i<optionsLength; i++)
			{
				sortArray[i] =
				{
					value: this.options[i].value,
					text: this.options[i].text
				};
			}
			// sort items in array
			sortArray.sort(
				function(option1, option2)
				{
					// option text is made lowercase for case insensitive sorting
					option1text = option1.text.toLowerCase();
					option2text = option2.text.toLowerCase();
					// if options are the same, no sorting is needed
					if(option1text == option2text) return 0;
					if(ascending)
					{
						return option1text < option2text ? -1 : 1;
					}
					else
					{
						return option1text > option2text ? -1 : 1;
					}
				}
			);
			// change the options to match the sort array
			for(var i = 0; i<optionsLength; i++)
			{
				this.options[i].text = sortArray[i].text;
				this.options[i].value = sortArray[i].value;
			}
		}
	)
	return this;
}

/*
 * Selects an option by value
 *
 * @name     selectOptions
 * @author   Mathias Bank (http://www.mathias-bank.de)
 * @param    value specifies, which options should be selected
 * @example  jQuery("#myselect").selectOptions("val1");
 *
 */
jQuery.fn.selectOptions = function(value) {
	this.each(
		function()	{
			if(this.nodeName.toLowerCase() != "select") return;
			
			// get number of options
			var optionsLength = this.options.length;
			
			
			for(var i = 0; i<optionsLength; i++) {
				if (this.options[i].value == value) {
					this.options[i].selected = true;
				};
			}
		}
	)
	return this;
}





/*
* Print Element Plugin 1.0
*
* Copyright (c) 2009 Erik Zaadi
*
* Inspired by PrintArea (http://plugins.jquery.com/project/PrintArea) and
* http://stackoverflow.com/questions/472951/how-do-i-print-an-iframe-from-javascript-in-safari-chrome
*
*  jQuery plugin page : http://plugins.jquery.com/project/printElement 
*  Wiki : http://wiki.github.com/erikzaadi/jQueryPlugins/jqueryprintelement 
*  Home Page : http://erikzaadi.github.com/jQueryPlugins/jQuery.printElement 
*  
*  Thanks to David B (http://github.com/ungenio) and icgJohn (http://www.blogger.com/profile/11881116857076484100)
*  For their great contributions!
* 
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*   
*   Note, Iframe Printing is not supported in Opera and Chrome 3.0, a popup window will be shown instead
*/
;
(function($){
    $.fn.printElement = function(options){
        var mainOptions = $.extend({}, $.fn.printElement.defaults, options);
        //iframe mode is not supported for opera and chrome 3.0 (it prints the entire page).
        //http://www.google.com/support/forum/p/Webmasters/thread?tid=2cb0f08dce8821c3&hl=en
        if (mainOptions.printMode == 'iframe') {
            if ($.browser.opera || (/chrome/.test(navigator.userAgent.toLowerCase()))) 
                mainOptions.printMode = 'popup';
        }
        //Remove previously printed iframe if exists
        $("[id^='printElement_']").remove();
        
        return this.each(function(){
            //Support Metadata Plug-in if available
            var opts = $.meta ? $.extend({}, mainOptions, $this.data()) : mainOptions;
            _printElement($(this), opts);
        });
    };
    $.fn.printElement.defaults = {
        printMode: 'iframe', //Usage : iframe / popup
        pageTitle: '', //Print Page Title
        overrideElementCSS: null,
        /* Can be one of the following 3 options:
         * 1 : boolean (pass true for stripping all css linked)
         * 2 : array of $.fn.printElement.cssElement (s)
         * 3 : array of strings with paths to alternate css files (optimized for print)
         */
        printBodyOptions: {
            styleToAdd: 'padding:10px;margin:10px;', //style attributes to add to the body of print document
            classNameToAdd: '' //css class to add to the body of print document
        },
        leaveOpen: false, // in case of popup, leave the print page open or not
        iframeElementOptions: {
            styleToAdd: 'border:none;position:absolute;width:0px;height:0px;bottom:0px;left:0px;', //style attributes to add to the iframe element
            classNameToAdd: '' //css class to add to the iframe element
        }
    };
    $.fn.printElement.cssElement = {
        href: '',
        media: ''
    };
    function _printElement(element, opts){
        //Create markup to be printed
        var html = _getMarkup(element, opts);
        
        var popupOrIframe = null;
        var documentToWriteTo = null;
        if (opts.printMode.toLowerCase() == 'popup') {
            popupOrIframe = window.open('about:blank', 'printElementWindow', 'width=650,height=440,scrollbars=yes');
            documentToWriteTo = popupOrIframe.document;
        }
        else {
            //The random ID is to overcome a safari bug http://www.cjboco.com.sharedcopy.com/post.cfm/442dc92cd1c0ca10a5c35210b8166882.html
            var printElementID = "printElement_" + (Math.round(Math.random() * 99999)).toString();
            //Native creation of the element is faster..
            var iframe = document.createElement('IFRAME');
            $(iframe).attr({
                style: opts.iframeElementOptions.styleToAdd,
                id: printElementID,
                className: opts.iframeElementOptions.classNameToAdd,
                frameBorder: 0,
                scrolling: 'no',
                src: 'about:blank'
            });
            document.body.appendChild(iframe);
            documentToWriteTo = (iframe.contentWindow || iframe.contentDocument);
            if (documentToWriteTo.document) 
                documentToWriteTo = documentToWriteTo.document;
            iframe = document.frames ? document.frames[printElementID] : document.getElementById(printElementID);
            popupOrIframe = iframe.contentWindow || iframe;
        }
        focus();
        documentToWriteTo.open();
        documentToWriteTo.write(html);
        documentToWriteTo.close();
        _callPrint(popupOrIframe);
    };
    
    function _callPrint(element){
        if (element && element.printPage) 
            element.printPage();
        else 
            setTimeout(function(){
                _callPrint(element);
            }, 50);
    }
    
    function _getElementHTMLIncludingFormElements(element){
        var $element = $(element);
        //Radiobuttons and checkboxes
        $(":checked", $element).each(function(){
            this.setAttribute('checked', 'checked');
        });
        //simple text inputs
        $("input[type='text']", $element).each(function(){
            this.setAttribute('value', $(this).val());
        });
        $("select", $element).each(function(){
            var $select = $(this);
            $("option", $select).each(function(){
                if ($select.val() == $(this).val()) 
                    this.setAttribute('selected', 'selected');
            });
        });
        $("textarea", $element).each(function(){
            //Thanks http://blog.ekini.net/2009/02/24/jquery-getting-the-latest-textvalue-inside-a-textarea/
            var value = $(this).attr('value');
            if ($.browser.mozilla) 
                this.firstChild.textContent = value;
            else 
                this.innerHTML = value;
        });
        var elementHtml = $element.html();
        return elementHtml;
    }
    
    function _getBaseHref(){
        return window.location.protocol + window.location.hostname + window.location.pathname;
    }
    
    function _getMarkup(element, opts){
        var $element = $(element);
        var elementHtml = _getElementHTMLIncludingFormElements(element);
        
        var html = new Array();
        html.push('<html><head><title>' + opts.pageTitle + '</title>');
        if (opts.overrideElementCSS) {
            if (opts.overrideElementCSS.length > 0) {
                for (var x = 0; x < opts.overrideElementCSS.length; x++) {
                    var current = opts.overrideElementCSS[x];
                    if (typeof(current) == 'string') 
                        html.push('<link type="text/css" rel="stylesheet" href="' + current + '" >');
                    else 
                        html.push('<link type="text/css" rel="stylesheet" href="' + current.href + '" media="' + current.media + '" >');
                }
            }
        }
        else {
            $(document).find("link").filter(function(){
                return $(this).attr("rel").toLowerCase() == "stylesheet";
            }).each(function(){
                html.push('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" media="' + $(this).attr('media') + '" >');
            });
        }
        //Ensure that relative links work
        html.push('<base href="' + _getBaseHref() + '" />');
        html.push('</head><body style="' + opts.printBodyOptions.styleToAdd + '" class="' + opts.printBodyOptions.classNameToAdd + '">');
        html.push('<div class="' + $element.attr('class') + '">' + elementHtml + '</div>');
        html.push('<script type="text/javascript">function printPage(){focus();print();' + ((!$.browser.opera && !opts.leaveOpen && opts.printMode.toLowerCase() == 'popup') ? 'close();' : '') + '}</script>');
        html.push('</body></html>');
        
        return html.join('');
    };
    })(jQuery);




/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
 * $Rev: 2447 $
 *
 * Version 2.1.1
 */
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
 




/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};





/****************************************
* Anfangswerte fuer die Mainsuche
****************************************/
var anfangsDatum = 1262757600;
var endDatum = 1269046800;
var active_field_of_profession = false;
var active_targetgroup = false;
var active_topic = false;
var active_location = false;
var active_lon = false;
var active_lat = false;
var active_is_fundable = false;
var active_course_slider_position_1 = false;
var active_course_slider_position_2 = false;
var old_course_slider_position_1 = false;
var old_course_slider_position_2 = false;
var active_range_slider_position = false;
var course_slider_maxWert = 10;
var range_slider_min = 0;
var range_slider_max = 12;
var window_already_open = false;
var active_full_text = false;
var old_active_full_text = false;
var active_course_id = false;
var remember_list = new Array();
var sub_active_location = false;
var sub_active_topic = false;
var sub_active_lat = false;
var sub_active_lon = false;
var TMP_COURSLIST_CARRIER = false;
var is_rememberlist_active = false;

if($.cookie("Merkliste_DAA"))
	remember_list = $.cookie("Merkliste_DAA").split(",");

/***************************************************
 * Definierung der Monate
 *
 * Wird vom Range Slider als Tooltip benutzt
 ***************************************************/
var output_month = new Array();
output_month[0] = 'Jan';
output_month[1] = 'Feb';
output_month[2] = 'Mrz';
output_month[3] = 'Apr';
output_month[4] = 'Mai';
output_month[5] = 'Jun';
output_month[6] = 'Jul';
output_month[7] = 'Aug';
output_month[8] = 'Sep';
output_month[9] = 'Okt';
output_month[10] = 'Nov';
output_month[11] = 'Dez';

/***************************************************
 * Hauptsuche Tipps
 ***************************************************/
var current_tipp = 0;
var mainsearch_tipp = new Array();


/****************************************
* JQuery - On Document Ready
****************************************/
$(document).ready(function() {

	if($.browser.safari == true) {
		$('.wrap_range').css('padding-top','9px');	
	}

	if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {	
		$('.wrap_field_of_profession, .wrap_targetgroup, .wrap_topic').css('padding-bottom','6px');
		$('#wrap_field_of_profession_overlay, #wrap_targetgroup_overlay, #wrap_topic_overlay').css('top','2px');
	}
	
	/****************************************
	 * Initialisiere Tipp
	 *
	 * Rendert den ersten Tipp in der Suche
	 ****************************************/
	renderTipp();
	
	// Render naechsten Tipp
	// Auf Klick auf "naechsten Tipp"
	$("#mainsearch_next_tipp").click(function(){
		renderTipp();
	});
	
	$(document).click(function(event){
		$("#location_list").hide().html('');
	});
	
	
	// Fix um mainsearch_body an neu geladenen Inhalt anzupassen;
	var fitBodyToContent = function(){
		$('#mainsearch_body').attr('style', 'height: auto !important');
	}
	$('#vKurse .related-folder-list span').live('mouseup',function(){
		setTimeout(fitBodyToContent,10);
	});
	$('#vKurse .related-folder-list span').live('click',function(){
		setTimeout(fitBodyToContent,10);
	});
	
	$('#wrap_field_of_profession_overlay a, #wrap_targetgroup_overlay a, #wrap_topic_overlay a').mouseover(function(){
		var theTip = $(this).find('tt');
		theTip.show();
		
		$(this).mouseout(function(){
			theTip.hide();
		});
	});
	
	$("div.btn-notepad").live('click',function()
	{
		if(remember_list.length >= 1){
			$("#mainsearch_body_detail").html();
			$("#mainsearch_body_detail").hide();
			$("#mainsearch_body").show();
			$("#wrap_search_fulltext").hide();
			$("#mainsearch_overlay").show();
			$("#mainsearch_frame").fadeIn();
			$("html,body").scrollTop(0);
			$("div.wrap_search_interface").slideUp();
			$("div.search_backlink").fadeIn();
			callBuildRememberList();
		}
	});
	
	
	
	// Fix für IE6 und überlagernde Dropdowns
	$('#mainsearch_frame').bgiframe();
	
	/****************************************
	 * Initialisiere Range Slider
	 ****************************************/
	initialize_range_slider();
	
	/****************************************
	 * Initialisiere Course Slider
	 ****************************************/
	initialize_course_slider();
	
	active_course_slider_position_1 = false;
    active_course_slider_position_2 = false;
	
	// Wird ausgefuehrt sobald das Document geladen ist
	// Setzt den Sliderstand beim Start auf Anfang
	$("#wrap_range_slider .slider_value").html(range_slider_min+' km');
	
	// Wird ausgefuehrt sobald das Document geladen ist
	// Setzt die Sliderhandler auf "beliebig" und inaktiv
	$("#wrap_course_slider .slider1_value").html('beliebig');
	$("#wrap_course_slider .slider1").addClass("inaktiv");
	$("#wrap_course_slider .slider2_value").html('beliebig');
	$("#wrap_course_slider .slider2").addClass("inaktiv");
	
	/****************************************
	 * Reset Mainsearch Form
	 ****************************************/
	$("#wrap_reset").click(function(){
        anfangsDatum = 1262757600;
        endDatum = 1269046800;
        active_field_of_profession = false;
        active_targetgroup = false;
        active_topic = false;
        active_location = false;
        active_lon = false;
        active_lat = false;
        active_is_fundable = false;
        active_course_slider_position_1 = false;
        active_course_slider_position_2 = false;
        old_course_slider_position_1 = false;
        old_course_slider_position_2 = false;
        active_range_slider_position = false;
        course_slider_maxWert = 24;
        range_slider_min = 0;
        range_slider_max = 50;
        $("#mainsearch_is_fundable").attr("checked","");
        $("#mainsearch_location").val("Ort oder PLZ eingeben");
        $("#mainsearch_body").html(' ');
        $("#wrap_count_result .count").html('0');
        active_full_text = false;
        $("#mainsearch_full_text").val('');
		callRebuildMainSearch(true);
	});
	$("#mainsearch_full_text").focus(function(){
		$('#wrap_search_fulltext').bgiframe();
		$(this).parent().css('z-index',15);
		$(this).blur(function(){
			var _self = this;
			setTimeout(function(){$(_self).parent().css('z-index',0);},500);
		});
	});
	
	/****************************************
	 * Close Search Frame
	 ****************************************/
	$("div.mainsearch_close_frame").click(function(){
		$("div.search_backlink").fadeOut();
		$("div.wrap_search_interface").slideDown();
		$("#mainsearch_body_detail").html();
		$("#mainsearch_body_detail").hide();
		$("#mainsearch_body").show();
		$("#mainsearch_body").attr('height','auto');
		$("#mainsearch_overlay").fadeOut();
		$("#mainsearch_frame").fadeOut();
	});
	

	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald ein Fachbereich
	 * ausgewaehlt wurd.
	 ****************************************/
	$("#mainsearch_field_of_profession").change(function(){
		if ($("#mainsearch_field_of_profession").val() != -1) {
			active_field_of_profession = $("#mainsearch_field_of_profession").val();
			callRebuildMainSearch();
		}
	});
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald ein Zielgruppe gel�scht wird
	 * ausgewaehlt wurd.
	 ****************************************/
	$('#wrap_field_of_profession_overlay a').click(function(){
		active_field_of_profession = false
		callRebuildMainSearch();
	});	

	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald eine Kundengruppe
	 * ausgewaehlt wurd.
	 ****************************************/
	$("#mainsearch_targetgroup").change(function(){
		if ($("#mainsearch_targetgroup").val() != -1) {
			active_targetgroup = $("#mainsearch_targetgroup").val();
			callRebuildMainSearch();
		}
	});
	
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald ein Zielgruppe gel�scht wird
	 * ausgewaehlt wurd.
	 ****************************************/
	$('#wrap_targetgroup_overlay a').click(function(){
		active_targetgroup = false;
		callRebuildMainSearch();
	});
	
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgeführt sobald eine Thema
	 * ausgewaehlt wurde.
	 ****************************************/
	$("#mainsearch_topic").change(function(){
		if ($("#mainsearch_topic").val() != -1) {
			active_topic = $("#mainsearch_topic").val();
			callRebuildMainSearch();
		}
	});
	
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgeführt sobald ein Thema gelöscht wird
	 * ausgewaehlt wurde.
	 ****************************************/
	$('#wrap_topic_overlay a').click(function(){
		active_topic = false;
		callRebuildMainSearch();
	});	
	

	
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald ein Ort
	 * eingetragen wurd.
	 ****************************************/
	$("#mainsearch_location").keyup(function(){
		active_location = $("#mainsearch_location").val();
		if(active_location.length >= 3) {
			callRebuildLocation(active_location);
		}
		//callBuildCourseList();
		if (active_location.length == 0) {
		    $("#wrap_range_slider").slider("disable");
		    $("#disable_range_slider").show();
		    $("#wrap_range_slider .slider_value").hide();
		    $("#wrap_range_slider .slider").hide();
		    $("div.wrap_range").hide();
		}
	});
	
	$("#location_list table td a").live('click', function() {
		$("div.wrap_range").show();
        $("#wrap_range_slider").slider("enable");
		$("#disable_range_slider").hide();
		$("#wrap_range_slider .slider_value").show();
		$("#wrap_range_slider .slider").show();
	});
	
	$("#mainsearch_full_text").keyup(function(e){
		$('#wrap_search_fulltext #full_text_list_mini2').bgiframe();
		active_full_text = $("#mainsearch_full_text").val();
		if(e.keyCode == 13) {
			return false;
		}
		else
		{
			var tmp_active_full_text = $("#mainsearch_full_text").val();
			if(tmp_active_full_text.length >= 3)
			{
				active_full_text = tmp_active_full_text;
				callRebuildFullTextMiniSearch('#full_text_list_mini2',active_full_text);
			}
			else
	    		$('#full_text_list_mini2').hide();	
		}
	});

	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald foerderbar
	 * angeklickt wurd.
	 ****************************************/
	$("#mainsearch_is_fundable").click(function(){
		active_is_fundable = $("#mainsearch_is_fundable").attr('checked');
		callRebuildMainSearch();
	});
	
	/****************************************
	 * Clickhandler
	 *
	 * Wird ausgefuehrt sobald man auf
	 * "Zurueck zur Kursliste"
	 * klickt.
	 ****************************************/
	$("div.search_backlink").live('click', function(){
		$("div.search_backlink").fadeOut();
		$("div.wrap_search_interface").slideDown();
		$("#mainsearch_body_detail").html();
		$("#mainsearch_body_detail").hide();
		$("#mainsearch_body").show();
		$("#mainsearch_body").attr('height','auto');
		$('html,body').scrollTop(0);
		if(is_rememberlist_active == true)
		{
			is_rememberlist_active = false;
			callRebuildMainSearch();
		}
	});

	
	/****************************************
	 * Initialisiere Mainsearch
	 *
	 * Rendert das Suchinterface neu
	 ****************************************/
	$("div#HeaderOfferNote").click(function(){
//neu		
		anfangsDatum = 1262757600;
        endDatum = 1269046800;
        active_field_of_profession = false;
        active_targetgroup = false;
        active_topic = false;
        active_location = false;
        active_lon = false;
        active_lat = false;
        active_is_fundable = false;
        active_course_slider_position_1 = false;
        active_course_slider_position_2 = false;
        old_course_slider_position_1 = false;
        old_course_slider_position_2 = false;
        active_range_slider_position = false;
        course_slider_maxWert = 24;
        range_slider_min = 0;
        range_slider_max = 50;
        $("#mainsearch_location").val("Ort oder PLZ eingeben");
        $("#mainsearch_body").html(' ');
        $("#wrap_count_result .count").html('0');
        active_full_text = false;
        $("#mainsearch_full_text").val('');
        $("#mainsearch_is_fundable").attr("checked","");
        if(sub_active_location != false)
        {
        	active_location = sub_active_location;
			active_lon = sub_active_lon;
			active_lat = sub_active_lat;
			$("#mainsearch_location").val(active_location);
        }
        if(sub_active_topic != false)
        {
        	active_topic = sub_active_topic;
			$("#mainsearch_topic").val(active_topic);
        }
//neu
		if(active_full_text != false)
		{
			$('#mainsearch_full_text').val('');
			active_full_text = false;
			window_already_open = false;
		}
	    $("#mainsearch_overlay").show();
	    $('#mainsearch_overlay').css('height',$(document).height());
	    $("#mainsearch_frame").fadeIn();
	    $("#mainsearch_overlay").fadeTo(0,0.4);
	    $('html,body').scrollTop(0);
	    $('#wrap_search_fulltext').hide();
	    callRebuildMainSearch(true);
	});
	
	$("input[name=field\\[\\]],input[name=group\\[\\]], #set_field, #unset_field, #set_group, #unset_group").click(function(){
		
		var targetgroups = "";
		$("input[name=field\\[\\]]").each(function(){
			if($(this).attr("checked") == true)
				targetgroups += '&targetgroups[]='+$(this).val();
		});		
		var field_of_professions = "";
		$("input[name=group\\[\\]]").each(function(){
			if($(this).attr("checked") == true)
				field_of_professions += '&field_of_professions[]='+$(this).val();
		});
		var topics = "";
		$("input[name=field\\[\\]]").each(function(){
			if($(this).attr("checked") == true)
				topics += '&topics[]='+$(this).val();
		});
		callRebuildIndexSearch(targetgroups, field_of_professions, topics);
		
	});
	
	$('#wrap_field_of_profession_overlay a, #wrap_targetgroup_overlay a, #wrap_topic_overlay a').live('mouseover',function(){
		$(this).find('div').show();
		$(this).mouseout(function(){
			$(this).find('div').hide();
		});

	});
	$('#wrap_field_of_profession_overlay, #wrap_targetgroup_overlay, #wrap_topic_overlay').bgiframe();
	
});


/****************************************
 * Initialisiere Range Slider
 ****************************************/
function initialize_range_slider(){
	$("#wrap_range_slider").slider({
	    orientation: "horizontal",
		range: false,
		min: range_slider_min,
		max: range_slider_max,
		value: range_slider_min,
		slide: function(event, ui) {
			$("#wrap_range_slider .slider_value").html(ui.value+' km');
			active_range_slider_position = ui.value;
		},
		stop: function(event, ui) {
			active_range_slider_position = $("#wrap_range_slider").slider('value');
			callRebuildMainSearch();
		}
	});
}
	
/****************************************
 * Initialisiere Course Slider
 ****************************************/
function initialize_course_slider() {
	$("#wrap_course_slider").slider({
		range: false,
		orientation: "horizontal",
		min: 0,
		max: course_slider_maxWert,
		values: [0, course_slider_maxWert],
		slide: function(event, ui) {
			if(ui.values[1] == 0)
				ui.values[1] = 0.1;
			active_course_slider_position_1 = ui.values[0]; 
			active_course_slider_position_2 = ui.values[1]; 
			if (ui.values[0] != 0) {
				$("#wrap_course_slider .slider1_value").html(berechneFinalDatum(ui.values[0], 1));
				$("#wrap_course_slider .slider1").removeClass("inaktiv");
			} else {
				$("#wrap_course_slider .slider1_value").html('beliebig');
				$("#wrap_course_slider .slider1").addClass("inaktiv");
			}
			if (ui.values[1] != course_slider_maxWert) {
				$("#wrap_course_slider .slider2_value").html(berechneFinalDatum(ui.values[1], 2));
				$("#wrap_course_slider .slider2").removeClass("inaktiv");
			} else {
				$("#wrap_course_slider .slider2_value").html('beliebig');
				$("#wrap_course_slider .slider2").addClass("inaktiv");
			}
		},
		stop: function(event, ui) {
			active_course_slider_position_1 = $("#wrap_course_slider").slider('values', 0);
			active_course_slider_position_2 = $("#wrap_course_slider").slider('values', 1);
			if(active_course_slider_position_2 == 0)
				active_course_slider_position_2 = 0.1;
			callRebuildMainSearch();
		}
	});	
}
	
/****************************************
 * Render Tipp
 * 
 * Rendert ein neuen Tipp in der Suche
 ****************************************/
function renderTipp() {
	if (current_tipp == mainsearch_tipp.length) current_tipp = 0;
	$("#mainsearch_tipp_text").html(mainsearch_tipp[current_tipp]);
	$("#mainsearch_next_tipp").html('n&auml;chster Tipp >>');
	current_tipp++;
}

/***************************************************
 * Berechnung der Tagesanzahl zwischen 2 Terminen
 ****************************************************
 * Uebergabewerte:
 * - Anfangsdatum
 * - Enddatum
 *
 * Rueckgabewert:
 * - Tagesanzahl (Zeitspanne)
 ***************************************************/
function berechneZeitspanne(anfangsDatum, endDatum){
	var Zeitspanne = endDatum - anfangsDatum;
	return Zeitspanne;
}


/***************************************************
 * Rechnet das Datum zurueck
 ****************************************************
 * Uebergabewerte:
 * - Sliderposition
 *
 * Rueckgabewert:
 * - datumUmrechnung
 ***************************************************/
function berechneDatum(sliderPosition, slider) {
	
	var anfang_date = new Date(anfangsDatum * 1000);
	var anfangs_monat = anfang_date.getMonth() + 1;
	
	
	var check_year = Math.floor(((anfangs_monat + sliderPosition) - 1) / 12);
	var check_year2 = ((anfangs_monat + sliderPosition)) / 12;
	
	var year = anfang_date.getFullYear() + check_year;
	var monat = ((sliderPosition + anfangs_monat) - (check_year * 12));
	
	var datumUmrechnung = new Date(year,monat-1,1,00,00,00).getTime() / 1000;
	/*var datumUmrechnung = anfangsDatum + (sliderPosition * 86400);
	if(anfangsDatum == datumUmrechnung || datumUmrechnung == endDatum)
		datumUmrechnung = false;*/
		
	if ((slider == 1 && sliderPosition == 0) || (slider == 2 && sliderPosition == course_slider_maxWert) || sliderPosition == false) {
	    datumUmrechnung = false;
	}
	return datumUmrechnung;
}

/***************************************************
 * Rechnet die Position zurueck
 ****************************************************
 * Uebergabewerte:
 * - datum
 *
 * Rueckgabewert:
 * - Sliderposition
 ***************************************************/
function berechnePosition(datumUmrechnung) {
	var Position = (datumUmrechnung - anfangsDatum) / 86400;
	return Position;
}


/***************************************************
 * Definierung der Datumausgabe am Slider
 ***************************************************
 * Uebergabewerte:
 * - Datum vom Slider (date)
 *
 * Rueckgabewert:
 * - Formatierte Datumausgabe (final_date)
 ***************************************************/
function berechneFinalDatum(sliderPosition, slider) {
	var datumUmrechnung = berechneDatum(sliderPosition, slider);
	eDatum = new Date(datumUmrechnung * 1000);
	eTag = eDatum.getDate();
	eMonat = eDatum.getMonth();
	eJahr = eDatum.getFullYear();
	final_date = output_month[eMonat] + ' ' + eJahr;
	return final_date;
}


/****************************************
 * Parse JSON to Mainsearch
 ****************************************
 * Uebergabewerte:
 * - JSON vom Ajax Call
 *
 * Rueckgabewert:
 * - Rendert direkt:
 * -- Selectfeld: Field of Profession
 * -- Selectfeld: Targetgroup
 * -- Selectfeld: Topic
 * -- Slider: Rangeslider
 * -- Slider: Courseslider
 ****************************************/
function parseJsonToMainsearch(json){
	var jsonarray = eval('('+json+')');

	if (jsonarray.field_of_profession) {
		$('#mainsearch_field_of_profession').find('option').remove().end();
		if(active_field_of_profession == false)
		{
			$("#mainsearch_field_of_profession").addOption('0', fachbereiche[0]);
			$('#wrap_field_of_profession_overlay').hide();
			$('#wrap_field_of_profession_overlay span').html('');
		}
		else
		{
			$('#wrap_field_of_profession_overlay span').html(active_field_of_profession);
			$('#wrap_field_of_profession_overlay').show();
			//$("#mainsearch_field_of_profession").addOption('0', fachbereiche[8]);
		}
		for(var i=0; i < jsonarray.field_of_profession.length;i++){
			//$("#mainsearch_field_of_profession").addOption(jsonarray.field_of_profession[i]['value'], fachbereiche[jsonarray.field_of_profession[i]['value']]);
			$("#mainsearch_field_of_profession").addOption($.base64Decode(jsonarray.field_of_profession[i]['value']), $.base64Decode(jsonarray.field_of_profession[i]['value']));
		}
		if (active_field_of_profession == false) {
			$("#mainsearch_field_of_profession").selectOptions(0);
		} else {
			$("#mainsearch_field_of_profession").selectOptions(active_field_of_profession);
		}
	}
	else if(active_field_of_profession == false)
	{
		$('#mainsearch_field_of_profession').find('option').remove().end();
		$("#mainsearch_field_of_profession").addOption('0', 'kein passender Fachbereich vorhanden');
	}
	
	$("#wrap_count_result div.count").html(jsonarray.coursecount[0]['value']);
	
	if (jsonarray.targetgroup) {
		$('#mainsearch_targetgroup').find('option').remove().end();
		if(active_targetgroup == false)
		{
			$("#mainsearch_targetgroup").addOption('0', zielgruppe[6]);
			$('#wrap_targetgroup_overlay').hide();
			$('#wrap_targetgroup_overlay span').html('');
		}
		else
		{
			$('#wrap_targetgroup_overlay span').html(active_targetgroup);
			$('#wrap_targetgroup_overlay').show();	
			//$("#mainsearch_targetgroup").addOption('0', zielgruppe[0]);
		}
		for(var i=0; i < jsonarray.targetgroup.length;i++){
			//$("#mainsearch_targetgroup").addOption(jsonarray.targetgroup[i]['value'], zielgruppe[jsonarray.targetgroup[i]['value']]);
			$("#mainsearch_targetgroup").addOption($.base64Decode(jsonarray.targetgroup[i]['value']), $.base64Decode(jsonarray.targetgroup[i]['value']));
		}
		if (active_targetgroup == false) {
			$("#mainsearch_targetgroup").selectOptions(0);
		} else {
			$("#mainsearch_targetgroup").selectOptions(active_targetgroup);
		}
	}
	else if(active_targetgroup == false)
	{
		$('#mainsearch_targetgroup').find('option').remove().end();
		$("#mainsearch_targetgroup").addOption('0', 'keine passende Zielgruppe vorhanden');
	}

	if (jsonarray.topic) {
		$('#mainsearch_topic').find('option').remove().end();
		if(active_topic == false)
		{
			$("#mainsearch_topic").addOption('0', thema[4]);
			$('#wrap_topic_overlay').hide();
			$('#wrap_topic_overlay span').html('');
		}
		else
		{
			$('#wrap_topic_overlay span').html(active_topic);
			$('#wrap_topic_overlay').show();	
		}
		for(var i=0; i < jsonarray.topic.length;i++){
			$("#mainsearch_topic").addOption($.base64Decode(jsonarray.topic[i]['value']), $.base64Decode(jsonarray.topic[i]['value']));
		}
		if (active_topic == false) {
			$("#mainsearch_topic").selectOptions(0);
		} else {
			$("#mainsearch_topic").selectOptions(active_topic);
		}
	}
	else if(active_topic == false)
	{
		$('#mainsearch_topic').find('option').remove().end();
		$("#mainsearch_topic").addOption('0', 'kein passendes Thema vorhanden');
	}	
	
	
	if(jsonarray.error[0]['value'] && jsonarray.error[0]['value'] != 'false')
		$("#mainsearch_body").html(jsonarray.error[0]['value']);
		
	if (jsonarray.is_fundable) {
		if (jsonarray.is_fundable[0]['value'] == 'true') {
			$("#mainsearch_is_fundable").removeAttr("disabled");
			$("#mainsearch_is_fundable").css("background", "#fff");
			$("#wrap_is_fundable").find("label").css("color", "#fff");
			if (active_is_fundable) {
				$("#mainsearch_is_fundable").attr("checked", "checked");
			}
		} else {
			$("#mainsearch_is_fundable").attr("disabled", "disabled");
			$("#mainsearch_is_fundable").css("background", "#81BDFB");
			$("#wrap_is_fundable").find("label").css("color", "#81BDFB");
			$("#mainsearch_is_fundable").attr("checked", "");
			active_is_fundable = false;
		}
	}
	
	if (jsonarray.range && (active_location && active_location != null)) {
	 	$("div.wrap_range").show();

		range_slider_min = parseInt(jsonarray.range[0]['min']);
		range_slider_max = parseInt(jsonarray.range[1]['max']);
		range_slider_maxCourseFind = parseInt(jsonarray.range[2]['maxCourseFind']);
		$("#wrap_range_slider").slider("option","min", range_slider_min);
		$("#wrap_range_slider").slider("option","max", range_slider_max);
		if (active_range_slider_position == false && range_slider_maxCourseFind == false) {
			$("#wrap_range_slider").slider("value", range_slider_min);
			$("#wrap_range_slider .slider_value").html(range_slider_min+' km');
		} else {
			
			if (active_range_slider_position == false)
				active_range_slider_position = range_slider_maxCourseFind
			
			$("#wrap_range_slider").slider("value", active_range_slider_position);
			
			if (range_slider_min <= active_range_slider_position || range_slider_max >= active_range_slider_position) {
				$("#wrap_range_slider .slider_value").html(active_range_slider_position+' km');
			}
			if (range_slider_min >= active_range_slider_position) {
				$("#wrap_range_slider .slider_value").html(range_slider_min+' km');
			}
			if (range_slider_max <= active_range_slider_position) {
				$("#wrap_range_slider .slider_value").html(range_slider_max+' km');
			}
		}
	}

	if (jsonarray.course) {
		anfangsDatum = parseInt(jsonarray.course[0]['start']);
		endDatum = parseInt(jsonarray.course[1]['end']);
		//course_slider_maxWert = berechneZeitspanne(anfangsDatum, endDatum) / 86400;
		course_slider_maxWert = 24;
		$("#wrap_course_slider").slider("option","max", course_slider_maxWert);
		if (active_course_slider_position_1 == false || active_course_slider_position_1 == 0) {
			$("#wrap_course_slider").slider("values", 0, 0);
			$("#wrap_course_slider .slider1_value").html('beliebig')
			$("#wrap_course_slider .slider1").addClass('inaktiv');
		} else {
			$("#wrap_course_slider").slider("values", 0, active_course_slider_position_1);
			$("#wrap_course_slider .slider1_value").html(berechneFinalDatum(active_course_slider_position_1, 1));
			$("#wrap_course_slider .slider1").removeClass('inaktiv');
		}
		if (active_course_slider_position_2 == false || active_course_slider_position_2 == course_slider_maxWert) {
			$("#wrap_course_slider").slider("values", 1, course_slider_maxWert);
			$("#wrap_course_slider .slider2_value").html('beliebig')
			$("#wrap_course_slider .slider2").addClass('inaktiv');
		} else {
			$("#wrap_course_slider").slider("values", 1, active_course_slider_position_2);
			$("#wrap_course_slider .slider2_value").html(berechneFinalDatum(active_course_slider_position_2, 2));
			$("#wrap_course_slider .slider2").removeClass('inaktiv');
		}
	}
	
	if (active_location == false || active_location == null) {
		$("div.wrap_range").hide();
		$("#wrap_range_slider").slider("disable");
		$("#disable_range_slider").show();
		$("#wrap_range_slider .slider_value").hide();
		$("#wrap_range_slider .slider").hide();
	}
}

/****************************************
 * Build Course List
 ****************************************
 * Uebergabewerte:
 * - JSON vom Ajax Call
 *
 * Rueckgabewert:
 * - Rendert direkt:
 * -- Kursliste im DIV #mainsearch_body
 ****************************************/
function buildCourseList(ajaxoutput, rem) {
	
	var output = course_list_tableheader_tpl;
	
	if(rem == true)
	{
		output = output.replace(/###REM_HEADER###/, '<div class="rem_box"><h2>Merkliste</h2><p class="rem_subtitle">'+remember_list.length+' Bildungsangebote sind auf Ihrer Merkliste</p></div>');
		output = output.replace(/###REM_TRENNER1###/, '<p class="divider-dotted" style="margin-top:10px;"></p>');
		output = output.replace(/###REM_TRENNER2###/, '<p class="divider-dotted" style="margin-top:10px;"></p>');
	}
	else 
	{
		output = output.replace(/###REM_HEADER###/, ' ');
		output = output.replace(/###REM_TRENNER1###/, ' ');
		output = output.replace(/###REM_TRENNER2###/, ' ');
	}
	$("#mainsearch_body").html(output+ajaxoutput);

	var pager = $('#pager').html();
	$("#mainsearch_body").append('<div id="pagerBottom" class="pager">' + pager + '</div>');	
	
}

function parseJsonToLocationList(json)
{
	
	if(json)
	{
		var html = json;
			html +='</table>';
			html += "<script type=\"text/javascript\">";
			html += "	$('#location_list a').click(function(){";
			html += "					tmploc = this.rel.split('|');";
			html += "					$('#mainsearch_location').val(tmploc[0]);";
			html += "					active_location = tmploc[0];";
			html += "					$('#mainsearch_lon').val(tmploc[1]);";
			html += "					active_lon = tmploc[1];";
			html += "					$('#mainsearch_lat').val(tmploc[2]);";
			html += "					active_lat = tmploc[2];";
			html += "					$('#location_list').hide();";
			html += "					active_range_slider_position = false;";
			html += "					$('#wrap_range_slider').slider('value', range_slider_min);";
			html += "					$('#wrap_range_slider.slider_value').html(range_slider_min+' km');";
			html += "					active_course_slider_position_1 = false;";
			html += "					$('#wrap_course_slider').slider('values', 0, 0);";
			html += "					$('#wrap_course_slider.slider1_value').html('beliebig');";
			html += "					$('#wrap_course_slider.slider1').addClass('inaktiv');";
			html += "					active_course_slider_position_2 = false;";
			html += "					$('#wrap_course_slider').slider('values', 1, course_slider_maxWert);";
			html += "					$('#wrap_course_slider.slider2_value').html('beliebig');";
			html += "					$('#wrap_course_slider.slider2').addClass('inaktiv');";
			html += "					setTimeout('callRebuildMainSearch()',100);";
			html += "				});";
			html += "</script>";
			$('#location_list').html(html);
			$('#location_list').show();
	}
}
function buildIndexList(ajaxoutput) {
	var json = eval('('+ajaxoutput+')');
	var outputTPL = index_list_tpl;
	var outputAll = '';
	var output = '';
	var current_char = false;
	if (ajaxoutput != 'null')
	{
		for(var i=0; i < json.id.length; i++) {
			var tpl = index_list_li_tpl;
			
			if(current_char != json.firstChar[i]['value'] && current_char != false)
			{
				outputTPL = outputTPL.replace(/###BLOCK_ID###/, 'Block_'+current_char);
				outputTPL = outputTPL.replace(/####ABC###/, current_char);
				outputAll += outputTPL.replace(/####LI###/, output);
				
				current_char = json.firstChar[i]['value'];
				//Variable Reset 
				output = '';
				tpl = index_list_li_tpl;
				outputTPL = index_list_tpl;
			}
			else if(current_char == false)
			{
				current_char = json.firstChar[i]['value'];
			}
			
			tpl = tpl.replace(/###ID###/, $.base64Decode(json.description[i]['value']));
			tpl = tpl.replace(/###TITLE###/, $.base64Decode(json.description[i]['value']));
			
			output += tpl;
		}
		outputTPL = outputTPL.replace(/###BLOCK_ID###/, 'Block_'+current_char);
		outputTPL = outputTPL.replace(/####ABC###/, current_char);
		outputAll += outputTPL.replace(/####LI###/, output);
		$('#IndexBlocks').html(outputAll);
		
		$(".info-folder").hide();
		$("#Block_a").show();
	}
	else
	{
		$('#IndexBlocks').html('');
		
		$(".info-folder").hide();
		$("#Block_a").show();
	}
}


function parseJsonToFullTextListMiniSearch(name, json)
{
	var jsonarray = eval('('+json+')');
	if(jsonarray)
	{
		if (jsonarray.length >= 1)
		{
			var html = '<table>';
			for(var i=0; i < jsonarray.length; i++)
			{
				html += '<tr><td><a href="javascript:void(0);" rel="'+(jsonarray[i]['suchbegriff'])+'" >'+(jsonarray[i]['suchbegriff'])+'</a></td></tr>';
			}
			html +='</table>';
			
			html += "<script type=\"text/javascript\">";
			html += "	/* <![CDATA[ */ ";
			html += "	$('"+name+" a').click(function(){";
			html +  "					console.log('test');";
			html += "					$('#searchFieldLeftSearchForm').val(this.rel);";
			html += "					$('#mainsearch_full_text').val(this.rel);";
			html += "					$('#wrap_search_fulltext').show();";
			html += "					active_full_text = $('#searchFieldLeftSearchForm').val();";
			html += "					old_active_full_text = active_full_text;";
			html += "					anfangsDatum = 1262757600;";
			html += "					endDatum = 1269046800;";
			html += "					active_range_slider_position = false;";
			html += "					course_slider_maxWert = 24;";
			html += "					range_slider_min = 0;";
			html += "					range_slider_max = 50;";
			html += "					$('#mainsearch_location').val('Ort oder PLZ eingeben');";
			html += "					$('#mainsearch_body').html(' ');";
			html += "					$('#wrap_count_result .count').html('0');";
			html += "					$('#mainsearch_is_fundable').attr('checked','');";
			html += "					active_field_of_profession = false;";
			html += "					active_targetgroup = false;";
			html += "					active_location = false;";
			html += "					active_lon = false;";
			html += "					active_lat = false;";
			html += "					active_is_fundable = false;";
			html += "					active_course_slider_position_1 = false;";
			html += "					active_course_slider_position_2 = false;";
			html += "					if(sub_active_location != false)";
			html += "					{";
			html += "						active_location = sub_active_location;";
			html += "						active_lon = sub_active_lon;";
			html += "						active_lat = sub_active_lat;";
			html += "						$('#mainsearch_location').val(active_location);";
			html += "					}";
			html += "					if(sub_active_topic != false)";
			html += "					{";
			html += "						active_topic = sub_active_topic;";
			html += "						$('#mainsearch_topic').val(active_topic);";
			html += "					}";
			html += "					$('#mainsearch_full_text').val(active_full_text);";
			html += "					$('#mainsearch_overlay').show();";
			html += "					$('#mainsearch_frame').fadeIn();";
			html += "					$('#mainsearch_overlay').fadeTo(0,0.4);";
			html += "					$('html,body').scrollTop(0);";
			html += "					$('"+name+"').hide();";
			html += "					callRebuildMainSearch();";
			html += "				});";
			html += "	/* ]]> */";
			html += "</script>";
			
			
			$(name).show();
			$(name).html(html);
		}
	}
	else
	{
		$(name).show();
		$(name).html('<br><br><br><p class="FullTextListMiniSearchError">Ihr Suchbegriff f&uuml;hrt zu keinem Resultat.<br>Bitte versuchen Sie es erneut mit einem anderem Begriff.</p>');
	}
		
}

/****************************************
 * Call Rebuild Mainsearch
 ****************************************
 * Uebergabewerte:
 * - Field of Profession (Select Value)
 * - Targetgroup (Select Value)
 * - Location (Input Value)
 * - Slider Position (Range Slider)
 * - Slider Position - Slider 1 (Course Slider)
 * - Slider Position - Slider 2 (Course Slider)
 * - Is Fundable (Checkbox)
 *
 * Rueckgabewert:
 * - JSON von dem Inhalt der Suche
 ****************************************/
function callRebuildMainSearch(ini){

	$("#wrap_search_interface_overlay").fadeIn();
	$("div.btn-notepad").find("span").html("("+remember_list.length+" Objekte)");
	$.ajax({
    	url: 'index.php?eID=searchData&action=rebuild_mainsearch&ini='+ini+'&full_text='+encodeURIComponent(active_full_text)+'&field_of_profession='+(active_field_of_profession)+'&targetgroup='+(active_targetgroup)+'&topic='+(active_topic)+'&location='+(active_location)+'&lat='+active_lat+'&lon='+active_lon+'&range_slider_position='+active_range_slider_position+'&course_slider_position1='+berechneDatum(active_course_slider_position_1, 1)+'&course_slider_position2='+berechneDatum(active_course_slider_position_2, 2)+'&is_fundable='+active_is_fundable,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	test = html.split('||');
			old_course_slider_position_1 = berechneDatum(active_course_slider_position_1, 1);
	    	old_course_slider_position_2 = berechneDatum(active_course_slider_position_2, 2);
	    	
	    	parseJsonToMainsearch(test[0]);
	    	$("#wrap_search_interface_overlay").fadeOut();
	    	if(test[1] && test[1] != 'null')
	    	{
   		        $('#mainsearch_body').scrollTop(0);
   		        is_rememberlist_active = false;
	    		buildCourseList(test[1]);
				$.tablesorter.addParser({
					id: 'germandate',
					is: function(s) {
					  return false;
					},
					format: function(s) {
				       var a = s.split('.');
				       if(a[1] != undefined)
				       	a[1] = a[1].replace(/^[0]+/g,"");
				       return new Date(a.reverse().join("/")).getTime();
					},
					type: 'numeric'
				});

			//google_api_key=ABQIAAAAjPbDr9Vy0P5CQy8X--HGsxRW2I9s0a5v9lBPTfFNM8p7PWmHqxS7p7BYb0REu-m8WB63g3G5tI9Rfw");
			if(is_loaded == false)
			{
				$.getScript("http://www.google.com/jsapi?key="+googleAPIKey
					,   function(){
						google.load("maps", "2",{"callback": function(){is_loaded = true} });
					}
					);
			}
			
			if($('.wrap_range').is(':visible')){ var sortRow = 3; }
			else{ var sortRow = 0; }
			var sortDirection = 0;
			
						
	    		$("#course_list").tablesorter({
					textExtraction: function(node) {
						if(node.childNodes[1]){
							if(node.childNodes[3]){
								foobar = node.childNodes[3].innerHTML;
							}else{
								foobar = node.childNodes[1].innerHTML;
							}
						}else if(node.innerHTML == 'individuell'){
							foobar = '01.01.1000';
						}else{
							if(node.innerHTML.match(/[0-9]km/)){
								foobar = node.innerHTML.replace(/[^\d]/g, "");
							}else if (node.innerHTML == '-') {
								foobar = 0;
							}else{ foobar = node.innerHTML; }
						}
						//$('#mainsearch_tipp_text').append(foobar);
						return foobar;
					},
					headers: {
						3: { sorter:'digit'},
						4: { sorter:'germandate'},
						5: { sorter:'germandate'},
						6: { sorter: false},
						7: { sorter: false},
						8: { sorter: false}
					},
					widgets: ['zebra'],
                    sortList: [[sortRow,sortDirection],[0,0]],
					widthFixed: true
				})
				.tablesorterPager({container: $(".pager"), positionFixed: false, seperator: " von ", txtPage: 'Seite ', size: 7});
	    	}
	    }
	});
}

function callBuildRememberList(){
	$.ajax({
	    url: 'index.php?eID=searchData&action=rememberList&rememberIds[]='+remember_list.join('&rememberIds[]=')+'&location='+(active_location)+'&lat='+active_lat+'&lon='+active_lon,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	test = html.split('||');
	    	
	    	if(test[1] && test[1] != 'null')
	    	{
   		        $('#mainsearch_body').scrollTop(0);
   		        is_rememberlist_active = true;
	    		buildCourseList(test[1], true);
				$.tablesorter.addParser({
					id: 'germandate',
					is: function(s) {
					  return false;
					},
					format: function(s) {
				       var a = s.split('.');
				       if(a[1] != undefined)
				       	a[1] = a[1].replace(/^[0]+/g,"");
				       return new Date(a.reverse().join("/")).getTime();
					},
					type: 'numeric'
				});
		    		$("#course_list")
					.tablesorter({
						textExtraction: function(node) { 
							/*
							 * vorerst NICHT l�schen
							 *
							 *
							 if(node.childNodes[1]){
								foobar = node.childNodes[1].innerHTML;
							}else if(node.innerHTML == 'individuell'){
								foobar = '01.01.1000';
							}else{
								foobar = node.innerHTML;
							}
							//$('#mainsearch_tipp_text').append(foobar);
							return foobar;
							 */
							if(node.childNodes[1]){
								if(node.childNodes[3]){
									foobar = node.childNodes[3].innerHTML;
								}else{
									foobar = node.childNodes[1].innerHTML;
								}
							}else if(node.innerHTML == 'individuell'){
								foobar = '01.01.1000';
							}else{
								if(node.innerHTML.match(/[0-9]km/)){
									foobar = node.innerHTML.replace(/[^\d]/g, "");
								}else if (node.innerHTML == '-') {
									foobar = 0;
								}else{ foobar = node.innerHTML; }
							}
							//$('#mainsearch_tipp_text').append(foobar);
							return foobar;
						},
						headers: {
							3: { sorter:'digit'},
							4: { sorter:'germandate'},
							5: { sorter:'germandate'},
							6: { sorter: false},
							7: { sorter: false},
							8: { sorter: false}
						},
						widgets: ['zebra'],
						sortList: [[0,0]],
						widthFixed: true
					})
					.tablesorterPager({container: $("#pager"), positionFixed: false, seperator: " von ", txtPage: 'Seite ', size: 7});
		    		//$("#mainsearch_body").attr("style", "height: 409px;");
	    	}
	    		
	    }
	});
}

/****************************************
 * Call Build Courselist
 ****************************************
 * Uebergabewerte:
 * - Field of Profession (Select Value)
 * - Targetgroup (Select Value)
 * - Location (Input Value)
 * - Slider Position (Range Slider)
 * - Slider Position - Slider 1 (Course Slider)
 * - Slider Position - Slider 2 (Course Slider)
 * - Is Fundable (Checkbox)
 *
 * Rueckgabewert:
 * - JSON von dem Inhalt der Kursliste
 ****************************************/
function callBuildCourseList() {
	$.ajax({
	    url: 'index.php?eID=searchData&action=course_list&field_of_profession='+active_field_of_profession+'&targetgroup='+active_targetgroup+'&location='+active_location+'&range_slider_position='+active_range_slider_position+'&course_slider_position1='+active_course_slider_position_1+'&course_slider_position2='+active_course_slider_position_2+'&=is_fundable='+active_is_fundable,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	//buildCourseList(html);
		$.tablesorter.addParser({
			id: 'germandate',
			is: function(s) {
			  return false;
			},
			format: function(s) {
		       var a = s.split('.');
		       if(a[1] != undefined)
		       	a[1] = a[1].replace(/^[0]+/g,"");
		       return new Date(a.reverse().join("/")).getTime();
			},
			type: 'numeric'
		});
		
		$("#course_list")
		.tablesorter({
			textExtraction: function(node) { 
				if(node.childNodes[1]){
					foobar = node.childNodes[1].innerHTML;
				}else{
					foobar = node.innerHTML;
				}
				//$('#mainsearch_tipp_text').append(foobar);
				return foobar;
			},
			headers: {
				4: { sorter:'germandate'},
				5: { sorter:'germandate'},
				6: { sorter: false},
				7: { sorter: false},
				8: { sorter: false}
			},
			widgets: ['zebra'],
			sortList: [[0,0]],
			widthFixed: true
		})
		.tablesorterPager({container: $("#pager"), positionFixed: false, seperator: " von ", txtPage: 'Seite '});
	    }
	});
}



/****************************************
 * Call Show Course Details
 ****************************************
 * Uebergabewerte:
 * - Course ID
 *
 * Rueckgabewert:
 * - HTML von der Kursdetailseite
 ****************************************/
function callShowCourseDetails(courseid) {
	$("#mainsearch_body_detail").html('<div class="frame_is_loading"></div>');
	active_course_id = courseid
	$.ajax({
	    url: 'index.php?eID=searchData&action=show_course_details&course_id='+courseid,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	$('#mainsearch_body_detail').scrollTop(0);
	    	$('#mainsearch_body_detail').attr('style', 'height: auto');
	    	$('#mainsearch_body_detail').show();
	    	$('#mainsearch_body').hide();
	    	$("#mainsearch_body_detail").html(html);
	    	
	    }
	});
}

/****************************************
 * Call Send Form
 ****************************************
 * 
 ****************************************/
function callSendForm(anrede, vorname, nachname, firma, strasse, plz, ort, telefon, email, text, information, callback, a_email, kurs_titel, kurs_end, kurs_start, kurs_massnahme_nr, kurs_id, kurs_titel) {
	$("#form-status-message").css('padding','10px');
	$.ajax({
	    url: 'index.php?eID=searchData',
	    type: 'post',
	    data: 'action=send_form&anrede='+anrede+'&vorname='+vorname+'&nachname='+nachname+'&firma='+firma+'&strasse='+strasse+'&plz='+plz+'&ort='+ort+'&telefon='+telefon+'&email='+email+'&text='+text+'&information='+information+'&callback='+callback+'&a_email='+a_email+'&kurs_start='+kurs_start+'&kurs_massnahme_nr='+kurs_massnahme_nr+'&kurs_end='+kurs_end+'&kurs_titel='+kurs_titel+'&kurs_id='+kurs_id+'&kurs_titel='.kurs_titel,
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	if (html == 'success') {
	    		$("#FormCourseBooking").html('<div class="form_success_send">Formular erfolgreich abgesendet.</div>');
	    		$("#form-status-message").html(' ');
	    	} else {
	    		$("#form-status-message").html(html);
	    	}
	    	
	    }
	});
}


/****************************************
 * Call Rebuild City
 ****************************************
 * 
 ****************************************/
function callRebuildLocation(location) {
	$.ajax({
	    url: 'index.php?eID=searchData&action=location&location='+location,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	if(html != null)
	    		parseJsonToLocationList(html)
	    	else
	    		$('#location_list').hide();

	    }
	});
}

/****************************************
 * Call Index Search
 ****************************************
 * 
 ****************************************/
function callRebuildIndexSearch(targetgroups, field_of_professions, topics){
	$.ajax({
	    url: 'index.php?eID=searchData&action=indexSearch&'+targetgroups+field_of_professions,
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	if(html != null)
	    		buildIndexList(html)
	    	else
	    		$('#location_list').hide();
			
		fillIndexTabs();

	    }
	});
}

function callRebuildFullTextMiniSearch(name, fullText){
	$.ajax({
	    url: 'index.php?eID=searchData&action=fullTextSearch&full_text='+encodeURIComponent(fullText),
	    type: 'post',
	    dataType: 'html',
	    error: function(){
	        alert('Error loading document');
	    },
	    success: function(html){
	    	if(html != null)
	    		parseJsonToFullTextListMiniSearch(name,html);
	    	else
	    		$(name).hide();
			
		fillIndexTabs();

	    }
	});
}


/*http://tablesorter.com*/

(function($) {
	$.extend({
		tablesorter: new function() {
			
			var parsers = [], widgets = [];
			
			this.defaults = {
				cssHeader: "header",
				cssAsc: "headerSortUp",
				cssDesc: "headerSortDown",
				sortInitialOrder: "asc",
				sortMultiSortKey: "shiftKey",
				sortForce: null,
				sortAppend: null,
				textExtraction: "simple",
				parsers: {}, 
				widgets: [],		
				widgetZebra: {css: ["even","odd"]},
				headers: {},
				widthFixed: false,
				cancelSelection: true,
				sortList: [],
				headerList: [],
				dateFormat: "us",
				decimal: '.',
				debug: false
			};
			
			/* debuging utils */
			function benchmark(s,d) {
				log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
			}
			
			this.benchmark = benchmark;
			
			function log(s) {
				if (typeof console != "undefined" && typeof console.debug != "undefined") {
					console.log(s);
				} else {
					alert(s);
				}
			}
						
			/* parsers utils */
			function buildParserCache(table,$headers) {
				
				if(table.config.debug) { var parsersDebug = ""; }
				
				var rows = table.tBodies[0].rows;
				
				if(table.tBodies[0].rows[0]) {

					var list = [], cells = rows[0].cells, l = cells.length;
					
					for (var i=0;i < l; i++) {
						var p = false;
						
						if($.metadata && ($($headers[i]).metadata() && $($headers[i]).metadata().sorter)  ) {
						
							p = getParserById($($headers[i]).metadata().sorter);	
						
						} else if((table.config.headers[i] && table.config.headers[i].sorter)) {
	
							p = getParserById(table.config.headers[i].sorter);
						}
						if(!p) {
							p = detectParserForColumn(table,cells[i]);
						}
	
						if(table.config.debug) { parsersDebug += "column:" + i + " parser:" +p.id + "\n"; }
	
						list.push(p);
					}
				}
				
				if(table.config.debug) { log(parsersDebug); }

				return list;
			};
			
			function detectParserForColumn(table,node) {
				var l = parsers.length;
				for(var i=1; i < l; i++) {
					if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)) {
						return parsers[i];
					}
				}
				// 0 is always the generic parser (text)
				return parsers[0];
			}
			
			function getParserById(name) {
				var l = parsers.length;
				for(var i=0; i < l; i++) {
					if(parsers[i].id.toLowerCase() == name.toLowerCase()) {	
						return parsers[i];
					}
				}
				return false;
			}
			
			/* utils */
			function buildCache(table) {
				
				if(table.config.debug) { var cacheTime = new Date(); }
				
				
				var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length) || 0,
					totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length) || 0,
					parsers = table.config.parsers, 
					cache = {row: [], normalized: []};
				
					for (var i=0;i < totalRows; ++i) {
					
						/** Add the table data to main data array */
						var c = table.tBodies[0].rows[i], cols = [];
					
						cache.row.push($(c));
						
						for(var j=0; j < totalCells; ++j) {
							cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));	
						}
												
						cols.push(i); // add position for rowCache
						cache.normalized.push(cols);
						cols = null;
					};
				
				if(table.config.debug) { benchmark("Building cache for " + totalRows + " rows:", cacheTime); }
				
				return cache;
			};
			
			function getElementText(config,node) {
				
				if(!node) return "";
								
				var t = "";
				
				if(config.textExtraction == "simple") {
					if(node.childNodes[0] && node.childNodes[0].hasChildNodes()) {
						t = node.childNodes[0].innerHTML;
					} else {
						t = node.innerHTML;
					}
				} else {
					if(typeof(config.textExtraction) == "function") {
						t = config.textExtraction(node);
					} else { 
						t = $(node).text();
					}	
				}
				return t;
			}
			
			function appendToTable(table,cache) {
				
				if(table.config.debug) {var appendTime = new Date()}
				
				var c = cache, 
					r = c.row, 
					n= c.normalized, 
					totalRows = n.length, 
					checkCell = (n[0].length-1), 
					tableBody = $(table.tBodies[0]),
					rows = [];
				
				for (var i=0;i < totalRows; i++) {
					rows.push(r[n[i][checkCell]]);	
					if(!table.config.appender) {
						
						var o = r[n[i][checkCell]];
						var l = o.length;
						for(var j=0; j < l; j++) {
							
							tableBody[0].appendChild(o[j]);
						
						}
						
						//tableBody.append(r[n[i][checkCell]]);
					}
				}	
				
				if(table.config.appender) {
				
					table.config.appender(table,rows);	
				}
				
				rows = null;
				
				if(table.config.debug) { benchmark("Rebuilt table:", appendTime); }
								
				//apply table widgets
				applyWidget(table);
				
				// trigger sortend
				setTimeout(function() {
					$(table).trigger("sortEnd");	
				},0);
				
			};
			
			function buildHeaders(table) {
				
				if(table.config.debug) { var time = new Date(); }
				
				var meta = ($.metadata) ? true : false, tableHeadersRows = [];
			
				for(var i = 0; i < table.tHead.rows.length; i++) { tableHeadersRows[i]=0; };
				
				$tableHeaders = $("thead th",table);
		
				$tableHeaders.each(function(index) {
							
					this.count = 0;
					this.column = index;
					this.order = formatSortingOrder(table.config.sortInitialOrder);
					
					if(checkHeaderMetadata(this) || checkHeaderOptions(table,index)) this.sortDisabled = true;
					
					if(!this.sortDisabled) {
						$(this).addClass(table.config.cssHeader);
					}
					
					// add cell to headerList
					table.config.headerList[index]= this;
				});
				
				if(table.config.debug) { benchmark("Built headers:", time); log($tableHeaders); }
				
				return $tableHeaders;
				
			};
						
		   	function checkCellColSpan(table, rows, row) {
                var arr = [], r = table.tHead.rows, c = r[row].cells;
				
				for(var i=0; i < c.length; i++) {
					var cell = c[i];
					
					if ( cell.colSpan > 1) { 
						arr = arr.concat(checkCellColSpan(table, headerArr,row++));
					} else  {
						if(table.tHead.length == 1 || (cell.rowSpan > 1 || !r[row+1])) {
							arr.push(cell);
						}
						//headerArr[row] = (i+row);
					}
				}
				return arr;
			};
			
			function checkHeaderMetadata(cell) {
				if(($.metadata) && ($(cell).metadata().sorter === false)) { return true; };
				return false;
			}
			
			function checkHeaderOptions(table,i) {	
				if((table.config.headers[i]) && (table.config.headers[i].sorter === false)) { return true; };
				return false;
			}
			
			function applyWidget(table) {
				var c = table.config.widgets;
				var l = c.length;
				for(var i=0; i < l; i++) {
					
					getWidgetById(c[i]).format(table);
				}
				
			}
			
			function getWidgetById(name) {
				var l = widgets.length;
				for(var i=0; i < l; i++) {
					if(widgets[i].id.toLowerCase() == name.toLowerCase() ) {
						return widgets[i]; 
					}
				}
			};
			
			function formatSortingOrder(v) {
				
				if(typeof(v) != "Number") {
					i = (v.toLowerCase() == "desc") ? 1 : 0;
				} else {
					i = (v == (0 || 1)) ? v : 0;
				}
				return i;
			}
			
			function isValueInArray(v, a) {
				var l = a.length;
				for(var i=0; i < l; i++) {
					if(a[i][0] == v) {
						return true;	
					}
				}
				return false;
			}
				
			function setHeadersCss(table,$headers, list, css) {
				// remove all header information
				$headers.removeClass(css[0]).removeClass(css[1]);
				
				var h = [];
				$headers.each(function(offset) {
						if(!this.sortDisabled) {
							h[this.column] = $(this);					
						}
				});
				
				var l = list.length; 
				for(var i=0; i < l; i++) {
					h[list[i][0]].addClass(css[list[i][1]]);
				}
			}
			
			function fixColumnWidth(table,$headers) {
				var c = table.config;
				if(c.widthFixed) {
					var colgroup = $('<colgroup>');
					$("tr:first td",table.tBodies[0]).each(function() {
						colgroup.append($('<col>').css('width',$(this).width()));
					});
					$(table).prepend(colgroup);
				};
			}
			
			function updateHeaderSortCount(table,sortList) {
				var c = table.config, l = sortList.length;
				for(var i=0; i < l; i++) {
					var s = sortList[i], o = c.headerList[s[0]];
					o.count = s[1];
					o.count++;
				}
			}
			
			/* sorting methods */
			function multisort(table,sortList,cache) {
				
				if(table.config.debug) { var sortTime = new Date(); }
				
				var dynamicExp = "var sortWrapper = function(a,b) {", l = sortList.length;
					
				for(var i=0; i < l; i++) {
					
					var c = sortList[i][0];
					var order = sortList[i][1];
					var s = (getCachedSortType(table.config.parsers,c) == "text") ? ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ? "sortNumeric" : "sortNumericDesc");
					
					var e = "e" + i;
					
					dynamicExp += "var " + e + " = " + s + "(a[" + c + "],b[" + c + "]); ";
					dynamicExp += "if(" + e + ") { return " + e + "; } ";
					dynamicExp += "else { ";
				}
				
				// if value is the same keep orignal order	
				var orgOrderCol = cache.normalized[0].length - 1;
				dynamicExp += "return a[" + orgOrderCol + "]-b[" + orgOrderCol + "];";
						
				for(var i=0; i < l; i++) {
					dynamicExp += "}; ";
				}
				
				dynamicExp += "return 0; ";	
				dynamicExp += "}; ";	
				
				eval(dynamicExp);
				
				cache.normalized.sort(sortWrapper);
				
				if(table.config.debug) { benchmark("Sorting on " + sortList.toString() + " and dir " + order+ " time:", sortTime); }
				
				return cache;
			};
			
			function sortText(a,b) {
				return ((a < b) ? -1 : ((a > b) ? 1 : 0));
			};
			
			function sortTextDesc(a,b) {
				return ((b < a) ? -1 : ((b > a) ? 1 : 0));
			};	
			
	 		function sortNumeric(a,b) {
				return a-b;
			};
			
			function sortNumericDesc(a,b) {
				return b-a;
			};
			
			function getCachedSortType(parsers,i) {
				return parsers[i].type;
			};
			
			/* public methods */
			this.construct = function(settings) {

				return this.each(function() {
					
					if(!this.tHead || !this.tBodies) return;
					
					var $this, $document,$headers, cache, config, shiftDown = 0, sortOrder;
					
					this.config = {};
					
					config = $.extend(this.config, $.tablesorter.defaults, settings);
					
					// store common expression for speed					
					$this = $(this);
					
					// build headers
					$headers = buildHeaders(this);
					
					// try to auto detect column type, and store in tables config
					this.config.parsers = buildParserCache(this,$headers);
					
					
					// build the cache for the tbody cells
					cache = buildCache(this);
					
					// get the css class names, could be done else where.
					var sortCSS = [config.cssDesc,config.cssAsc];
					
					// fixate columns if the users supplies the fixedWidth option
					fixColumnWidth(this);
					
					// apply event handling to headers
					// this is to big, perhaps break it out?
					$headers.click(function(e) {
						
						$this.trigger("sortStart");
						
						var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length) || 0;
						
						if(!this.sortDisabled && totalRows > 0) {
							
							
							// store exp, for speed
							var $cell = $(this);
	
							// get current column index
							var i = this.column;
							
							// get current column sort order
							this.order = this.count++ % 2;
							
							// user only whants to sort on one column
							if(!e[config.sortMultiSortKey]) {
								
								// flush the sort list
								config.sortList = [];
								
								if(config.sortForce != null) {
									var a = config.sortForce; 
									for(var j=0; j < a.length; j++) {
										if(a[j][0] != i) {
											config.sortList.push(a[j]);
										}
									}
								}
								
								// add column to sort list
								config.sortList.push([i,this.order]);
							
							// multi column sorting
							} else {
								// the user has clicked on an all ready sortet column.
								if(isValueInArray(i,config.sortList)) {	 
									
									// revers the sorting direction for all tables.
									for(var j=0; j < config.sortList.length; j++) {
										var s = config.sortList[j], o = config.headerList[s[0]];
										if(s[0] == i) {
											o.count = s[1];
											o.count++;
											s[1] = o.count % 2;
										}
									}	
								} else {
									// add column to sort list array
									config.sortList.push([i,this.order]);
								}
							};
							setTimeout(function() {
								//set css for headers
								setHeadersCss($this[0],$headers,config.sortList,sortCSS);
								appendToTable($this[0],multisort($this[0],config.sortList,cache));
							},1);

							// stop normal event by returning false
							return false;
						}
					// cancel selection	
					}).mousedown(function() {
						if(config.cancelSelection) {
							this.onselectstart = function() {return false};
							return false;
						}
					});
					
					// apply easy methods that trigger binded events
					$this.bind("update",function() {
						
						// rebuild parsers.
						this.config.parsers = buildParserCache(this,$headers);
						
						// rebuild the cache map
						cache = buildCache(this);
						
					}).bind("sorton",function(e,list) {
						
						$(this).trigger("sortStart");
						
						config.sortList = list;
						
						// update and store the sortlist
						var sortList = config.sortList;
						
						// update header count index
						updateHeaderSortCount(this,sortList);
						
						//set css for headers
						setHeadersCss(this,$headers,sortList,sortCSS);
						
						
						// sort the table and append it to the dom
						appendToTable(this,multisort(this,sortList,cache));

					}).bind("appendCache",function() {
						
						appendToTable(this,cache);
					
					}).bind("applyWidgetId",function(e,id) {
						
						getWidgetById(id).format(this);
						
					}).bind("applyWidgets",function() {
						// apply widgets
						applyWidget(this);
					});
					
					if($.metadata && ($(this).metadata() && $(this).metadata().sortlist)) {
						config.sortList = $(this).metadata().sortlist;
					}
					// if user has supplied a sort list to constructor.
					if(config.sortList.length > 0) {
						$this.trigger("sorton",[config.sortList]);	
					}
					
					// apply widgets
					applyWidget(this);
				});
			};
			
			this.addParser = function(parser) {
				var l = parsers.length, a = true;
				for(var i=0; i < l; i++) {
					if(parsers[i].id.toLowerCase() == parser.id.toLowerCase()) {
						a = false;
					}
				}
				if(a) { parsers.push(parser); };
			};
			
			this.addWidget = function(widget) {
				widgets.push(widget);
			};
			
			this.formatFloat = function(s) {
				var i = parseFloat(s);
				return (isNaN(i)) ? 0 : i;
			};
			this.formatInt = function(s) {
				var i = parseInt(s);
				return (isNaN(i)) ? 0 : i;
			};
			
			this.isDigit = function(s,config) {
				var DECIMAL = '\\' + config.decimal;
				var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';
				return RegExp(exp).test($.trim(s));
			};
			
			this.clearTableBody = function(table) {
				if($.browser.msie) {
					function empty() {
						while ( this.firstChild ) this.removeChild( this.firstChild );
					}
					empty.apply(table.tBodies[0]);
				} else {
					table.tBodies[0].innerHTML = "";
				}
			};
		}
	});
	
	// extend plugin scope
	$.fn.extend({
        tablesorter: $.tablesorter.construct
	});
	
	var ts = $.tablesorter;
	
	// add default parsers
	ts.addParser({
		id: "text",
		is: function(s) {
			return true;
		},
		format: function(s) {
			return $.trim(s.toLowerCase());
		},
		type: "text"
	});
	
	ts.addParser({
		id: "digit",
		is: function(s,table) {
			var c = table.config;
			return $.tablesorter.isDigit(s,c);
		},
		format: function(s) {
			return $.tablesorter.formatFloat(s);
		},
		type: "numeric"
	});
	
	ts.addParser({
		id: "currency",
		is: function(s) {
			return /^[£$€?.]/.test(s);
		},
		format: function(s) {
			return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));
		},
		type: "numeric"
	});
	
	ts.addParser({
		id: "ipAddress",
		is: function(s) {
			return /^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);
		},
		format: function(s) {
			var a = s.split("."), r = "", l = a.length;
			for(var i = 0; i < l; i++) {
				var item = a[i];
			   	if(item.length == 2) {
					r += "0" + item;
			   	} else {
					r += item;
			   	}
			}
			return $.tablesorter.formatFloat(r);
		},
		type: "numeric"
	});
	
	ts.addParser({
		id: "url",
		is: function(s) {
			return /^(https?|ftp|file):\/\/$/.test(s);
		},
		format: function(s) {
			return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));
		},
		type: "text"
	});
	
	ts.addParser({
		id: "isoDate",
		is: function(s) {
			return /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);
		},
		format: function(s) {
			return $.tablesorter.formatFloat((s != "") ? new Date(s.replace(new RegExp(/-/g),"/")).getTime() : "0");
		},
		type: "numeric"
	});
		
	ts.addParser({
		id: "percent",
		is: function(s) { 
			return /\%$/.test($.trim(s));
		},
		format: function(s) {
			return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));
		},
		type: "numeric"
	});

	ts.addParser({
		id: "usLongDate",
		is: function(s) {
			return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
		},
		format: function(s) {
			return $.tablesorter.formatFloat(new Date(s).getTime());
		},
		type: "numeric"
	});

	ts.addParser({
		id: "shortDate",
		is: function(s) {
			return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
		},
		format: function(s,table) {
			var c = table.config;
			s = s.replace(/\-/g,"/");
			if(c.dateFormat == "us") {
				// reformat the string in ISO format
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
			} else if(c.dateFormat == "uk") {
				//reformat the string in ISO format
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
			} else if(c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");	
			}
			return $.tablesorter.formatFloat(new Date(s).getTime());
		},
		type: "numeric"
	});

	ts.addParser({
	    id: "time",
	    is: function(s) {
	        return /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);
	    },
	    format: function(s) {
	        return $.tablesorter.formatFloat(new Date("2000/01/01 " + s).getTime());
	    },
	  type: "numeric"
	});
	
	
	ts.addParser({
	    id: "metadata",
	    is: function(s) {
	        return false;
	    },
	    format: function(s,table,cell) {
			var c = table.config, p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
	        return $(cell).metadata()[p];
	    },
	  type: "numeric"
	});
	
	// add default widgets
	ts.addWidget({
		id: "zebra",
		format: function(table) {
			if(table.config.debug) { var time = new Date(); }
			$("tr:visible",table.tBodies[0])
	        .filter(':even')
	        .removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0])
	        .end().filter(':odd')
	        .removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);
			if(table.config.debug) { $.tablesorter.benchmark("Applying Zebra widget", time); }
		}
	});	
})(jQuery);




(function($) {
	$.extend({
		tablesorterPager: new function() {
			
			function updatePageDisplay(c) {
				var s = $(c.cssPageDisplay,c.container).val(c.txtPage + (c.page+1) + c.seperator + c.totalPages);	
			}
			
			function setPageSize(table,size) {
				var c = table.config;
				c.size = size;
				c.totalPages = Math.ceil(c.totalRows / c.size);
				c.pagerPositionSet = false;
				moveToPage(table);
				fixPosition(table);
				alert('tablesize: ' + c.size);
			}
			
			function fixPosition(table) {
				var c = table.config;
				if(!c.pagerPositionSet && c.positionFixed) {
					var c = table.config, o = $(table);
					if(o.offset) {
						c.container.css({
							top: o.offset().top + o.height() + 'px',
							position: 'absolute'
						});
					}
					c.pagerPositionSet = true;
				}
			}
			
			function moveToFirstPage(table) {
				var c = table.config;
				c.page = 0;
				moveToPage(table);
			}
			
			function moveToLastPage(table) {
				var c = table.config;
				c.page = (c.totalPages-1);
				moveToPage(table);
			}
			
			function moveToNextPage(table) {
				var c = table.config;
				c.page++;
				if(c.page >= (c.totalPages-1)) {
					c.page = (c.totalPages-1);
				}
				moveToPage(table);
				
				//f�r wiederaufnahme
			}
			
			function moveToPrevPage(table) {
				var c = table.config;
				c.page--;
				if(c.page <= 0) {
					c.page = 0;
				}
				moveToPage(table);
			}
						
			
			function moveToPage(table) {
				var c = table.config;
				if(c.page < 0 || c.page > (c.totalPages-1)) {
					c.page = 0;
				}
				
				renderTable(table,c.rowsCopy);
			}
			
			function renderTable(table,rows) {
				
				var c = table.config;
				var l = rows.length;
				//var s = (c.page * c.size);
				//var e = (s + c.size);
				var s = (c.page * 6);
				var e = (s + 6);
				if(e > rows.length ) {
					e = rows.length;
				}
				//$('#mainsearch_tipp_text').html('rows: ' + l + '<br/>\n from row: ' + s + '<br/>\n row count: ' + e + '<br/>\n config size: ' + c.size + '<br/>\n config page: ' + c.page);
				
				
				var tableBody = $(table.tBodies[0]);
				
				// clear the table body
				
				$.tablesorter.clearTableBody(table);
				
				for(var i = s; i < e; i++) {
					
					//tableBody.append(rows[i]);
					
					var o = rows[i];
					var l = o.length;
					for(var j=0; j < l; j++) {
						
						tableBody[0].appendChild(o[j]);

					}
				}
				
				fixPosition(table,tableBody);
				
				$(table).trigger("applyWidgets");
				
				if( c.page >= c.totalPages ) {
        			moveToLastPage(table);
				}
				
				updatePageDisplay(c);
			}
			
			this.appender = function(table,rows) {
				
				var c = table.config;
				
				c.rowsCopy = rows;
				c.totalRows = rows.length;
				//c.totalPages = Math.ceil(c.totalRows / c.size);
				c.totalPages = Math.ceil(c.totalRows / 6);
				
				renderTable(table,rows);
			};
			
			this.defaults = {
				size: 7,
				offset: 0,
				page: 0,
				totalRows: 0,
				totalPages: 0,
				container: null,
				cssNext: '.next',
				cssPrev: '.prev',
				cssFirst: '.first',
				cssLast: '.last',
				cssPageDisplay: '.pagedisplay',
				cssPageSize: '.pagesize',
				txtPage: 'Page ',
				seperator: " of ",
				positionFixed: true,
				appender: this.appender
			};
			
			this.construct = function(settings) {
				
				return this.each(function() {	
					
					config = $.extend(this.config, $.tablesorterPager.defaults, settings);
					
					var table = this, pager = config.container;
				
					$(this).trigger("appendCache");
					
					config.size = parseInt($(".pagesize",pager).val());
					
					$(config.cssFirst,pager).click(function() {
						moveToFirstPage(table);
						return false;
					});
					$(config.cssNext,pager).click(function() {
						moveToNextPage(table);
						return false;
					});
					$(config.cssPrev,pager).click(function() {
						moveToPrevPage(table);
						return false;
					});
					$(config.cssLast,pager).click(function() {
						moveToLastPage(table);
						return false;
					});
					$(config.cssPageSize,pager).change(function() {
						setPageSize(table,parseInt($(this).val()));
						return false;
					});
				});
			};
			
		}
	});
	// extend plugin scope
	$.fn.extend({
        tablesorterPager: $.tablesorterPager.construct
	});
	
})(jQuery);				




/*
bMap - � 2010 Darren Dignam
darren.dignam@blocsoft.com
http://www.blocsoft.com/bMap
Released under the GPL License
http://www.gnu.org/licenses/gpl-3.0.txt
*/
(function(a){a.fn.bMap=function(b){eachOptions=b;return this.each(function(){obj=a(this);var d={mapCenter:[51,0],mapZoom:1,mapCanvas:obj.attr("id"),mapSidebar:"none",mapLayerbar:"none",mapType:G_NORMAL_MAP,loadMsg:"<h2>Loading...</h2>"};var c=a.extend(d,eachOptions);obj.data("bMap",new bMap(c))});return this}})(jQuery);function bMap(a){if(!GBrowserIsCompatible()){alert("This browser is unable to render the map!");return}var b={mapCenter:[51,0],mapZoom:1,mapCanvas:"map",mapSidebar:"none",mapLayerbar:"none",mapType:G_NORMAL_MAP,loadMsg:"<h2>Loading...</h2>"};var a=$.extend(b,a);this.mapSidebar=a.mapSidebar;this.useSidebar=(this.mapSidebar!="none")?true:false;this.mapLayerbar=a.mapLayerbar;this.useLayerbar=(this.mapLayerbar!="none")?true:false;this.layerMgrArray=[];this.map=new GMap2(document.getElementById(a.mapCanvas));this.map.setUIToDefault();this.map.setCenter(new GLatLng(a.mapCenter[0],a.mapCenter[1]),a.mapZoom);this.map.setMapType(a.mapType);this.mapCanvas=a.mapCanvas;$("#"+this.mapCanvas).append("<div id='"+this.mapCanvas+"bMapLoadMsg' class='bMapLoadMsg'>"+a.loadMsg+"</div>");$("#"+this.mapCanvas+"bMapLoadMsg").css("left",($("#map").width()/2)-50);$("#"+this.mapCanvas+"bMapLoadMsg").css("top",($("#map").height()/2)-50);if(a.icons){this.icons=a.icons}if(a.markers){this.insertMarkers(a.markers)}this.geoCoder=new GClientGeocoder()}bMap.prototype.insertMarkers=function(a){tmpThis=this;var b=tmpThis.layerMgrArray.length;var c={name:"Layer"+b,type:"marker",visible:"true"};var a=$.extend(c,a);tmpThis.layerMgrArray[b]=a;tmpThis.layerMgrArray[b].toggleLayer=function(){if(this.visible!="false"){this.visible="false";for(i=0,j=this.data.length;i<j;i++){this.data[i].hide()}$("#bMapLyr"+b).addClass("bLyrHide");return false}else{this.visible="true";for(i=0,j=this.data.length;i<j;i++){this.data[i].show()}$("#bMapLyr"+b).removeClass("bLyrHide");return true}};jQuery.each(a.data,function(f,g){var d=new GLatLng(g.lat,g.lng);if(g.icon){tmpThis.layerMgrArray[b].data[f]=new GMarker(d,tmpThis.icons[parseInt(g.icon)])}else{tmpThis.layerMgrArray[b].data[f]=new GMarker(d)}if(g.title){var e="<h2>"+g.title+"</h2>";if(g.body){e+=g.body}GEvent.addListener(tmpThis.layerMgrArray[b].data[f],"click",function(){tmpThis.layerMgrArray[b].data[f].openInfoWindowHtml(e);$("#"+tmpThis.mapSidebar+" div").removeClass("bSideSelect")})}tmpThis.map.addOverlay(tmpThis.layerMgrArray[b].data[f]);if(tmpThis.useSidebar){$('<div rel="'+b+'">'+g.title+"</div>").click(function(){GEvent.trigger(tmpThis.layerMgrArray[b].data[f],"click");$("#"+tmpThis.mapSidebar+" div").removeClass("bSideSelect");$(this).addClass("bSideSelect")}).appendTo("#"+tmpThis.mapSidebar)}});this.refreshLayerbar();return this};bMap.prototype.AJAXMarkers=function(c){var b={serviceURL:"mapService.php",action:"getMarkers",vars:[]};var c=$.extend(b,c);var a=this;$("#"+this.mapCanvas+"bMapLoadMsg").show();$.post(c.serviceURL,{action:c.action,vars:c.vars},function(d){a.insertMarkers(d);$("#"+a.mapCanvas+"bMapLoadMsg").hide()},"json");return this};bMap.prototype.insertLine=function(c){tmpThis=this;var a=tmpThis.layerMgrArray.length;var d={name:"Layer"+a,type:"line",visible:"true",color:"#00F",weight:5,opacity:1};var c=$.extend(d,c);tmpThis.layerMgrArray[a]=c;tmpThis.layerMgrArray[a].toggleLayer=function(){if(this.visible!="false"){this.visible="false";this.data.hide();$("#bMapLyr"+a).addClass("bLyrHide");return false}else{this.visible="true";this.data.show();$("#bMapLyr"+a).removeClass("bLyrHide");return true}};var b=[];jQuery.each(c.data,function(e,f){b.push(new GLatLng(f.lat,f.lng))});tmpThis.layerMgrArray[a].data=new GPolyline(b,tmpThis.layerMgrArray[a].color,parseInt(tmpThis.layerMgrArray[a].weight),parseFloat(tmpThis.layerMgrArray[a].opacity));tmpThis.map.addOverlay(tmpThis.layerMgrArray[a].data);if(c.visible!="true"){tmpThis.layerMgrArray[a].data.hide()}this.refreshLayerbar();return this};bMap.prototype.AJAXLine=function(b){var c={serviceURL:"mapService.php",action:"getLine",vars:[]};var b=$.extend(c,b);var a=this;$("#"+this.mapCanvas+"bMapLoadMsg").show();$.post(b.serviceURL,{action:b.action,vars:b.vars},function(d){a.insertLine(d);$("#"+a.mapCanvas+"bMapLoadMsg").hide()},"json");return this};bMap.prototype.insertPolygon=function(d){tmpThis=this;var b=tmpThis.layerMgrArray.length;var a={name:"Layer"+b,type:"polygon",visible:"true",color:"#00F",weight:5,opacity:0.5};var d=$.extend(a,d);tmpThis.layerMgrArray[b]=d;tmpThis.layerMgrArray[b].toggleLayer=function(){if(this.visible!="false"){this.visible="false";this.data.hide();$("#bMapLyr"+b).addClass("bLyrHide");return false}else{this.visible="true";this.data.show();$("#bMapLyr"+b).removeClass("bLyrHide");return true}};var c=[];jQuery.each(d.data,function(e,f){c.push(new GLatLng(f.lat,f.lng))});tmpThis.layerMgrArray[b].data=new GPolygon(c,tmpThis.layerMgrArray[b].color,parseInt(tmpThis.layerMgrArray[b].weight),1,tmpThis.layerMgrArray[b].color,parseFloat(tmpThis.layerMgrArray[b].opacity));tmpThis.map.addOverlay(tmpThis.layerMgrArray[b].data);if(d.visible!="true"){tmpThis.layerMgrArray[b].data.hide()}this.refreshLayerbar();return this};bMap.prototype.AJAXPolygon=function(b){var c={serviceURL:"mapService.php",action:"getPolygon",vars:[]};var b=$.extend(c,b);var a=this;$("#"+this.mapCanvas+"bMapLoadMsg").show();$.post(b.serviceURL,{action:b.action,vars:b.vars},function(d){a.insertPolygon(d);$("#"+a.mapCanvas+"bMapLoadMsg").hide()},"json");return this};bMap.prototype.removeAllLayers=function(){for(i=0,j=this.layerMgrArray.length;i<j;i++){if(this.layerMgrArray[i].type=="marker"){for(i2=0,j2=this.layerMgrArray[i].data.length;i2<j2;i2++){this.map.removeOverlay(this.layerMgrArray[i].data[i2])}}else{this.map.removeOverlay(this.layerMgrArray[i].data)}this.layerMgrArray[i].data=0;if(this.useSidebar){$("#"+this.mapSidebar+' div[rel="'+i+'"]').remove()}}this.layerMgrArray.length=0;this.refreshLayerbar();return this};bMap.prototype.removeLayer=function(a){if(this.layerMgrArray[a].type=="marker"){for(i2=0,j2=this.layerMgrArray[a].data.length;i2<j2;i2++){this.map.removeOverlay(this.layerMgrArray[a].data[i2])}}else{this.map.removeOverlay(this.layerMgrArray[a].data)}this.layerMgrArray[a].data=0;if(this.useSidebar){$("#"+this.mapSidebar+' div[rel="'+a+'"]').remove()}this.refreshLayerbar();return this};bMap.prototype.popLayer=function(){var a=this.layerMgrArray.length-1;var b=this.layerMgrArray.pop();if(b.type=="marker"){for(i2=0,j2=b.data.length;i2<j2;i2++){this.map.removeOverlay(b.data[i2])}}else{this.map.removeOverlay(b.data)}b.data=0;if(this.useSidebar){$("#"+this.mapSidebar+' div[rel="'+a+'"]').remove()}this.refreshLayerbar();return this};bMap.prototype.shiftLayer=function(){for(i3=0,j3=this.layerMgrArray.length;i3<j3;i3++){if(this.layerMgrArray[i3].data!=0){var a=i3;break}}if(this.layerMgrArray[a].type=="marker"){for(i2=0,j2=this.layerMgrArray[a].data.length;i2<j2;i2++){this.map.removeOverlay(this.layerMgrArray[a].data[i2])}}else{this.map.removeOverlay(this.layerMgrArray[a].data)}this.layerMgrArray[a].data=0;this.layerMgrArray[a].name="";this.layerMgrArray[a].type="";if(this.useSidebar){$("#"+this.mapSidebar+' div[rel="'+a+'"]').remove()}this.refreshLayerbar();return this};bMap.prototype.refreshLayerbar=function(){if(this.mapLayerbar){var b=this;$("#"+this.mapLayerbar).html("");for(var d=0,c=this.layerMgrArray.length;d<c;d++){if(this.layerMgrArray[d].data!=0){if(this.layerMgrArray[d].visible!="false"){var a=""}else{a="class='bLyrHide' "}$("<div "+a+"id='bMapLyr"+d+"' rel='"+d+"'>"+this.layerMgrArray[d].name+"</div>").click(function(){b.layerMgrArray[$(this).attr("rel")].toggleLayer()}).appendTo("#"+this.mapLayerbar)}}}};bMap.prototype.centerAtAddress=function(b){var a=this;this.geoCoder.getLatLng(b,function(c){if(c){a.map.setCenter(c)}});return this};



//var googleAPIKey = "###APIKEY###";
var googleAPIKey = "ABQIAAAAKRq_Jp1wZGv_4to9ZWOgtRRT6QwPVqzT6PlS9jWAPDq8kqgjCRRinfKGx3iJyzyq5OPnU5jNuhVFwQ";
	var is_loaded = false;
	var theGMap = function(){
		
		//$(this).unbind('mouseover', theGMap);
		$(this).find('.location_info_big').html($('#apiMap').show());
		/*if (document.all && !window.opera) {
			$(this).find('#apiMap').append('<div class="beta-layer"></div>');
			$('.beta-layer').css({'height':'408px','width':'462px','position':'absolute','left':'0','top':'0','background-color':'#F00','z-index':5000,'filter':'alpha(opacity = 10)'});
			$('.beta-layer').mousedown(function(){
				$(this).css('display','none');
			});
			$('#apiMap').mouseup(function(){
				$(this).css('display','block');
			});
			$('.beta-layer').mouseover(function(){
				$(this).closest('.location_info_small').die('mouseover');
				$(this).die('mouseover');
				currentActiveMap = true;
			});
			$('.beta-layer').mouseout(function(){
				currentActiveMap = false;
			});
			//$('#lmc3d').hide();
			
		}*/
			
		var coords = $(this).parent().find('span a.courseLocInfo').attr('rel').split("|");
		window.setTimeout(function() {
			var map;
			var directionsPanel;
			var directions;

				
			if(coords[2] != 'false'){
				var latlng1 = [new GLatLng( coords[0], coords[1] ),new GLatLng( coords[2], coords[3] )];
			}else{
				var latlng1 = [new GLatLng( coords[0], coords[1] )];
			}
			
			map = new GMap2(document.getElementById("apiMap"));
			map.setCenter(new GLatLng(0,0), 0);
			map.setUIToDefault();
			
			for ( var i = 0; i < latlng1.length; i++ )
			{
				var marker = new GMarker( latlng1[ i ] );
				map.addOverlay( marker );
			}
		
				
			var latlngbounds = new GLatLngBounds( );
			for ( var i = 0; i < latlng1.length; i++ )
			{
			  latlngbounds.extend( latlng1[ i ] );
			}
		
			if(coords[2] != 'false'){	
				map.setCenter( latlngbounds.getCenter( ), map.getBoundsZoomLevel( latlngbounds ) );
			}else{
				map.setCenter( latlngbounds.getCenter( ), 14 );
			}
			
			
			directions = new GDirections(map);
			directions.load("from: " + coords[0] + "," + coords[1] + " to: " + coords[2] + "," + coords[3]);
			
			//window.setTimeout(function() {
				$('div.is_fundable_info_small').each(function(){
					//$(this).css('border','1px solid red');
					$(this).css('position','static');
					//alert('test');
				});
			//}, 1);
		
		}, 25);
		$('#apiMap').mouseover(function(){
			$(this).closest('.location_info_small').die('mouseover');
			$(this).die('mouseover');
			currentActiveMap = true;
			
			//window.event.cancelBubble = true;
			//$('#mainsearch_tipp_text').text('id: ' + window.event.srcElement.id);
		});
		
		$('#apiMap').mouseout(function(){
			//window.setTimeout(function(){
				currentActiveMap = false;
				
				//window.event.cancelBubble = true;

			//},30);
		});
		

		
		$(this).find('.location_info_big').show();
		$(this).mouseover(function(e){
			$(this).css('z-index',2000).find('.location_info_big').css('z-index',2000).show();	
		});
		$(this).mouseout(function(){
			var tempThis = this;
			window.setTimeout(function(){
				//alert('zeile 88');
				if(!currentActiveMap){
				$(tempThis).css('z-index',1).find('.location_info_big').hide();
				$('.location_info_small').live("mouseover",theGMap);
				$('div.is_fundable_info_small').css('position','relative');
				$('#HideTheMap').append($(tempThis).find('#apiMap'));
				}
			},50);
			//window.event.cancelBubble = true;

		});
		//console.debug('small -> mouseout');
		//window.event.cancelBubble = true;
	}

	var currentActiveMap = false;
	
	$('td.location').live('mouseover',function(){
		$('#mainsearch_body').css('z-index',1000);
		$(this).mouseout(function(){
			$('#mainsearch_body').css('z-index',1);
		});
	});
	
	$('.location_info_small').live("mouseover",theGMap);
	

