/**
 *
 * BHC-JS-CONTAINER-FILE
 *  required: prototype & yui
 *  author: Ivo Heckmann, Frank "die Wand" Hösler, Flip
 *
 */

/* rte container array per page */
var rte_container = new Array();

/*  Hier kommen alle Funktionen rein, die onload ausgeführt werden sollen */
/*	Event.observe(window, 'load', function() {*/
function localstart() {
    // Browser detection
	app_name = navigator.appName.toLowerCase();
	app_vers = navigator.appVersion.toLowerCase();
	is_ie6 = !!(app_name.indexOf("microsoft internet explorer") != -1 && app_vers.indexOf("msie 6.") != -1 && !window.opera);

    //
    pngfix();
	formPrefillmeListener();
	setFormFocus();
	start_homepic_rotation();
	dwLayerListener();
	dwAccordionListener();
	dwFindTimestamps();
	layerUrlControl();
	tt_listener();
	RTEListener();
	scrollListPrepare();
	set_use_first_ahref_event_handler();

	//
	$$('form.form_reset').each(function(el){el.reset();});
	$$('.maxsigns').each(function(el){max_sings_with_a_input_listener(el);});
	$$('input.autocomplete').each(function(el){add_autocompleter_listener(el);});
    $$('.numbersonly').each(function(el){numbersonly_input_listener(el);});

	//
	$$('.ajax_tags').each(function(el) {add_tag_listener(el);} );
	$$('.ajax_objactions').each(function(el) {add_objactions_listener(el);} );

	//
	$$('textarea.autogrow').each(function(el) {add_autogrow_listener(el);} );
	$$('.alternating').each(function(el) {alternate_classes(el, ['wechsel-0','wechsel-1']);} );

	//sitestat-click-tracking
	$$('.sitestatclick').each(function(el) {add_tracking(el,'click');} );
	$$('.sitestatshow').each(function(el) {add_tracking(el,'display');} );

	// Bookmarken
	bm_is_open = false;
	bm_keep_open = false;

	// ping
	var pe = new PeriodicalExecuter(ping, 300);

	// chat?
	$$('#chat').each(function(el) {chat_start();} );
}

function ping(){
         new Ajax.Request('/services/ping',  {method: 'get'});
}

YAHOO.util.Event.onDOMReady(localstart);


/* GLOBAL (layer-control, listener, string-func. etc.) */
function layerUrlControl(){
         var url = location.href;
         var url_splited = location.href.split('#');
         if(url_splited[1]){
            var control = url_splited[1].split(':');
            switch (control[0]) {
                case 'l':if(control[1]) openlayer(control[1]);
                   break;

            }
         }
}

/* anchor layer control */
function openlayer(type){
          switch (type) {
            case "finishsignupsuccess":
                 dwLayerShow(645, 320, 'iframe', '/user/finishsignupsuccess', 'modal:true, ');
               break;
            case "finishsignupnosuccess":
                 dwLayerShow(550, 200, 'iframe', '/user/finishsignupnosuccess', 'modal:true, ');
               break;
            case "resetpasswordsuccess":
                 dwLayerShow(540, 280, 'iframe', '/user/resetpasswordsuccess', 'modal:true, ');
               break;
            case "loginmask":
                 dwLayerShow(455, 390, 'iframe', '/user/login', 'modal:true, ');
               break;
            case "signup":
                 dwLayerShow(975, 370, 'iframe', '/user/signup', 'modal:true, ');
               break;
            case "infotour":
                 dwLayerShow(975, 570, 'iframe', '/manual/infotour/index.html', 'modal:true, ');
               break;
            case "question_catalog":
            	dwLayerShow(600, 500, 'iframe', '/user/questionCatalog', 'modal:true, ');
            	break;
            case "recommend":
                 dwLayerShow(630, 400, 'iframe', '/user/invitefriendslayer', 'modal:true, ');
               break;
          }
}

function max_sings_with_a_input_listener(el){
         //
         var pattern = /max_(.*)/;

         if($(el.id + '_maxsigns')){
            if(pattern.test(el.className)){
               max = el.className.match(pattern)[1];
               $(el.id + '_maxsigns').update(max);

               if(el.value.length>0){
                  $(el.id + '_maxsigns').update(max - el.value.length);
               }
            }
         }

         //
         YAHOO.util.Event.addListener(el, "focus", max_sings_with_a_input);
         YAHOO.util.Event.addListener(el, "keydown", max_sings_with_a_input);
         YAHOO.util.Event.addListener(el, "keyup", max_sings_with_a_input);
         YAHOO.util.Event.addListener(el, "blur", max_sings_with_a_input);
}




var max_sings_with_a_input = function(e) {
    //
    var max = '';
    var	pattern = /max_(.*)/;
	if (pattern.test(this.className)) {
		 max = this.className.match(pattern)[1];
	}

	if(max != ''){
	   //
       if(this.value.length>max){
          this.value = this.value.substr(0, max);
       }

       //
       if($(this.id + '_maxsigns')){
          $(this.id + '_maxsigns').update(max - this.value.length);
       }
    }
}


function numbersonly_input_listener(el){
      if(el.className.match('numbersonly')){
        if (!el.value.match(/^\d+$/)){
	      if(el.className.match('allowspecialchars')){
	        el.value = el.value.replace(/[^\d \+/_-]/g, '');
	      }
	      else {
	        el.value = el.value.replace(/[^\d]/g, '');
	      }
        }

        YAHOO.util.Event.addListener(el, "focus", numbersonly_input);
        YAHOO.util.Event.addListener(el, "keydown", numbersonly_input);
        YAHOO.util.Event.addListener(el, "keyup", numbersonly_input);
        YAHOO.util.Event.addListener(el, "blur", numbersonly_input);
      }
}


var numbersonly_input = function(e) {

    if (!this.value.match(/^\d+$/)){
      if(this.className.match('allowspecialchars')){
        this.value = this.value.replace(/[^\d \+/_-]/g, '');
      }
      else {
        this.value = this.value.replace(/[^\d]/g, '');
      }
    }
}


