function checkboxToggle(form, field, toggle)
{
	var f = document.forms[form].elements[field];
   	if (document.forms[form].elements[field])
	{
		document.forms[form].elements[field].checked = toggle;  	
		for (i = 0;i < f.length; i++)
		{
			f[i].checked = toggle;
		}
    }
}
function updateOptionList(mainElement, subElement, value)
{	 
	var mainOptionList = document.getElementById(mainElement);
	var subOptionList = document.getElementById(subElement);
	if (subOptionList.value)
	{
		subOptionList.value = '';
	}
}
function swapImage(element, image, folder, ext)
{
	folder = (typeof folder == 'undefined') ? '/images/flags/png/' : folder;
	ext = (typeof ext == 'undefined') ? 'png' : ext;

	document.getElementById(image).src = folder + element.value + '.' + ext;
};
function toggleDetail(id)
{
	var d = document.getElementById(id);
	if (d.style.display == 'block')
	{
		d.style.display = 'none';
	} else {
		d.style.display = 'block';
	}
}
function quote(element, target)
{
//	var exclude = ['strong', 'em', 'u', 'a', 'textarea', 'pre', 'blockquote'];
//	var text = document.getElementById(element+'-text').innerHTML.stripHTML(exclude);
	target = (typeof target == 'undefined') ? 'comment_text' : target;

	var user = document.getElementById(element+'-user').rel;
	var text = document.getElementById(element+'-text').innerHTML;
	text = text.replace(/<blockquote>([\s\S]*)<\/blockquote>/gi, '');
	text = stripAllHTML(text);
	text = removeSpacesAndTabs(text);
	if (text != '')
	{
		document.getElementById(target).value += '[quote='+user+']'+text+'[/quote]';
	}
}

function add_text(element, text)
{
	if (text != '')
	{
		document.getElementById(element).value += text;
	}
}
/*
// html.stripHTML(['em', 'strong']);
String.prototype.stripHTML = function(exclude) {
     if(!this.length) return this;
     var f = function(a, b, c){
        if(typeof exclude != 'undefined'){
            for(var i = 0; i < exclude.length; i++){
                if(b == exclude[i] || b == '/' + exclude[i]) return a;
            }
        }
        return '';
     };
     return this.replace(/<([^>]*)>/g, f);
}
*/
function stripAllHTML(text)
{
	// return text.replace(/<&#91;^>&#93;*>/g, '');
	return text.replace(/<([^>]*)>/g, '');
}
function removeSpacesAndTabs(text)
{
	text = text.replace(/\t/g, '');
	text = text.replace(/\s+/g, ' ');
	return text;
}

function etf2l_matches_check(field)
{
	var low = document.getElementById('select_low');
	var high = document.getElementById('select_high');
	if (low.options[low.selectedIndex].value > high.options[high.selectedIndex].value)
	{
		if (field == 'low')
		{
			high.selectedIndex = low.selectedIndex;
		} else if (field == 'high') {
			low.selectedIndex = high.selectedIndex;
		}
	}
}

function catchPrompt(text)
{
	var value = prompt(text);
	if (typeof(value) == 'undefinied' || value == null)
	{
		value = '';
	}
	return value;
}

function insert(element, aTag, eTag) // modified code of by SelfHTML.org
{
	var input = document.getElementById(element);
	input.focus();
	// für Internet Explorer
	if(typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;

		range = document.selection.createRange();
		if (insText.length == 0)
		{
			insText = catchPrompt("Bitte geben Sie den zu formatierenden Text ein:");
			range.move('character', -eTag.length);
		} else {
			range.moveStart('character', aTag.length + insText.length + eTag.length);      
		}

		range.text = aTag + insText + eTag;
		range.select();
	}
	// für neuere auf Gecko basierende Browser
	else if(typeof input.selectionStart != 'undefined')
	{
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		
		var pos;
		if (insText.length == 0)
		{
			insText = catchPrompt("Bitte geben Sie den zu formatierenden Text ein:");
			pos = start + aTag.length;
		} else {
			pos = start + aTag.length + insText.length + eTag.length;
		}
		
		input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
/*
	// für die übrigen Browser
	else
	{
		// Abfrage der Einfügeposition 
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while (!re.test(pos))
		{
			pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
		}
		if (pos > input.value.length)
		{
			pos = input.value.length;
		}
		// Einfügen des Formatierungscodes
		var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
		input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	}
*/
}
/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Base64 = {
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = Base64._utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		}
		return output;
	},
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = Base64._utf8_decode(output);
		return output;
	},
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}
// Demoupload
function toggleStatus(target)
{
	var element = document.getElementById(target);
	if (element.disabled == true)
	{
		element.disabled = false;
	} else {
		element.disabled = true;
		element.value = "";
	}
}
function setPlayer(name)
{
	var select = document.getElementById('demotype');
	if (select.options[select.selectedIndex].value == '1')
	{
		document.getElementById('demoteam1').value = name;
		// document.getElementById('demoteam1player').checked = true;
	}
}
function checkMap(target)
{
	var select = document.getElementById('demomap');
	var element = document.getElementById(target);
	element.value = '';
	if (select.options[select.length - 1].value == select.value)
	{
		element.disabled = false;
	} else {
		element.disabled = true;

	}
}

