/**
 *
 * 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(), bm_is_open, is_debug = undefined, is_scrolling = false, i18n = new dwI18N({'extension':'xml'});

Ajax.Responders.register({
    onFailure:function()  {
        _alert(i18n.__('Es ist ein Fehler aufgetreten. Bitte versuche es später nochmal.'));
    }
});

document.observe('load', function() {
   getScript(location.protocol + '//connect.facebook.net/' + i18n.detectDocumentCulture() + '/all.js');
});




document.observe('dom:loaded', localstart);

document.observe('mobile:detectionComplete', function(evt) {
        i18n.loadCatalogue('javascript.selection', {
                'onComplete':function() {
                    localstart_I18N();
                }
            });
    });


document.observe('dom:loaded', function() {

	(function() {

    	var storage = new Cookie({'name': 'bhc_mobile_specs','expires': 14*3600*24*1000, 'path':'/'});
		var cssClasses = storage.getData('css_classes');

        function setMobileClasses(classes) {
            storage.setData('checkSum', adler32(navigator.userAgent));
            var body = $$('body').first();
            var pattern = /[a-z][a-z\d\-_]+/i
            classes.each(function(className, index) {
                if(pattern.test(className)) {
                    body.addClassName(className);
                }
            });
        }

        function adler32(str) {

            var a = 1, b = 0, MOD_ADLER=65521;

            for(var index=0;index<str.length;index++) {
                a = (a + str.charCodeAt(index)) % MOD_ADLER;
                b = (b + a) % MOD_ADLER;
            }
            return (b << 16) | a;
        }

        if(!cssClasses || (cssClasses && storage.getData('checkSum') !== adler32(navigator.userAgent))) {
            new Ajax.Request(getXhrUrl('/services/getMobileCssClasses'),
            {'method':'get',
              'onSuccess': function(response) {
                    if(!Object.isUndefined(response.responseJSON)) {
                        storage.setData('css_classes', response.responseJSON);
                    }
                    else {
                        storage.setData('css_classes', []);
                    }
              },
              'onFailure':function(response) {
                storage.setData('css_classes', []);
              },
              'onComplete':function(response) {

                  var classes = storage.getData('css_classes');
                  setMobileClasses(classes);
                  $$('body').first().fire('mobile:detectionComplete', {'mobileClasses' : classes});
              }
            }
            );
        }
        else {
            setMobileClasses(cssClasses);
            $$('body').first().fire('mobile:detectionComplete', {'mobileClasses' : cssClasses});
        }
    }
    )();

});



function localstart_I18N() {

    dwFindTimestamps();
    RTEListener.defer();
    initDwImageGallery.defer();

    (function() {$$('.maxsigns').each(function(el){max_sings_with_a_input_listener(el);});}).defer();

}

/*  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.defer();
    initFacebook.defer();
	formPrefillmeListener.defer();
	setFormFocus.defer();
	start_homepic_rotation.defer();
	dwLayerListener.defer();
	dwPopupListener.defer();
	dwAccordionListener.defer();
	layerUrlControl.defer();
	tt_listener.defer();
	scrollListPrepare.defer();
	set_use_first_ahref_event_handler.defer();
	user_votebuttons.defer();
	fixTeaserHeights.defer();
    googlemapsInit.defer();
    
	//
	 (function() {$$('form.form_reset').each(function(el){el.reset();});}).defer();
	
	 (function() {$$('input.autocomplete').each(function(el){add_autocompleter_listener(el);});}).defer();
     (function() {$$('.numbersonly').each(function(el){numbersonly_input_listener(el);});}).defer();

	 (function() {$$('.ajax_tags').each(function(el) {add_tag_listener(el);} );}).defer();
	
     (function() {add_objactions_listener_collected();}).defer();

	 (function() {$$('textarea.autogrow').each(function(el) {add_autogrow_listener(el);} );}).defer();
	 (function() {$$('.alternating').each(function(el) {alternate_classes(el, ['wechsel-0','wechsel-1']);} );}).defer();

    //sitestat-click-tracking
	 (function() {$$('.sitestatclick').each(function(el) {add_tracking(el,'click');} );}).defer();
	 (function() {$$('.sitestatshow').each(function(el) {add_tracking(el,'display');} );}).defer();

     (function() {$$('.geodatacheck').each(function(el) {YAHOO.util.Event.addListener(el, "blur", geodatacheck);} );}).defer();

    (function() {$$('.crawlerhidden-link').each(function(el) {replaceCrawlerHiddenLink(el);} );}).defer();

	// Bookmarken
	bm_is_open = false;
	bm_keep_open = false;

	// ping
	var pe = new PeriodicalExecuter(ping, 300);

	// chat?
	$$('#chat').each(function(el) {chat_start();} );

}

function replaceCrawlerHiddenLink(el) {

	try {
		var el_class = el.readAttribute('class').el_class.split(' '), attr = {};

    	for(var i=0;i<el_class.length;i++) {
    		if(el_class[i].isJSON()) attr = Object.extend(attr, el_class[i].evalJSON());
    	}
    }
    catch(e) {}
    try {el.replace(new Element('a', attr).update(el.innerHTML));}
    catch(e) {}
}

function _reg_layer_teaser(){

    var hit=document.cookie.indexOf("layerwhite");
    // var hit2=document.cookie.indexOf(c_id);
    if(hit!=-1){
    	alert('...');
    	$('col3_content').childElements()[0].childElements()[0].insert({'top':'<div class="content-box box-white teaser-right teaser-related-threads">!!!!!<img src="/manual/campaign/teaser_rechts_ixogewinnspiell.gif" /></div>'});
    }
}

function ping(){
         new Ajax.Request('/services/ping',  {method: 'get'});
}

function _log(){
  
  if(Object.isUndefined(is_debug)) {
      if(   location.pathname.match(/^\/?[a-z][a-z0-9_\-]+_dev\.php\/?/i)
         || (location.port != '' && location.port != 80 && location.port !== 443)
         || location.hostname.match(/dw\.lan$/) || location.hostname.match(/^dev\./) || location.hostname.match(/^[a-z]{2}\-dev\./)
      ) is_debug = true;
      else is_debug = false;
  }
  if(!is_debug) return false;
  
  if(!Object.isUndefined(window['console'])) {for(var i=0;i<arguments.length;i++) {try {console.log(arguments[i]);} catch(e) {}}}
	var target_div = $('log');
	if(target_div){
	   target_div.setAttribute('style', 'height:100px;overflow:scroll;');
	   target_div.innerHTML = target_div.innerHTML + arguments.join('<br/>\n') + '\n<br/>';
	}
	/*
	if(target_div.innerHTML.length > 300){
	   target_div.innerHTML.substring(300,300);
	}
	*/
}

function fixTeaserHeights() {
  
    // Activities teaser
    if($('activities_teaser_stage_3')) {
        var aTeaser = $$('#activities_teaser_stage_3 div.box-content');
        if(aTeaser.length > 1) {
            var maxHeight = 0;
            aTeaser.each(function(el) {
                var el_real_height = 0;
                el.childElements().each(function(child) {
                    el_real_height += child.getHeight();
                });
                maxHeight = Math.max(maxHeight, el_real_height);
            });
            
            maxHeight = Math.max(0, maxHeight-20);
            aTeaser.each(function(el) {
                el.style.cssText = 'height:' + maxHeight + 'px !important';
            });
            
            $$('#activities_teaser_stage_3 div.scroll-list-content').each(function(el) {
                el.setStyle({'height': (maxHeight-85) + 'px'});
            });
   
        }
    }
  
}

function getScript (src) {
    _log('-> getScript: ' + src);
    Element.insert($$('head script').last(), {'after': new Element('script', {'type':'text/javascript','src':src})});
}

/* GLOBAL (layer-control, listener, string-func. etc.) */
function layerUrlControl(){
  
     var url = location.href;
     var url_splited = location.href.split('#');
     if(url_splited[1]){
        var command = url_splited[1].split('|');
        var control = undefined;       
        for(var i = 0;i<command.length;i++) {           
            control = command[i].split(':');
            if(control.length > 1) {              
                switch (control[0]) {
                    case 'l':if(control[1]) openlayer(control[1]);
                       break;
                    case 'rl':if(control[1]) reglayer(control[1]);
                       break;
                    case 'p':
                       if(control[1]) {
                           _toggle('profil_'+control[1]+'_view');
                           _toggle('profil_'+control[1]+'_edit');
                       }
                       break;
                    case 's':
                      if(control[1]) {
                         $$('a[name="' + control[1] + '"]').first().scrollTo();
                      }
                      break;
                }
            }
          
        }
     }
}

/* anchor layer control */
window.reg_layer_openercall = false;
function reglayer(c_id){
	    window.reg_layer_openercall = true;
        dwLayerShow(708, 508, 'iframe', '/user/campaign?id=' + c_id, 'modal:true, ');
        /*
        var hit=document.cookie.indexOf("layerwhite");
        var hit2=document.cookie.indexOf(c_id);
        if(hit!=-1 && hit2!=-1){
        	document.getElementById('dw_layer_mask').setAttribute('style', 'background:#FFFFFF; z-index: 999; visibility: visible; display: block; height: ' + screen.height + 'px; width: ' + screen.width +'px; opacity: 1;');
        	setTimeout('_white_layer_bg();', 5000);
        }
        */
}

function _white_layer_bg(){
	document.getElementById('dw_layer_mask').setAttribute('style', 'background:#FFFFFF; z-index: 999; visibility: visible; display: block; height: ' + screen.height + 'px; width: ' + screen.width +'px; opacity: 1;');
}

function _getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function isIxoCampaignSpecialRunning() {
	
	var start = new Date('october 4, 2011 10:00:00'),
		end = new Date('october 31, 2011 23:59:59'),
		culture = dwI18N.prototype.detectDocumentCulture(),
		now = new Date();
		
	return (
			(location.host == 'www.1-2-do.com' || location.host == 'web1.1-2-do.com')
			&& culture == 'de_DE'
			&& now.getTime() >= start.getTime()
			&& now.getTime() <= end.getTime()
		);
}