function pngfix() {
	if (!is_ie6) return; // the good-ones leave here

    var new_src = "/images/bhc/blind.gif"
	var pngs = YAHOO.util.Selector.query('img.pngfix');
	for(var i = 0; i < pngs.length; i++) {
	    //
		var curr_src = pngs[i].src;
		pngs[i].src = new_src;
		pngs[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + curr_src + "', sizingMethod='scale')";

		// 2 prevent double-fixing
		YAHOO.util.Dom.removeClass(pngs[i], 'pngfix');
	}
}

/* intelligentboschteaser */
function expandTeaser(id)
{
	if (id == undefined) id = 'flash';
	var element = $(id);
	element.setStyle({width: '780px', left: '214px'});
}

function collapseTeaser(id)
{
	if (id == undefined) id = 'flash';
	var element = $(id);
	element.setStyle({width: '200px', left: '794px'});
}

function resizeElement(id,width,height){
         //
         var element = $(id);
         if(element){
            // there is no property style.left - code will stop here
            var currentLeft  = element.getStyle('left').split('px')[0];
            var currentWidth = $(id).getWidth();

	        var left =
	        (
		     currentWidth > width
		     ? eval(eval(currentLeft) + (currentWidth - width)) + "px"
		     : eval(currentLeft - (width - currentWidth)) + "px"
	        );

	        element.style.width = width + "px";
	        element.style.left = left;

	        /*
            element.setStyle({ width: width + "px", left: left + "px"});
            element.setStyle({ width: width, left: left});
         	*/
         }
}

function reloadImgSrc(el_id, src_url){
         //
         var el = $(el_id);
         if(el){
            el.setAttribute("src", src_url);
         }
}

/* AUTOGROW Textarea */
function add_autogrow_listener(el){

         if(!el.getStyle('line-height')) {
             el.setStyle('line-height', '18px');
         }

         if(!el.getStyle('min-height')) {
             el.setStyle('min-height', '50px');
         }

         if(!el.rows) {
             el.rows = 2;
         }

         //
         YAHOO.util.Event.addListener(el, "focus", autogrowStart);
         YAHOO.util.Event.addListener(el, "blur", autogrowStop);

}

var autogrowStart = function(e) {
            if($('autogrow_hidden'))
                $('autogrow_hidden').remove();

            el = this;

            this.autogrow_div = new Element('div', {id: 'autogrow_hidden'});
            this.autogrow_div.setStyle( {lineHeight : el.getStyle('line-height'),
                                    minHeight : el.getStyle('min-height'),
                                    fontSize : el.getStyle('font-size'),
									fontFamily: el.getStyle('font-family'),
									width      : el.getWidth()+'px',
									padding    : el.getStyle('padding'),
									overflowX : 'hidden',
                                    position: 'absolute',
                                    top: '0px',
                                    left: '-99999px'});

            el.insert({after: this.autogrow_div});

            this.interval = window.setInterval('autogrowCheck(el)' , 300);

}

var autogrowCheck = function (e) {
            var html = e.getValue().replace(/(<|>)/g, '').replace(/\n/g, '<br>x');
            e.autogrow_div.update(html);
            var line_height = parseInt(e.getStyle('line-height'));

            if((e.autogrow_div.getHeight() / line_height != 1) &&
               (Math.floor(e.getHeight() / line_height) != Math.floor((e.autogrow_div.getHeight() + line_height) / line_height))) {
            	e.rows = Math.ceil(e.autogrow_div.getHeight() / line_height);
            }
}

var  autogrowStop = function(e) {
            if($('autogrow_hidden'))
                $('autogrow_hidden').remove();
            clearInterval(this.interval);
}


function add_tag_listener(el){
         //
         var cn = '';
         var obj_id = '';
         var deletable = 'true';

         // get obj_id & cn
         var pattern = /obj_cn_([a-z0-9]{0,20})/;
         if(pattern.test(el.className)){
            //
            cn = el.className.match(pattern)[1];
         }
         var pattern = /obj_id_([a-z0-9]{0,20})/;
         if(pattern.test(el.className)){
            //
            obj_id = el.className.match(pattern)[1];
         }

         // get form
         var url        = '/dwTag/ajaxgettagsform?cn=' + cn + '&obj_id=' + obj_id + '&deletable=' + deletable + '&r=' + Math.random();
 	     new Ajax.Request(url,  {method: 'get',
	                             onSuccess:  function(transport){
                                      //
                                      el.update(transport.responseText);

                                      // autocompleter
                                      $$('input.autocomplete').each(function(el){add_autocompleter_listener(el);});


	                             },
	                             onLoading: function(){
                                      //
                                      el.update('...Loading...');
	                             },
	                             evalJS: 'false'
	                            }
	                      );
}

function add_objactions_listener(el){
         //
         var cn = '';
         var obj_id = '';
         var self_url = '';
         var print_url = '';

         // get obj_id & cn
         var pattern = /obj_cn_([a-z0-9]{0,20})/;
         if(pattern.test(el.className)){
            //
            cn = el.className.match(pattern)[1];
         }
         var pattern = /obj_id_([a-z0-9]{0,20})/;
         if(pattern.test(el.className)){
            //
            obj_id = el.className.match(pattern)[1];
         }

         if($('url_obj_id_' + obj_id)){
            self_url = $('url_obj_id_' + obj_id).innerHTML;
         }

         if($('print_url_obj_id_' + obj_id)){
            print_url = $('print_url_obj_id_' + obj_id).innerHTML;
         }

         // get form
         var url        = '/services/ajaxobjactions';
 	     var params     = 'cn=' + cn + '&obj_id=' + obj_id + '&self_url=' + encodeURIComponent(self_url) + '&print_url=' + encodeURIComponent(print_url) + '&r=' + Math.random();
 	     new Ajax.Request(url,  {method: 'post',
 	                             parameters: params,
	                             onSuccess:  function(transport){
                                      //
                                      el.update(transport.responseText);

                                      //
                                      dwLayerListener();

	                             },
	                             onLoading: function(){
                                      // IE sometimes onSuccess is executed faster then onLoading - don't
                                      // el.update(' ');
	                             },
	                             evalJS: 'false'
	                            }
	                      );
}

function add_autocompleter_listener(el){
         //
         var ajax_request_type = 'simple';

         // type_projectnewtool
         var type = el.id;
         var pattern = /type_([a-z0-9]{0,20})/;
         if(pattern.test(el.className)){
            //
            type = el.className.match(pattern)[1];
         }

         // div around input
				 if (size_from_classname(el)[0]) {
				 	var ac_width = size_from_classname(el)[0];
				 	el.style.width = (ac_width - 39) + "px";
				 } else {
       		var ac_width = el.offsetWidth + 27;
         }
         el.insert( {before: '<div id="ac_frame_' + el.id + '" class="ac-frame ac-' + type + ' clearfix" style="width: ' + ac_width + 'px;" />'} );
         var ac_frame = document.getElementById('ac_frame_' + el.id);
         ac_frame.appendChild(el);

				 // dropdown button
         var drop_sim_image = '<span id="drop_down_element_' + el.id + '" class="ac-button"><img src="/images/bhc/layout/autocomplete_button.gif" width="23" height="27" /></span>';
         el.insert( {after: drop_sim_image} );

         // type_projectnewtool
         var type = el.id;
         var pattern = /type_([a-z0-9]{0,40})/;
         if(pattern.test(el.className)){
            //
            type = el.className.match(pattern)[1];
         }

         // convert to fake-input for tags
/*
         if(type =='pmto') {

         		var ac_fake_width = ac_width - 40;
         		el.insert( { before: '<div id="ac_fake_input_' + el.id + '" class="ac-fake-input clearfix" style="width: ' + ac_fake_width + 'px;" />' } );
         		var ac_fake_input = document.getElementById('ac_fake_input_' + el.id);
		        ac_fake_input.appendChild(el);
         		el.insert( { before: '<span id="' + el.id + '_container" class="ac-clicktags"></span>'});
         }
*/

         if(type =='pmto') {
         		/* Struktur für Tags um Input aufbauen */
         		var ac_frame = $('ac_frame_' + el.id);
         		if (ac_frame)  ac_frame.insert( {before: '<div id="ac_frame_n_tags_' + el.id + '" class="ac-frame-n-tags"></div>'});
						var ac_tagspace = document.getElementById("ac_frame_n_tags_" + el.id);
						var ac_container = document.getElementById(el.id + "_container");
						if ((ac_container) && (ac_tagspace)) ac_tagspace.appendChild(ac_container);
         		var ac_framediv = document.getElementById('ac_frame_n_tags_' + el.id);
         		if (ac_framediv)  ac_framediv.appendChild(ac_frame);
         }

         //
         if(!$(el.id + 'Container')){
            var result_div = '<div id="' + el.id + 'Container"></div>';
            el.insert( {after: result_div} );
         }
         // init datasource
         ds = new YAHOO.util.XHRDataSource('/autocompleter.php');
         ds.responseType = YAHOO.util.XHRDataSource.TYPE_JSARRAY;

         if(type == 'model') ajax_request_type = 'model';

         // set response-schema
         if(type == 'pmto')  ds.responseSchema = {fields:["name", "id"]};
         if(type == 'var3test') ds.responseSchema = {fields:["name", "id", "type"]};
         if(type == 'projectnewtool') ds.responseSchema = {fields:["name", "id", "type"]};

         // ac
         var ac = new YAHOO.widget.AutoComplete(el, el.id + "Container", ds);
         ac.prehighlightClassName = "yui-ac-prehighlight";

         // settings
         ac.queryDelay = .5;
         ac.minQueryLength = 0;
				 ac.animVert = false;

         // dropdown style
         var bToggler = YAHOO.util.Dom.get('drop_down_element_' + el.id);
         // var oPushButtonB = new YAHOO.widget.Button({container:bToggler});
         var toggleB = function(e) {
                        //
                        if(ac.isContainerOpen()){
                           ac.collapseContainer();
                        }
                        else{
                           ac.getInputEl().focus();
                           setTimeout(function() {
                             ac.sendQuery("");
                           },0);
                        }
         }
         YAHOO.util.Event.addListener(bToggler, "click", toggleB);
         // oPushButtonB.on("click", toggleB);


         //
         ac.generateRequest = function(sQuery) {
            if(ajax_request_type == 'simple') return '?type=' + type + '&value=' + _string_escape(el.value);
            if(ajax_request_type == 'model')  return '?type=' + type + '&value=' + _string_escape(el.value) + '&value2=' + _string_escape($('manufacturer').value) + '&value3=' + _string_escape($('tooltype').value);
         };

         // Events des Auf- und Zuklappens
         var customContainerExpandEvent= function() {
             debug_log("containerExpandEvent");
           	 YAHOO.util.Dom.addClass(document.getElementById('drop_down_element_' + el.id), "ac-open");
           	 ac_frame.style.zIndex = "10";
         }
         ac.containerExpandEvent.subscribe(customContainerExpandEvent);

         var customContainerCollapseEvent= function() {
             debug_log("containerCollapse");
           	 YAHOO.util.Dom.removeClass(document.getElementById('drop_down_element_' + el.id), "ac-open");
           	 ac_frame.style.zIndex = "1";
         }
         ac.containerCollapseEvent.subscribe(customContainerCollapseEvent);


         // PM
         if(type == 'pmto'){
            //
            ac._updateValue = function() {
              el.value = '';
              return true;
            }

            ac.itemSelectEvent.subscribe(function(sType, aArgs) {
                                                    //
                                                    var username = aArgs[2][0];
                                                    var user_id = aArgs[2][1];
                                                    _dwPm_pmto_add_user(username, user_id);
                                                 }
            );
         }
         // /PM

         // VAR 3 TEST
         if(type == 'var3test' || type == 'projectnewtool'){
            //
            ac = _divider2acres(ac, type, el);
         }
         // /VAR 3 TEST

         // itemselecteventfunction
         var pattern = /itemselecteventfunction_([a-z0-9_\(\)]{0,20})/;
         if(pattern.test(el.className)){
            //
            this_function = el.className.match(pattern)[1];
            var customItemSelectEvent = function(){
                //
                debug_log(' --> customItemSelectEvent, call ' + this_function);
                eval(this_function);
                return true;
            }
            ac.itemSelectEvent.subscribe(customItemSelectEvent);
         }

}


function _divider2acres(ac, type, input_el){

         //
         ac.resultTypeList = false;
         var old_type = 0;
         var i = 0;

         ac.textboxChangeEvent.subscribe(function(oSelf){old_type = 0;first = true;});
         ac.textboxFocusEvent.subscribe(function(oSelf){old_type = 0;first = true;});
         ac.textboxKeyEvent.subscribe(function(oSelf){old_type = 0;first = true;});
         ac.typeAheadEvent.subscribe(function(oSelf){old_type = 0;first = true;});

         // create the new listener
         ac._onMyContainerClick = function(v,oSelf) {
           //
           var elTarget = YAHOO.util.Event.getTarget(v);
           var elTag = elTarget.nodeName.toLowerCase();

           //
           while(elTag) {
             debug_log(' click -> ' + elTag);
             switch(elTag) {
               case "tr":
                 return
               case "body":
                 return;
               case "li":
                 // In case item has not been moused over
                 debug_log(' click - li ');
                 oSelf._toggleHighlight(elTarget,"to");
                 oSelf._selectItem(elTarget);
                 return;
               default:
                 break;
           }

           elTarget = elTarget.parentNode;
           if(elTarget) {
             elTag = elTarget.nodeName.toLowerCase();
           }
         }
       };

       // add new listener
       YAHOO.util.Event.removeListener(ac._elContainer, "click");
       YAHOO.util.Event.addListener(ac._elContainer, "click", ac._onMyContainerClick, ac);

       // event -> insert top und bottom container
       var customContainerPopulate = function(this_ac, sQuery, allResults) {
         //
         debug_log(' event -> containerPopulate');

         //
         var el = this.getListEl();

         //
         var html_container_el_top = $('dividercontent_top_' + input_el.id);
         if(html_container_el_top) var new_html_top = $('dividercontent_top_' + input_el.id).innerHTML;
         if(new_html_top) el.insert( {top: '<li>' + new_html_top + '</li>'} );

         //
         var html_container_el_bottom = $('dividercontent_bottom_' + input_el.id);
         if(html_container_el_bottom) var new_html_bottom = $('dividercontent_bottom_' + input_el.id).innerHTML;
         if(new_html_bottom) el.insert( {bottom: '<li>' + new_html_bottom + '</li>'} );
       }
       ac.containerPopulateEvent.subscribe(customContainerPopulate);

       // event -> item select
       var customItemSelectEvent = function(){
           debug_log(' event -> itemSelect');
       }
       // ac.itemSelectEvent.subscribe(customItemSelectEvent);

       // result format
       ac.formatResult = function(oResultData, sQuery, sResultMatch){
         //
		 var aMarkup = ["<div class='resulitem'>",
						"<span>",
						oResultData['name'],
						"</span>",
						"</div>"];
						// / mit Type entfernt  + ' / ' + oResultData['type'] 25.10.2009 12:32:42
						//
                        var item_string = '';

                        // item content
                        item_string += aMarkup.join("");

                        // divider?  itemSelectEvent
                        if(old_type == 0 && oResultData['type']==1 && $('dividercontent_' + input_el.id)){
                           //
                           item_string += $('dividercontent_' + input_el.id).innerHTML;
                           old_type = 1;
                        }

                        //
                        return (item_string);
       };


       //
       return ac;
}




function _string_escape(string){
         //
         string  = string.replace(/<.*?>/g, '');
         string  = string.escapeHTML();
         string  = string.stripScripts();
         string  = encodeURIComponent(string);
         //
         return string;
}

function toggle(id){
         _toggle(id);
}

function _toggle(id){
         var el = $(id);
         if(el){
            if(el.style.display == 'none') el.style.display = 'block';
            else el.style.display = 'none';
         }
}

function _toggle2(id){
         var el = $(id);
         if(el){
            if(el.style.display == 'none') el.style.display = 'inline';
            else el.style.display = 'none';
         }
}

function _toogle_checkbox_checked(el){
         if(el){
            if(el.checked == true) el.checked = false;
            else el.checked = true;
         }
}

function _show_block(id) {
    var el = $(id);
    if(el) el.style.display = 'block';
}

function _show(id){
         var el = $(id);
         if(el) el.show();
}


function _hide(id){
         var el = $(id);
         if(el) el.hide();
}

function debug_log(value){
         //
         var log_container = $('debug');
         var new_html = '<div>' + value + '</div';

         //
         if(log_container){
            log_container.insert( {bottom: new_html} );
         }

}

function _alert(a_text, a_width, a_height, a_ok) {

	a_ok = (typeof(a_ok) != "undefined") ? a_ok : 'OK';
	a_width = ((typeof(a_width) != "undefined") && (a_width)) ? a_width : 446;
	a_height = ((typeof(a_height) != "undefined") && (a_height)) ? a_height : 80;
	l_content = "<div class=\"dialogbox clearfix\"><p class=\"dialog\">" + a_text + "</p><div class=\"button clearfix b2 rightfloater alertbutton\"><div class=\"button_status\"><div class=\"button_before\"> </div><input type=\"submit\" onclick=\"dwLayerClose(this);\" style=\"width: 70px;\" onmouseout=\"javascript: dwButtonRemoveStatus(this);\" onmousedown=\"javascript: dwButtonAddStatus(this, 'active');\" onmouseover=\"javascript: dwButtonAddStatus(this, 'hover');\" class=\"button_center\" value=\"OK\" name=\"closeit\"/> <div class=\"button_after\"> </div></div></div> </div>";
	dwLayerShow(a_width, a_height, "direct_content", l_content, "modal:true, ");
}

function _confirm_fire(el, act) {
    //
	var act_json = decodeURIComponent(act).evalJSON();
    var act_str  = false;

    if(act_json["url"]){
       //
       var target = "self";
       if(act_json["target"]) target = act_json["target"];
       act_str = target + ".location.href ='" + act_json["url"] + "';" ;
    }

    if(act_json["func"]){
       act_str = act_json["func"];
    }

    // do the action
    if(act_str) eval(act_str);

    // close layer
    dwLayerClose(el);
}

function _confirm(a_text, a_width, a_height, a_act, a_ok, a_abort) {

	// optional parameters
	a_width = ((typeof(a_width) != "undefined") && (a_width)) ? a_width : 446;
	a_height = ((typeof(a_height) != "undefined") && (a_height)) ? a_height : 80;
	a_ok = (typeof(a_ok) != "undefined") ? a_ok : 'OK';
	a_abort = (typeof(a_abort) != "undefined") ? a_abort : 'Abbrechen';
	l_content = "<div class=\"dialogbox clearfix\"><p class=\"dialog\">" + a_text + "</p>"
	l_content += "<div class=\"button rightfloater b1 alertbutton\"><div class=\"button_status\"><div class=\"button_before\"> </div><input type=\"button\" onclick=\"_confirm_fire(this, '"+ a_act +"');\" style=\"width: 70px;\" onmouseout=\"javascript: dwButtonRemoveStatus(this);\" onmousedown=\"javascript: dwButtonAddStatus(this, 'active');\" onmouseover=\"javascript: dwButtonAddStatus(this, 'hover');\" class=\"button_center\" value=\""+ a_ok +"\" name=\"closeit\" /> <div class=\"button_after\"> </div></div></div>";
	l_content += "<div class=\"button rightfloater b1 alertbutton\"><div class=\"button_status\"><div class=\"button_before\"> </div><input type=\"button\" onclick=\"dwLayerClose(this);\" style=\"width: 75px;\" onmouseout=\"javascript: dwButtonRemoveStatus(this);\" onmousedown=\"javascript: dwButtonAddStatus(this, 'active');\" onmouseover=\"javascript: dwButtonAddStatus(this, 'hover');\" class=\"button_center\" value=\""+ a_abort +"\" name=\"closeit\"/> <div class=\"button_after\"> </div></div></div>";
	l_content += "</div>";
	dwLayerShow(a_width, a_height, "direct_content", l_content, "modal:true, ");
}

function size_from_classname(el) {
	/* Groesse des Elements aus CSS-Klasse ermitteln*/
	var cn = el.className;
	var result = new Array;
	result[0] = false;
	result[1] = false;

	var pattern_width = /w__(.*)__w/;
	if (pattern_width.test(cn)) {
		result[0] = cn.match(/w__(.*)__w/)[1];
	}

	var pattern_height = /h__(.*)__h/;
	if (pattern_height.test(cn)) {
		result[1] = cn.match(pattern_height)[1];
	}

	//Output 0-> Breite, 1-> Hoehe
	return result;
}


/* form behaviours*/

emptyInput = function(e) {
	this.value = "";
}

restoreDummytextInput = function(e){
    if((this.value == "") && (!YAHOO.util.Dom.hasClass(this, 'no_refill'))){
       	this.value = this.title;
    }
}

emptyTA = function(e) {
	this.innerHTML = "";
}

function formEmptymeListener() {
	/* input/textarea leeren sich onclick */
	var empty_input = YAHOO.util.Selector.query('input.emptyme');
	YAHOO.util.Event.addListener(empty_input, "click", emptyInput);
	YAHOO.util.Event.addListener(empty_input, "blur", restoreDummytextInput);

    // store original value in title-attri
    for (i = 0; i < empty_input.length; i++){
         empty_input[i].title = empty_input[i].value;
    }

    var empty_ta    = YAHOO.util.Selector.query('textarea.emptyme');
	YAHOO.util.Event.addListener(empty_ta, "click", emptyTA);
}

function formPrefillmeListener() {
	/* befuellt input mit wert aud title, falls keiner drinsteht*/
	var prefills = YAHOO.util.Selector.query('input.prefillme');
	for (i = 0; i < prefills.length; i++) {
		if (prefills[i].value == "") {
			prefills[i].value = prefills[i].title;
			YAHOO.util.Dom.addClass(prefills[i], "emptyme");
		}
		prefills[i].title = "";
	}
	formEmptymeListener();
}

function setFormFocus() {
	/* onload Fokus auf Formularfeld */
	var focusme = YAHOO.util.Selector.query('form .focusme');
	if (focusme[0]){
	    focusme[0].focus();
	}
}

/* GARAGE */
function _update_garage_toolboox(){
         //
         var url        = '/user/ajaxupdateusertoolboox';
         var target_el  = $('profil_garage_view_toolboox_tools');
 	     new Ajax.Request(url,  {method: 'get',
	                             onSuccess:  function(transport){
                                     target_el.update(transport.responseText);
	                             }
	                            }
	                      );
}

function remove_tool_from_toolbox(id){
         //
         var url        = '/user/ajaxremovetoolfromtoolbox';
         var params     = 'id=' + _string_escape(id);
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){

	                             }
	                            }
	                      );

         //
         if($('tool_edit_' + id)) $('tool_edit_' + id).remove();
         if($('tool_' + id))      $('tool_' + id).remove();
}

function add_tool_to_toolbox(){
         _add_tool_to_toolbox(true);
}

function add_tool_to_toolbox_without_error(){
         //
         _add_tool_to_toolbox(false);
}

