/**  
* cback.js
*
* @author Christian Knerr (cback)
* @package CBACK_Forum
* @version 1.0.1
* @since 28.10.2007 - 00:28:48
* @copyright (c) 2009 CBACK Software - www.cback.net
*/

// Browsertyp erkennen
var BROWSER		= navigator.userAgent.toLowerCase();
var IS_OPERA	= (BROWSER.indexOf('opera') != -1);
var IS_SAFARI	= ((BROWSER.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var IS_IE		= ((BROWSER.indexOf('msie') != -1) && !IS_OPERA && !IS_SAFARI);
var IS_MOZILLA	= ((navigator.product == 'Gecko') && !IS_SAFARI);
var IS_KNQ		= (BROWSER.indexOf('konqueror') != -1);
var IS_IE6		= false;
var IS_IE7		= false;

// Allgemeine Variablen initialisieren
var login_open  	= false;
var sidebar_open	= false;
var last_menu_open	= '';
var cl_count		= 0;
var accordion		= false;
var sorter			= false;
var dbl_element		= 0;
var dbl_temptime	= 0;
var dbl_timer		= new Date();

// Tooltips, Scroller, Accordeon
window.addEvent('domready', function()
{
	var InfoTips = new Tips($$('.bottom_icon', '.usericon', '.showtip', '.bbc_extra_button'),
	{
			initialize:function()
			{
				this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 200, wait: false}).set(0);
			},
			onShow: function(toolTip)
			{
				this.fx.start(1);
			},
			onHide: function(toolTip)
			{
				this.fx.start(0);
			}
	});
	
	new SmoothScroll(
	{
		duration	: 1000,
		transition	: Fx.Transitions.Quad.easeInOut
	});
	
	if ( JS_ACCORD == 1 )
	{
		accordion = new Accordion('.accord_menu_box', '.accord_container',
		{
			opacity: false
		}, $('accordion'));
	}
	
	if ( JS_SORTER == 1 )
	{
		sorter = new Sortables($('ajax_sort'), {});
	}
});

/* Loginbox anzeigen und ausblenden */
function show_login()
{
	var mover = new Fx.Styles('loginbox', {duration: 300, transition: Fx.Transitions.linear});

	if ( !login_open )
	{
		mover.start({
    		'height': [0, 284],
    		'width' : [0, 600],
    		'padding': [0, 10],
    		'border-width': [0, 4]
		});
		var alpha = new Fx.Style('loginbox', 'opacity').start(0,1);
	}
	else
	{
		mover.start({
    		'height': [284, 0],
    		'width' : [600, 0],
    		'padding': [10, 0],
    		'border-width': [4, 0]
		});
		var alpha = new Fx.Style('loginbox', 'opacity').start(1,0);
	}
	
	login_open = !login_open;
}


/* Ein DIV Element ausblenden */
function hide_element(elementName)
{
	if ( elementName == '' )
	{
		return;
	}
	
	var slider = new Fx.Slide(elementName, {duration: 400});
	slider.slideOut();
	slider.hide;
}

function showmenu(element)
{
	// möglicherweise noch geöffnetes Menü schließen
	var finished = last_menu_open;

	if ( last_menu_open != '' )
	{
		hidemenu();
	}

	if ( finished == element )
	{
		return;
	}

	// Event Listener registrieren (Menü vorhanden)
	window.onresize		= function() { hidemenu(); };
	document.onclick	= function() { if ( cl_count == 0 ){ cl_count++; } else { hidemenu(); } };
	
	// geöffnetes Menü registrieren
	last_menu_open = element;
	
	// Menü Display aktivieren aber noch nicht anzeigen
	document.getElementById(last_menu_open).style.visibility	= 'hidden';
	document.getElementById(last_menu_open).style.display		= 'block';
	
	// Effektklasse
	var menu_animation = new Fx.Style(last_menu_open, 'opacity', {duration:300});
	menu_animation.set(0);
	
	// Wie groß ist das Menü?
	var menu_width	= 0;
	menu_width		= document.getElementById(last_menu_open).offsetWidth;
	
	// Wie viel Fensterplatz haben wir?
	var window_size = 0;
	window_size		= document.body.offsetWidth;
	
	// Infos über das übergeordnete Element
	var pe_top		= document.getElementById(last_menu_open).parentNode.offsetTop;
	var pe_height	= document.getElementById(last_menu_open).parentNode.offsetHeight;
	var pe_width	= document.getElementById(last_menu_open).parentNode.offsetWidth;
	var pe_left		= document.getElementById(last_menu_open).parentNode.offsetLeft;
	
	// Passt das Menü auf den angezeigten Bereich? Wenn nicht schieben...
	var reposition	= 0;
	
	if ( menu_width + pe_left >= window_size )
	{
		reposition = window_size - menu_width - 10;
		document.getElementById(last_menu_open).style.left = reposition + 'px';
		reposition = 0;	// Da wir die Variable später nochmal benutzen
	}
	
	if ( IS_IE7 )
	{
		if ( menu_width > 800 )
		{
			menu_width = 400;
			reposition = window_size - menu_width - 10;
			document.getElementById(last_menu_open).style.left = reposition + 'px';
			document.getElementById(last_menu_open).style.width = '400px';
			reposition = 0;
		}

		if ( pe_left > 800 )
		{
			//document.getElementById(last_menu_open).style.right = '10px';
		}
	}
	
	// Höhe des Menüs
	if ( !IS_IE )
	{
		reposition = pe_top + pe_height;
		document.getElementById(last_menu_open).style.top = reposition + 'px';
	}
	
	// Und animieren
	document.getElementById(last_menu_open).style.visibility = 'visible';
	menu_animation.start(0,1);
}