function openlayer(type){
	
         switch (type) {
            case "facebooklogin":
                dwLayerShow(365, 160, 'iframe', '/user/fbLoginPopup', 'modal: true,');
                break;
            case "facebookregister":
                dwLayerShow(370, 130, 'iframe', '/user/fbRegisterPopup', 'modal: true,');
                break;
            case "facebookpreauthpopup":
                dwLayerShow(365, 330, 'iframe', '/user/fbPreauthPopup', 'modal: true,');
                break;
            case "facebook":
                dwLayerShow(550, 135, 'iframe', '/user/fbWelcomePopup', 'modal: true,');
                break;
            case "fbfinishsignupsuccess":
                dwLayerShow(645, 320, 'iframe', '/user/fbSignupSuccess', 'modal:true, ');
                break;
            case "fbconnectionestablished":
                dwLayerShow(478, 123, 'iframe', '/user/fbConnectionEstablished', 'modal:true, ');
                break;
            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":
            	if(isIxoCampaignSpecialRunning()) {
            		dwLayerShow(455, 529, 'iframe', '/user/login', 'modal:true, ');
            	}
            	else {
            		dwLayerShow(455, 390, 'iframe', '/user/login', 'modal:true, ');
            	}

                break;
            case "signup":
                if(isIxoCampaignSpecialRunning()) {
                	dwLayerShow(710, 510, 'iframe', 'http://www.1-2-do.com/de_DE/campaign/146/', 'modal:true, ');
                }
                else {
                	dwLayerShow(975, 370, 'iframe', '/user/signup', 'modal:true, ');
                }
                
                break;
            case "infotour":
                dwLayerShow(975, 570, 'iframe', '/manual/infotour/index.php', '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(i18n.format_number_choice('[else]Noch %1% Zeichen', {'%1%': max - el.value.length}, 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);
}

function user_votebuttons(){
	 
	 // TEMPORARY HACK TO DISABLE BUTTON IN WIKI
	 if(location.pathname.match(/^\/?wissen\//i) || location.pathname.match(/^\/?diy\-know\-how\//i) || location.pathname.match(/^\/?wiki_fr\//i)) return false;
	 
	 var el =   $$('.rpcuserimage');
	 if(el.length > 0){
	 	 var user_ids = [];
	 	 var pattern = /k(.*)/;
	 	 el.each(function(this_el) { 
	 	 	  if(pattern.test(this_el.className)){
	 	 	  	 user_ids.push(this_el.className.match(pattern)[1]);
	 	 	  }	 	 	
	 	  }
	 	 );
	 	 
	 	 user_ids = user_ids.uniq();
	 	 
	 	 if(user_ids.length > 0){
	 	 	  // call
        var url        = '/services/votebuttonsforusers';
 	      var params     = {
 	            'user_ids': user_ids.join(','),
 	            'user_id': 1,
 	            'r': Math.random()
 	      };
 	      new Ajax.Request(url,  {method: 'post',
 	                              parameters: params,
	                              onSuccess:  function(transport){
                                      //
                                      var json = transport.responseText.evalJSON();
                                      Object.keys(json).each(function(k){
                                           if(json[k]['allowed'] == true){
                                           	  var target_els =   $$('.rpcuserimage.k'+k);
                                           	  var src = json[k]['source'];
                                           	  target_els.each(function(this_el) {
                                           	  	Element.insert(this_el, {'after': src});
                                           	    }
                                           	  );
                                           }
                                        }
                                      );

	                              },
	                              onLoading: function(){
                                      // IE sometimes onSuccess is executed faster then onLoading - don't
                                      // el.update(' ');
	                              },
	                              evalJS: 'false'
	                            }
	                      );
	 	 }
	 	 
	 	 
	 }
}

var deepgeodatacheck = false;
var geodatacheck = function(e){
	//
  if(deepgeodatacheck){
  	if($('deep_geodatacheck_loading')) $('deep_geodatacheck_loading').show();
  }
  
	//
  var url        = getXhrUrl('/user/ajaxcheckaddressdataforgeo');
  var params     = {'deepgeodatacheck' : deepgeodatacheck,
                      'r' : Math.random(),
                      'street' : $F($('street')),
                      'street_number' : $F($('street_number')),
                      'zip' : $F($('zip')),
                      'city' : $F($('city')),
                      'country' : $F($('country'))
                    };
                    
  for(var i in params) {
      if(params[i].length == 0) {
         params[i] = undefined;  
      }
  }
  
 	new Ajax.Request(url,  {method: 'post',
 	                             parameters: params,
	                             onSuccess:  function(transport){
                                      //
                                      var json = transport.responseText.evalJSON();
                                         //
                                      	 if(json['success'] && (json['success'] == true || json['success'] == 'true')){
                                      		  //
                                      	 	  if(!deepgeodatacheck) $('geodatavalid').show();
                                      	 	  if(!deepgeodatacheck) $('geodatainvalid').hide();
                                      	 	  if(!deepgeodatacheck) $('geodataaccess').removeClassName('inactive');
                                      	 	  if(!deepgeodatacheck) $('geodataaccess').disabled = false;                                     	 	  
                                      	 	  if(deepgeodatacheck)  $('geodataaccess').checked = true;
                                      	 }
                                      	 else{
                                      	 	  if(!deepgeodatacheck) $('geodatavalid').hide();
                                      	 	  if(!deepgeodatacheck) $('geodatainvalid').show(); 
                                      	 	  if(!deepgeodatacheck) $('geodataaccess').setAttribute('disabled', 'disabled');
                                      	 	  if(!deepgeodatacheck) $('geodataaccess').disabled = true;
                                      	 	  $('geodataaccess').checked = false;
                                      	 	  if(deepgeodatacheck){
                                      	 	     if(json['exception']) _alert($('geodata_service_error').innerHTML, 300, 100, 'OK');
                                      	 	     else _alert($('geodata_error').innerHTML, 300, 100, 'OK');
                                      	 	  }
                                      	}
                                      	$('deep_geodatacheck_loading').hide();
                                      	deepgeodatacheck = false;
	                             },
	                             onLoading: function(){
                                      // IE sometimes onSuccess is executed faster then onLoading - don't
                                      // el.update(' ');
	                             },
	                             evalJS: 'false'
	                            }
	                      );  
}


function deep_geodatacheck(e, el){
	//
	if(el.checked == true){
		 _log(' -> checkbox not checked ');
		 deepgeodatacheck = true;
		 geodatacheck(e);
		 el.checked = false;
	}
	else {
		 _log(' -> checkbox checked ');
	   el.checked = false;
	}
	return false;
}

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(i18n.format_number_choice('[else]Noch %1% Zeichen', {'%1%': max - this.value.length}, 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){

        var lineHeight = el.getStyle('line-height');
        var minHeight = el.getStyle('min-height');

         if(isNaN(parseInt(lineHeight)) || parseInt(lineHeight) == 0) {
             el.setStyle({'lineHeight' : '18px'});
         }

        if(isNaN(parseInt(minHeight)) || parseInt(minHeight) == 0) {

            var initialHeight = el.getHeight() - sumStyleAttributes(el, ['padding-top','padding-bottom','border-top-width','border-bottom-width']);
            
            lineHeight = parseInt(el.getStyle('line-height'));
            initialHeight = Math.ceil(initialHeight/lineHeight) * lineHeight;            
            
            el.setStyle( {'minHeight' : initialHeight + 'px'});
        
         }

         if(!el.readAttribute('rows')) {
             try {e.writeAttribute('rows', 2);} catch(e) {}
         }
         
         YAHOO.util.Event.addListener(el, "focus", autogrowStart);
         YAHOO.util.Event.addListener(el, "blur", autogrowStop);

}

function sumStyleAttributes(el, attrList) {

    var sum = 0, value = undefined;
    
    for(var i=0;i<attrList.length;i++) {
        value = parseFloat(el.getStyle(attrList[i]));
        sum += isNaN(value) ? 0 : value;
    }
    return sum;
}


var autogrowStart = function(e) {
            if($('autogrow_hidden'))
                $('autogrow_hidden').remove();

            el = this;
            var taWidth = el.getWidth() - sumStyleAttributes(el, ['padding-left','padding-right','border-left-width','border-right-width']);
            taWidth -= 4;
            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: taWidth + 'px',
									overflowX : 'hidden',
                                    position: 'absolute',
                                    left: '-999px',
                                    top:0}
                                );

            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'));
            var min_height = parseInt(e.getStyle('min-height'));
            min_height = isNaN(min_height) ? 0 : min_height;
            
            if((e.autogrow_div.getHeight() / line_height >= 1) &&
               (Math.ceil(e.getHeight() / line_height) != Math.ceil((e.autogrow_div.getHeight() + line_height) / line_height))) {
                
                var rows = Math.ceil((e.autogrow_div.getHeight() / line_height));
                Element.writeAttribute(e, 'rows', rows);
                
                var targetHeight = rows * line_height;
                if(targetHeight >= min_height) {
                    Element.setStyle(e, {'height': targetHeight + 'px'});
                }

            }
}

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_collected(el) {
  
  //_log('--> add_objactions_listeners() ');
  var options = {};
  var defaultOptions = {
            'cn': '',
            'obj_id':'',
            'self_url':'/',
            'print_url':'',
            'self_title':''
        };
  var requestItems = {};
  
  var cn_pattern = /obj_cn_([a-z0-9]{0,20})/;
  var id_pattern = /obj_id_([a-z0-9]{0,20})/;
  
  if(!Object.isUndefined(el)) {
    el = Object.isArray(el) ? el : [el]; 
  }
  else el = $$('.ajax_objactions');
  
  el.each(function(el, item) {
        
        options = Object.clone(defaultOptions);
        
         if(cn_pattern.test(el.className)){
            options.cn = el.className.match(cn_pattern)[1];
         }
         
         if(id_pattern.test(el.className)){
            options.obj_id = el.className.match(id_pattern)[1];
         }

         if($('url_obj_id_' + options.obj_id)){
            options.self_url = $('url_obj_id_' + options.obj_id).innerHTML;
         }

         if($('print_url_obj_id_' + options.obj_id)){
            options.print_url = $('print_url_obj_id_' + options.obj_id).innerHTML;
         }

         if($('title_obj_id_' + options.obj_id)){
            options.self_title = $('title_obj_id_' + options.obj_id).innerHTML;
         }
         
         requestItems[el.identify()] = options;
        
  });
  
  //_log(requestItems);
  
  if(Object.keys(requestItems).length) {
        new Ajax.Request('/services/ajaxobjactions', {
            'method':'post',
            'evalJS':false,
            'parameters': {'collected_requests': Object.toJSON(requestItems)},
            'onSuccess':function(transport) {
                
                  var data = !Object.isUndefined(transport.responseJSON['result']) ? transport.responseJSON['result'] : [];
                  try {
                    for(var el_id in data) {
                        //_log(' -> adding data (' + data[el_id].length + ' bytes) to element ' + el_id);
                        $(el_id).update(data[el_id]);                      
                    }
                    dwLayerListener();
                                        
                  }
                  catch(e) {
                  
                  }
             }
          }); 
  }
  
}

// Backward compatibility
function add_objactions_listener(el){
      add_objactions_listener_collected(el);       
}

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 == 'groupinvitation') {
            ds.responseSchema = {fields:["name", "id"]};
            ajax_request_type = 'groupinvitation';
         }
         if(type == 'groupeventinvitation') {
            ds.responseSchema = {fields:["name", "id"]};
            ajax_request_type = 'groupeventinvitation';
         }
         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";

		 if(type == 'pmto') ac.maxResultsDisplayed = 25;
		 if(type == 'groupinvitation') ac.maxResultsDisplayed = 25;
		 if(type == 'groupeventinvitation') ac.maxResultsDisplayed = 25;

         // 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 == 'groupinvitation') return '?type=' + type + '&value=' + _string_escape(el.value) + '&group_id=' + $('groupinvitation_groupid').value;
            if(ajax_request_type == 'groupeventinvitation') return '?type=' + type + '&value=' + _string_escape(el.value) + '&event_id=' + $('groupeventinvitation_eventid').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);
                                                 }
            );
         }
         
         // GROUP INVITATION
         if(type == 'groupinvitation') {
             
             ac._updateValue = function() {
              el.value = '';
              return true;
            }
            
            ac.dataRequestEvent.subscribe(function(oSelf, sQuery, oRequest) {
                $('input_container_groupinvitation').removeClassName('error');
            });
            
            ac.itemSelectEvent.subscribe(function(sType, aArgs) {
                                                    //
                                                    var username = aArgs[2][0];
                                                    var user_id = aArgs[2][1];
                                                    group_invitation_add_user(username, user_id);
                                                 }
            );
            
         }
         
         if(type == 'groupeventinvitation') {
             
             ac._updateValue = function() {
              el.value = '';
              return true;
            }
            
            ac.dataRequestEvent.subscribe(function(oSelf, sQuery, oRequest) {
                $('input_container_groupeventinvitation').removeClassName('error');
            });
            
            ac.itemSelectEvent.subscribe(function(sType, aArgs) {
                                                    //
                                                    var username = aArgs[2][0];
                                                    var user_id = aArgs[2][1];
                                                    group_event_invitation_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(),
      act_tr = 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, a_ok_width, a_abort_width) {

	// optional parameters
	a_width = a_width || 446;
	a_height = a_height  || 80;
	a_ok = a_ok || i18n.__('OK');
	a_abort = a_abort || i18n.__('Abbrechen');
	a_ok_width = a_ok_width || 70;
	a_abort_width = a_abort_width || 75;
	a_act = Object.isString(a_act) ? a_act : encodeURIComponent(Object.toJSON(a_act));
	a_act = a_act.replace(/'/g, '%' + "'".charCodeAt(0).toString(16));

	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: "+ a_ok_width +"px;\" 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: "+ a_abort_width +"px;\" 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) {
	if(this.value == this.title) this.value = "";
}

restoreDummytextInput = function(e){
    if((this.value == "") && (!this.hasClassName('no_refill'))){
       	this.value = this.title;
    }
}

emptyTA = function(e) {
	this.innerHTML = "";
}

function formEmptymeListener() {
	/* input/textarea leeren sich onclick */

    var empty_input = $$('input.emptyme');

    // store original value in title-attri
    empty_input.each(function(el, index) {
       el.title = el.value;
       el.observe('click', emptyInput.bind(el));
       el.observe('blur', restoreDummytextInput.bind(el));
    });

    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);

	                             }
	                           }
	                          );
}
function _update_garage_tools_privacy(dropdown_el){
         var url        = '/user/ajaxsetgaragetoolsprivacy';
         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(i18n.__('Die Datei ist zu groß. Maximale Größe: 5 MB.'));
           }
           else if(result['error'].match(/mime/)) {
           	_alert(i18n.__('Die Datei besitzt ein ungültiges Format.<br/>Zulässige Formate: jpg, png, bmp, gif.'));
           }
           else {
           	_alert(i18n.__('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'] + '&obj_id=' + result[4]['obj_id'];
         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');
         }
}

function imagedelete_groupimage(result){
         var success = result[1];
         var params  = '&hash=' + result[2]['hash'] + '&image_key=' + result[3]['image_key'] + '&obj_id=' + result[4]['obj_id'];
         if(success == 'success'){
            //
            var url = getXhrUrl('/group/ajaxdelgroupimage');
	        new Ajax.Request(url,  {method: 'post',
	                                parameters: params,
	                                onSuccess:  function(transport){
	                                            var data = transport.responseText.evalJSON();
	                                            var imagetag = $('imagetag_' + data[1]['hash']);
	                                            imagetag.src = data[0]['image'];
	                                            $('imagedellink_' + data[1]['hash']).hide();
	                             }
	                           }
	                          );
         }
         else{
           alert(i18n.__('Fehler'));
         }
}

function facebooktoggle_userimage(hash,imagetag){
		var url = '/user/ajaxtoggleusefbimage';
		var params  = '&hash=' + hash;
		new Ajax.Request(url,  {method: 'post',
							parameters: params,
							onSuccess:  function(transport){
										result = transport.responseText.evalJSON();
										imagetag.src = result['userimage'];
						 }
					   }
					  );


}
/* USERIMAGE & IMAGES */
function imageupload(json){
         //
         sitestat_track_ajax('/dwImage/imageupload');
         json = unescape(json);
         var result = json.evalJSON();
         var type = result[0];

         switch(type) {
            case 'user':
            	 imageupload_userimage(result);
            break;
            case 'user_garage':
            case 'project':
            case 'DbProjectStep':
            case 'thread':
            case 'ProductTestBlog':
            case 'gallery':
            case 'group':
            case 'bhcQnaPost':
              imageupload_collection(result);
            break;
            
            default:
              // DO NOTHING
              _log('-> imageupload() - Unknown imageupload type "' + type + '"');
              break; 
          
         }
}