function _add_tool_to_toolbox(show_error){
         var el_tooltype = $('tooltype');
         var el_manufacturer = $('manufacturer');
         var el_model = $('model');
         var el_toolbox_edit =  $('toolbox_tools_edit');
         var el_err_div = $('toolbox_edit_err_div');

         //
         var url        = '/user/ajaxaddtooltotoolbox';
         var params     = 'tooltype=' + _string_escape(el_tooltype.value) + '&manufacturer=' + _string_escape(el_manufacturer.value) + '&model='+ _string_escape(el_model.value);

         if(el_tooltype.value.length>0){
            //
 	        new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            //
	                                            el_toolbox_edit.insert( {bottom: transport.responseText} );

	                                            // reset form
	                                            el_tooltype.value = '';
	                                            el_tooltype.focus();

	                                            el_manufacturer.value = '';
	                                            el_manufacturer.className = el_manufacturer.className + ' disabled';
                                                el_manufacturer.readOnly = false;

	                                            el_model.value = '';
	                                            el_model.className = el_model.className + ' disabled';
                                                el_model.readOnly = false;

                                                el_err_div.hide();

                                                //
                                                _update_garage_toolboox();

	                                }
	                               }
	                          );

         }
         else{
           if(show_error)el_err_div.show();
         }
}

function _update_garage_images(target_div_id, obj_id, cn, imagekey, thumbnails_image_key, main_image_pos, layerlink, layer_imagekey, layer_thumbnails_image_key){
         //
         var target_div = $(target_div_id);
         var url = '/dwImage/collectionView';
         var params  = 'cn=' + cn + '&obj_id=' + obj_id + '&imagekey=' + imagekey + '&thumbnails_image_key=' + thumbnails_image_key + '&main_image_pos=' + main_image_pos;
             params += '&layerlink=' + layerlink + '&layer_imagekey=' + layer_imagekey + '&layer_thumbnails_image_key=' + layer_thumbnails_image_key;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         //
											 sitestat_track_ajax(url);
	                                         target_div.update(transport.responseText);
	                             }
	                           }
	                          );

}

function _update_garage_images_privacy(dropdown_el){
         var url        = '/user/ajaxsetgarageimageprivacy';
         var params     = 'setting=' + dropdown_el.value;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         //
											 alert(transport.responseText);

	                             }
	                           }
	                          );
}

/* DASHBOARD */
function _dashboard_more_usernetwork_events(rec){
         var target_div = $('more_events');
         var url        = '/user/dashboardMoreEvents';
         var params     = 'rec=' + rec;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         //
	                                         target_div.insert( {before: transport.responseText} );
	                                         $('usernetwork_more_link' + rec).hide();
	                                         $$('.alternating').each(function(el) {alternate_classes(el, ['wechsel-0','wechsel-1']);} );
                                       		 dwFindTimestamps();
	                             }
	                           }
	                          );

}

function _dashboard_more_userpinboard_events(rec){
         var target_div = $('more_events');
         var url        = '/user/dashboardMoreEvents2';
         var params     = 'rec=' + rec;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         //
	                                         target_div.insert( {before: transport.responseText} );
	                                         $('usernetwork_more_link' + rec).hide();
	                                         $$('.alternating').each(function(el) {alternate_classes(el, ['wechsel-0','wechsel-1']);} );
                                       		 dwFindTimestamps();
	                             }
	                           }
	                          );
}

function _profilpinboard_more_events(rec, user_id){
         var target_div = $('more_events');
         var url        = '/user/profilPinboardMoreEvents';
         var params     = 'rec=' + rec + '&id=' + user_id;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         //
	                                         target_div.insert( {before: transport.responseText} );
	                                         $('usernetwork_more_link' + rec).hide();
	                                         $$('.alternating').each(function(el) {alternate_classes(el, ['wechsel-0','wechsel-1']);} );
                                       		 dwFindTimestamps();
	                             }
	                           }
	                          );
}


function _del_user_event(id){
         //
         var url = '/user/ajaxdeluserevent';
         var params  = 'value=' + id;

         //
	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport) {
	                                         //
																					 sitestat_track_ajax(url);
	                                         $('event_' + id).remove();
                                             alternate_classes($('usernetwork'), ['wechsel-1', 'wechsel-0']);

	                             }
	                           }
	                          );
}

function user_clear_msg2all(id, id2, id3){
         var url = '/user/ajaxclearmsg2all';
	     new Ajax.Request(url,  {method: 'post',
	                             onSuccess:  function(transport) {
	                                         $(id).innerHTML = '';
	                                         $(id2).innerHTML = '';
	                                         $(id3).hide();
	                             }
	                           }
	                          );
}

function user_set_msg2all(el, target_el_id, target_time_el_id, target_icon_el_id){

         var params  = 'value=' + _string_escape(el.value) + '&source_id='  + el.id + '&target_el_id=' + target_el_id + '&target_time_el_id=' + target_time_el_id + '&target_icon_el_id=' + target_icon_el_id + '&r=' + Math.random() + '&jsonrequested=1';
         var url = '/user/ajaxsetmsg2all';
	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport) {
	                                         //
	                                         sitestat_track_ajax(url);
	                                         var json = transport.responseText.evalJSON();
	                                         for(i=0;i<json.length;i++){

                                                 var one = json[i];
                                                 if(one[0] == "elementmod"){
                                                    element_modification(one[1]);
                                                 }
	                                         }
	                             }
	                           }
	                          );
}

function user_write2wall(user_id, el){

         var params  = 'value=' + _string_escape(el.value) + '&user_id='  + user_id + '&r=' + Math.random();
         var url = '/user/ajaxwritewall';
	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport) {
	                                         //
	                                         // alert(transport.responseText);
	                                         var json = transport.responseText.evalJSON();
	                                         for(i=0;i<json.length;i++){

                                                 var one = json[i];
                                                 if(one[0] == "elementmod"){
                                                    element_modification(one[1]);
                                                 }
	                                         }
	                             }
	                           }
	                          );
}


/* VOTE */
function remove_vote_bottons(user_id, resultcontainerhash){
         //
         if(parent.$('user_actions_layer_data_vote')){parent.$('user_actions_layer_data_vote').hide();};
         if(parent.$('button_vote_' + user_id)){parent.$('button_vote_' + user_id).hide();};
         if(parent.$('user_actions_layer_data_' + resultcontainerhash + '_vote')){parent.$('user_actions_layer_data_' + resultcontainerhash + '_vote').hide();};

}
function vote_for(user_id, resultcontainerhash){
         //
         dwLayerShow(446, 115, 'iframe', '/user/votelayer?user_id=' + user_id + '&resultcontainerhash=' + resultcontainerhash, 'modal:true, ');

         /*
         var url        = '/user/ajaxDoUserVote?';
         var params     = 'user_id=' + user_id;
         var el         = $('user_actions_layer_data_' + resultcontainerhash + '_vote');
         var el_success = $('user_actions_layer_data_' + resultcontainerhash + '_vote_success');
         var el_error   = $('user_actions_layer_data_' + resultcontainerhash + '_vote_error');

	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport) {
	                                         //
	                                         result = transport.responseText.evalJSON();
	                                         if(el) el.hide();
                                             if(result['success']) el_success.show();
                                             else el_error.show();
	                             }
	                           }
	                          );
	     */
}

/* FRIENDs */
function friendrequest(user_id, resultcontainerhash){
         //
         dwLayerShow(590, 300, 'iframe', '/user/friendrequestlayer?user_id=' + user_id, 'modal:true, ');


         /*
         var url        = '/user/ajaxfriendrequest?';
         var params     = 'user_id=' + user_id;
         var el         = $('user_actions_layer_data_' + resultcontainerhash + '_friendrequest');
         var el_success = $('user_actions_layer_data_' + resultcontainerhash + '_friendrequest_success');
         var el_error   = $('user_actions_layer_data_' + resultcontainerhash + '_friendrequest_error');
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            if(el) el.hide();
                                                if(result['success']) el_success.show();
                                                else el_error.show();
	                                            // alert(result);
	                                            // elementmod_resulthandling(result);
	                             }
	                           }
	                          );
	     */
}

function accept_friendrequest(user_id){
         var url = '/user/ajaxacceptfriendrequest?';
         var params  = 'user_id=' + user_id;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            elementmod_resulthandling(result);
	                             }
	                           }
	                          );
}

function dont_accept_friendrequest(user_id){
         //
         var url = '/user/ajaxremovefriendrequest?';
         var params  = 'user_id=' + user_id;
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            elementmod_resulthandling(result);
	                             }
	                           }
	                          );
}

function cancel_friendship(user_id){
         //
         var url = '/user/ajaxremovefriendrequest?';
         var params  = 'user_id=' + user_id + '&type=friendship';
 	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            elementmod_resulthandling(result);
	                             }
	                           }
	                          );
}


/* USERIMAGE */
function imageupload_userimage(result){
         var success = result[1];
         var params  = 'value=' + result['image'] + '&hash=' + result['hash'] + '&imagekey=' + result['imagekey'];
         if(success == 'success'){
            //
            var url = '/user/ajaxsetuserimage';
	        new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            var imagetag = $('imagetag_' + result[1]['hash']);
	                                            imagetag.src = result[0]['image'];
	                                            $('imagedellink_' + result[1]['hash']).show();
	                             }
	                           }
	                          );
         }
         else{
         	 if(result['error'].match(/large/)) {
           	_alert('Die Datei ist zu groß. Maximale Größe: 5 MB.');
           }
           else if(result['error'].match(/mime/)) {
           	_alert('Die Datei besitzt ein ungültiges Format.<br/>Zulässige Formate: jpg, png, bmp, gif.');
           }
           else {
           	_alert('Dein Bild konnte leider nicht übertragen werden.');
           }
         }
}

function imagedelete_userimage(result){
         var success = result[1];
         var params  = '&hash=' + result[2]['hash'] + '&image_key=' + result[3]['image_key'];
         if(success == 'success'){
            //
            var url = '/user/ajaxdeluserimage';
	        new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            result = transport.responseText.evalJSON();
	                                            var imagetag = $('imagetag_' + result[1]['hash']);
	                                            imagetag.src = result[0]['image'];
	                                            $('imagedellink_' + result[1]['hash']).hide();
	                             }
	                           }
	                          );
         }
         else{
           alert('Fehler');
         }
}
/* USERIMAGE & IMAGES */
function imageupload(json){
         //
         sitestat_track_ajax('/dwImage/imageupload');
         json = unescape(json);
         var result = json.evalJSON();
         var type = result[0];

         if(type == 'user'){
            imageupload_userimage(result);
         }
         if(type == 'user_garage'){
            imageupload_collection(result);
         }
         if(type == 'project'){
            imageupload_collection(result);
         }
         if(type == 'DbProjectStep'){
            imageupload_collection(result);
         }
         if(type == 'thread'){
            imageupload_collection(result);
         }
         if(type == 'ProductTestBlog'){
            imageupload_collection(result);
         }
}

function imagedelete(json){
         sitestat_track_ajax('/dwImage/imagedelete');
         var result = json.evalJSON();
         var type = result[0];
         if(type == 'user'){
            imagedelete_userimage(result);
         }
}

/* toolbarlayer-stuff */
function check_toolbarlayerinfos_and_showif(){
         //
         var url = '/user/ajaxgettoolbarlayerinfos';
	     new Ajax.Request(url,  {method: 'get',
	                             onSuccess:  function(transport){
	                                         infolayersource = transport.responseText;
	                                         $('layerinfos').update(infolayersource);
	                                         // alert(infolayersource);
	                             }
	                            }
	                      );
}

function set_toolbarlayerinfos_showed(hashes){
         //
         var url    = '/user/ajaxsettoolbarlayerinfosshowed';
         var params = 'hashes=' + hashes;

 	     //
	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){

	                             }
	                           }
	                     );
}

function set_toolbarinfos_newpoints_if(value){
         // get old value
         el = $('user_points_view');
         if(el){
            var old_value = parseInt(el.innerHTML);
            var new_value = parseInt(value);
            if(new_value > old_value){
               // alert('oldpoints => ' + old_value + ' new points => ' + new_value);
               el.update(new_value);
            }
         }
}



/* dwComment */
function _dwCommentAjaxListOnLoad(){
         //
         dwLayerListener();
         dwFindTimestamps();
         $$('form.form_reset').each(function(el){el.reset();});
         $$('.maxsigns').each(function(el){max_sings_with_a_input_listener(el);});
}

function _dwComment_comment_update(comment_id){
         //
         var new_value = $('edited_comment_' + comment_id).value;
         if(new_value && new_value.length>0){
            //
            var url = '/dwComment/updatecomment';
            var params = 'id=' + comment_id + '&value=' + _string_escape(new_value);

	        //
	        new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                             sitestat_track_ajax(url);
	                                             $('comment_txt_view_' + comment_id).innerHTML = transport.responseText;
	                                            // alert(transport.responseText);
	                                            // result = transport.responseText.evalJSON();

	                             }
	                           }
	                     );

         }
}

/* IMAGES */
function _dwImage_view_next_click(obj_id){
         //
         var thumbs = parseInt($('thumbs_container_' + obj_id).value);
         var thumbnail_offset = parseInt($('thumbnail_offset_container_' + obj_id).value);
         var next_img_pos = thumbnail_offset + thumbs;

         //
         // alert(' -> thumbs -> ' + thumbs);
         // alert(' -> thumbnail_offset -> ' + thumbnail_offset);
         // alert(' -> next_img_pos -> ' + next_img_pos);

         // is there a next img?
         var to_slide = false;
         if($('athumb_' + obj_id + '_' + next_img_pos)){
            $('athumb_' + obj_id + '_' + next_img_pos).show();

            // remove last
            if($('athumb_' + obj_id + '_' + thumbnail_offset)){
               //
               $('athumb_' + obj_id + '_' + thumbnail_offset).hide();
               $('thumbs_prev_' + obj_id).show();
            }
         }

         // alert('athumb_' + obj_id + '_' + (next_img_pos + 1) + ' -> '  + $('athumb_' + obj_id + '_' + (next_img_pos + 1)));
         if($('athumb_' + obj_id + '_' + (next_img_pos + 1))){
            to_slide = true;
         }

         //
         // alert('to slide -> ' + to_slide);
         if(!to_slide){
            $('thumbs_next_' + obj_id).hide();
         }

         //
         $('thumbnail_offset_container_' + obj_id).value = (thumbnail_offset + 1);
}