function hidemenu()
{
	// Menü schließen
	if ( last_menu_open != '' )
	{
		document.getElementById(last_menu_open).style.display	= 'none';
		last_menu_open		= '';
		window.onresize		= null;
		document.onclick	= null;
		cl_count			= 0;
	}
}

function catflap(element)
{
	if ( document.getElementById('cat' + element).style.display == 'none' )
	{
		document.getElementById('cat' + element).style.display	= 'inline';
		document.getElementById('catpic_' + element).src 		= TPL_PATH + '/images/minus.png';
	}
	else
	{
		document.getElementById('cat' + element).style.display	= 'none';
		document.getElementById('catpic_' + element).src 		= TPL_PATH + '/images/plus.png';		
	}
	savecatstate(element);
}

/*
* Method for saving the state of the categories
* written by cYbercOsmOnauT aka Tekin BirdÃ¼zen
* all rights are given to CBACK
*/
function savecatstate(element)
{
	var val = '';
	opencats = getcookie('_c').split('|');
	count = opencats.length-1;
	for ( i=0; i<= count; i++ )
	{
		if ( opencats[i] == element || opencats[i] == '' )
		{
			continue;
		}
		val += opencats[i] + '|';
	}
	if ( document.getElementById('cat'+element).style.display == 'none' )
	{
		val += element + '|';
	}
	setcookie('_c', val, 30);
}

function initcats() {
	opencats = getcookie('_c').split('|');
	for ( i in opencats )
	{
		if( document.getElementById('cat'+opencats[i]) )
		{
			document.getElementById('cat'+opencats[i]).style.display = 'none';
			document.getElementById('catpic_'+opencats[i]).src = TPL_PATH + '/images/plus.png';
		}
	}
}

function getcookie(Name) {
    var search = COOKIE_NAME + Name + '='
    var returnvalue = '';
    if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(search)
        if (offset != -1) {
            offset += search.length
            end = document.cookie.indexOf(';', offset);
            if (end == -1) end = document.cookie.length;
            returnvalue=unescape(document.cookie.substring(offset, end))
        }
    }
    return returnvalue;
}

function setcookie(name,value,days) {
    var today = new Date();
    var cookie_expire_date = new Date(today.getTime() + (days * 3600000))

    var cookieString = COOKIE_NAME + name + "=" +escape(value) +
        ( (cookie_expire_date) ? ";expires=" + cookie_expire_date.toGMTString() : "") +
        ( (COOKIE_PATH) ? ";path=" + COOKIE_PATH : "") +
        ( (COOKIE_DOMAIN) ? ";domain=" + COOKIE_DOMAIN : "") +
        ( (COOKIE_SSL) ? ";secure" : "");
    document.cookie = cookieString;
}

function addmsn(nickname)
{
	if (!IS_IE)
	{
		alert(ERR_MSN_ADD + ' ' + nickname);
		return false;
	}
	else
	{
		MsgrObj.AddContact(0, nickname);
		return false;
	}
}

function txt_mark(element)
{
	document.getElementById(element).select();
	document.getElementById(element).focus();
}

function txt_less(element)
{
	if ( document.getElementById(element).rows < 8 )
	{
		document.getElementById(element).rows = 8;
	}
	else if ( document.getElementById(element).rows > 8 )
	{
		document.getElementById(element).rows -= 4;
	}
}

function txt_more(element)
{
	if ( document.getElementById(element).rows < 12 )
	{
		document.getElementById(element).rows = 16;
	}
	else
	{
		document.getElementById(element).rows += 4;
	}
}