function imagedelete(json){
         sitestat_track_ajax('/dwImage/imagedelete');
         var result = json.evalJSON();
         var type = result[0];
         switch(type) {
            case 'group':
              imagedelete_groupimage(result);  
            break;
			
            case 'user':
              imagedelete_userimage(result);  
            break;
            
            default:
              // DO NOTHING
              _log('-> imagedelete() - Unknown imageupload type "' + type + '"');
              break; 
         } 
}

/* 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);
	                                         // tt_listener();
	                                         // 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 _dwCommentCount(){
		 var id = parseInt($('object_id').value);

		 new Ajax.Request('/dwComment/ajaxcommentcount',  {
		 	method: 'post',
			parameters: 'id=' + id,
			onSuccess:  function(transport){
				result = transport.responseText.evalJSON();
				elementmod_resulthandling(result);
			}
		});
}

function _dwCommentForm(obj_id, cn, params, oEvtHandlers) {
  
  _log('--> _dwCommentForm');
  params = params || {}
  oEvtHandlers = oEvtHandlers || {};  
  
  var _params = {'obj_id': obj_id, 'cn': cn};
  _log(_params);
  _params = Object.extend(_params, params);
  
  var options = {method: 'get',parameters: _params};
  _log(options);
  options = Object.extend(options, oEvtHandlers);
  
  
  new Ajax.Request('/dwComment/ajaxForm', options);  
}

function _dwCommentList(obj_id, cn, params, oEvtHandlers) {
  
  params = params || {};
  params['obj_id'] = obj_id;
  params['cn'] = cn;
  
  var options = {
    method: 'get',
    parameters: params
  };
  
  oEvtHandlers = oEvtHandlers || {};
  options = Object.extend(options, oEvtHandlers);
  new Ajax.Request('/dwComment/list', options);  
}



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();

	                             }
	                           }
	                     );

         }
}

function fireEvent(element, event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}


/* IMAGES */
// this requires the collection of thumbnails in dom!
function _dw_Image_set_main_image(pos, obj_id, nextorprev){
  
  var gallery_control = false;
  var thumbs = $$('div#thumbs a img.thumb_col_' + obj_id);
  var thumbs_a = $$('div#thumbs a.a_thumb_col_' + obj_id);
  var images_count = parseInt($('images_count_' + obj_id).value);
  
  if(thumbs.length == 0)
  {
    gallery_control = true;
    thumbs = $$('div.thumbs a img.thumb_col_' + obj_id);
    thumbs_a = $$('div.thumbs a.a_thumb_col_' + obj_id);
    images_count = parseInt($('images_count_' + obj_id).value);
    
    var thumbs_prev_el = $$('div.thumbs_nav div.thumbs_prev a').first(); 
    var thumbs_next_el = $$('div.thumbs_nav div.thumbs_next a').first(); 
  }
  
  if(thumbs[pos]){
      fireEvent(thumbs[pos], 'click');
      if(thumbs_a[pos].style.display == 'none'){
          if(nextorprev == 'next') {
            var it = 0;
            while(thumbs_a[pos].style.display == 'none') {
              if (gallery_control == false) _dwImage_view_next_click(obj_id);
              else{
                fireEvent(thumbs_next_el, 'click');
              }
              it++;
              if(it>=images_count) break;
            }
          }
          if(nextorprev == 'prev') {
            var it = 0;
            while(thumbs_a[pos].style.display == 'none') {
              if (gallery_control == false) _dwImage_view_prev_click(obj_id);
              else{
                fireEvent(thumbs_prev_el, 'click');
              }
              it++;
              if(it>=images_count) break;
            }
          }
      }
  }
}
function _dw_Image_next_img(obj_id){
         //
         var main_image = $('mainimage_image_' + obj_id);
         var thumbs = parseInt($('thumbs_container_' + obj_id).value);
         var main_image_pos = parseInt($('pos_container_' + obj_id).value);  
         var images_count = parseInt($('images_count_' + obj_id).value);
         
         var nextorprev = 'next';
         var next_pos = main_image_pos+1;
         if (next_pos>=images_count) {
           next_pos = 0;
           nextorprev = 'prev';
         }
         _dw_Image_set_main_image(next_pos, obj_id, nextorprev);
         
}
function _dw_Image_prev_img(obj_id){
         //
         var main_image = $('mainimage_image_' + obj_id);
         var thumbs = parseInt($('thumbs_container_' + obj_id).value);
         var main_image_pos = parseInt($('pos_container_' + obj_id).value);  
         var images_count = parseInt($('images_count_' + obj_id).value);
         
         var nextorprev = 'prev'
         var prev_pos = main_image_pos-1;
         if (prev_pos<0) {
           var nextorprev = 'next'
           prev_pos = images_count-1;
         } 
         _dw_Image_set_main_image(prev_pos, obj_id, nextorprev);
}
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 = getXhrUrl('/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);
										        }
										        $('uploadscontainer' + dim).fire('dwImage:delete', {'id':id,'i':i,'dim':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;
		 var log = true;
     
     // if(log) alert('4');
		 if(dim_string.length == 0) dim_string = '--';
		 var target_url =  getXhrUrl('/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';

     // Remove all remaining file uploads
     
     // FIX 10304
     // $(parentform).select('input[type="file"]').each(function(item, index) {
     var container_id = 'uploadscontainer' + dim;
     $(container_id).select('input[type="file"]').each(function(item, index) {  
        if(Element.identify(item) != 'image' + i + dim) item.remove();
     });

		 $(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              = getXhrUrl('/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 = getXhrUrl('/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($('uploadscontainer' + dim)) {
            $('uploadscontainer' + dim).fire('dwImage:imageupload_collection', result);
         }
         // single image upload with parent form
         if(success == 'success' && i == '' && dim == '') {
            
            _log(result);
            var el_hash = result['hash'];
            var el = $('imagetag_' + el_hash);
            if(el) {
              el.src = result['image_preview'];
              $('imagedellink_' + el_hash).show();  
            }
            else _log('imagetag_' + el_hash + ' not found');
          
         }
         else 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){
	                                            //
	                                            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 = '';
                                                try {
                                                    sitestat_track_ajax(url);
                                                }
                                                catch(e) {
                                                    _log('[dwTag] Error - Could not launch sitestat. Footer missing?');
                                                }

	                             }
	                           }
	                     );

}

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);
            }
        });
        if(['new_events','more_events'].indexOf(el.readAttribute('id')) == -1) {
            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 project_confirm_image(id, type)
{
	var url = '/project/ajaxProjectQuality'
	var params = 'id=' + id;

	new Ajax.Request(url,  {
		method: 'post',
		parameters: params,
		onSuccess:  function(transport) {
				var project = transport.responseText.evalJSON();

				if ($('name_0') != null && $('txt_0_container') != null)
				{
					var step_name = $('name_0').value;
					var step_text = $('txt_0_container').value;
					if (step_name != '' && step_text != '')
					{
						project.steps = true;
					}
				}

				var tags = $('tags_Project_'+id);
				if (tags != null)
				{
					if (tags.innerHTML.replace(/^\s+|\s+$/g, "").length > 0)
					{
						project.tags = true;
					}
					else
					{
						project.tags = false;
					}
				}
				else
				{
					project.tags = true;
				}

				if (project.images == false && project.steps == true && project.tags == true)
                {
                    var text = i18n.__('Dein Projekt hat kein Bild in der Projekt-Beschreibung - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
                }
				else if (project.images == false && project.steps == true && project.tags == false)
                {
                    var text = i18n.__('Dein Projekt hat kein Bild in der Projekt-Beschreibung, noch Schlagworte - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
                }
                else if (project.images == false && project.steps == false && project.tags == true)
                {
                    var text = i18n.__('Dein Projekt hat weder ein Bild in der Projekt-Beschreibung, noch eine Bauanleitung - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
            	}
                else if (project.images == false && project.steps == false && project.tags == false)
                {
                    var text = i18n.__('Dein Projekt hat weder ein Bild in der Projekt-Beschreibung, noch eine Bauanleitung, noch Schlagworte - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
            	}
            	else if (project.images == true && project.steps == false && project.tags == true)
            	{
                    var text = i18n.__('Dein Projekt hat keine Bauanleitung - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
            	}
            	else if (project.images == true && project.steps == false && project.tags == false)
            	{
                    var text = i18n.__('Dein Projekt hat keine Bauanleitung, noch Schlagworte - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
            	}
            	else if (project.tags == false)
            	{
                    var text = i18n.__('Dein Projekt hat besitzt keine Schlagworte - das ist schade! Willst Du das Projekt trotzdem veröffentlichen?');
            	}

                if (type != 'profil' && typeof text != 'undefined')
                {
	                _confirm(
	                     text,
	                     500,
	                     100,
	                     {'url':'javascript:$("published").value = "1";$("next").value = "'+type+'";$("project_form").submit();'},
	                     i18n.__('Projekt veröffentlichen'),
	                     i18n.__('Zurück zur Bearbeitung'),
	                     145,
	                     145
	                );
                }
                else
                {

                    //
                    $('published').value = '1';
                    $('next').value = type;
                	$('project_form').submit();
                }
			}
		}
	);
}

/* */
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];
            }
            
            // REPLACE ELEMENT WITH NEW CONTENT
            if(def[1] == 'replace') {
                el.replace(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);
            }

            // 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(); */
	YAHOO.util.Event.onDOMReady(hideFlash);

	if (!pattern_close.test(l_attributes)) {
		closeable = '<a class="layer_close" href="javascript: dwLayerClose(this);"><span>Close</span></a>';
	}
	
	/* Hack für Registrierung */
	if (isIxoCampaignSpecialRunning() && l_data.match(/\/user\/signup/)) {
		l_data = 'http://www.1-2-do.com/de_DE/campaign/146/'; 
		l_width = 710;
		l_height = 510;
	}

	/* Layer initialisieren */
	var fixedCenter = ! $$('body').first().hasClassName('mobile');
	eval('YAHOO.dwLayer.overlay1 = new YAHOO.widget.Panel("dw_layer", { fixedcenter: ' + fixedCenter + ', 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";
			}
		}
	}
}


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) {
	try {YAHOO.dwLayer.overlay1.destroy();} catch(ex) {} 
	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() {
    
	var layer_links = YAHOO.util.Selector.query('.layerlink');
	YAHOO.util.Event.removeListener(layer_links, "click", dwLayerPrepare);
	YAHOO.util.Event.addListener(layer_links, "click", dwLayerPrepare);
}

function dwPopupShow(p_width, p_height, p_href, p_attributes) {
	
		var time = new Date();
		
		var attrKeys = ['location','resizable','scrollbars','status','toolbar'];
		var popupName = p_href.replace(/^https?:\/\//,'').substr(0, 15).replace(/[^A-Z0-9_]/gi,'') + '_' + time.getTime();
		
		var attr = {
			'width': p_width,
			'height':p_height,
			'location':true,
			'resizable':true,
			'scrollbars':false,
			'status':true,
			'toolbar':false,
			'screenX': Math.abs(screen.width/2 - parseFloat(p_width)/2),
			'screenY': Math.abs(screen.height/2 - parseFloat(p_height)/2)
		};
		
		if(typeof(p_attributes) == 'object') {
			
			for(var i = 0;i < attrKeys.length;i++) {
				var key = attrKeys[i];
				if(typeof(p_attributes[key]) !== 'undefined') {
						attr[key] = p_attributes[key];
				}
			}
		}		
		
		var sAttributes = [];
		
		for(var key in attr) {
			sAttributes.push(key + '=' + attr[key]);
		}
		
		window.open(p_href, attr['name'], sAttributes.join(','));
	
}


function dwPopupPrepare(evt) {
	
	YAHOO.util.Event.preventDefault(evt);
	
	var el_class = this.className;

	/* Groesse des Layers ermitteln*/
	var	p_width = "640";
	var	p_height = "480";

	var classsize = size_from_classname(this);
	if (classsize[0]) p_width = classsize[0];
	if (classsize[1]) p_height = classsize[1];
	
	dwPopupShow(p_width, p_height, this.href, {'status':false});
		
}

function dwPopupListener() {
	
	var popup_links = YAHOO.util.Selector.query('.popuplink');
	YAHOO.util.Event.removeListener(popup_links, 'click', dwPopupPrepare);
	YAHOO.util.Event.addListener(popup_links, 'click', dwPopupPrepare);
	
}


/* 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;

    if(diff < 60000) {
		int_val = Math.floor(diff / 1000);
        return i18n.format_number_choice('[0]Vor weniger als 1 Sekunde|[1]Vor 1 Sekunde|[else]Vor %1% Sekunden', {'%1%':int_val}, int_val);
	} else if (diff < 3600000) {
		int_val = Math.floor(diff / 60000);
		return i18n.format_number_choice('[1]Vor 1 Minute|[else]Vor %1% Minuten', {'%1%':int_val}, int_val);
	}	else if (diff < 86400000) {
		int_val = Math.floor(diff / 3600000);
		return i18n.format_number_choice('[1]Vor 1 Stunde|[else]Vor %1% Stunden', {'%1%':int_val}, int_val);
	}	else if (diff < 604800000) {
		int_val = Math.floor(diff / 86400000);
		return i18n.format_number_choice('[1]Vor 1 Tag|[else]Vor %1% Tagen', {'%1%':int_val}, int_val);
	}	else if (diff < 2592000000) {
		int_val = Math.floor(diff / 604800000);
		return i18n.format_number_choice('[1]Vor 1 Woche|[else]Vor %1% Wochen', {'%1%':int_val}, int_val);
	}	else if (diff < 31536000000) {
		int_val = Math.floor(diff / 2592000000);
		return i18n.format_number_choice('[1]Vor 1 Monat|[else]Vor %1% Monaten', {'%1%':int_val}, int_val);
	}	else{
		int_val = Math.floor(diff / 31536000000);
		return i18n.format_number_choice('[1]Vor 1 Jahr|[else]Vor %1% Jahren', {'%1%':int_val}, int_val);
	}

}

function dwTimestampHandle(el, now) {
	var old_str = el.innerHTML;
	timestamp_obj = dwTimestamp2Object(old_str);
	if (timestamp_obj != null) {
	    if(Object.isUndefined(now)) {
            var now = new Date();
            // Server time is CE(S)T, we don't have to bother with different summer times as we serve EEA countries only for now
            // Offset towards CE(S)T
            var offsets = {'en_GB' : 60}, culture = i18n.detectDocumentCulture();
            if(!Object.isUndefined(offsets[culture])) {
                now.setTime(now.getTime() + (now.getTimezoneOffset() + offsets[culture]) * 60000);
            }
        }
		time_diff = now - timestamp_obj;
		el.innerHTML = dwInterval(Math.max(0, 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]);
	}
}


/****** 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
            ['tt_arrow_left','tt_arrow_bottom','tt_arrow_right','tt_arrow_bottom_right'].each(function(item, index) {
                if($(item)) $(item).hide();
            });

			if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-left')) {
				$("tt_arrow_left").setStyle({'display':'block'});
				arrowpos = "left";
			} else if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-right')) {
				$("tt_arrow_right").setStyle({'display':'block'});
				arrowpos = "right";
			} else if (YAHOO.util.Dom.hasClass(tt_content, 'arrow-bottom-right')) {
				$("tt_arrow_bottom_right").setStyle({'display':'block'});
				arrowpos = "bottom-right";
			} else if($('tt_arrow_bottom')) {
				$("tt_arrow_bottom").setStyle({'display':'block'});
				arrowpos = "bottom";
			}

			// alert(tt_destination.innerHTML);
          if(tt) {
            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_box() {

    if(!$('tt_box')) {
        Element.insert($$('body').last(), {'bottom':
                '<div id="tt_box" style="display: none;" onmouseover="ttKeepOpen();" onmouseout="ttCheckShut();" >'
                + '<div style="position: absolute; bottom: 0px;">'
                + '<div class="content-box box-tooltip">'
                + '<div class="box-content"> </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 id="tt_arrow_left" style="display: none;"> </div>'
                + '<div id="tt_arrow_right" style="display: none;"> </div>'
                + '<div id="tt_arrow_bottom_right" style="display: none;"><img src="/images/bhc/blind.gif"/></div>'
                + '<div id="tt_arrow_bottom" style="display: none;"><img src="/images/bhc/blind.gif"/></div>'
                + '</div>'
                + '</div>'
                + '</div>'

        });
    }
    return $('tt_box');

}

function tt_listener() {

  tt = tt_box();
  
  tt_keep_open = false;
  tt_is_open = false;
  tt_caller = false;

  $$('.tooltip-anchor').each(function(el, index) {
      el.identify();
      el.observe('mouseover', ttShow);
      el.observe('mouseout', ttCheckShut);
      // el.observe('click', ttCheckShut); // DEBUG
  });

}


/***** Rich Text Editor *****/
rteCustomHandleCreateLinkClick = function() {

    if (this.get('limitCommands')) {
        if (!this.toolbar.getButtonByValue('createlink')) {
            YAHOO.log('Toolbar Button for (createlink) was not found, skipping exec.', 'info', 'SimpleEditor');
            return false;
        }
    }

    this.toolbar.set('disabled', true); //Disable the toolbar when the prompt is showing

    var _handleAEC = function() {
        var el = this.currentElement[0],
            url = 'http://';

        if (el) {
            if (el.getAttribute('href', 2) !== null) {
                url = el.getAttribute('href', 2);
            }
        }
        var str = prompt(this.STR_LINK_URL + ': ', url);
        if ((str !== '') && (str !== null)) {
            var urlValue = str;
            if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
                if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
                    //Found an @ sign, prefix with mailto:
                    urlValue = 'mailto:' + urlValue;
                } else {
                    /* :// not found adding */
                    if (urlValue.substring(0, 1) != '#') {
                        //urlValue = 'http:/'+'/' + urlValue;
                    }
                }
            }
            el.setAttribute('href', urlValue);
        } else if (str !== null) {
            var _span = this._getDoc().createElement('span');
            _span.innerHTML = el.innerHTML;
            Dom.addClass(_span, 'yui-non');
            el.parentNode.replaceChild(_span, el);
        }
        this.closeWindow();
        this.toolbar.set('disabled', false);
        this.unsubscribe('afterExecCommand', _handleAEC, this, true);
    };
    this.on('afterExecCommand', _handleAEC, this);

};


// Controls "@" autocompleted links for RTE (Facebook/Quora style)
var rte_ac = {};

rte_ac.replContent = false;
rte_ac.dwEditor = null;
rte_ac.iDoc = null;

// handles show/hide of popup, triggered by click on button and/or keyup events in RTE
rte_ac.linkTrigger = function(type, editor) {
  if (rte_ac.dwEditor == null) rte_ac.dwEditor = editor;
  if (rte_ac.iDoc == null) rte_ac.iDoc = $('content_editor').contentWindow.document;

  var valid = false;
  var cont = editor.cleanHTML();
  var popup = $('autocompletelink_box');
  var acAnchor = rte_ac.iDoc.getElementById('ac-anchor');

  // Determine wether to show popup or hide it, valid means either
  // keyup from an @ char, or a click on the toolbar button
  if (type == 'keyup') {
    // detect last char
    var cleanedCont = cont.strip().stripTags().replace(/\n/g,' ').replace(/\s+/g,' ');
    var lastchar = cleanedCont.substr(cleanedCont.length - 1, 1);
    if (acAnchor == null && lastchar == '@') {
      valid = true;
      // TODO: enhance @ detection and removal upon triggering popup (nested @ etc.)
      editor.execCommand('inserthtml', '<span id="ac-anchor">...</span>');
    }
  }
  else {
    if (acAnchor == null) {
      editor.execCommand('inserthtml', '@<span id="ac-anchor">...</span>');
    }
    // always continue on click
    valid = true;
  }

  if (acAnchor == null)
    acAnchor = rte_ac.iDoc.getElementById('ac-anchor');

  if (valid) {
    // find position for popup
    var aPos = Element.cumulativeOffset(acAnchor);
    var cPos = $('content_editor').cumulativeOffset();
    var pos = {left: aPos.left + cPos.left, top: aPos.top + cPos.top};
    var show = true;

    if (popup.style.display == 'none') {
      // Reposition and show hidden box
      popup.style.left = pos.left + 'px';
      popup.style.top = pos.top + 'px';
    }
    else if (type == 'click') {
      // hide box on click if visible
      show = false;
    }

    // control showing/hiding of popup
    if (show) {
      rte_ac.showBox();
    } else {
      rte_ac.hideBox();
    }
  }
};

rte_ac.createLink = function() {
  var ret = '';
  if (rte_ac.replContent) {
    ret = '<a href="' + $('autocompletelink_url').getValue() + '">' + $('autocompletelink_input').getValue() + '</a> ';
  }
  return ret;
};

rte_ac.submit = function(event) {
  if(event.type == 'click' || event.keyCode == 13 && $('autocompletelink_url').getValue() != '') {
    rte_ac.replContent = true;
    var done = rte_ac.hideBox();
    if (!done) {
      $('autocompletelink_input').setValue('');
      $('autocompletelink_url').setValue('');
    }
  }
  return false;
};

rte_ac.showBox = function() {
  var popup = $('autocompletelink_box');
  popup.show();
  var showpopup = new YAHOO.util.Anim(
    popup,
    {opacity: {from: 0, to: 1}},
    0.4,
    YAHOO.util.Easing.easeOut
  );

  // register for animation.onComplete, to set focus on input
  showpopup.onComplete.subscribe(function() {
    if (document.activeElement) {
      document.activeElement.blur();
    }
    $('autocompletelink_input').focus();
  });
  showpopup.animate();
};

rte_ac.hideBox = function() {
  var popup = $('autocompletelink_box');
  var hidepopup = new YAHOO.util.Anim(
    popup,
    {opacity: {from: 1, to: 0}},
    0.2,
    YAHOO.util.Easing.easeOut
  );
  hidepopup.onComplete.subscribe(function() {popup.hide();});
  hidepopup.animate();

  // look for anchor and remove/replace if neccessary
  var acAnchor = rte_ac.iDoc.getElementById('ac-anchor');
  var str = rte_ac.createLink();
  if (Prototype.Browser.IE) {
    Element.replace(acAnchor, str);
    rte_ac.dwEditor.execCommand('inserthtml', '');
  }
  else {
    Element.replace(acAnchor, '');
    rte_ac.dwEditor.execCommand('inserthtml', str);
  }

  // clean up doc if no change and sole @ remains
  if (str == '') {
    var cont = rte_ac.dwEditor.cleanHTML();
    var cleanedCont = cont.strip().stripTags().replace(/\n/g,' ').replace(/\s+/g,' ');
    var lastchar = cleanedCont.substr(cleanedCont.length - 1, 1);
    if (lastchar == '@') {
      rte_ac.dwEditor.clearEditorDoc();
      rte_ac.dwEditor.execCommand('inserthtml', cont.substring(0, cont.length-1));
    }
  }

  // force focus on editor
  if (document.activeElement) {
    document.activeElement.blur();
  }

  rte_ac.setCursorToEnd();
  rte_ac.dwEditor.focus();

  return rte_ac.replContent = false;
};

// sets caret to end of iframe contenteditable
rte_ac.setCursorToEnd = function(el) {
  var el = el ? el : rte_ac.iDoc.getElementsByTagName('body')[0];

  if (rte_ac.iDoc.createRange) { //Firefox, Chrome, Opera, Safari, IE 9+
    var rng = rte_ac.iDoc.createRange();
    rng.selectNodeContents(el);
    rng.collapse(false);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(rng);
  } else if (rte_ac.iDoc.selection) { //IE 8 and lower
    var rng = rte_ac.iDoc.body.createTextRange();
    rng.moveToElementText(el);
    rng.collapse(false);
    rng.select();
  }
}

rte_ac.loadScript = function(url, callback) {
  var s = document.createElement("script");
  s.type = "text/javascript";
  if (s.readyState) {  //IE
    s.onreadystatechange = function() {
      if (s.readyState == "loaded" || s.readyState == "complete") {
        s.onreadystatechange = null;
        callback();
      }
    };
  } else {  //Others
    s.onload = function() {
      callback();
    };
  }
  s.src = url;
  document.getElementsByTagName("head")[0].appendChild(s);
};

// Initialize RichTextEditor Autosuggest Feature
rte_ac.init = function() {
  // Create new popup box
  Element.insert($$('body').last(), {'bottom':
    '<div id="autocompletelink_box" class="auto-suggest auto-suggest-custom-bhcQnaWysiwygAutoSuggest'
    + ' cn__bhcQnaQuestion__cn cn__bhcQnaCategory__cn cn__User__cn cn__Project__cn cn__WikiPage__cn"'
    + ' style="display: none; left: 0; top: 0;" >'
    + '<form autocomplete="off" action="" onsubmit="rte_ac.submit();">'
      + '<span class="close-ac" onclick="rte_ac.hideBox();">X</span>'
      + '<input type="text" class="autocomplete type_project w__308__w" id="autocompletelink_input" value="" placeholder="..." />'
      + '<input type="hidden" id="autocompletelink_url" value="" />'
      + '<div class="result-list-container" style="display:none"></div>'
    + '</form>'
    + '</div>'
  });

  $('autocompletelink_box').setStyle({opacity: 0});
  $('autocompletelink_input').observe('keyup', rte_ac.submit);

  bhcInitAutoSuggest($('autocompletelink_box'));
};

rte_ac.addVideoToEditor = function(video_url) {
  var editor = rte_ac.dwEditor;
  if (video_url) {
    if (/youtube|sevenload|vimeo/.test(video_url)) {
      var video_text = '[VIDEO="' + video_url + '"][/VIDEO]';
      editor.execCommand('inserthtml', video_text);
      editor.focus();
    }
    else if(/1-2-do\.com\/content\//.test(video_url) || video_url.indexOf(location.hostname) !== -1) {
      var video_text = '[VIDEO12DO="' + video_url + '"][/VIDEO12DO]';
      editor.execCommand('inserthtml', video_text);
      editor.focus();
    }
  }
}


function RTERender(el) {

	var options = {
		'w': 400,
		'h' : 200,
		'timeout': 3
	};

	options = Object.extend(options, dwToolbox.classOptionsToObject(el));

  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: options.h + 'px',
    width: options.w + 'px',
    animate: true,
    handleSubmit: true,
    // overwrite default css just to prevent IE Scrollbar Bugs on generated iFrames. Editor iFrames should have a paddding on containing element.
    css: 'html { height: 95%; } body { padding: 0px; background-color: #fff; font: 13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small; } a, a:visited, a:hover { color: blue !important; text-decoration: underline !important; cursor: text !important; } .warning-localfile { border-bottom: 1px dashed red !important; } .yui-busy { cursor: wait !important; } img.selected { border: 2px dotted #808080; } img { cursor: pointer !important; border: none; } body.ptags.webkit div.yui-wk-p { margin: 11px 0; } body.ptags.webkit div.yui-wk-div { margin: 0; }',
    toolbar: {
      buttons: [
        {type: 'push', label: i18n.__('Fett'), value: 'bold'},
        {type: 'push', label: i18n.__('Kursiv'), value: 'italic'},
        {type: 'push', label: i18n.__('Unterstrichen'), value: 'underline'},
        {type: 'separator'},
        {type: 'push', label: i18n.__('Ungeordnete Liste'), value: 'insertunorderedlist'},
        {type: 'push', label: i18n.__('Geordnete Liste'), value: 'insertorderedlist'}
      ]
	  }
	});

  // onLoad
  dwEditor.on('toolbarLoaded', function() {
    var createlink_button = {
      type: 'push',
      label: i18n.__('HTML Link STRG + UMSCHALT + L'),
      value: 'createlink',
      disabled: false
    };
    if(dolinkbutton) {
      //
      dwEditor.STR_LINK_URL = i18n.__('Bitte geben Sie die URL ein');
      dwEditor._handleCreateLinkClick = rteCustomHandleCreateLinkClick;
      dwEditor.toolbar.addButton(createlink_button);
    }

    if(el.hasClassName('toolbar-enable-autosuggest')) {
      var autocomplete_button = {
        type: 'push',
        label: i18n.__('Links autovervollständigen'),
        value: 'autocompletelink',
        disabled: false
      };
      dwEditor.toolbar.addButton(autocomplete_button);
      dwEditor.toolbar.on('autocompletelinkClick', function() {
        rte_ac.linkTrigger('click', this);
      }, dwEditor, true);

      // Init AC container
      rte_ac.init();

      // Editor key up
      dwEditor.on('editorKeyUp', function() {
        rte_ac.linkTrigger('keyup', this);
      }, dwEditor, true);

    }

    if(el.hasClassName('toolbar-enable-video')) {
      var video_button = {
        type: 'push',
        label: i18n.__('Video hinzufügen'),
        value: 'addvideo',
        disabled: false
      };
      dwEditor.toolbar.addButton(video_button);
      dwEditor.toolbar.on('addvideoClick', function() {
        dwEditor.focus();
        dwLayerShow(640, 200, 'iframe', '/dwImage/videoForm?variante=fua', 'modal:true, ');
      }, dwEditor, true);
    }
  });

  // render
	dwEditor.render();

  // ref to editor
  rte_ac.dwEditor = dwEditor;

  // load cleanpaste script
  rte_ac.loadScript('/scripts/common/CleanPaste.js', function(){
    var cleanPaste = new CleanPaste(dwEditor);
  });

	rte_container[rte_container.length] = dwEditor;
	if(el.hasClassName('rt-editor-notifychange')) {

		var hInterval, strCurrentContent, bInitialized = false;
		setInterval((function() {
			var strContent = this.getEditorHTML();
			if(strContent != strCurrentContent) {
				strCurrentContent = strContent;
				if(bInitialized)
					el.fire('rtEditor:change', {'value': strCurrentContent, 'editor' : this, 'element' : el});
				else
					bInitialized = true;
			}
		}).bind(dwEditor), parseFloat(options.timeout) * 1000);
	}

	var parentForm = el.up('form');
	if(parentForm) {
		Element.insert(parentForm, {'top': new Element('input', {'type':'hidden','name':'is_wysiwyg[' + el.name + ']','value':1})});
	}

}