function countChars(input, output)
{
	document.getElementById(output).innerHTML = input.value.length;
}
function setCookie(c_name, value, expiredays, path, domain, secure)
{
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name+ "=" +escape(value)
		+ ((expiredays==null) 	? ";expires="+exdate.toGMTString() 	: "")
		+ ((path) 				? ";path="+path 					: "")
		+ ((domain) 			? ";domain="+domain 				: "")
		+ ((secure) 			? ";secure" 						: "");

}
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 getUnixtime()
{
	var foo = new Date;
	return parseInt(foo.getTime() / 1000);
}

function addItemTooltips(e, tooltip){
		e.addEvents({
		'mouseover': function(){
			tooltip.empty();
			e.clone().removeClass('itemdetails').inject(tooltip, 'top');
			if (tooltip.getElement('h3 + img + *') == null) {
				tooltip.getElement('h3 + img').setStyle('right', -70);
			} else {
				var tbreak = new Element('br');
				tbreak.inject(tooltip.getElement('h3'), 'after');
			}
			tooltip.removeClass('hidden');
		},
		'mouseout': function(){
			tooltip.addClass('hidden');
		},
		'mousemove': function(u){
			var wsize = window.getSize();
			var tsize = tooltip.getSize();
			if((u.page.x + tooltip.offsetWidth + 90) > (wsize.x)) { // Rechts nicht genug Platz?
				 tooltip.setStyle('left', (u.page.x - tooltip.offsetWidth - 30)); // Dann nach links damit.
				 if(tooltip.hasClass('expanded'))  tooltip.setStyle('left', (u.page.x - tooltip.offsetWidth - 70)); 
			} else { tooltip.setStyle('left', u.page.x); } // Sonst Tooltip nach rechts
			if ((u.client.y + tsize.y + 10) > (wsize.y)) { // Unten nicht genug Platz?
				tooltip.setStyle('top',  u.page.y - tsize.y -10);	// Dann nach oben damit.
			} else {
				tooltip.setStyle('top', u.page.y + 10);
			}
			
		},
		'click': function(u){
			tooltip.toggleClass('expanded');
			e.fireEvent('mousemove', u);
		}
	});
}

function setupItemDB(){
	var d = $$('.itemdetails');
	var tooltip = $('itemtooltip');
	d.each(function(e){
		if(!e.hasClass('empty'))
		addItemTooltips(e, tooltip);
	});
}

$$('.change_listview').each(function(f){
	f.addEvent('click', function(){
		var tooltip = $('itemtooltip');
		var p = f.getParent().getNext();
		p.toggleClass('item_grid');
		f.toggleClass('view_changed');
		if (p.hasClass('item_grid')) {
			var d = p.getElements('.itemdetails');
			d.each(function(e){
				addItemTooltips(e, tooltip);
			});
		} else {
			var d = p.getElements('.itemdetails');
			d.each(function(e){
				e.removeEvents('mouseover');
				e.removeEvents('mouseout');
				e.removeEvents('mousemove');
				e.removeEvents('click');
				tooltip.removeClass('expanded');
			});
		}
	});
});

var backpackpage = 0;
function setupItemBP(){
	$$('.slotlist').each(function(f, index){
		if(index != 0) f.toggleClass('page_hidden');	
	});	
}

$$('.next_page').each(function(f){
	f.addEvent('click', function(){
		var p = f.getParent().getNext().getParent();
		p.toggleClass('page_hidden');
		p.getNext().toggleClass('page_hidden');
	});
});

$$('.previous_page').each(function(f){
	f.addEvent('click', function(){
		var p = f.getParent().getNext().getParent();
		p.toggleClass('page_hidden');
		p.getPrevious().toggleClass('page_hidden');
	});
});

$$('.toggle_vintage').each(function(link)  {
	var selektor = link.getProperty('rel');
	var input = $('vintage_'+selektor);
	if(input.checked == true){
		link.addClass('active');
	}
});

$$('.toggle_unusual').each(function(link)  {
	var selektor = link.getProperty('rel');
	var input = $('unusual_'+selektor);
	if(input.checked == true){
		link.addClass('active');
	}
});


$$('.toggle_vintage').each(function(link)  {
    link.addEvent('click', function(e) {
         link.toggleClass('active');
		 var selektor = link.getProperty('rel');
		 var input = $('vintage_'+selektor);
		 if (input.checked == false) {
		 	input.checked = true;
		 } else if (input.checked == true) {
		 	input.checked = false;
		 }
    });
});

$$('.toggle_unusual').each(function(link)  {
    link.addEvent('click', function(e) {
         link.toggleClass('active');
		 var selektor = link.getProperty('rel');
		 var input = $('unusual_'+selektor);
		 if (input.checked == false) {
		 	input.checked = true;
		 } else if (input.checked == true) {
		 	input.checked = false;
		 }
    });
});