function _dwImage_view_prev_click(obj_id){
         //
         var thumbs = parseInt($('thumbs_container_' + obj_id).value);
         var thumbnail_offset = parseInt($('thumbnail_offset_container_' + obj_id).value);
         var prev_img_pos = thumbnail_offset - 1;

         //
         // alert(' -> thumbs -> ' + thumbs);
         // alert(' -> thumbnail_offset -> ' + thumbnail_offset);
         // alert(' -> prev_img_pos -> ' + prev_img_pos);

         // is there a next img?
         var to_slide = false;

         if($('athumb_'+ obj_id + '_' + prev_img_pos)){
            $('athumb_'+ obj_id + '_' + prev_img_pos).show();

            // remove first
            if($('athumb_' + obj_id + '_' + (thumbnail_offset + thumbs - 1) )){
               //
               $('athumb_' + obj_id + '_' + (thumbnail_offset + thumbs - 1) ).hide();
               $('thumbs_next_' + obj_id).show();
            }
         }

         // alert('athumb_' + obj_id + '_' + (prev_img_pos - 1) + ' -> '  + $('athumb_' + obj_id + '_' + (prev_img_pos - 1)));
         if($('athumb_' + obj_id + '_' + (prev_img_pos - 1))){
            to_slide = true;
         }

         //
         // alert('to slide -> ' + to_slide);
         if(!to_slide){
            $('thumbs_prev_' + obj_id).hide();
         }


         //
         $('thumbnail_offset_container_' + obj_id).value = (thumbnail_offset - 1);
}

function _dwImage_set_title(id, i, ownercheck){
         //
         // $('image_' + i + '_edit_title').value = "asd";
         // alert('image_' + i + '_edit_title');
         //alert($('image_' + i + '_edit_title'));
         //alert($('image_' + i + '_edit_title').getValue());
         //$('image_' + i + '_edit_title').hide();
         var url = '/dwImage/setObjTitle';
         var params = 'id=' + id + '&ownercheck=' + ownercheck + '&value=' + _string_escape($('image_' + i + '_edit_title').value);

	     //
	     new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            // alert(transport.responseText);
	                                            // result = transport.responseText.evalJSON();

	                             }
	                           }
	                     );

	     $('image_' + i + '_edit_title').value = $('image_' + i + '_edit_title').value;
	     $('image_' + i + '_view_title').update($('image_' + i + '_edit_title').value);

}

/*
function _testcall(id, layeradd){
         //
         var url = '/dwRecommend/send';
         var friends_name  = $('friends_name' + layeradd).value;
         var friends_email = $('friends_email' + layeradd).value;
         var my_name       = '';
         if($('my_name' + layeradd)) my_name = $('my_name' + layeradd).value;
         var my_email      = '';
         if($('my_email' + layeradd)) my_email = $('my_email' + layeradd).value;
         var captcha_input = '';
         if($('captcha_input' + layeradd)) captcha_input = $('captcha_input' + layeradd).value;
         var target_url = $('url' + layeradd).value;
         var key = '';
         if($('key' + layeradd)) key = $('key' + layeradd).value;

         //
         var params = 'key=' + key +'&url=' + target_url + '&friends_name=' + friends_name +'&friends_email=' + friends_email + '&my_name=' + my_name + '&my_email=' + my_email + '&captcha_input=' + captcha_input;

         //
         new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
                                                      // alert(transport.responseText);
                                                      $(id).update(transport.responseText);
	                                                 }
	                                    }
	                     );

}
*/

function _dwImage_delete(id, i, ownercheck, dim, parentform){
         //
         var url = '/dwImage/delObj';
         var params = 'id=' + id + '&ownercheck=' + ownercheck; // + '&value=' + $('image_' + i+dim + '_edit_title').value;

         //
	     new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            //
										        sitestat_track_ajax(url);
										        var forms                 = $$('.imageform'+dim);
										        var all_hidden_or_no_form = true;
										        if(forms.length > 0) all_hidden_or_no_form = true;
										        // alert(forms.length);
										        for(var ii=0;ii<forms.length;ii++){
										            if(forms[ii].style.display == 'block' || forms[ii].style.display == '') all_hidden_or_no_form = false;
										        }
										        if(all_hidden_or_no_form){
										           // so we have to call for an other form and preview container
										           var i_value = parseInt($('i_container' + dim).value);
										           _dwImage_new_form((i_value + 1), ownercheck, dim, parentform, false); // TODO pass correct video_allowed param
                                                   _dwImage_new_resultcontainer((i_value + 1), ownercheck, dim, parentform);
                                                   $('i_container'+dim).value = (i_value + 1);
                                                   $('upload_dummy_button'+dim).hide();
										        }

										        //
										        result = transport.responseText.evalJSON();
										        if(result['newflag']){
										          _dwImage_set_Flag(result['newflag'], (i + dim), ownercheck, 'true', dim);
										        }
	                             }
	                           }
	                     );

         //
         var kk = String(i) + String(dim);
         // if(i == 0) kk = '0' + dim;
         $('image_' + kk + '_view_img').className = '';
         $('image_' + kk + '_view').hide();
         $('image_' + kk + '_edit').hide();


}

function  _dwImage_new_form(i, ownercheck, dim, parentform, imagekey, video_allowed){
          //
          var org_dim = dim;
          if(dim == '') {
             dim='--';
          }

          // alert('dim:' + dim);
          var url              = '/dwImage/newForm';
          var params           = 'parentform=' + parentform +'&i=' + (i) + '&dim=' + dim + '&ownercheck=' + ownercheck + '&obj_id=' + $('obj_id_container' + org_dim).value + '&imagekey=' + $('imagekey_container'+org_dim).value + '&cn=' + $('cn_container'+org_dim).value;

          if (video_allowed)
            params += '&video_allowed=true';

          var target_container = $('new_forms'+org_dim);
	      new Ajax.Request(url,  {method: 'post',
	                              parameters: params,
	                              evalScripts: true,
	                              onSuccess:  function(transport){
                                                //
                                                target_container.insert( {after: transport.responseText} );
	                                }
	                              }
	                       );


}

function _image_upload_action_onchange_action(parentform, i, dim, cn, obj_id, imagekey){
		 var oldtarget  = $(parentform).target;
		 var oldaction  = $(parentform).action;
		 var dim_string = dim;
		 // alert('4');
		 if(dim_string.length == 0) dim_string = '--';
		 var target_url =  '/dwImage/imageupload?parentform=' + parentform + '&hash=' + i + '&i=' + i + '&dim=' + dim_string + '&cn=' + cn + '&obj_id=' + obj_id + '&imagekey=' + imagekey + '&dbcontrol=1&generate_preview=1';
		 // alert(target_url);
		 $(parentform).action = target_url;
	     $(parentform).target = 'image_' + i + dim + '_iframe';
		 $(parentform).submit();
         // alert('3');
		 $('image_error' + dim).hide();
         $('video_error' + dim).hide();
		 // alert('3 1');
		 $('image_' + i + dim + '_loading').show();
		 // alert('3 2');
		 $('image_' + i + '_form' + dim).hide();
		 // alert('3 3');
		 var int_i = parseInt(i);
		 // alert('3 4' + int_i);
         // alert('2');
	     if($('image_' + (int_i+1) + '_form' + dim)){$('image_' + (int_i+1) + '_form' + dim).show();}
	     $(parentform).action = oldaction;
	     $(parentform).target = oldtarget;
	     // alert('1');
}

function _dwImage_new_resultcontainer(i, ownercheck, dim, parentform){
         //
         var org_dim = dim;
         if(dim == '') {
            dim='--';
         }
         var url              = '/dwImage/newResultContainer';
         var params           = 'i=' + (i) + '&dim=' + dim + '&ownercheck=' + ownercheck + '&parentform=' + parentform;
         var target_container = $('new_result_container'+org_dim);
	     new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
                                                //
                                                target_container.insert( {before: transport.responseText} );
	                                }
	                               }
	                       );


}


function _dwImage_set_Flag(id, i, ownercheck, unique_flag, dim){
         //
         // if(dim == '') dim='--';
         var url = '/dwImage/setFlag';
         var params = 'id=' + id + '&ownercheck=' + ownercheck + '&value=' + $('image_' + i + '_edit_title').value + '&unique_flag=' + unique_flag;

         //
	     new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            // alert(transport.responseText);
	                                            // result = transport.responseText.evalJSON();

	                             }
	                           }
	                     );


         // reset all  other
         var other = $$('input.imageflagradio' + dim);
         for(var ii=0;ii<other.length;ii++){
             other[ii].checked = false;
         }

         // set this
         // alert('image_' + i + '_edit_radio_flag');
         // alert('==>' + $$('image_' + i + '_edit_radio_flag').length);
         $('image_' + i + '_view_radio_flag').checked = true;
         $('image_' + i + '_edit_radio_flag').checked = true;

         //
         var k = 0;
         $$('.imageflagradio_loading_' + id).each( function(el){if(k==0){el.checked = true};k++;} );
         k = 0;
         $$('.imageflagradio_edit_' + id).each( function(el){if(k==0){el.checked = true};k++;} );
         k = 0;
         $$('.imageflagradio_view_' + id).each( function(el){if(k==0){el.checked = true};k++;} );

         //$$('.projectstepbutton_removestep').each(function(el) {
         //alert('==>' + $('image_' + i + '_view_radio_flag').checked);
         //alert('==>' + $('image_' + i + '_edit_radio_flag').checked);
         //$('image_' + i + '_edit_radio_flag').hide();
         //$('image_' + i + '_edit_radio_flag').hide();
}

function imageupload_collection(result){
         var success = result[1];
         var i = result['i'];
         var dim = result['dim'];
         var parentform = result['parentform'];
         // alert(parentform);
         // alert(' -> ' + dim);

         if(success == 'success'){
            //
            $('image_' + i+dim + '_edit').show();

            // images
            $('image_' + i+dim + '_edit_img').src = result['image_preview'];
            $('image_' + i+dim + '_view_img').src = result['image_preview'];

            //
            $('image_' + i+dim + '_edit_image_obj_id').value     = result['image_obj_id'];
            $('image_' + i+dim + '_view_image_obj_id').value     = result['image_obj_id'];
            $('image_' + i+dim + '_view_img').className = 'image'+dim;

            // radio if flag...
            if(result['flag'] == '1'){
               //
               // image_1_edit_radio_flag
               $('image_' + i+dim + '_edit_radio_flag').checked = true;
               $('image_' + i+dim + '_view_radio_flag').checked = true;
               $('image_' + i+dim + '_preview_radio_flag').checked = true;
            }

            $('image_' + i+dim + '_view_radio_flag').addClassName('imageflagradio_view_' + result['image_obj_id']);
            $('image_' + i+dim + '_edit_radio_flag').addClassName('imageflagradio_edit_' + result['image_obj_id']);
            $('image_' + i+dim + '_preview_radio_flag').addClassName('imageflagradio_loading_' + result['image_obj_id']);

            // image_<?php echo $i;?>_view_radio_flag


            //
            $('image_' + i+dim + '_loading').hide();

            // try 2 set new form display:block;
            if($('image_' + (i + 1) + '_form' + dim)){
               $('image_' + (i + 1) + '_form' + dim).show();
            }

            // so we have to call for an other form and preview container
            var images_count = $$('img.image'+dim).length;
            var max          = parseInt($('max_container'+dim).value);

            // alert(images_count + '<' + max);
            if(images_count<max){
               //
               var ownercheck = $('ownercheck_container' + dim).value;
			   var i_value = parseInt($('i_container'+ dim).value);
		       _dwImage_new_form((i_value + 1), ownercheck, dim, parentform, false, result['video_allowed']);
               _dwImage_new_resultcontainer((i_value + 1), ownercheck, dim, parentform);

               $('i_container'+dim).value = (i_value + 1);
            }
            else{
               // show dummy button
               $('upload_dummy_button'+ dim).show();
            }

            if (result['is_video'] == 'true'){
              $('image_' + i + '_edit_title').setValue(result['title']);
            }
         }
         else{
            //
            // alert('image_' + i + dim + '_loading');
            $('image_' + i + dim + '_loading').hide();

            if (result['is_video'] == 'true'){
              $('video_error'+ dim).show();
              $('video_error_urls' + dim).insert( {bottom: '<li>' + result['error_file'] + '</li>'} );
            }
            else
            {
              $('image_error'+ dim).show();
              if(result['error_file_size']) $('image_error_files' + dim).insert( {bottom: '<li>' + result['error_file'] + ' (' + result['error_file_size'] + 'MB)</li>'} );
              else $('image_error_files' + dim).insert( {bottom: '<li>' + result['error_file'] + '</li>'} );
            }
            //
            var ownercheck = $('ownercheck_container' + dim).value;
			var i_value = parseInt($('i_container' + dim).value);
		    _dwImage_new_form((i_value + 1), ownercheck, dim, parentform, false, result['video_allowed']);
            _dwImage_new_resultcontainer((i_value + 1), ownercheck, dim, parentform);
            $('i_container' + dim).value = (i_value + 1);
         }
}

/* dwTag */
function _dwTag_tag(cn, obj_id, deletable, separator, route){
         //
         var url          = '/dwTag/tag';
         var urlparams    = '?cn=' + cn + '&object_id=' + obj_id + '&deletable=' + deletable + '&separator=' + separator + '&route=' + route + '&r=' + Math.random();
         var params       = 'newtag=' + $('tag_input_' + cn + '_' + obj_id).value;
         var container_el = $('tags_' + cn + '_' + obj_id);

         //
	     new Ajax.Request(url + urlparams,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            var trimmed_text = trim(transport.responseText);
                                                if(trimmed_text.length > 0){
                                                   container_el.show();
                                                   container_el.update(trimmed_text);
                                                }
                                                else{
                                                   container_el.hide();
                                                }
                                                $('tag_input_' + cn + '_' + obj_id).value = '';

	                             }
	                           }
	                     );

}

function _dwTag_del(tag_name, cn, obj_id, dom_id){
         //
         // alert(tag_name + ', ' + cn +  ', ' + obj_id + ', ' + dom_id);
         var url          = '/dwTag/detag';
         var params       = 'tag=' + tag_name + '&cn=' + cn + '&object_id=' + obj_id;
         var container_el = $('tags_' + cn + '_' + obj_id);

         //
	     new Ajax.Request(url + '?r=' + Math.random(),  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            $('tag_' + dom_id).remove();
                                                var container_content_trimmed = trim(container_el.innerHTML);
                                                if(container_content_trimmed.length > 0){
                                                   container_el.show();
                                                }
                                                else{
                                                   container_el.hide();
                                                }

	                             }
	                           }
	                     );
}