function rtes_onSubmit(){
  for (i = 0; i < rte_container.length; i++) {
    rte_container[i].saveHTML();
  }
}

function RTEListener() {
  if($$('body').first().hasClassName('mobile')) return false;
	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 bookmark(url, title){
  if (typeof title == 'undefined') var title = '';

  var docTitle = $$('title').first().innerHTML.split('|');
  docTitle = (docTitle.length > 0) ? docTitle[0].strip() + ' | ' : '';

  docTitle += location.hostname.replace(/^www\./,'');
  title = title || docTitle;

  if (window.sidebar)
    {
    // firefox
    window.sidebar.addPanel(title,url,'');
    }
  else if(window.opera && window.print)
    {
    // opera
    var elem = document.createElement('a');
    elem.setAttribute('href',url);
    elem.setAttribute('title',title);
    elem.setAttribute('rel','sidebar');
    elem.click();
    }
  else if(document.all)
    {
    // ie
    window.external.AddFavorite(url,title);
    }
}


function getXhrUrl(url) {
    
    // prepend XHR url with symfony app-file if hosting document has been called with this app-file
    var sfDevPattern = new RegExp('^(\/?[a-z0-9_\-]+_dev\.php\/)','i');
    if(location.pathname.match(sfDevPattern) && !url.match(sfDevPattern)) {
        url = (RegExp.$1 + url).replace(/\/{2,}/,'/');
    }      
    return url;
}

function addBhcBookmark(cn, obj_id, url, el) {
  
  var span = Element.select(el, 'span').first(); 
  if(span.hasClassName('loading') || span.hasClassName('success')) return false;
  
  cn = cn || '';
  obj_id = isNaN(parseInt(obj_id)) ? -1 : parseInt(obj_id);
  
  var r = new Ajax.Request(getXhrUrl('/user/ajaxAddBhcBookmark'), {
        'method':'post',  
        'parameters': {
          'cn' : cn,
          'obj_id' : obj_id,
          'no_cache': Math.random() * 1000000 
        },
       'onCreate' : function() {
           span.removeClassName('error').removeClassName('success').addClassName('loading');
        },
        'onFailure': function() {
            _alert(i18n.__('Es ist ein Fehler aufgetreten, bitte versuchs später nochmal.'));
            span.addClassName('error');
        },
        'onComplete': function() {
            span.removeClassName('loading');
            // toggleBookmark(Element.up(el, '.bookmark-layer',0) , 'open');
        },
        'onSuccess': function(resp) {
          if(typeof(resp.responseJSON) === 'object') {
            resp = resp.responseJSON;
            if(resp.status) {
                span.addClassName('success');
				_alert(i18n.__('Die Seite wurde erfolgreich zu den Lesezeichen hinzugefügt.'));
            }
            else {
                span.addClassName('error');
                if(resp.message) _alert(resp.message);
                else _alert(i18n.__('Es ist ein Fehler aufgetreten, bitte versuchs später nochmal.'));
            }
          }
        }      
      });
}

function removeBhcBookmark(id, el) {
   
   
   if(Element.hasClassName(el,'action-pending')) return false;
   
   var r = new Ajax.Request(getXhrUrl('/user/ajaxRemoveBhcBookmark'), {
        'method':'post',  
        'parameters': {
         'id': id || '-1',
         'no_cache': Math.random() * 1000000
        },
        'onCreate' : function() {
            Element.addClassName(el,'action-pending');       
        },
        'onFailure' : function() {
            Element.addClassName(el,'remove-error');
            _alert(i18n.__('Es ist ein Fehler aufgetreten, bitte versuchs später nochmal.'));
        },
        'onComplete' : function() {
            Element.removeClassName(el,'action-pending');
        },
        'onSuccess': function(resp) {
          
          if(typeof(resp.responseJSON) === 'object') {
            resp = resp.responseJSON;
            if(resp.status) {                
                
                // Fade out list element
                var listItem = Element.up(el,'li');
                var animation = new YAHOO.util.Anim(
                    listItem , 
                    {opacity:  {to:0},
                      height:   {to:0}
                    }, 
                    0.5, 
                    YAHOO.util.Easing.easeOut
                );
                
                animation.onStart.subscribe(function() {
                  listItem.setStyle('overflow','hidden');
                });
                animation.onComplete.subscribe(function() {

                    var parentList = Element.up(el, 'ul.bookmarks');                   
                    listItem.remove();
                    
                    // Cleanup alternating line colors
                    parentList.select('li').each(function(item, index) {
                            item.className = index % 2 ? 'wechsel-1' : 'wechsel-0';
                    });
                     
                     // Update number of bookmarks in tab
                     var tab = $$('div.subnavi-level-2 a.sel').first();
                     for(var i=0;i<tab.childNodes.length;i++) {
                        if(tab.childNodes[i].nodeType == 3) { // 3 == Textnode
                            if(tab.childNodes[i].data.match(/\((\d+)\)$/)) {
                              tab.childNodes[i].data = tab.childNodes[i].data.replace(/\(\d+\)$/,'(' + (parseInt(RegExp.$1)-1) + ')');
                             } 
                        } 
                     }
                     
                });
                animation.animate();
	            _alert(i18n.__('Das Lesezeichen wurde erfolgreich gelöscht.'));
            }
            else {
                Element.addClassName(el, 'remove-error'); 
                
                if(resp.message) _alert(resp.message);
                else _alert(i18n.__('Es ist ein Fehler aufgetreten, bitte versuchs später nochmal.'));
            }
          }
        }      
      });
    
  
}


function preloader()
{
	if(i18n.hasLocalizedImages()) {
		var names = ["home","projekte","forum","wissen","mitglieder","aktionen","gruppen","qna"];
		names.each(function(name, index) {
			var img = new Image();
			img.src = '/images/bhc/content/i18n/' + i18n.detectDocumentCulture() + '/nav_act_' + name + '.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 = $$('.scroll-list'),
		is_scrolling = false,
	    up_link, down_link, teaserHeight, scrollItems, max_size, max_count, el_options, buttonsHeight;
	
	scroll_lists.each(function(item, index) {
		
		teaserHeight = 0;
		max_size = 360;
		max_count = 11;
		
		scrollItems = item.select('.scroll-list-item');
		up_link = item.down('.scroll-up');
		down_link = item.down('.scroll-down');
		content = item.down('.scroll-list-content');
		
		if ($('project_contest_select'))
	    {
	        max_size = 174;
	        max_count = 4;
	    }

		el_options = dwToolbox.classOptionsToObject(item);
		if(el_options['l']) max_count = parseInt(el_options['l']);
		
		// Buttons aktivieren
		scrollListUpdate(item.identify(), item.down('.scroller'));
		
		scrollItems.each(function(sItem, sIndex) {
			if(sIndex < max_count) {
				teaserHeight += sItem.getHeight();
			}
		});
		
		if (scrollItems.length < max_count)
		{
			up_link.hide();
			down_link.hide();

			content.setStyle({'height': teaserHeight+'px'});
		}
		else
		{

			buttonsHeight = 0;
			[up_link, down_link].each(function(button) {
				
				button.show();
				var children = button.childElements();
				
				if(children.length > 0) {
					children.each(function(buttonChild) {
						buttonsHeight += buttonChild.getHeight();
					});
				}
				else buttonsHeight += button.getHeight();
				
			});

            if(!$('project_contest_select')) max_size = max_size + buttonsHeight;
			content.setStyle({'height': max_size + 'px'});
		}
		
		
	});
	    
    
    
}

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, size) {
	size = (typeof(size) != "undefined") ? size : 350;
	scrollIt(link_el, size);
}

function scrollDown(link_el, size) {
	size = (typeof(size) != "undefined") ? size : 350;
	scrollIt(link_el, -size);
}

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
    // ...scroller_height = 350 ...once this was fix 2 350
    var scroll_list_content = YAHOO.util.Selector.query(".scroll-list-content", list_id, true);
    var scroller_height = parseInt(scroll_list_content.offsetHeight);
    var scroller_element = YAHOO.util.Selector.query(".scroll-list-item ", list_id, true);

	/* ms (2010-05-04): Diese paar Codezeilen haben beim Scroller einige Probleme mit dem unteren Button verursacht. Auskommentiert, da unklar warum eingebaut?!
    var sub = 10; // 2 get 350 in teaser-case

    if(scroller_element)
    {
        sub = parseInt(scroller_element.offsetHeight);
    }

    scroller_height = scroller_height - sub;
	*/

    if ((scroller_height - 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();
				}
				if ($(id + '_flash_image')){
					$(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['click/print'] = 'click.nopi.drucken';
  codes['click/recommend'] = 'click.nopi.empfehlen';
  codes['click/alert'] = 'click.nopi.melden';
  codes['click/bookmark-favoriten'] = 'click.nopi.bookmark-favoriten';
  codes['click/bookmark-twitter'] = 'click.nopi.bookmark-twitter';
  codes['click/bookmark-facebook'] = 'click.nopi.bookmark-facebook';
  codes['click/bookmark-myspace'] = 'click.nopi.bookmark-myspace';
  codes['click/bookmark-google'] = 'click.nopi.bookmark-google';
  codes['click/bookmark-delicious'] = 'click.nopi.bookmark-delicious';

  codes['click/teaser-top-chat'] = 'click.nopi.teaser.top.chat';
  codes['click/teaser-top-produkttest'] = 'click.nopi.teaser.top.produkttest';
  codes['click/teaser-top-wettbewerb'] = 'click.nopi.teaser.top.wettbewerb';
  codes['click/teaser-home-chat'] = 'click.nopi.teaser.home.chat';
  codes['click/teaser-home-produkttest'] = 'click.nopi.teaser.home.produkttest';
  codes['click/teaser-home-wettbewerb'] = 'click.nopi.teaser.home.wettbewerb';
  codes['click/teaser-inhalt-rat'] = 'click.nopi.teaser.inhalt.rat';
  //anzeigetracking
  codes['show/teaser-top-chat'] = 'darstellung.nopi.teaser.top.chat';
  codes['show/teaser-top-produkttest'] = 'darstellung.nopi.teaser.top.produkttest';
  codes['show/teaser-top-wettbewerb'] = 'darstellung.nopi.teaser.top.wettbewerb';
  codes['show/teaser-home-chat'] = 'darstellung.nopi.teaser.home.chat';
  codes['show/teaser-home-produkttest'] = 'darstellung.nopi.teaser.home.produkttest';
  codes['show/teaser-home-wettbewerb'] = 'darstellung.nopi.teaser.home.wettbewerb';
  codes['show/teaser-bosch-i1'] = 'darstellung.nopi.teaser.bosch.i1';
  codes['show/teaser-inhalt-rat'] = 'darstellung.nopi.teaser.inhalt.rat';

	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));
        }
    }
}

/**
 * Toggle fuer den Teaser Onlineuser
 *
 * @param string active
 * @param string inactive
 */
function _toogleOnlineUsers(active, inactive)
{
    $('teaser_'+inactive).removeClassName('act');
    $(inactive).style.display = 'none';

    $('teaser_'+active).addClassName('act');
    $(active).style.display = '';

    scrollListPrepare();

    $('teaser_'+active+'_span').style.display = 'block';
    $('teaser_'+inactive+'_span').style.display = '';
}

/**
 *  Aktualisiert einzelne Felder in Toolbar nach async. Feststellung des Facebook-Status (unknown, notConnected, connected)
 *  @param string status
 *
 */
function updateToolbar(status) {
				
			switch(status) {
				
				case 'notConnected':
					showOnFbNotConnected.each(function(item) {item.show(); /*item.removeClassName('show_on_fbnotconnected');*/});
					hideOnFbNotConnected.each(function(item) {item.hide(); /*item.removeClassName('hide_on_fbnotconnected');*/});
					
					hideOnFbNotConnected = [];
					showOnFbNotConnected = [];
				break;
				
			}
			
}

var showOnFbNotConnected = [], hideOnFbNotConnected = [];

function initFacebook() {
  
      if(!$('fb-root')) Element.insert($$('body').last(), {'bottom': new Element('div', {'id':'fb-root'})});

      var r = new Ajax.Request('/user/ajaxFbGetAppdata', {
        'method':'get',
        'onSuccess': function(resp) {
          if(!Object.isUndefined(resp.responseJSON)) {
             var intx = setInterval((function() {
                 if(!Object.isUndefined(window.FB)) {
                    clearInterval(intx);
                    facebookStartup(resp.responseJSON);
                 }
             }).bind(window), 50);
          }
        }
      });

}

function facebookStartup(fbAppData) {
  
  if(window.FB){

        _log('-> facebookStartup');
      	 FB.init({appId: fbAppData.appid, status: true, cookie: fbAppData.cookie, xfbml: false});
	    	 
	    	 // HACK: avoid multiple reloads with frontend cookie
		      
		     FB.getLoginStatus(function(response) {
		      
		      var storage = new Cookie({'name':'bhc_fb_autologin','expires':3*60*1000});
		      var bInProgress = Boolean(storage.getData('inprogress'));
		      
		  		if($('topnav') && $('topnav').hasClassName('topnav_nonauth') && !$('topnav').hasClassName('topnav_fb_no_reload') && response.status === 'connected' && !bInProgress) {

		  		  alert('Do_RELOAD');return;
   				  self.location.reload();
   				  storage.setData('inprogress',true);
	 				  return;
	    		}
	    		if($('topnav') && !$('topnav').hasClassName('topnav_nonauth')) {
	    		    storage.erase();
	    		}
		  		
		  		updateToolbar(response.status);
		  		
		     });

		     showOnFbNotConnected = $('topnav').descendants().select(function(item) {return item.hasClassName('show_on_fbnotconnected');});
		     hideOnFbNotConnected = $('topnav').descendants().select(function(item) {return item.hasClassName('hide_on_fbnotconnected')});
		  
		  
		     // DEBUG ONLY
		     /*if(showOnFbNotConnected.length > 0 || hideOnFbNotConnected.length > 0) {
		  	   if(parent.location.host.indexOf('1-2-do.com') !== -1) return;
			     var r = new Ajax.Request('/manual/fb/debug_retrieveFbStatus.php',{
			  									'method':'get',
			  									'onSuccess': function(response){ updateToolbar(response.responseText); },
			  									'onFailure': function() { updateToolbar('unknown') }
			     });
			   }*/
		     // DEBUG ONLY
  } 
  
}


/** GOOGLE MAPS FUNCTION **/



function googlemapsInit() {
  
  var maps = $$('div.googlemap');
  
  if(maps.length > 0) {
       
      Element.insert($$('head meta').last(), {'after': new Element('meta', {'name':'viewport','content':'initial-scale=1.0, user-scalable=no'})});
      
      if(typeof(google) === 'undefined' || typeof(google.maps) === 'undefined') {
           
          // Slighty adapted google maps startup code ... original code messed up DOM
          window.google = window.google || {};
          window.google.maps = window.google.maps || {};

          getScript("/bhc/loadGoogleMaps?culture=" + i18n.detectDocumentCulture());

      }
      else {
          googlemapsHandle(maps); 
      }
  }
}

var _gmInfoboxes = {};

function googlemapsHandle(elements) {
  
    var data = {}, el_data, gmPt, opt, map, el_center, el_dimension, marker;
    var defaultOptions = {
        'zoomMax':false,
        'zoomDefault':6,
        'zoomDetail':13,
        'mapWidth':640,
        'mapHeight':480,
        'markerWidth': 30,
        'markerHeight': 30,
        'richMarkerClass' : 'googlemap-richmarker',
        'clusterer': {
            'maxZoom': 12,
            'gridSize': 48,
            'styles': [{'url':'/images/bhc/user/group_icon.gif','width':30,'height':30,'textColor':'#000'}],
            'radius' : {
              'enabled': true,
              'zoomLevel':12,
              'opts':{
                    clickable: false,
                    fillColor: '#00664A',
                    fillOpacity: 0.3,
                    strokeColor: '#00664A',
                    strokeOpacity: 1,
                    strokeWeight: 2,
                    radius: 750 // meters 
                    }
            }
        }
    };

    elements.each(function(el, index) {
          data = undefined;
          try {
              el_data = Element.select(el, 'div.googlemap-data').first();
              if(el_data) {
                    data = decodeURIComponent(el_data.innerHTML).evalJSON();   
                    Element.remove(el_data);
              }

          }
          catch(e) { 
              data = {}; 
          }
          
          var settings = undefined;
          try {
              var el_data = Element.select(el, 'div.googlemap-settings').first();
              if(el_data) {
                  settings = decodeURIComponent(el_data.innerHTML).evalJSON();   
                  Element.remove(el_data);
              }
          }
          catch(e) { 
        	  settings = undefined; 
          }
          
          if(settings) {
        	  defaultOptions.clusterer['external_settings'] = settings;
          }

          // Add map
           
          el_dimension = size_from_classname(el);
          el_dimension[0] = isNaN(parseFloat(el_dimension[0])) ? defaultOptions.mapWidth : el_dimension[0];
          el_dimension[1] = isNaN(parseFloat(el_dimension[1])) ? defaultOptions.mapHeight : el_dimension[1];
          
          el.setStyle({
                      'width':el_dimension[0] + 'px',
                      'height':el_dimension[1] + 'px'
                    });
          
          
          el_center = {latitude: 0, longitude: 0};
          if(!Object.isUndefined(data)) {
            if(!Object.isUndefined(data.mapCenter)) el_center = data.mapCenter;
            else if(!Object.isUndefined(data.mapItems) && data.mapItems.length > 0) el_center = data.mapItems.first(); 
              
            defaultOptions.zoomDefault = data.zoom || defaultOptions.zoomDefault;
          }                     
        
          opt = {
            zoom: data['zoom'] || defaultOptions.zoomDefault,
            center: new google.maps.LatLng(el_center.latitude, el_center.longitude),
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            navigationControlOptions:  {style: google.maps.NavigationControlStyle.SMALL},
            scaleControl: false,
            streetViewControl: false
          };

          map = new google.maps.Map(el, opt); 
          
          google.maps.event.addListener(map, 'zoom_changed', function() {
            if (defaultOptions.zoomMax !== false && map.getZoom() > defaultOptions.zoomMax) {
              map.setZoom(defaultOptions.zoomMax);
            }
            googlemapsCloseInfoboxes();
          });
          
          // Add markers
          
          if(!Object.isUndefined(data['mapItems'])) {
              _log('googlemapsHandle -> add ', data.mapItems.length + ' markers');
              var markers = [], marker;
              data.mapItems.each(function(mapItem, mapItemIndex) {   

                  _log('googlemapsHandle -> ', mapItem);
                    marker = new RichMarker({
                      position: new google.maps.LatLng(mapItem.latitude, mapItem.longitude),
                      shape: {type:'rectangle', coord: [0,0,defaultOptions.markerWidth + 2 * defaultOptions.borderStroke,defaultOptions.markerHeight + 2 * defaultOptions.borderStroke]},
                      content: '<div class="' + defaultOptions.richMarkerClass + '" style="background:url(' + mapItem.profil_pic + ') no-repeat scroll center center transparent;"></div>',
                      anchor: RichMarkerPosition.MIDDLE
                    });
                    
                    google.maps.event.addListener(marker,'click', function(evt) {
                          this.getMap().panTo(this.getPosition());
                          if(this.getMap().getZoom() < defaultOptions.zoomDetail) {
                              this.getMap().setZoom(defaultOptions.zoomDetail);
                            }
                    }, true);
                    
                    if(mapItem.tt_teaser) {
                      
                        google.maps.event.addListener(marker, 'mouseover', function(event) {
                              
                              //_log(marker.getPosition().toString() + ' mouseover');
                              if(Object.isUndefined(googlemapsGetInfobox(this.getPosition()))) {

                                  googlemapsCloseInfoboxes();
                                  var info = new InfoBox({'latlng': this.getPosition(),
                                                          'map': map,
                                                          'content': mapItem.tt_teaser,
                                                          'offsetHorizontal':-325
                                                       });   
                                                       
                                  _gmInfoboxes[this.getPosition().toString()] = info;
                              }
                              
                        });
                        
                        google.maps.event.addListener(marker,'mouseout', function(event) {
                             
                             //_log(marker.getPosition().toString() + ' mouseout');
                             var timeout = setTimeout( function() {
                                clearTimeout(timeout);
                                //_log(marker.getPosition().toString() + ' delayed close');
                                googlemapsCloseInfobox(this.getPosition());
                            }, 50);
                             
                        });
                    }
                    
                    markers.push(marker);
                    
                        
              }); 

              if(markers.length > 1) {
                map.fitBounds(MarkerClusterer.prototype.getMostDistantMarkersBounds(markers, opt.center));
              }
              var clusterer = new MarkerClusterer(map, markers, defaultOptions.clusterer);

          }
          else _log('googlemapsHandle -> no items');        
          
    });
  
  
}

function googlemapsCloseInfoboxes() {
  
  for(var i in _gmInfoboxes) { 
    try {
      if(!Object.isUndefined(_gmInfoboxes[i]) && _gmInfoboxes[i]['_div']) _gmInfoboxes[i].close(true); 
    } 
    catch(e) {
      //console.error(e);  
    }
  } 
  
  _gmInfoboxes = {};
  
}

function googlemapsGetInfobox(pos) {
  return _gmInfoboxes[pos.toString()];
}

function googlemapsCloseInfobox(pos, force) {
  var key = pos.toString();
  try {
    
    if(!_gmInfoboxes[key]['_div']) {
        //_log(key + ' already closed ... cleaning up');
        delete _gmInfoboxes[key];
        _gmInfoboxes[key] = undefined;
    }
    else {
        _gmInfoboxes[key].close(force === true);
        if(!_gmInfoboxes[key]['_div']) {
          _gmInfoboxes[key] = undefined;
          delete _gmInfoboxes[key]; 
          //_log(key + ' Removed infobox from list');
        }
        else {
          //_log(key + ' Did not remove infobox from list, keep open = active'); 
        }
    }
  }
  catch(e) {}
}


function _googlemapsObjectLength(obj) {
  var cnt = 0;
  for(var i in obj) {
    _log(i);
    ++cnt; 
  } 
  return cnt;
}

function initDwImageGallery() {
    
    var galleries = $$('div.dwimage-gallery');

    var initGalleries = function() {  
        galleries.each(function(item, index) {
            
            item.observe('dwImageGallery:zoom', function(event) {
            });
            
            item.observe('dwImageGallery:change', function(event) {
              
              var el = Event.element(event);
              
              var options = {
                'obj_id' : event.memo.obj_id,
                'cn' : event.memo.cn  
              };
              
              if(el.hasClassName('has-comments')) {
                  var cOptions = {
                    'comment_list':true,
                    'comment_form':true,
                    'comment_list_options': {
                                    'pagenation':false,
                                    'view':10,
                                    'noajax':false,
                                    'display':'block',
                                    'rec':1
                                  },
                    'comment_form_options': {
                                  'pagenation':false,
                                    'view':10,
                                    'noajax':false,
                                    'display':'block',
                                    'rec':1
                    }                   
                  };
                  
                  options = Object.extend(options, cOptions);
                  
              }
              
              if(el.hasClassName('has-rating')) {
                var rOptions = {
                  'rating':true,
                  'rating_options': {
                    'showresult':true,
                    'rating_type':'big',
                    'login_redirect':location.href+'?imagepos='+event.memo._currentPos
                  }
                };
                
                options = Object.extend(options, rOptions);
                
              }
              
              if(Object.keys(options).length > 0) {
                  
                  new Ajax.Request(getXhrUrl('/bhc/galleryAjaxControls'), {
                    'method':'post',
                    'parameters': {'data': Object.toJSON(options)},
                    'onCreate': (function(transport) {
                      var params = transport.request.parameters;
                      params = params.data.evalJSON(true);
                      var el_parent_wrapper = this.up('.gallery-wrapper');
                      var el_comments = el_parent_wrapper.select('.comments').first();
                      el_parent_wrapper.select('.loading').first().show();
                      
                      if(params.comment_list || params.comment_form) {
                          
                    	  el_comments.hide();
                          var el_comments_list = el_comments.down('.comments-content-list');
                          var el_comments_form = el_comments.down('.comments-content-form');
                          
                          el_comments_list.innerHTML = '';
                          if(el_comments_form) {
                              el_comments_form.innerHTML = '';
                              el_comments_form.writeAttribute('id','div_commentform_' + options.obj_id);
                          }
                                                    
                          var el_comments_title = el_comments.select('.comments-obj-title').first();
                          if(event.memo._title.length == 0) {
                              el_comments_title.update($$('div.page-headline h1').first().innerHTML + ' &ndash; Bild Nr. ' + (event.memo._currentPos + 1));
                          }
                          else el_comments_title.update(event.memo._title);
                          el_comments.select('.comments-count').first().update('');
                          el_comments.select('.comments-count-single').first().hide(); 
                          el_comments.select('.comments-count-multi').first().hide();
                         
                      }
                      if(params.rating) {
                         el_parent_wrapper.select('.rating').first().hide().down('.rating-controls').innerHTML = '';
                      }

                      
                    }).bind(el),
                    'onSuccess': (function(transport) {
                        
                        var data = transport.responseText.evalJSON(false);
                        var el_parent_wrapper = this.up('.gallery-wrapper');
                        el_parent_wrapper.select('.loading').first().hide();
                        // Rating
                        if(data.rating) {
                           el_parent_wrapper.select('.rating').first().show().down('.rating-controls').innerHTML = data.rating;
                           tt_listener();
                           
                        }
                        
                        if(data.comment_list || data.comment_form) {
                          
                          var el_comments = el_parent_wrapper.select('.comments').first();
                          //var el_comment_content = el_comments.select('.comments-content').first();
                          //el_comment_content.removeClassName('loading');
                          
                          
                          var el_comments_form = el_comments.down('.comments-content-form');
                          
                          var bAddForm = data.comment_form && el_comments_form;
                          if(data.comment_list) el_comments.down('.comments-content-list').innerHTML = data.comment_list;
                          if(bAddForm) el_comments.down('.comments-content-form').innerHTML = data.comment_form;
                          //el_comment_content.innerHTML = s;
                          
                          if(bAddForm) {
                              var form = el_comments_form.select('form').last();
                              form.select('input[name="rec"]').first().writeAttribute('value','1');
                              form.select('input[name="view"]').first().writeAttribute('value','10');
                              form.select('input[name="display"]').first().writeAttribute('value','block');     
                          }
                          
                          if(data.comment_list) {
                              el_comments.select('.time2interval').each(function(el) {dwTimestampHandle(el);});
                              var cntComments = el_comments.select('.comment-entry').length;
                                                            
                              if(cntComments != 1) el_comments.select('.comments-count-multi').first().show();
                              else el_comments.select('.comments-count-single').first().show(); 
                                
                              // TODO: handle with correct function as this only works with unfolded/unpaged comments
                              el_comments.select('.comments-count').first().update(cntComments);
                          }
                          
                          el_comments.select('.maxsigns').each(function(el) {max_sings_with_a_input_listener(el);});
                          el_comments.show();
                       }
                       dwLayerListener();
                    }).bind(el)
                  });
                   
              }
            });
               
            item.observe('dwImageGallery:ready', function(event) {
              _log('dwImageGallery:ready');
              
              var el = Event.element(event);
              
              var el_parent_wrapper = el.up('.gallery-wrapper');
              
              var el_addons = false;
              if(el_parent_wrapper.select('.rating').first()) {
                el.addClassName('has-rating');
                el_addons = true;
              }
              
              var el_comments = el_parent_wrapper.select('.comments').first();
              
              if(el_comments) {
                el.addClassName('has-comments');
                
                var btnGotoCommentForm = el_comments.select('.goto-comment-form').first();
                if(btnGotoCommentForm) {
                    btnGotoCommentForm.observe('click', (function() {
                        this.select('.dialog_answer_textarea').last().scrollTo().down('textarea').focus();
                    }).bind(el_comments));
                }
                el_addons = true;
                
              }
              if(el_addons) {
                var dwGallery = event.memo.obj;
                var obj       = dwGallery.getCurrentData();
                el.fire('dwImageGallery:change', dwGallery.getCurrentData());
              }
            });
            
            var obj = new dwImageGallery(item);
            
        });
        
        document.fire('dwImageGallery:allReady', {galleries: dwImageGalleries});
    };
    
    
    
    // Init Galleries
    _log('-> initDwImageGallery - length: ' + galleries.length);
    
    if(galleries.length > 0) {
        _log('-> dwImageGallery: ' + typeof(window['dwImageGallery']) + ', ' + Object.isUndefined(window['dwImageGallery']));
        if(Object.isUndefined(window['dwImageGallery'])) {
            
            getScript('/scripts/bhc/prototype.dwImageGallery.js');
            var interval = window.setInterval(function() {
                if(!Object.isUndefined(window['dwImageGallery'])) {
                  clearInterval(interval);
                  initGalleries(); 
                }
            }, 50); 
        }
        else initGalleries();      
    }
  
}

/** GROUP FUNCTIONS **/

function group_deepgeodatacheck() {

	var el = $('geodata_access');
	if(el.hasClassName('inactive'))  {el.checked = false;return false;}
	if(el.checked) group_geodatacheck(true);
	
}

function group_geodatacheck(deepgeocheck) {
 
	  //_log('Group_geodatacheck - deep: ' + deepgeocheck);
	  
	  if($('geodata_error')) {
		  $('geodata_error').up('.error_field').removeClassName('error_field');
		  $('geodata_error').remove();
		  $('geodata_access').removeClassName('inactive');
	  } 
	  
      deepgeocheck = deepgeocheck || false;
      var params = {
    		  'r' : Math.random(),
    		  'deepgeocheck' : deepgeocheck ? 1 : 0,
    		  'zip' : $('zip').value,
    		  'city' : $('city').value,
    		  'country' : $('country').value    		  
      };
      
      //_log(params);
      
      new Ajax.Request(getXhrUrl('/group/ajaxgeodatacheck'), {
    	 'method': 'post',
    	 'parameters' : params,
    	 'onSuccess' : function(transport) {
    		 var data = transport.responseJSON;
    		 if(!data['success']) {
    			 if(!$('dw_layer_mask') && deepgeocheck) {
    				 _alert(data['message'] ? data['message'] : i18n.__('Unbekannter Fehler'));
    			 }
    			 $('geodata_access').checked = false;
    		 }
    	 }
    	  
      });
  
}

function group_rankedit(groupId, userId, targetRank, iconType) {
  
    groupId = parseInt(groupId);
    userId = parseInt(userId);
    targetRank  = parseInt(targetRank);
    iconType   = iconType || '';
    
    var el = $('button_group_' + userId + '_' + iconType);
    
    if(!isNaN(groupId) && !isNaN(userId) && !isNaN(targetRank)) {
     
        new Ajax.Request(getXhrUrl('/group/ajaxRankedit'),{
          'method':'post',
          'parameters': {'group_id': groupId, 'user_id' : userId, 'target_rank': targetRank},
          'onSuccess': function(transport) {
              var data = transport.responseJSON;
              if(data['status']) {
                elementmod_resulthandling(data['content'])
                if (data['remove_box']) {
                	$$('#content_subhead .subhead-project-info').first().remove()
                }
                _alert(i18n.__('Die Berechtigungen wurden erfolgreich aktualisiert'));
              }
              else {
                if(data['message']) _alert(data['message']);
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('memberlist_overview'), ['wechsel-0','wechsel-1']);
              $$('#memberlist_overview .listuseruser').first().addClassName('firstitem');
          }
        });

    }
  
}

function group_deleteuser(groupId, userId) {
  
  groupId = parseInt(groupId);
  userId  = parseInt(userId);
  
  if(!isNaN(groupId) && !isNaN(userId)) {
    
        new Ajax.Request(getXhrUrl('/group/ajaxLeave'),{
          'method':'post',
          'parameters': {'group_id': groupId, 'user_id' : userId},
          'onSuccess': function(transport) {
              var data = transport.responseJSON;
              if(data['status']) {
                $('list_container_friend_' + userId).remove();
                _alert(i18n.__('Der Nutzer wurde erfolgreich aus der Gruppe entfernt'));
              }
              else {
                if(data['message']) _alert(data['message']);
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('memberlist_overview'), ['wechsel-0','wechsel-1']);
              $$('#memberlist_overview .listuseruser').first().addClassName('firstitem');
          }
        });

    }
  
}

function group_join(groupId, type) {
  
    groupId = parseInt(groupId);
    type = (typeof type == 'undefined' ? 'list' : type);
    if (type != 'group' && type != 'list') {
    	type = 'list';
    }

    tpl = 'groupteaser';
    if (type == 'group')
    {
    	tpl = 'join_leave_button';
    }

    if(!isNaN(groupId)) {
        new Ajax.Request(getXhrUrl('/group/ajaxJoin'),{
          'method':'post',
          'parameters': {'group_id': groupId, 'template': tpl, 'type': type},
          'onSuccess': function(transport) {
              var el = $('list_container_group_' + groupId);
              var data = transport.responseJSON;
              if(data['status']) {
                el.replace(data['content']);
				if(data['message']) _alert(data['message']);
              }
              else {
                if(data['message']) _alert(data['message']);
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('grouplist_overview'), ['wechsel-0','wechsel-1']);
              $$('#grouplist_overview .listuseruser').first().addClassName('firstitem');
          }
        });
    }
}

function group_leave(groupId, type) {
  
    groupId = parseInt(groupId);
    type = (typeof type == 'undefined' ? 'list' : type);
    if (type != 'group' && type != 'list') {
    	type = 'list';
    }

    tpl = 'groupteaser';
    if (type == 'group') {
    	tpl = 'join_leave_button';
    }

    if(!isNaN(groupId)) {
     
        new Ajax.Request(getXhrUrl('/group/ajaxLeave'),{
          'method':'post',
          'parameters': {'group_id': groupId, 'template': tpl, 'type': type},
          'onSuccess': function(transport) {
              
              var el = $('list_container_group_' + groupId);
              var data = transport.responseJSON;
              if(data['status']) {
                el.replace(data['content']);
				if(data['message']) _alert(data['message']);
              }
              else {
                if(data['message']) _alert(data['message']);
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('grouplist_overview'), ['wechsel-0','wechsel-1']);
              $$('#grouplist_overview .listuseruser').first().addClassName('firstitem');
          }
        });
    }
}

function group_grouplist_join(groupId) {

    groupId = parseInt(groupId);
    var el  = $('grouplist-item-' + groupId);
    var el_link;
    if(el) el_link = el.down('dd a');
    
    if(!isNaN(groupId) && el && el_link && !el_link.hasClassName('action-pending')) {
        new Ajax.Request(getXhrUrl('/group/ajaxJoin'),{
          'method':'post',
          'parameters': {'group_id': groupId,
                         'template' : 'grouplist_item'},
          'onCreate': function(transport){
              el_link.addClassName('action-pending');
          },
          'onSuccess': function(transport) {
              
              var data = transport.responseJSON;
              if(data['status']) {
                  
                  // remove from recommended groups list
                  el.remove();
                  
                  // add item at correct position in user groups list
                  var groupNames = $$('#user-groups dt a');
                  var k = 0, g1, g2;
                  if(groupNames.length > 0) g1 = groupNames[k++];
                  if(groupNames.length > 1) g2 = groupNames[k++];
                  while(k < (groupNames.length-1)
                        && g1 && g1.innerHTML.toLowerCase() < data['groupname'].toLowerCase()
                        && g2 && g2.innerHTML.toLowerCase() < data['groupname'].toLowerCase()
                       ) {
                       g1 = groupNames[k++];
                       g2 = groupNames[k++];
                  }
                  
                  var el_parent = $('user-groups');
                  var list_elements = el_parent.select('li');
                  
                  // top of list
                  if(list_elements.length == 0 || list_elements.first().down('dt a').innerHTML.toLowerCase() > data['groupname'].toLowerCase())
                    Element.insert(el_parent, {'top': data['content']});
                  // bottom of list
                  else if(list_elements.last().down('dt a').innerHTML.toLowerCase() < data['groupname'].toLowerCase())
                    Element.insert(el_parent, {'bottom': data['content']});
                  // between elements
                  else
                    if(g2.innerHTML.toLowerCase() < data['groupname'].toLowerCase())
                      Element.insert(g2.up('li'), {'after': data['content']});
                    else
                      Element.insert(g1.up('li'), {'after': data['content']});
                  
                  
                  if($$('#recommended-groups li').length == 0) {
                	  $('recommended-groups').up('.info_container').remove();
                  }
                                      
              }
              
              
              
          },
          'onComplete':function(transport) {
            
              var data = transport['responseJSON'];
              if(data && data['message']) _alert(data['message']);
              else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              
              el_link.removeClassName('action-pending');
            
              $$('ul.bookmarks').each(function(el, index) {
                  alternate_classes(el, ['wechsel-0','wechsel-1']);
                  el.select('li').each(function(li, li_index) {
                      if(li_index == 0) li.addClassName('firstitem');
                      else li.removeClassName('firstitem');
                  });
              });
          }
        });
    }
    
}

function group_grouplist_leave(groupId) {
  
    groupId = parseInt(groupId);
    var el  = $('grouplist-item-' + groupId);
    var el_link, el_parent;
    if(el) el_link = el.down('dd a');
    if(el) el_parent = el.up('ul');
    
    if(!isNaN(groupId) && el && el_link && !el_link.hasClassName('action-pending')) {
     
        new Ajax.Request(getXhrUrl('/group/ajaxLeave'),{
          'method':'post',
          'parameters': {'group_id': groupId},
          'onCreate': function(transport) {
              el_link.addClassName('action-pending');
          },
          'onSuccess': function(transport) {
              
              var data = transport.responseJSON;
              if(data['status']) {
                el.remove();
              }
          },
          'onComplete':function(transport) {
            
              var data = transport['responseJSON'];
              if(data && data['message']) _alert(data['message']);
              else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
            
              el_link.removeClassName('action-pending');

              alternate_classes(el_parent, ['wechsel-0','wechsel-1']);
              el_parent.select('li').each(function(li, li_index) {
                  if(li_index == 0) li.addClassName('firstitem');
                  else li.removeClassName('firstitem');
              });
              
          }
        });
    }
}

function group_write2wall(group_id, el){

	     new Ajax.Request(getXhrUrl('/group/ajaxwritewall'),
	                             {method: 'post',
	                             parameters: {
	                                'value' : el.value,
	                                'id': group_id,
	                                'r' : Math.random()
	                             },
	                             onSuccess:  function(transport) {
	                              
	                            	 		$('grouppinboard_data_view').show();

	                                         var json = transport.responseJSON;
	                                         
	                                         for(i=0;i<json.length;i++) {
                                                 var one = json[i];
                                                 if(one[0] == "elementmod"){
                                                    element_modification(one[1]);
                                                 }
	                                         }
	                                         alternate_classes($('grouppinboard_data_view'), ['wechsel-0','wechsel-1']);
	                                         
	                                         if($$('#grouppinboard_data_view div.group_dashboardevent').length > 0) {
	                                        	 if($('grouppinboard_empty_msg')) $('grouppinboard_empty_msg').hide();
	                                         }
	                             }
	                           }
	                          );
}

function group_remove_dashboardevent(event_id){
         //
       var url = '/group/ajaxremoveevent';
	     new Ajax.Request(getXhrUrl(url),
	                             {method: 'post',
	                             parameters: {'event_id': event_id},
	                             onSuccess:  function(transport) {
	                                         //
	                                         var data = transport.responseJSON;
	                                         if(data['status']) {
	                                            $('group_dashboardevent_' + event_id).remove();
                                              alternate_classes($('grouppinboard_data_view'), ['wechsel-1', 'wechsel-0']);
                                              sitestat_track_ajax(url);

                                              if($$('#grouppinboard_data_view div.group_dashboardevent').length == 0) {
	                                        	 if($('grouppinboard_empty_msg')) $('grouppinboard_empty_msg').show();
	                                        	 $('grouppinboard_data_view').hide();
	                                         }
                                          }
	                             }
	                           }
	                          );
}

function group_dashboard_more_events(rec, group_id){
 	     new Ajax.Request(getXhrUrl('/group/dashboardMoreEvents'),  
 	                           {method: 'post',
	                             parameters: {
	                                'rec': rec,
	                                'id' : group_id  
	                             },
	                             onSuccess:  function(transport){
	                                         $$('#grouppinboard_data_view .group_dashboardevent').last().insert({'after': transport.responseText} );
	                                         $('groupdashboard_more_link' + rec).remove();
	                                         alternate_classes($('grouppinboard_data_view'), ['wechsel-0','wechsel-1']);
                                       		 dwFindTimestamps();
	                             }
	                           }
	                          );
}

function group_invitation_add_user(username, user_id) {
  
    
    var do_add = true;
     $$('input.groupinvitation').each(function(el){if(el.value==user_id) do_add = false});

     if(do_add){
        var target_el = $('groupinvitation_container');
        var html      = '<span id="group_invitation_user_id_' + user_id + '">' + username + '<input class="groupinvitation" type="hidden" name="groupinvitations[]" value="' + user_id + '" /> <a href="javascript:;" onClick="group_invitation_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} );
        $('input_container_groupinvitation').removeClassName('error');
     }
         
}

function group_event_invitation_add_user(username, user_id) {
  
    
    var do_add = true;
     $$('input.groupeventinvitation').each(function(el){if(el.value==user_id) do_add = false});

     if(do_add){
        var target_el = $('groupeventinvitation_container');
        var html      = '<span id="group_event_invitation_user_id_' + user_id + '">' + username + '<input class="groupeventinvitation" type="hidden" name="groupeventinvitations[]" value="' + user_id + '" /> <a href="javascript:;" onClick="group_event_invitation_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} );
        $('input_container_groupinvitation').removeClassName('error');
     }
         
}

function group_invitation_remove_user(user_id) {
  
     var el = $('group_invitation_user_id_' + user_id);
     if(el) var el_frame = el.parentNode;
     var input_el = $('groupinvitation');
     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 group_event_invitation_remove_user(user_id) {
  
     var el = $('group_event_invitation_user_id_' + user_id);
     if(el) var el_frame = el.parentNode;
     var input_el = $('groupeventinvitation');
     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 group_invitation_validate() {
  
    var ret = false;
    if($$('input.groupinvitation').length > 0) {
        ret = true;
        $('input_container_groupinvitation').removeClassName('error');
    }
    else {
        _alert(i18n.__('Du musst mindestens einen Empfänger für die Einladung auswählen'));
        $('input_container_groupinvitation').addClassName('error');
    }
    
    return ret;
  
}

function group_event_invitation_validate() {
  
    var ret = false;
    if($$('input.groupeventinvitation').length > 0) {
        ret = true;
        $('input_container_groupinvitation').removeClassName('error');
    }
    else {
        _alert(i18n.__('Du musst mindestens einen Empfänger für die Einladung auswählen'));
        $('input_container_groupinvitation').addClassName('error');
    }
    
    return ret;
  
}

function group_onsubmit() {
  
	_log($('geodata_access').checked);
  return false;
  $('image').remove();
  
  $(this).select('.tags input[type="hidden"]').each(function(el){if(el.readAttribute('name') !== 'next') el.remove();});
  return true;
  
}

function group_event_onsubmit() {
  
  $('image').remove();
  $(this).select('.tags input[type="hidden"]').each(function(el){if(el.readAttribute('name') !== 'next') el.remove();});
  return true;
  
}

function group_event_invitation_modify(groupEventId, newStatus) {
 
   groupEventId = parseInt(groupEventId);
   newStatus    = parseInt(newStatus);
   
  if(!isNaN(groupEventId) && !isNaN(newStatus)) {
  
        new Ajax.Request(getXhrUrl('/group/ajaxGroupEventInvitationModify'),{
          'method':'post',
          'parameters': {'group_event_id': groupEventId, 'status' : newStatus},
          'onSuccess': function(transport) {
              var data = transport.responseJSON;
              if(data['status']) {
                $('list_container_groupevent_' + groupEventId).replace(data['content']);
                _alert(data['message']);
              }
              else {
                if(data['message']) _alert(data['message']);
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('group-events-upcoming'), ['wechsel-0','wechsel-1']);
              $$('#group-events-upcoming .listuseruser').first().addClassName('firstitem');
          }
        });
    }
  
}

function group_event_invitation_modify_foreign(groupEventId, newStatus, userId) {
 
   groupEventId = parseInt(groupEventId);
   newStatus    = parseInt(newStatus);
   userId  = parseInt(userId);
   
   if(!isNaN(groupEventId) && !isNaN(newStatus) && !isNaN(isNaN(userId))) {
  
        new Ajax.Request(getXhrUrl('/group/ajaxGroupEventInvitationModifyForeign'),{
          'method':'post',
          'parameters': {'group_event_id': groupEventId, 'status' : newStatus, 'user_id' : userId},
          'onSuccess': function(transport) {
              var data = transport.responseJSON;
              
              var content = data['content'];
              if(content) {
            	  for(i=0;i<content.length;i++) {
                      var one = content[i];
                      if(one[0] == "elementmod"){
                         element_modification(one[1]);
                      }
                  }
            	  alternate_classes($('memberlist_overview'), ['wechsel-0','wechsel-1']);
              }
              
              if(data['status']) {
                _alert(data['message']);
              }
              else {
                if(data['message']) _alert(data['message']);  
                else _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
              }
          },
          'onFailure': function(transport) {
              _alert(i18n.__('Es ist ein unbekannter Fehler aufgetreten. Bitte versuchs später nochmal.'));
          },
          'onComplete':function(transport) {
              alternate_classes($('group-events-upcoming'), ['wechsel-0','wechsel-1']);
              $$('#group-events-upcoming .listuseruser').first().addClassName('firstitem');
          }
        });
    }
  
}

/** /GROUP FUNCTIONS **/


/* Tutorial Layers */
document.observe("dom:loaded", function() {
  window.bhc_tutorial_layers = (function() {
    var cookie,
        layers = [],
        completed = false,
        forceHide = false;

    function init() {
      var openStep = false;
      // init cookie
      cookie = new Cookie({'name': 'bhc_tutorial_layers','expires': 5*365*3600*24*1000, 'path':'/'});

      // check for stored settings
      if (cookie.getData('layersCompleted') === 'ok') {
        completed = true;
      }
      if (cookie.getData('forceHide') === 'ok') {
        forceHide = true;
      }
      if (cookie.getData('openStep') !== undefined) {
        openStep = cookie.getData('openStep');
      }
      // check for presence of tutorial trigger
      if ($$('.bhc_tutorial_layer')) {
        $$('.bhc_tutorial_layer').each(function(el){
          var layername = el.readAttribute('data-name');
          layers[layername] = el;
          tl.check(layername);
        });
      }
      // check for presence of steps
      if ($$('.bhc_tutorial_layer_step')) {
        $$('.bhc_tutorial_layer_step').each(function(el){
          var layername = el.readAttribute('data-name');
          layers[layername] = el;
        });
      }
      // re-open last open step of a multi-step tutorial
      if (openStep !== false) {
        tl.show(openStep);
      }
    }

    var tl = {
      check: function(name) {
        var status = cookie.getData(name);
        if (status !== 'completed') {
          // if not completed, try to show layer
          tl.show(name);
        }
      },
      show: function(name) {
        // if not forced otherwise, show layer
        if (!forceHide && !completed) {
          var el = layers[name];
          el.setStyle({opacity: 0, display: 'block'});
          var height = el.getHeight();
          el.setStyle({height: 0});
          var showlayer = new YAHOO.util.Anim(el, {opacity: {from: 0, to: 1}, height: {from: 0, to: height} }, 1.2, YAHOO.util.Easing.easeOut);
          showlayer.animate();
        }
      },
      showNextStep: function(evt, name, target) {
        // close this item
        if (evt != null) Event.stop(evt);
        var sourceHeight = layers[name].getHeight();
        tl.complete(null, name);
        // then open next
        tl.show(target);
        // scroll to target
        var targetOffset = layers[target].cumulativeOffset().top - sourceHeight - 50;
        var scrollpage = new YAHOO.util.Scroll(document.getElementsByTagName('html')[0], { scroll: { to: [0, targetOffset] } }, 1.2, YAHOO.util.Easing.easeOut);
        scrollpage.animate();
        cookie.setData('openStep', target);
        return false;
      },
      complete: function(evt, name) {
        // hide layer and set its state to completed
        if (evt != null) Event.stop(evt);
        var el = layers[name];
        var hidelayer = new YAHOO.util.Anim(el, {opacity: {from: 1, to: 0}, height: {to: 0} }, 0.6, YAHOO.util.Easing.easeOut);
        hidelayer.onComplete.subscribe(function() { el.hide(); });
        hidelayer.animate();
        cookie.setData(name, 'completed');
        cookie.removeData('openStep');
        return false;
      },
      forceHide: function() {
        forceHide = true;
        layers.each(function(k, v) {
          tl.complete(null, k);
        });
      },
      reset: function() {
        cookie.erase();
      }
    };

    init();

    return tl;
  })()
});
/* /Tutorial layers*/


/* fancy product teaser font-size */
document.observe("dom:loaded", function() {
	// check length of headline and reduce size
	$$('span.light-title').each(function(el) {
    var len = el.innerHTML.length;
    if( len > 20 ) {el.setStyle({fontSize : '17px', lineHeight: '19px', fontWeight: 'bold'})};
    if( len > 30 ) {el.setStyle({fontSize : '16px', lineHeight: '18px', fontWeight: 'bold'})};
		if( len > 40 ) {el.setStyle({fontSize : '15px', lineHeight: '16px', fontWeight: 'bold'})};
	})
});