function menulist_save()
{
	document.getElementById('ajax_activity').style.display = 'block';
	var elementnow	= document.getElementById('ajax_sort');
	var url			= PHP_PATH + 'ajax.' + PHP_EXTENSION;

	if ( elementnow.innerHTML == undefined || elementnow.innerHTML == '' )
	{
		// Alles löschen
		url = url + '?mode=deletemenu';
		new Ajax(url,
			{
				method: 'get',
				onComplete: function(){document.getElementById('ajax_activity').style.display = 'none';},
				onFailure: function(){document.getElementById('ajax_activity').style.display = 'none';alert(ERR_AJAX);}
			}
		).request();
		
		return;
	}
	else
	{
		// Neue Liste speichern
		var listcounter	= elementnow.getElementsByTagName('input').length;
		var new_menue_list = '';
		
		if ( listcounter == 0 )
		{
			// Doch keine Elemente
			url = url + '?mode=deletemenu';
			new Ajax(url,
				{
					method: 'get',
					onComplete: function(){document.getElementById('ajax_activity').style.display = 'none';},
					onFailure: function(){document.getElementById('ajax_activity').style.display = 'none';alert(ERR_AJAX);}
				}
			).request();
			return;
		}
				
		for ( i = 0; i < listcounter; i++ )
		{
			new_menue_list = new_menue_list + $('ajax_sort').getElements('input')[i].value + '-';
		}
		url = url + '?mode=savemenu&newmenue=' + new_menue_list;
		new Ajax(url,
			{
				method: 'get',
				onComplete: function(){document.getElementById('ajax_activity').style.display = 'none';},
				onFailure: function(){document.getElementById('ajax_activity').style.display = 'none';alert(ERR_AJAX);}
			}
		).request();
	}
}

function menulist_add(element)
{
	for ( i = 0; i < exitm.length; i++ )
	{
		if ( exitm[i] == element )
		{
			return;
		}
	}
	
	var lins = 0;
	lins = exitm.push(element);
	
	var temp = document.getElementById('mli' + element).innerHTML;
	
	if ( !document.getElementById('dl' + element) )
	{
		var dest = document.getElementById('ajax_sort').innerHTML;
		temp = '<li class="ajax_sorter" id="dl' + element + '" onclick="menulist_drop(' + element + ');">' + temp + '</li>';
		document.getElementById('ajax_sort').innerHTML = dest + temp;
		sorter = new Sortables($('ajax_sort'), {});
	}
	else
	{
		document.getElementById('dl' + element).innerHTML		= temp;
		document.getElementById('dl' + element).style.height	= '15px';
		document.getElementById('dl' + element).style.overflow	= 'visible';
		document.getElementById('dl' + element).style.padding	= '10px 6px';
	}
	
	accordion.display(1);
	accordion.display(2);
}

function menulist_drop(element)
{
	// OK die entfernung sieht etwas seltsam aus, man könnte mit removeChild()
	// arbeiten jedoch hat sich die Methode über Style Manipulation als
	// effektiver erwiesen was den Ablauf des Scriptes anbelangt
	// Desweiteren arbeiten wir mit Timerbasierten Klick Countern:
	// ondblclick in Kombination mit Drag&Drop machte dem Firefox3
	// Javascript Parser Probleme weshalb hier auf onmousedown
	// und eine "haudrauf" Lösung gesetzt werden musste.
	if ( dbl_element != element )
	{
		dbl_element  = element;
		dbl_temptime = dbl_timer.getTime();
		return;
	}
	else if ( dbl_timer.getTime() > (dbl_temptime+2) )
	{
		dbl_temptime = dbl_timer.getTime();
		return;
	}
	
	for ( i = 0; i < exitm.length; i++ )
	{
		if ( exitm[i] == element )
		{
			exitm[i] = '-1';
		}
	}
	
	dbl_temptime	= 0;
	dbl_element		= 0;
	dbl_count		= 0;
	document.getElementById('dl' + element).innerHTML		= '';
	document.getElementById('dl' + element).style.height	= '1px';
	document.getElementById('dl' + element).style.overflow	= 'hidden';
	document.getElementById('dl' + element).style.padding	= '0';
	accordion.display(1);
	accordion.display(2);
}

function select_switch(selstat, element)
{
	var parent	= document.getElementById(element);
	var temp	= parent.getElementsByTagName('input');
	
	for (var i = 0; i < temp.length; i++)
	{	
		if (temp[i].name.substr(0, name.length) == name)
		{
			temp[i].checked = selstat;
		}
	}
}

function group_edit_switcher(off, element)
{
	if ( off == 1 )
	{
		document.getElementById('pme'+element).style.display = 'inline';
		document.getElementById('pms'+element).style.display = 'none';
	}
	else
	{
		document.getElementById('pme'+element).style.display = 'none';
		document.getElementById('pms'+element).style.display = 'inline';
	}
}

function display_hidden_box(element, element2)
{
	document.getElementById(element).style.display = 'inline';
	document.getElementById(element2).style.display = 'none';
}