/* PM */
function _dwPm_new_validate(){
         //
         var ret            = true;
         var reciever_count = $$('input.pmto').length;
         var subject_length = $('subject').value.length;
         ie6_fix_pm   = $("ac_frame_n_tags_pmto");

         //
         if(reciever_count == 0){
            //
            ret = false;
            $('input_container_pm_pmto').className = $('input_container_pm_pmto').className + ' error';
         }
         else{
            //
            removeClass($('input_container_pm_pmto'), 'error');
         }

         //
         if(subject_length == 0){
            //
            ret = false;
            $('input_container_pm_subject').className = $('input_container_pm_subject').className + ' error';
         }
         else{
            //
            removeClass($('input_container_pm_subject'), 'error');
         }

         //
         if(!ret){
           //
           $('input_container_pm_error_1').style.display = 'block';
           if ((is_ie6) && (ie6_fix_pm)) {
        	  	setTimeout('ie6_fix_pm.style.position = "static";', 20);
           }
         }
         else {
           $('input_container_pm_error_1').style.display = 'none';
         }

         //
         return ret;
}

function _dwPm_answer_validate(){
         //
         var ret            = true;


         //
         if($('msg').value.length == 0){
            //
            ret = false;
            $('input_container_pm_msg').className = $('input_container_pm_msg').className + ' error';
         }
         else{
            //
            removeClass($('input_container_pm_msg'), 'error');
         }

         //
         if(!ret){
           //
           $('input_container_pm_error_1').show();

         }
         else {
           $('input_container_pm_error_1').hide();
         }

         //
         return ret;
}

function _dwPm_new_reset(){
         $('input_container_pm_error_1').hide();
         $('subject').value='';
         $('msg').value='';
         $('pmto').value='';
         $('pmto_container').update('');
         removeClass($('input_container_pm_subject'), 'error');
         removeClass($('input_container_pm_pmto'), 'error');
}

function _dwPm_answer_reset(){
         //
         $('input_container_pm_error_1').hide();
         $('msg').value='';
         removeClass($('input_container_pm_msg'), 'error');
}

function _dwPm_pmto_add_user(username, user_id){
         //
         var do_add = true;
         $$('input.pmto').each(function(el){if(el.value==user_id) do_add = false});

         if(do_add){
            var target_el = $('pmto_container');
            var html      = '<span id="to_user_id_' + user_id + '">' + username + '<input class="pmto" type="hidden" name="pmtos[]" value="' + user_id + '" /> <a href="javascript:;" onClick="_dwPm_pmto_remove_user(' +  user_id + ');"><span class="pmto_delete_icon">&nbsp;</span></a></span>';

            //
            if (target_el.style.display == "none") target_el.style.display = "block";
            target_el.insert( {bottom: html} );
         }
}

function _dwPm_pmto_remove_user(user_id){
         var el = $('to_user_id_' + user_id);
         if(el) var el_frame = el.parentNode;
         var input_el = $('pmto');
         if(el) el.remove();

         /* entfernt Freiraum, wenn keine Tags mehr da */
				 var node_empty = false;
         if (!document.all) {
	         node_empty = true;
	         for (i = 0; i < el_frame.childNodes.length; i++) {
	         	 if(el_frame.childNodes[i].nodeType == Node.ELEMENT_NODE) node_empty = false;
	         }
				 }
         if( (!el_frame.hasChildNodes()) || (node_empty) ) el_frame.style.display = "none";

         if(input_el) input_el.focus();
}

function _dwPm_delete_messages(){
         //
         var checked_checkboxes_count = _dwPm_count_deleted_messages();
         var form                     = $('messages_list_form');

         //
         if(checked_checkboxes_count>0){
            form.submit();
         }
}

function _dwPm_count_deleted_messages(){
         //
         var checked_checkboxes_count = 0;
         var checkboxe_el             = $$('input.pm_dialog_checkbox');

         //
         checkboxe_el.each(function(el){if(el.checked){checked_checkboxes_count++;}});

         //
         return checked_checkboxes_count;
}

function dwPm_checkbox_handler(el){
         //
         var checkboxes  = $$('input.pm_dialog_checkbox');
         var all_checked = true;
         var old_checked = el.checked;

         //
         for(i=0;i<checkboxes.length;i++){
             if(checkboxes[i].checked == false) all_checked = false;
         }

         //
         var dosomething = (all_checked) ? false : true;
         checkboxes.each(function(el) {el.checked = dosomething;} );

         //
         if(old_checked==false && dosomething==true){
            el.checked = true;
         }
         if(old_checked==false && dosomething==false){
            el.checked = false;
         }

         if(old_checked==true && dosomething==true){
            el.checked = true;
         }
         if(old_checked==true && dosomething==false){
            el.checked = false;
         }

}

/**
 * Zum abwechselnden einfärben von Tabellenzeilen
 */
function alternate_classes(parent_element, class_names) {
    var i = 0;
    parent_element.childElements().each(function(el) {
        class_names.each(function(classname){
            if(el.hasClassName(classname) && classname != class_names[i]) {
                el.removeClassName(classname);
            }
        });
        el.addClassName(class_names[i]);

        if(i < class_names.length-1)
            i++;
        else
            i = 0;
    });

}

/* PROJECTS */
function project_newstep(nr, project_id) {
         //
         var url       = '/project/ajaxnewstep';
         var params    = 'nr=' + nr + '&project_id=' + project_id;
         var target_el = $('projects_steps');
         var link_el   = $('project_newstep_link_' + (nr - 1));

         //
	     new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                             				sitestat_track_ajax(url);

                                                //
	                             				if(link_el.hasClassName('button_center')){
		                                            link_el.parentNode.style.display = 'none';
		                                            // alert('!!2');
		                                        }
	                                            else {
	                                                //
		                                            link_el.hide();
	                                            }
	                                            //
	                                            target_el.insert( {bottom: transport.responseText} );
	                                            $$('.maxsigns').each(function(el){max_sings_with_a_input_listener(el);});

	                                            //
	                                            project_cleanup_step2_form();
	                                            RTEListener();
	                             }
	                           }
	                     );
}

function project_delstep(project_id, step_id){
         //
         var url       = '/project/ajaxdelstep';
         var params    = 'step_id=' + step_id + '&project_id=' + project_id;

         //
	     new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',

	                             parameters: params,
	                             onSuccess:  function(transport){
	                                         // alert($('step_' + step_id));
                                             sitestat_track_ajax(url);
                                             $('step_' + step_id).remove();
                                             project_cleanup_step2_form();
                                             // alert($('step_' + step_id));
	                             }
	                           }
	                     );
}

function project_cleanup_step2_form(){
         // form numbers
         var current_step = 1;
         $$('.projectstepnumber').each(function(el) {
             //
             el.innerHTML = current_step;
             current_step++;
          }
         );

         //
         var steps_count = current_step;

         // projectstepbutton_removestep
         var current_step = 1;
         $$('.projectstepbutton_removestep').each(function(el) {
              //
              if(current_step == 1) el.hide();
              current_step++;
           }
         );

         // projectstepbutton_addstep
         var current_step = 1;
         $$('.projectstepbutton_addstep').each(function(el) {
              //
              el.hide();
              if((steps_count - 1) == current_step){
                 //
                 el.show();
                 if(el.firstDescendant()) el.firstDescendant().show();
              }
              current_step++;
          }
         );
}

function project_add_tool(project_id){
         var new_tool  = $('newtool').value;
         var target_el = $('project_tools');
         if(new_tool.length>0){
            //
            var url       = '/project/ajaxnewtool';
            var params    = 'new_tool=' + new_tool + '&project_id=' + project_id;

            //
	        new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            $('newtool').value = '';
	                                            target_el.insert( {bottom: transport.responseText} );
                                                alternate_classes(target_el, ['wechsel-0', 'wechsel-1']);
	                                }
	                               }
	                        );
         }
}

function project_delete_tool(tool_id){
         var url       = '/project/ajaxdeletetool';
         var params    = 'tool_id=' + tool_id;

         //
	     new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            $('project_tool_' + tool_id).hide();
                                                alternate_classes(target_el, ['wechsel-0', 'wechsel-1']);
	                                }
	                            }
	                     );
}

function project_add_material(project_id){
         //
         var material_count    = $('material_count').value;
         var material_name     = $('material_name').value;
         var material_material = $('material_material').value;
         var material_add      = $('material_add').value;

         //
         if(material_name.length > 0){
            //
            var url = '/project/ajaxnewmaterial';
            var params  = 'material_count=' + material_count;
                params += '&material_name=' + material_name;
                params += '&material_material=' + material_material;
                params += '&material_add=' + material_add;
                params += '&project_id=' + project_id;
            var target_el = $('project_material');

            //
	        new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            if(transport.responseText.length>0){
	                                               // looks like a success
	                                               if($('material_count').title)    $('material_count').value    = $('material_count').title;
	                                               if($('material_name').title)     $('material_name').value     = $('material_name').title;
	                                               if($('material_material').title) $('material_material').value = $('material_material').title;
	                                               if($('material_add').title)      $('material_add').value      = $('material_add').title;
                                                }

	                                            target_el.insert( {bottom: transport.responseText} );
                                                alternate_classes(target_el, ['wechsel-0', 'wechsel-1']);
                                                // formPrefillmeListener();
                                            }
	                               }
	                        );
         }
}

function project_delete_material(material_id){
         var url       = '/project/ajaxdeletematerial';
         var params    = 'material_id=' + material_id;
         var target_el = $('project_material');

         //
	     new Ajax.Request(url+ '?r=' + Math.random(),  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                                            sitestat_track_ajax(url);
	                                            $('project_material_' + material_id).hide();
                                                alternate_classes(target_el, ['wechsel-0', 'wechsel-1']);
	                                }
	                            }
	                     );
}

/* */
function user_small_data_setter(user_id, keyword, value, to_close_el_id, to_open_el){
         var url       = '/user/ajaxsetsmalldata?r=' + Math.random();
         var params    = 'user_id=' + user_id + '&keyword=' + keyword + '&value=' + value;

         //
	     new Ajax.Request(url,  {method: 'post',
	                             parameters: params,
	                             onSuccess:  function(transport){
	                                            //
	                                            if(to_close_el_id && $(to_close_el_id)){
                                                   $(to_close_el_id).hide();
                                                   $(to_open_el).show();
	                                            }
	                                }
	                            }
	                     );
}

/* LOGIN */
function login_success(target){
         window.location.href = target;
}

/* LOSTPWD, SIGNUP, etc */
function lostpwd(uri, value, err_msg){
         //
         var params  = "uri=" + uri + '&value=' + value + '&r=' + Math.random() + '&jsonrequested=1';
         var proxy_url = '/ajax_proxy.php';
         if (value != '') {
		 	new Ajax.Request(proxy_url, {
		 		method: 'post',
		 		parameters: params,
		 		onSuccess: function(transport){
		 			input_validation_resulthandling(transport.responseText.evalJSON(), 'emaillostpwd');
		 			input_validation_resulthandling(transport.responseText.evalJSON(), 'emaillostpwd_layer');
		 		}
		 	});
		 }
		 else {
		 	err_div = $('input_container_emaillostpwd_error_1_layer');
			if (err_div) {
				err_div.style.display = 'block';
			}
		 }
}

function input_validation(el, uri, value2){
         //
         var pattern = /noOnBlur/;

         //
         if(pattern.test(el.title)){
            el.setAttribute('title', '');
            return '';
         }

         //
         var el_value  = escape(el.value);
         var el_value2 = escape(value2);

         //
         if(el.id == "password" || el.id == "password2"){
            //
            el_value  = escape(encodeURIComponent(el.value));
            el_value2 = escape(encodeURIComponent(value2));
         }

         //
         var params  = "uri=" + uri + '&type=' + el.name + '&value=' + el_value + '&value2=' + el_value2 + '&r=' + Math.random() + '&jsonrequested=1';

         var proxy_url = '/ajax_proxy.php';
         new Ajax.Request(proxy_url,  {method: 'post',
                                       parameters: params,
                                       onSuccess:  function(transport) {
                                          //
                                          input_validation_resulthandling(transport.responseText.evalJSON(), el.name);
                                       }
                                      }
                          );
}

function elementmod_resulthandling(json){
         if(json){
	        for(i=0;i<json.length;i++){
               var one = json[i];
               if(one[0] == "elementmod"){
                  element_modification(one[1]);
               }
	        }
         }
}

function input_validation_resulthandling(json_res, el_name){
         //
         var div = $('input_container_' + el_name);

         if(div) {
             div.removeClassName('error');
         }

         //
         for(i=0;i<json_res.length;i++){
	         //
	         var one = json_res[i];

	         if(one[0] == "elementmod"){
                element_modification(one[1]);
	         }
	         else{
                var err_div1 = $('input_container_' + el_name + '_error_' + one[1]);
                var err_div2 = $('input_container_' + el_name + '_error_' + one[1] + '_layer');

                 if(one[0] == 'false') {
                    if(err_div1) err_div1.show();
                    if(err_div2) err_div2.show();
                    if(div) div.addClassName('error');
                 }
                 else {
                    if(err_div1) err_div1.hide();
                    if(err_div2) err_div2.hide();
                 }

		         /*
		         if(div){
		            div.className = div.className.replace('error', '');

		            if(err_div) err_div.hide();
		            if(one[0] == 'false'){
		               div.className = div.className + ' error';
		               if(err_div) err_div.show();
		            }
		         }



		         if(div){
		            div.className = div.className.replace('error', '');

		            if(err_div) err_div.hide();
		            if(one[0] == 'false'){
		               div.className = div.className + ' error';
		               if(err_div) err_div.show();
		            }
		         }*/



	         }
         }
}