function setupTrademanager(){
	var ie = $$('#itemedit');
	$$('#edit_close').addEvent('click', function(){
		ie.addClass('hidden');
		if(current) current.getPrevious().removeClass('ontop');
		ie.getElements('input').each(function(a){
			a.setProperty('disabled', 'true');
			a.setProperty('value', '');
		});
		ie.getElements('select').each(function(a){
			a.setProperty('disabled', 'true');
		});
		ie.getElements('option').each(function(a){
			a.removeProperty('select');
		});
	})
	var current;
	$$('.iteminput').each(function(item){
		var c = item.getElement('input[type=checkbox]');
		var i = item.getPrevious();
		var p=i.getPosition();
		p.y -= 30;
		p.x -= 15;		
		var e = item.getElement('img.edit_item');
		c.addEvent('change', function(){		
			i.toggleClass('disabled');
		});
		if(e)
		e.addEvent('click', function(){
			$$('.itemdetails').each(function(id){
				id.removeClass('ontop');
			});
			current = item;
			current.getPrevious().addClass('ontop');
			ie.getElements('input').each(function(a){
				a.setProperty('disabled', 'true');
				a.setProperty('value', '');
			});
			ie.getElements('select').each(function(a){
				a.setProperty('disabled', 'true');
			});
			ie.getElements('option').each(function(a){
				a.removeProperty('select');
			});			
			if(e.hasClass('hat')){				
				$('item_quality').removeProperty('disabled');
				$('item_color').removeProperty('disabled');
				$('quality_unusual').removeProperty('disabled');
			} else {
				$('custom_name').removeProperty('disabled');
				$('item_quality').removeProperty('disabled');
				$('quality_unusual').setProperty('disabled', true);
			}
			item.getElements('input').each(function(x){
				var y;
				if(x.hasClass('flags') && x.value ) if(y = ie.getElement('#item_quality').getElement('option[value='+x.value+']')) y.setProperty('selected', 'true');
				else $('default_quality').setProperty('selected', 'true');
				if(x.hasClass('color') && x.value ) if(y = ie.getElement('#item_color').getElement('option[value='+x.value+']')) y.setProperty('selected', 'true');
				else $('default_color').setProperty('selected', 'true');
				if(x.hasClass('effect') && x.value ){
					$('item_effect').removeProperty('disabled');
					if(y = ie.getElement('#item_effect').getElement('option[value='+x.value+']')) y.setProperty('selected', 'true');
				}  else $('default_effect').setProperty('selected', 'true');
				if(x.hasClass('cname') && x.value) $('custom_name').value = x.value;
			});
			ie.removeClass('hidden');			
			ie.setPosition(p);
		});
		$('item_quality').addEvent('change', function(b){
			if ($('item_quality').value == 'unusual') 
				$('item_effect').removeProperty('disabled');
			else {
				$('item_effect').setProperty('disabled', true);
				$('default_effect').setProperty('selected', 'true');
				var img = current.getPrevious().getElement('img');
				img.setStyle('background-image', '');
				current.getElement('.effect').setProperty('value', '');
			}
			current.getElement('.flags').setProperty('value', $('item_quality').value);
			current.getPrevious().removeProperty('class').addClass('itemdetails').addClass('ontop').addClass($('item_quality').value);
		});
		$('custom_name').addEvent('change', function(b){
			current.getElement('.cname').setProperty('value', $('custom_name').value);
			if($('custom_name').value) current.getPrevious().getElement('h3 a:not(.editlink)').set('html', '<div class="name-tag-indicator"></div>'+$('custom_name').value);
			else current.getPrevious().getElement('h3 a:not(.editlink)').set('html', current.getElement('.cname').getProperty('title'));
		});
		$('item_effect').addEvent('change', function(b){
			current.getElement('.effect').setProperty('value', $('item_effect').value);
			var img = current.getPrevious().getElement('img');
			img.setStyle('background-image', 'url(/gfx/effects/'+ $('item_effect').value+'.png)');
			img.setStyle('background-position', 'center');
		});
		$('item_color').addEvent('change', function(b){
			if(current) console.log(current);
			current.getElement('.color').setProperty('value', $('item_color').value);
			var img = current.getPrevious().getElement('img');
			var ci  = current.getPrevious().getElement('.color-indicator');
			if(ci) ci.setStyle('background-color', '#'+$('item_color').value)
			else{
				ci = new Element('div', {
					'class': 'color-indicator',
					'styles': {
						'background-color': '#' + $('item_color').value
					}
				});				
				ci.inject(img, 'after');
			}
		});
	});
}



// Un-/Check all checkboxes named "name" depending on state of "obj" (e.g. "this")
function checkall(name,obj)
{
	$$("input[type='checkbox'][name='"+name+"']").each(function(el)
	{
		el.checked = obj.checked;
	});
}

function klapptext(id)
{
	var el_div = document.getElementById(id);
	var el_img = document.getElementById(id + '_img');
	if (el_div.style.display == 'block')
	{
		el_div.style.display = 'none';
		el_img.src = '/images/icons/chevron_expand.png';

	} else {
		el_div.style.display = 'block';
		el_img.src = '/images/icons/chevron_collapse.png';
	}
}

if($$('#snt_wrapper .boxContent:last-child').getHeight() > 60) $$('#topleftcontainer #block-message').set('html', '');