/* JSON ELEMENT-MOD */
function element_modification(def){
         //
         var el = $(def[0]);

         // alert(def[0]);
         //
         if(el){
            // HIDE
            if(def[1] == 'hide'){
               //
               el.hide();
            }

            // SHOW
            if(def[1] == 'show'){
               //
               // alert(el.id);
               el.show();
               el.style.display = 'block';
               // alert(el.style.display);
            }
            if(def[1] == 'show2'){
               //
               // alert(el.id);
               // el.show();
               el.style.display = 'inline';
               // alert(el.style.display);
            }

            // INNERHTML
            if(def[1] == 'innerHTML'){
               //
               el.innerHTML = def[2];
            }

            // REMOVE ELEMENT
            if (def[1] == 'remove'){
            	el.remove();
            }

            // update_top
            if(def[1] == 'insertTop'){
               //
               el.insert({top: def[2]});
            }



            // UPDATE DATETIME
            if(def[1] == 'updatedatetime'){
               //
               el.innerHTML = def[2];
               dwTimestampHandle(el, new Date());
            }

            // ATTRIBUTE CHANGE
            if(def[1] == 'attributechange'){
               //
               el.setAttribute(def[2][0], def[2][1]);
            }

            // TEXTAREA
            if(def[1] == 'textareavalue'){
               //
               el.value = def[2];
            }

            //  ATTRIBUTE REMOVE
            if(def[1] == 'attributeremove'){
               el.removeAttribute(def[2]);
            }

            // READONLY REMOVE
            if(def[1] == 'readonlyremove'){
               //
               el.readOnly = false;

               //
               el.setAttribute('title', 'noOnBlur');
               el.blur();
               el.focus();
               // el.setAttribute('title', '');
               // el.title = '';

               // el.setAttribute('className', ' noOnBlur');
               // alert('->' + el.title);
               // el.className = 'noOnBlur';
               // alert('->' + el.classNamme);
               // el.className = ' noOnBlur';
               // alert(el);
               // YAHOO.util.Dom.addClass(el.id, "noOnBlur");
               // alert('->' + el.classNamme);
               // el.blur();
               // el.focus();
               // YAHOO.util.Dom.removeClass(el, "noOnBlur");
            }

            // READONLY ADD
            if(def[1] == 'readonlyadd'){
               el.readOnly = true;
            }

            // REMOVE CLASS
            if(def[1] == 'classremove'){
               el.className = '';
            }

            // ADD CLASS
            if(def[1] == 'classadd'){
               el.className = def[2];
            }

            // SUBTRACT
            if(def[1] == 'subtract'){
               var old_value = parseInt(el.innerHTML);
               var new_value = old_value - parseInt(def[2]);
               el.update(new_value);
            }

         }
}

function _dwCoreDhtmlUpdaterUpdate(json_string){
         //
         var json = json_string.evalJSON();
         if(json){
	        for(i=0;i<json.length;i++){
               var one = json[i];
               if(one[0] == "elementmod"){
                  //
                  element_modification(one[1]);
               }
	        }
         }
}

function removeClass(this_el, this_class){
         if(this_el){
            //
            var pattern = new RegExp(this_class, 'gi');
            this_el.className = this_el.className.replace(pattern, '');
         }
}

// Removes leading whitespaces
function LTrim( value ) {

	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");

}

// Removes ending whitespaces
function RTrim( value ) {

	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");

}

// Removes leading and ending whitespaces
function trim( value ) {

	return LTrim(RTrim(value));

}



/* HOMEPAGE-TEASER */
function change_homepic_bhc(teaser_id)
{
	teaser_id--;
  // setting each teaser invisible and each link as not active
  for (i = 0; i < home_rotate_teasers.length; i++) {
	  home_rotate_teasers[i].style.visibility = "hidden";
 	  home_rotate_teasers[i].style.zIndex = 1;
  }
  // display the chosen teaser
  if(home_rotate_teasers[teaser_id] != null) {
	  home_rotate_teasers[teaser_id].style.visibility = "visible";
	  home_rotate_teasers[teaser_id].style.zIndex = 10;
	}
}


function rotate_homepic_step(id_num)
{
	if (!stop_rotation) {
		change_homepic_bhc(id_num);
		act_id++;
		if (act_id > home_rotate_teasers.length) act_id = 1;
		is_running = 0;
		if (!stop_rotation) rotate_homepic();
	} else {
		is_running = 0;
	}
}
function rotate_homepic()
{
	if (typeof is_running != "undefined") {
   	if (is_running == 0) {
   		is_running = 1;
   		if (act_id == 0) {
   			act_id = 1;
   			window.setTimeout("rotate_homepic_step(act_id)", 1000);
   		} else {
  			window.setTimeout("rotate_homepic_step(act_id)", 4000);
   		}
    }
	}
}
function start_homepic_rotation()
{
	head_teaser_frame = ($('header_teaser') != null) ? $('header_teaser') : $('head_teaser');
	if (head_teaser_frame) {
		home_rotate_teasers = YAHOO.util.Selector.query('.head-teaser-instance', head_teaser_frame);
		act_id = 0;
   	is_running = 0;
   	stop_rotation = false;
   	rotate_homepic();
	}
}
function stop_homepic_rotation()
{
	stop_rotation = true;
}
function mouseover_homepic()
{
 	stop_homepic_rotation();
}
function mouseout_homepic()
{
	stop_rotation = false;
 	window.setTimeout("rotate_homepic()", 1000);
}


/* Layer-Scripts */

YAHOO.namespace("dwLayer");

// Overrides the handler for the "modal" property with special animation-related functionality
YAHOO.widget.Panel.prototype.configModal = function(type, args, obj) {
	var modal = args[0];

	if (modal) {
		this.buildMask();

		if (typeof this.maskOpacity == 'undefined') {
			this.mask.style.visibility = "hidden";
			this.mask.style.display = "block";
			this.maskOpacity = YAHOO.util.Dom.getStyle(this.mask,"opacity");
			this.mask.style.display = "none";
			this.mask.style.visibility = "visible";
		}

		if (! YAHOO.util.Config.alreadySubscribed( this.beforeShowEvent, this.showMask, this ) ) {
			this.beforeShowEvent.subscribe(this.showMask, this, true);
		}
		if (! YAHOO.util.Config.alreadySubscribed( this.beforeHideEvent, this.hideMask, this) ) {
			this.beforeHideEvent.subscribe(this.hideMask, this, true);
		}
		if (! YAHOO.util.Config.alreadySubscribed( YAHOO.widget.Overlay.windowResizeEvent, this.sizeMask, this ) ) {
			YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.sizeMask, this, true);
		}
	} else {
		this.beforeShowEvent.unsubscribe(this.showMask, this);
		this.beforeHideEvent.unsubscribe(this.hideMask, this);
		YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask);
	}
};

// Overrides the showMask function to allow for fade-in animation
YAHOO.widget.Panel.prototype.showMask = function() {
	if (this.cfg.getProperty("modal") && this.mask) {
		YAHOO.util.Dom.addClass(document.body, "masked");
		this.sizeMask();

		var o = this.maskOpacity;

		if (! this.maskAnimIn) {
			this.maskAnimIn = new YAHOO.util.Anim(this.mask, {opacity: {to:o}}, 0.5)
			YAHOO.util.Dom.setStyle(this.mask, "opacity", 0);
		}

		if (! this.maskAnimOut) {
			this.maskAnimOut = new YAHOO.util.Anim(this.mask, {opacity: {to:0}}, 0.5)
			this.maskAnimOut.onComplete.subscribe(function() {
													this.mask.tabIndex = -1;
													this.mask.style.display = "none";
													this.hideMaskEvent.fire();
													YAHOO.util.Dom.removeClass(document.body, "masked");
												  }, this, true);

		}
		this.mask.style.display = "block";
		this.maskAnimIn.animate();
		this.mask.tabIndex = 0;
		this.showMaskEvent.fire();
	}
};

// Overrides the showMask function to allow for fade-out animation
YAHOO.widget.Panel.prototype.hideMask = function() {
	if (this.cfg.getProperty("modal") && this.mask) {
		this.maskAnimOut.animate();
	}
};


function dwLayerShow(l_width, l_height, l_type, l_data, l_attributes) {
	/* Sonderfall abfangen: kein Schließenbutton*/
	var closeable = "";
	var pattern_close = /close:[\s]*false,/;

	/* blendet alle Flash-Objekte aus */
	hideFlash();

	if (!pattern_close.test(l_attributes)) {
		closeable = '<a class="layer_close" href="javascript: dwLayerClose(this);"><span>Close</span></a>';
	}

	/* Layer initialisieren */
	eval('YAHOO.dwLayer.overlay1 = new YAHOO.widget.Panel("dw_layer", { fixedcenter:true, visible:true, zIndex:1000, draggable: false, close: false, constraintoviewport:true, width: "' + l_width + 'px", height: "' + l_height + 'px", ' + l_attributes + ' effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5} });');
	/* Inhalt des Layers */
	if (l_type == "iframe") {
		l_content = '<iframe src="' + l_data + '" width="' + (l_width - 8) + '" height="' + (l_height - 8) + '" name="layerframe" frameborder="0" scrolling="no"> </iframe>';
	} else if (l_type == "direct_content") {
		l_content = l_data;
	} else {
		l_content = document.getElementById(l_data).innerHTML;
	}

	var boxheader = '<div class="layer-box box-white" id="dw_layerbox"><div class="box-content" style="width:'+ (l_width - 8) +'px; height:'+ (l_height - 8) +'px;">' + closeable;
	var boxfooter = '</div><div class="box-l box-t q1"> </div><div class="box-c box-t q2"> </div><div class="box-r box-t q3"> </div><div class="box-l box-m q4"> </div><div class="box-c box-m q5"> </div><div class="box-r box-m q6"> </div><div class="box-l box-b q7"> </div><div class="box-c box-b q8"> </div><div class="box-r box-b q9"> </div></div>';

	YAHOO.dwLayer.overlay1.setBody(boxheader + l_content + boxfooter);

	/* Layer rendern */
	YAHOO.dwLayer.overlay1.render(document.body);

	/* IDs erweitern */
	if (l_type != "iframe") {
		layer_children = YAHOO.util.Selector.query('#dw_layerbox *');
		for (i=0; i < layer_children.length; i++) {
			if (layer_children[i].id) {
				layer_children[i].id += "_layer";
			}
			if (layer_children[i].htmlFor) {
				layer_children[i].htmlFor += "_layer";
			}
		}
	}

	/*YAHOO.log("Overlay1 rendered.", "info", "example");*/
}


var dwLayerPrepare = function(e) {
	/* Standard-Behaviour unterdruecken */
	YAHOO.util.Event.preventDefault(e);

	var el_class = this.className;

	/* Groesse des Layers ermitteln*/
	var	l_width = "600";
	var	l_height = "400";

	var classsize = size_from_classname(this);
	if (classsize[0]) l_width = classsize[0];
	if (classsize[1]) l_height = classsize[1];


	/* Typ des Layers */
	var l_type, l_data;
		/* Iframe-Layer oeffnet Iframe, zieht Inhalt ueber href des Links*/
		var pattern_iframe = /iframe/;
		if (pattern_iframe.test(el_class)) {
			l_type="iframe";
			l_data=this.href;
		}
		/* Data-Layer oeffnet zieht Inhalt aus einem Div der Seite und packt ihn in den Layer*/
		var pattern_data = /datalayer/;
		if (pattern_data.test(el_class)) {
			l_type="data";
			var data_container_id = this.href;
			data_container_id = data_container_id.match(/#[A-Za-z0-9_]*/).toString();
			data_container_id = data_container_id.replace(/#/, "");
			l_data = data_container_id ;
			//document.getElementById(data_container_id).innerHTML;
			// alert(data_container_id + ' ->' + l_data);
		}

	/* zus. Attribute */
	var pattern_attrib = /a__(.*)__a/;
	if (pattern_attrib.test(el_class)) {
		var attribute_str = el_class.match(pattern_attrib)[1];
		attribute_str = attribute_str.replace(/XXX/g, '"')
		var attributes = attribute_str.split("_");
		var attrib_str = new String;
		for (i = 0; i < attributes.length; i++) {
			attrib_str += attributes[i].replace(/-/, ": ")+ ", ";
		}
	}

	/* Layer oeffnen */
	dwLayerShow(l_width, l_height, l_type, l_data, attrib_str);
}

function dwLayerClose(e) {
	/* Blendet das originale Flash wieder ein */
	showFlash();

	YAHOO.util.Event.preventDefault(e);
	/* Layer ausfaden */
	YAHOO.dwLayer.overlay1.hide();
	/* Layer tatsaechlich aus dem DOM entfernen*/
	window.setTimeout("YAHOO.dwLayer.overlay1.destroy()", 500);
}

function dwLayerCloseAndShow(l_width, l_height, l_type, l_data, l_attributes) {
	YAHOO.dwLayer.overlay1.destroy();
	dwLayerShow(l_width, l_height, l_type, l_data, l_attributes);
}

function dwLayerResize(to_width, to_height, layer_type) {
	var layerbox = YAHOO.util.Selector.query('#dw_layerbox .box-content')[0];
	if (layer_type == "iframe") {
		layer_iframe = layerbox.getElementsByTagName("iframe")[0];
		layer_iframe.width = (to_width - 8);
		layer_iframe.height = (to_height - 8);
	}

	layerbox.style.width = (to_width - 8) + "px";
	layerbox.style.height = (to_height - 8) + "px";
	YAHOO.dwLayer.overlay1.cfg.setProperty("width", to_width + "px");
	YAHOO.dwLayer.overlay1.cfg.setProperty("height", to_height + "px");
	YAHOO.dwLayer.overlay1.cfg.setProperty("fixedcenter", true);
}

function dwLayerListener() {
    // alert(YAHOO.util.Selector.query('.layerlink'));
	var layer_links = YAHOO.util.Selector.query('.layerlink');
	YAHOO.util.Event.removeListener(layer_links, "click", dwLayerPrepare);
	YAHOO.util.Event.addListener(layer_links, "click", dwLayerPrepare);
}


/* Akkordeon */

function dwAccordionToggle(node, open) {
	var end_p;

	if (open) {
		  /* Quote geht auf */
			node.style.display = "block";
			end_p = node.offsetHeight;
			node.style.height = "0px";
	} else {
			/* Quote schliesst sich */
			end_p = 0;
	}

	/* eigentliche Animation */
	var attributes = {
		height: {to: end_p}
	};
	var anim = new YAHOO.util.Anim(node, attributes, 0.25, YAHOO.util.Easing.easeOut);
	anim.animate();

	if (!open) {
		anim.onComplete.subscribe(function() {
			node.style.display = 'none';
			node.style.height = 'auto';
		});
	}
}

function dwAccordionMatchQuote(trigger) {
	/* zugehoeriges Blockquote zu Trigger finden*/
	var matching_quote = trigger.nextSibling;
	var i = 0;
	while (matching_quote.tagName != 'BLOCKQUOTE') {
		matching_quote = matching_quote.nextSibling;
		i++;
		if (i > 3) {
			/*alert('error: never ending loop...');*/
			break;
		}
	}
	return matching_quote;
}

var dwAccordionBehaviour = function(e) {
	var el_class = this.className;
	var triggernodes = YAHOO.util.Dom.getElementsByClassName('trigger', 'p' ,this.parentNode);


	/* Ist Akkordeon offen? */
	if (YAHOO.util.Dom.hasClass(this, 'open')) {
		/* nur schliessen */
		dwAccordionToggle(dwAccordionMatchQuote(this), false);
		YAHOO.util.Dom.removeClass(this, 'open');
	} else {
		/* andere schliessen, diesen oeffnen*/
		for (i = 0; i < triggernodes.length; i++) {
			if (YAHOO.util.Dom.hasClass(triggernodes[i], 'open')) {
				dwAccordionToggle(dwAccordionMatchQuote(triggernodes[i]), false);
				YAHOO.util.Dom.removeClass(triggernodes[i], 'open');
			}
		}

		dwAccordionToggle(dwAccordionMatchQuote(this), true);
		YAHOO.util.Dom.addClass(this, 'open');
	}
}

function dwAccordionListener() {
	/* fuegt Behaviour zu Paragraphs hinzu */
	var trigger = YAHOO.util.Selector.query('.accordion p.trigger');
	YAHOO.util.Event.addListener(trigger, "click", dwAccordionBehaviour);
}


/* Button Behaviours */

function dwButtonAddStatus(el, buttonclass) {
	YAHOO.util.Dom.addClass(el.parentNode, buttonclass);
}
function dwButtonRemoveStatus(el) {
	if (YAHOO.util.Dom.hasClass(el.parentNode, 'hover')) {
		YAHOO.util.Dom.removeClass(el.parentNode, 'hover');
	}
	if (YAHOO.util.Dom.hasClass(el.parentNode, 'active')) {
		YAHOO.util.Dom.removeClass(el.parentNode, 'active');
	}
}
function dwButtonDisable(el) {
	if (!el.hasAttribute("disabled")) {
		el.parentNode.className = 'button_status disabled' ;
		el.setAttribute("disabled", "disabled");
	}
}
function dwButtonEnable(el) {
	if (el.hasAttribute("disabled")) {
		YAHOO.util.Dom.removeClass(el.parentNode, 'disabled');
		el.removeAttribute("disabled", "disabled");
	}
}


/* Timestamp 2 Interval */

function dwTimestamp2Object(stamp) {
	if (stamp) {
		var date_n_time = stamp.split(" ");
		if (date_n_time.length == 2) {
			var date_str = date_n_time[0].split("-");
			var time_str = date_n_time[1].split(":");
			var month = parseInt(date_str[1], 10) - 1;
			var result_obj = new Date(date_str[0], month, date_str[2], time_str[0], time_str[1], time_str[2]);
			return result_obj;
		} else {
			return null;
		}
	} else {
		return null;
	}
}

function dwInterval(diff) {
	var int_val;
	var int_str;

	//
	if (diff < 1001) {
		int_val = 0;
		int_str = " Sekunden";
	} else if (diff < 60000) {
		int_val = Math.floor(diff / 1000);
		int_str = " Sekunde";
		if (int_val > 1) int_str += "n";
	} else if (diff < 3600000) {
		int_val = Math.floor(diff / 60000);
		int_str = " Minute";
		if (int_val > 1) int_str += "n";
	}	else if (diff < 86400000) {
		int_val = Math.floor(diff / 3600000);
		int_str = " Stunde";
		if (int_val > 1) int_str += "n";
	}	else if (diff < 604800000) {
		int_val = Math.floor(diff / 86400000);
		int_str = " Tag";
		if (int_val > 1) int_str += "en";
	}	else if (diff < 2592000000) {
		int_val = Math.floor(diff / 604800000);
		int_str = " Woche";
		if (int_val > 1) int_str += "n";
	}	else if (diff < 31536000000) {
		int_val = Math.floor(diff / 2592000000);
		int_str = " Monat";
		if (int_val > 1) int_str += "en";
	}	else{
		int_val = Math.floor(diff / 31536000000);
		int_str = " Jahr";
		if (int_val > 1) int_str += "en";
	}
	var interval = "Vor " + int_val + int_str;
	return interval;
}

function dwTimestampHandle(el, now) {
	var old_str = el.innerHTML;
	timestamp_obj = dwTimestamp2Object(old_str);
	if (timestamp_obj != null) {
	    if(now=='') var now = new Date();
		time_diff = now - timestamp_obj;
		/*alert(now.toUTCString() + ', ' + timestamp_obj.toUTCString() + ', ' + time_diff);*/
		el.innerHTML = dwInterval(time_diff) + '<span style="display: none;">' + old_str + '</span>';
		el.className += ' interval_active';
	}
}

function dwFindTimestamps() {
	var timestamps = YAHOO.util.Selector.query('.time2interval');
	var timestamp_raw;
	var timestamp_obj;
	for (i = 0; i < timestamps.length; i++) {
		timestamp_raw = timestamps[i].innerHTML;
		dwTimestampHandle(timestamps[i], new Date());
	}
}


/****** Fake Checkbox *****/

function fake_checkbox_toggle(fake_id, real_id) {
	fake_element = document.getElementById(fake_id);
	real_element = document.getElementById(real_id);

	if (real_element.checked) {
		real_element.checked = false;
		YAHOO.util.Dom.removeClass(fake_element, 'checked');
	} else {
		real_element.checked = true;
		YAHOO.util.Dom.addClass(fake_element, 'checked');
	}
}


/***** RSS-Liste ******/
function rssShow() {
    rss_keep_open=true;
    _show_block('rssfeeds');
}

function rssHide() {
    rss_keep_open=false;
    window.setTimeout("if(rss_keep_open == false) _rssHide();", 10);
}

function _rssHide() {
    _hide('rssfeeds');
}


/****** Tooltips ******/

function ttUpdate(e) {
  if (typeof tt != "undefined") {
    //Ausgerichtet am Mouseover-Element
    x = findPos(e)[0];
    y = findPos(e)[1];

    var tt_box = YAHOO.util.Selector.query('.content-box', tt, true);

		// Positionierung der Box relativ zum Mouseover-Element
		if ((typeof arrowpos != "undefined") && (arrowpos == "left")) {
			offset_y = Math.floor(tt_box.offsetHeight / 2);
			offset_x = e.offsetWidth + 5;
		} else if ((typeof arrowpos != "undefined") && (arrowpos == "right")) {
			offset_y = Math.floor(tt_box.offsetHeight / 2);
			offset_x = -tt_box.offsetWidth - 5;
		}
                else if((typeof arrowpos != "undefined") && (arrowpos == "bottom-right")) {
			offset_y = 8;
			offset_x = -tt_box.offsetWidth + 35;
		}
                else {
			offset_y = 0;
			offset_x =  Math.floor(e.offsetWidth / 2) - Math.floor(tt_box.offsetWidth / 2);
		}

		// manuelles Eingreifen moeglich - man weiss ja nie
		var manx = 0;
		var many = 0;
		var pattern_manx = /x__(.*)__x/;
		if (pattern_manx.test(e.className)) manx = parseInt(e.className.match(/x__(.*)__x/)[1]);
		var pattern_many = /y__(.*)__y/;
		if (pattern_many.test(e.className)) many = parseInt(e.className.match(/y__(.*)__y/)[1]);

    tt.style.left = (x + offset_x + manx) + "px";
    tt.style.top = (y + offset_y + many) + "px";
  }
}

var ttShow = function(e) {
	debug_log('ttShow: keep open or new?');
	// nur oeffnen, wenn nich schon einer offen ist (sonst gibts u.u. keinen Inhalt)

	if ((tt_caller) && (this.id == tt_caller))  {

		tt_keep_open = true;
		debug_log('->keep open');

	} else {

		tt_keep_open = true;

		if(ttShut()) {

		  tt_is_open = true;

			debug_log('->new, caller: ' + this.tagName + '#' + this.id + '.' + this.className);
			tt_caller = this.id;

			// mit Inhalt befuellen
			var tt_content = YAHOO.util.Selector.query('.tooltip', this.parentNode, true);
			var tt_destination = YAHOO.util.Selector.query('.box-content', tt, true);
		  tt_destination.innerHTML = "";
			tt_destination.appendChild(tt_content);
			var tt_marker = document.createElement('span');
			tt_marker.style.display = "none";
			tt_marker.id = "tt_marker";
			this.parentNode.appendChild(tt_marker);

			// Pfeilchen
			document.getElementById("tt_arrow_left").style.display = "none";
			document.getElementById("tt_arrow_bottom").style.display = "none";
			document.getElementById("tt_arrow_right").style.display = "none";
            //document.getElementById("tt_arrow_bottom_right").style.display = "none";
			if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-left')) {
				document.getElementById("tt_arrow_left").style.display = "block";
				arrowpos = "left";
			} else if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-right')) {
				document.getElementById("tt_arrow_right").style.display = "block";
				arrowpos = "right";
			} else if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-bottom-right')) {
				document.getElementById("tt_arrow_bottom_right").style.display = "block";
				arrowpos = "bottom-right";
			} else {
				document.getElementById("tt_arrow_bottom").style.display = "block";
				arrowpos = "bottom";
			}

		  tt.style.display = "block"

			ttUpdate(this);
		}

	}

}

function ttShut(tt_shut_var) {
	if(tt_is_open) {
		debug_log('ttShut');
	  tt.style.display = "none";
	  var tt_content = YAHOO.util.Selector.query('.tooltip', tt, true);
	  var tt_marker  = document.getElementById("tt_marker");
	  var tt_link    = YAHOO.util.Selector.query('.tooltip-anchor', tt_marker.parentNode);
	  if (tt_marker) {
	  	tt_marker.parentNode.appendChild(tt_content);
	  	tt_marker.parentNode.removeChild(tt_marker);
	  }
	  tt_is_open = false;
	  tt_caller = false;
	}
	if (typeof(tt_shut_var) == "undefined") return true;
}

var ttCheckShut = function(e) {
	// kurzes Delay um Mauswechsel zw. Tooltip und aufrufendem Element zu gewaehrleisten
  tt_keep_open = false;
  debug_log('ttCheckShut: shut?, caller: ' + this.tagName);
	window.setTimeout("if(tt_keep_open == false) ttShut(false);", 50);
}

function ttKeepOpen() {
	// wenn man zwischen Tooltip und aufrufendem Element wechselt, soll Tooltip offen bleiben
	debug_log('ttKeepOpen');
	tt_keep_open = true;
	tt.style.display = "block";
}

function findPos(obj) {
	var curleft = curtop = 0;

	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);

		return [curleft,curtop];
	}
}

function tt_listener() {
  tt = document.getElementById('tt_box');
  tt_keep_open = false;
  tt_is_open = false;
  tt_caller = false;
	var tooltip_links = YAHOO.util.Selector.query('.tooltip-anchor');

	for (i = 0; i < tooltip_links.length; i++) {
		if ( (!tooltip_links[i].id) || (tooltip_links[i].id == "") ) tooltip_links[i].id = "tt_anchor_id_" + i;
	}

	YAHOO.util.Event.addListener(tooltip_links, "mouseover", ttShow);
	YAHOO.util.Event.addListener(tooltip_links, "mouseout", ttCheckShut);
}


/***** Rich Text Editor *****/

function RTERender(el) {
	rte_width = 400;
	rte_height = 200;
	if (size_from_classname(el)[0]) rte_width = size_from_classname(el)[0];
	if (size_from_classname(el)[1]) rte_height = size_from_classname(el)[1];

    //
    var dolinkbutton = false;
    var pattern_iframe = /rte_setting_linkbutton/;
    if (pattern_iframe.test(el.className)) dolinkbutton = true;

	var dwEditor = new YAHOO.widget.SimpleEditor( el,
	{
	height: rte_height + 'px',
	width: rte_width + 'px',
	animate: true,
	handleSubmit: true,
	toolbar: {
	    buttons: [
	        {type: 'push', label: 'Bold', value: 'bold'},
	        {type: 'push', label: 'Italic', value: 'italic'},
	        {type: 'push', label: 'Underline', value: 'underline'},
	        {type: 'separator'},
	        {type: 'push', label: 'Ungeordnete Liste', value: 'insertunorderedlist'},
	        {type: 'push', label: 'Geordnete Liste', value: 'insertorderedlist'}
	      ]
	  }
	});

    // onLoad
    dwEditor.on('toolbarLoaded', function() {
	   var createlink_button = {
         type: 'push',
         label: 'HTML Link CTRL + SHIFT + L',
         value: 'createlink',
         disabled: false
       };
       if(dolinkbutton) dwEditor.toolbar.addButton(createlink_button);
    });

    // render
	dwEditor.render();
	rte_container[rte_container.length] = dwEditor;
}

function rtes_onSubmit(){
         for (i = 0; i < rte_container.length; i++) {
              rte_container[i].saveHTML();
         }
}


function RTEListener() {
	var rte = YAHOO.util.Selector.query('.rt-editor');
	for (i = 0; i < rte.length; i++) {
		// do not render a textarea twice!
        var el_textarea_id = rte[i].id;
        var el_editor_id   = el_textarea_id + '_editor';
        if(!$(el_editor_id)) RTERender(rte[i]);
	}
}

function toggle_list_radio(el) {
    var lower = true;
    var ul =  el.parentNode.parentNode;
    var li =  ul.getElementsByTagName("a");
		for (var i = 0; i < li.length; i++) {
			if (li[i] == el) {
				YAHOO.util.Dom.addClass(li[i], "rd-on");
				YAHOO.util.Dom.removeClass(li[i], "rd-off");
				lower = false;
			} else {
				if(lower) {
				YAHOO.util.Dom.addClass(li[i], "rd-on");
				YAHOO.util.Dom.removeClass(li[i], "rd-off");
				} else {
				YAHOO.util.Dom.addClass(li[i], "rd-off");
				YAHOO.util.Dom.removeClass(li[i], "rd-on");
				}
			}
		}
}

function reset_list_radio(el) {
    var ul =  el.parentNode.parentNode;
    var li =  ul.getElementsByTagName("a");
		for (var i = 0; i < li.length; i++) {
			YAHOO.util.Dom.removeClass(li[i], "rd-off");
			YAHOO.util.Dom.removeClass(li[i], "rd-on");
		}
}

function bmShut(el) {
	if(bm_layer) if(bm_layer.style) el.style.display = "none";
	bm_is_open = false;
	bm_keep_open = false;
}

function toggleBookmark(el, direction) {
	if(el.tagName == "A") {
		bm_layer = YAHOO.util.Selector.query('.bookmark-layer', el.parentNode, true);
	} else {
		bm_layer = el;
	}

	if(direction == "open") {
		if(!bm_is_open) {
			if(bm_layer) if(bm_layer.style) bm_layer.style.display = "block";
			bm_is_open = true;
		} else {
			bm_keep_open = true;
		}
	}

	if(direction == "close") {
		bm_keep_open = false;
		window.setTimeout("if(!bm_keep_open) bmShut(bm_layer);", 10);
	}
}

function lesezeichen(SeitenTitel,SeitenURL){

  if (window.sidebar)
    {
    // firefox
    window.sidebar.addPanel(SeitenTitel,SeitenURL,'');
    }
  else if(window.opera && window.print)
    {
    // opera
    var elem = document.createElement('a');
    elem.setAttribute('href',SeitenURL);
    elem.setAttribute('title',SeitenTitel);
    elem.setAttribute('rel','sidebar');
    elem.click();
    }
  else if(document.all)
    {
    // ie
    window.external.AddFavorite(SeitenURL,SeitenTitel);
    }
}


function preloader()
{
heavyImage1 = new Image();
heavyImage1.src = "/images/bhc/content/nav_act_home.png";

heavyImage2 = new Image();
heavyImage2.src = "/images/bhc/content/nav_act_projekte.png";

heavyImage3 = new Image();
heavyImage3.src = "/images/bhc/content/nav_act_forum.png";

heavyImage4 = new Image();
heavyImage4.src = "/images/bhc/content/nav_act_wissen.png";

heavyImage5 = new Image();
heavyImage5.src = "/images/bhc/content/nav_act_mitglieder.png";

heavyImage6 = new Image();
heavyImage6.src = "/images/bhc/content/nav_act_experten.png";
}
preloader();


/* Patch for eventhandlers after form_to_remote in IE */

var patch_over = function(e) {
	var act = this.onmouseover;
	if(act != "") eval(act);
}
var patch_click = function(e) {
	var act = this.onclick;
	var pattern_return = /return[\s]*false/;
	if(act != "") {
		act = act.replace(pattern_return, "");
		eval(act)
	};
}
var patch_out = function(e) {
	var act = this.onmouseout;
	if(act != "") eval(act);
}
var patch_down = function(e) {
	var act = this.onmousedown;
	if(act != "") eval(act);
}

function patch_eventhandlers(query_str) {
	if (document.all) { /* only IE */
		var fixme = YAHOO.util.Selector.query(query_str);
		/* there must be a smarter way... */
		YAHOO.util.Event.addListener(fixme, 'mouseover', patch_over);
		YAHOO.util.Event.addListener(fixme, 'click', patch_click);
		YAHOO.util.Event.addListener(fixme, 'mouseout', patch_out);
		YAHOO.util.Event.addListener(fixme, 'mousedown', patch_down);
	}
}



/* Scroll-Teaser */

function scrollListPrepare() {
	var scroll_lists = YAHOO.util.Selector.query(".scroll-list");
	var up_link;
	var down_link;
	var list_id;
	var scroller;
	is_scrolling = false;

	for (i = 0; i < scroll_lists.length ;i++) {
		list_id = scroll_lists[i].id;
		up_link = YAHOO.util.Selector.query(".scroll-up", list_id, true);
		down_link = YAHOO.util.Selector.query(".scroll-down", list_id, true);

		// Buttons aktivieren
		scroller = YAHOO.util.Selector.query(".scroller", list_id, true);
		scrollListUpdate(list_id, scroller);
	}
}

function scrollIt(link_el, diff) {

	var link_img = link_el.getElementsByTagName('img')[0];
	var list_id = link_el.parentNode.id;

	// nur wenn button aktiv
	if ( (YAHOO.util.Dom.hasClass(link_img, "act")) && (!is_scrolling) ) {

		// zu verschiebendes Div
		var scroller = YAHOO.util.Selector.query(".scroller", list_id, true);

		// Animation
		var scrollAni = new YAHOO.util.Anim(scroller, {top: {by: diff}}, 0.75, YAHOO.util.Easing.easeOut);
		scrollAni.onComplete.subscribe(scrollComplete);
		scrollAni.animate();

		// während der Animation Buttons deaktivieren
		is_scrolling = true;

	}

}

function scrollUp(link_el) {
	scrollIt(link_el, 350);
}
function scrollDown(link_el) {
	scrollIt(link_el, -350);
}

function scrollUpProject(link_el) {
	scrollIt(link_el, 174);
}
function scrollDownProject(link_el) {
	scrollIt(link_el, -174);
}

var scrollComplete = function (e) {
	var scroller = this.getEl();
	var list_id = scroller.parentNode.parentNode.id;
	scrollListUpdate(list_id, scroller);
	is_scrolling = false;
}


function scrollListUpdate(list_id, scroller) {

	var up_link = YAHOO.util.Selector.query(".scroll-up", list_id, true);
	var down_link = YAHOO.util.Selector.query(".scroll-down", list_id, true);

	var akt_top = parseInt(scroller.style.top, 10);
	var scroll_height = scroller.offsetHeight;

	// Button up deaktivieren
	if (akt_top == 0) {
		YAHOO.util.Dom.removeClass(up_link.childNodes[0], "act");
	} else {
		YAHOO.util.Dom.addClass(up_link.childNodes[0], "act");
	}

	// Button down deaktivieren
	if ((350 - akt_top) > scroll_height ) {
		YAHOO.util.Dom.removeClass(down_link.childNodes[0], "act");
	} else {
		YAHOO.util.Dom.addClass(down_link.childNodes[0], "act");
	}

}

function hideFlash()
{
	var objs = $$('object');
	if (objs.length > 0)
	{
		for (var i = 0; i < objs.length; i++)
		{
			var params = objs[i].childElements();
			var image = null;
			var id = null;

			if (params.length > 0)
			{
				for (var j = 0; j < params.length; j++)
				{
					if (params[j].name == 'defaultImage')
					{
						image = params[j].value;
						id = objs[i].id;
					}
				}
			}
			if (image != null && id != null)
			{
				objs[i].style.display = 'none';

				if (window.navigator.userAgent.indexOf("MSIE ") > -1 && !$(id + '_flash_size'))
				{
					e = new Insertion.After(id, '<input type="hidden" id="' + id + '_flash_size" value="' + $('itboschteasercontainer').style.width + '" />');
				}
				$('itboschteasercontainer').style.left = '0px';
				$('itboschteasercontainer').style.width = '200px';
				if (!$(id + '_flash_image'))
				{
					e = new Insertion.After(id, '<img src="' + image + '" id="' + id + '_flash_image" />');
				}
			}
		}
	}
}

function showFlash()
{
	var objs = $$('object');
	if (objs.length > 0)
	{
		for (var i = 0; i < objs.length; i++)
		{
			var params = objs[i].childElements();
			var image = null;
			var id = null;

			if (params.length > 0)
			{
				for (var j = 0; j < params.length; j++)
				{
					if (params[j].name == 'defaultImage')
					{
						image = params[j].value;
						id = objs[i].id;
					}
				}
			}
			if (image != null && id != null)
			{
				objs[i].style.display = 'block';

				if (window.navigator.userAgent.indexOf("MSIE ") > -1 && $(id + '_flash_size').value == '780px')
				{
					$('itboschteasercontainer').style.left = '-580px';
					$('itboschteasercontainer').style.width = '780px';
					$(id + '_flash_size').remove();
				}
				$(id + '_flash_image').remove();
			}
		}
	}
}

// -----------------------------------------------------
//
// make teaserbox "use-first-ahref" clickable
//
// -----------------------------------------------------
//

function set_use_first_ahref_event_handler () {
  var a, div =  $$(".use-first-ahref");
  for (var i = 0; i < div.length; i++) {
    div[i].onclick  =  function () {
      a = this.getElementsByTagName("a");
      if (typeof a[0] != "undefined") {
       self.location.href =  a[0].href;
       return false;
      }
    }
  }
}


// -----------------------------------------------------
//
// Sitestat tracking interface for AJAX calls
//
// -----------------------------------------------------
function sitestat_get_code_for_url(url)
{
	var codes = new Object();

	codes['/project/ajaxnewmaterial'] = 'projekte.nopi.material-hinzufuegen';
	codes['/project/ajaxdeletematerial'] = 'projekte.nopi.material-entfernen';
	codes['/project/ajaxnewtool'] = 'projekte.nopi.werkzeug-hinzufuegen';
	codes['/project/ajaxdeletetool'] = 'projekte.nopi.werkzeug-entfernen';
	codes['/project/ajaxnewstep'] = 'projekte.nopi.arbeitsschritt-hinzufuegen';
	codes['/project/ajaxdelstep'] = 'projekte.nopi.arbeitsschritt-entfernen';

	codes['/user/ajaxdeluserevent'] = 'aktionen.nopi.aktivitaet-loeschen';
	codes['/user/ajaxsetmsg2all'] = 'aktionen.nopi.status-setzen';

	codes['/dwAdminalert/send'] = 'aktionen.nopi.melden';

	codes['/dwComment/delete'] = 'aktionen.nopi.kommentar.loeschen';
	codes['/dwComment/savecomment'] = 'aktionen.nopi.kommentar.neu';
	codes['/dwComment/saveComment'] = 'aktionen.nopi.kommentar.neu';
	codes['/dwComment/updatecomment'] = 'aktionen.nopi.kommentar.aendern';

	codes['/dwImage/collectionView'] = 'aktionen.nopi.galerie';
	codes['/dwImage/delObj'] = 'aktionen.nopi.bild-loeschen';
	codes['/dwImage/imagedelete'] = 'aktionen.nopi.bild-loeschen';
	codes['/dwImage/imageupload'] = 'aktionen.nopi.bild-hochladen';

	codes['/dwRecommend/send'] = 'aktionen.nopi.empfehlen';

	codes['/dwTag/detag'] = 'aktionen.nopi.tag-entfernen';
	codes['/dwTag/tag'] = 'aktionen.nopi.tag-hinzufuegen';

	//clicktracking
	//codes['test/123'] = 'click.nopi.';
	//codes['click/teaser123'] = 'teaser.click.nopi.teaser123';
	codes['teaserclick/print'] = 'click.nopi.drucken';
  codes['teaserclick/recommend'] = 'click.nopi.empfehlen';
  codes['teaserclick/alert'] = 'click.nopi.melden';
  codes['teaserclick/bookmark-favoriten'] = 'click.nopi.bookmark-favoriten';
  codes['teaserclick/bookmark-twitter'] = 'click.nopi.bookmark-twitter';
  codes['teaserclick/bookmark-facebook'] = 'click.nopi.bookmark-facebook';
  codes['teaserclick/bookmark-myspace'] = 'click.nopi.bookmark-myspace';
  codes['teaserclick/bookmark-google'] = 'click.nopi.bookmark-google';
  codes['teaserclick/bookmark-delicious'] = 'click.nopi.bookmark-delicious';

	//anzeigetracking
  //codes['show/teaser123'] = 'teaser.anzeigen.nopi.teaser123';

	return (codes[url]) ? codes[url] : '';
}

function sitestat_track_ajax(ajax_url)
{
	if (typeof sitestat_enabled == 'undefined' || !sitestat_enabled || !ajax_url)
	{
		return;
	}

	var code = sitestat_get_code_for_url(ajax_url);
	if (!code)
	{
		return;
	}

	if (typeof sitestat_url == 'undefined')
	{
		var url = sitestat_url;
		url += sitestat_culture + '.' + code + '&loginstatus=' + sitestat_loginstatus + '&';
	
		sitestat(url);
	}
}
/**
 * Hängt Site-Stat-Tracking Funktionalität an das angegebene Element
 * trackingevent=display führt das Tracking sofort aus
 * ansonsten muss trackingevent einem gültigen event enstprechen, z.B. click
 */
function add_tracking(el,trackingevent){
         //
         var trackingurl = '';

         // get tracking-url-code
         var pattern = /track_([a-z0-9_-]{0,40})/;
         if(pattern.test(el.className)){
            //
            trackingurl = el.className.match(pattern)[1].replace(/_/g,'/');
         }

         if (!sitestat_enabled || !trackingurl)
				 {
					 return;
				 }

					var code = sitestat_get_code_for_url(trackingurl);
					if (!code)
					{
						return;
					}

					var url = sitestat_url;
					url += sitestat_culture + '.' + code + '&loginstatus=' + sitestat_loginstatus + '&';

					//"display"-Tracking sofort ausführen
					if(trackingevent=="display") {
						sitestat(url);
					}
					//ansonsten an das entsprechende Event hängen
					else {
						YAHOO.util.Event.addListener(el, trackingevent, function(){
							sitestat(url);
							sleep(200);
							return false;});
					}
}

/**
 * Oeffnet die Navigation zwischen den einzelnen Foren
 *
 * @author Mathias Schmidt <mathias.schmidt@datenwerk.de>
 * @param integer id
 * @param integer active
 * @return boolean
 */
function toggleForumNavigation(id, active)
{
	var el = $$('#mainforum_'+id+' .forumlist');
	if (el[0].style.display == '')
	{
		el[0].hide();

		var el = $$('#mainforum_'+id+' .link'+id);
		el[0].className = 'link'+id;
	}
	else
	{
	    // Alle Elemente erst einmal schliessen
	    var el = $('mainforum');
	    var childs = el.childElements();
	    if (childs.length > 0)
	    {
	        for (var n = 0; n < childs.length; n++)
	        {
	            var sub = childs[n].childElements();
	            for (var m = 0; m < sub .length; m++)
	            {
	                if (sub[m].id != '')
	                {
	                    var split = childs[n].id.split('_');
	                    sub[m].hide();

	                    var el = $$('#mainforum_'+split[1]+' .link'+split[1]);
	                    if (el != null)
	                    {
	                        el[0].className = 'link'+split[1];
	                    }
	                }
	            }
	        }
	    }

	    // aktuell angeklicktes Element oeffnen
	    var el = $$('#mainforum_'+id+' ul');
	    if (el != null)
	    {
	        el[0].show();
	    }

	    // Aktiv setzen
	    var el = $$('#mainforum_'+id+' .link'+id);
	    var sel = $$('#mainforum_'+id+' .link'+active);

		if (el[0].style.display == 'block')
		{
			el[0].hide();
		}

	    if ((id == active || sel.length == 0) && el != null)
	    {
	        el[0].className += ' active';
	    }
	}
	return false;
}

/**
 * Bild in der vBulletin Lightbox per onclick auswaehlen
 *
 * @author Mathias Schmidt <mathias.schmidt@datenwerk.de>
 * @param integer attachment_id
 * @param integer num
 * @param integer container
 */
function vBselectImage(attachment_id, num, container)
{
    for (var n = 0; n < Lightboxes.length; n++)
    {
        if (Lightboxes[n].containerid == container && Lightboxes[n].element.id == 'attachment'+attachment_id)
        {
            Lightboxes[n].load_lightbox($('attachment'+attachment_id));
        }
    }
}
