/*
Shoutbox
*/
sbx = {
	output : null,
	message : '',
	buffer : '',
	polaczenie : false,
	unplug : false,
	retry : 0,
	fid	:	null,
	wysyla : false,

	init : function() {
		sbx.output = document.getElementById('shoutbox');
	},

	odswiez : function( ignore, starter ) {
		window.clearTimeout( sbx.fid );
		if ( ( !sbx.polaczenie || ignore ) && !sbx.unplug ) {
			sbx.polaczenie = true;
			if ( !ignore ) sbx.message = '<div>Pobieram nowe shouty...</div>';
			if ( !starter ) sbx.output.innerHTML = sbx.message+sbx.buffer;
			new ajax ('forum/index.php', { postBody: 'act=Shoutbox&view=globalshouts2', onComplete: sbx.zapisz });
		}
	},

	zapisz : function( req ) {
		error = ( req.readyState == 4 && req.status == 200 ) ? false : true;

		if ( sbx.unplug ) {
			sbx.retry = 0;
			return;	
		}
		if ( error && sbx.retry < 3 ) {
			sbx.retry++;
			sbx.message = '<div>Ponawiam... '+sbx.retry+' próba.</div>';
			sbx.output.innerHTML = sbx.message+sbx.buffer;
			sbx.odswiez(true);
			return;
		}

		sbx.polaczenie = false;
		sbx.fid = window.setTimeout("sbx.odswiez()",30000);

		sbx.retry = 0;
		sbx.message = ( error ) ? '<div>Błąd pobierania, kod: '+req.readyState+'.<br /> Spróbuj odświeżyć.</div>' : '';
		sbx.buffer = ( error ) ? sbx.buffer : sbx.parsuj( req.responseText );
		sbx.output.innerHTML = sbx.message+sbx.buffer;
	},

	parsuj : function( data ) {
		data = data.replace(/\n*/g,"" );
		data = data.replace(/\r*/g,"" );
		data = data.replace(/^<body.*'left'>/,"" );
		data = data.replace(/<\/div>$/,"" );
		if ( data.length < 20 ) data ='Wystąpił błąd. Prawdopodobnie zbyt szybko wysłany nowy shout. Ewentualnie odśwież stronę.';
		return data;
	},

	wyslij : function( proba ) {
		window.clearTimeout( sbx.fid );
		sbx.unplug = true;

		if ( !sbx.wysyla || proba ) {
			sbx.wysyla = true;			// blokuj kolejne proby odswiezania
			if ( !proba ) sbx.message = '<div>Wysyłam shouta...</div>';
			sbx.output.innerHTML = sbx.message+sbx.buffer;
			new ajax ('forum/index.php', { postBody: 'act=Shoutbox&view=globalshouts2&status=add&viewing=global&tcorg=tak&has_refreshed=0&cururl&Color='+$('shoutselect').value+'&my_shout='+$('my_shout').value, onComplete: sbx.zapisz2 });
		}
	},

	zapisz2 : function( req ) {
		error = ( req.readyState == 4 && req.status == 200 ) ? false : true;

		if ( error && sbx.retry < 3 ) {	// Jezeli wystapil blad
			sbx.retry++;
			sbx.message = '<div>Ponawiam wysłanie... '+sbx.retry+' próba.</div>';
			sbx.output.innerHTML = sbx.message+sbx.buffer;
			sbx.wyslij(true);
			return;
		}

		sbx.wysyla = false;
		sbx.unplug = false;
		sbx.fid = window.setTimeout("sbx.odswiez()",30000);

		sbx.retry = 0;
		sbx.message = ( error ) ? '<div>Błąd wysłania, kod: '+req.readyState+'.<br /> Spróbuj wysłać ponownie.</div>' : '';
		sbx.buffer = ( error ) ? sbx.buffer : sbx.parsuj( req.responseText );
		sbx.output.innerHTML = sbx.message+sbx.buffer;
	}
}

function view_popup_profile(id,zero) {
	window.open("http://forum.thecrims.org/index.php?act=Profile&CODE=03&MID="+id, "CNN_WindowName",
"menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes");
}

window.onload = function() {
/*
	sbx.init();
	sbx.odswiez(false,true);
	sbx.fid = window.setTimeout("sbx.odswiez()",30000);
*/
}

/*
Kalkulator
http://thecrims.org
By Ranma_man
Kopiowanie i przerabianie bez zgody autora zabronione.

*/

kal = {
	pokazany: false,
	kal_ob	: null,
	pre		: '<div class="cien2"><div class="blok_glowna"><h5>Kalkulatory</h5><div>',
	post	: '</div></div></div>',
	menu	: '<img src="/img/m.gif" alt=">" /> <a href="javascript:kal.typ(0);">Rabunki indywidualne</a><br /><img src="/img/m.gif" alt=">" /> <a href="javascript:kal.typ(1);">Rabunki grupowe</a><br />',
	num		: null,

	bron : {
		'Brak' : [0,0],
		'Kij baseballowy' : [8,10],
		'Nóż' : [4,20],
		'Miecz' : [6,25],
		'Piła łańcuchowa' : [4,30],
		'Glock' : [5,40],
		'Desert Eagle' : [6,50],
		'Uzi' : [4,65],
		'Mp5' : [6,70],
		'Shotgun' : [3,100],
		'Ak47' : [5,90],
		'Colt M4A1' : [8,85],
		'Karabin snajperski' : [10,110],
		'Raygun' : [7,140],
		'BFG 9000' : [4,170],
		'Mean Machine' : [6,210]
	},

	panc : {
		'Brak' : 0,
		'Pielucha' : 10,
		'Kurtka skórzana' : 40,
		'Błyszcząca zbroja' : 80,
		'Kamizelka kuloodporna' : 150,
		'Węglowa kamizelka ochronna' : 200,
		'Pancerz z nomexu' : 300
	},

	ind : {
		'Spożywczak' : [5,3],
		'Staruszka' : [10,10],
		'Samochód' : [10,15],
		'Taksówkarz' : [10,25],
		'Bankomat' : [10,40],
		'Dom' : [12,45],
		'Stacja Benzynowa' : [14,55],
		'Kino'	: [15,65],
		'Biedronka' : [16,70],
		'7-Eleven' : [18,100],
		'Porwanie' : [20,170],
		'Jubiler' : [25,250],
		'Depozyt' : [27,300],
		'Lokalny Gang' : [30,370],
		'Dom Bossa Mafii' : [35,480],
		'Salon Samochodowy' : [40,570],
		'Paypal' : [45,640],
		'Bank Narodowy' : [50,770],
		'Lokalny diler' : [60,880],
		'Kasyno' : [65,980],
		'Klub' : [70,1150],
		'Hipermarket' : [75,1430],
		'Muzeum Narodowe' : [80,2700],
		'Rosyjski handlarz dragami' : [80,3200]
	},

	grup : {
		'Kantor' : [2,70],
		'Bank' : [4,160],
		'Konwój bankowy' : [3,300],
		'Magazyn Federalnych' : [6,900],
		'Sejf Telekompromitacji' : [7,2000],
		'Przekręt na giełdzie' : [9,2500],
		'Fabryka dragów' : [12,6000],
		'Al Capone' : [10,3000],
		'Pałac Fuckingham' : [14,8000],
		'Kasyno Polonia' : [15,11000],
		'Fort Knox' : [17,15000]
	},

	kalki : {
		0 : null,
		1 : null
	},

	cached : {
		'bron'	: null,
		'panc'	: null,
		'ind'	: null,
		'grup'	: null
	},

	typ : function( num ) {
		kal.num = num;
		switch ( num ) {
			case 0:
				if ( kal.cached['bron'] == null ) kal.cachuj_select( 'bron' );
				if ( kal.cached['ind'] == null ) kal.cachuj_select( 'ind' );
				if ( kal.cached['panc'] == null ) kal.cachuj_select( 'panc' );

				if ( kal.kalki[num] == null ) {
					kal.kalki[num] = '<table id="kalktable"><tr><td><table><tr><td>Inteligencja:</td><td><input type="text" name="intel" value="0" /></td></tr><tr><td>Siła:</td><td><input type="text" name="sila" value="0" /></td></tr><tr><td>Wytrzymałość:</td><td><input type="text" name="wytr" value="0" /></td></tr></table></td><td><table><tr><td>Twoja broń:</td><td>'+kal.cached['bron']+'</td></tr><tr><td>Pancerz:</td><td>'+kal.cached['panc']+'</td></tr></td></tr><tr><td>Cel rabunku:</td><td>'+kal.cached['ind']+'</td></tr></table></td></tr></table><input type="button" name="submit" value="Oblicz" onClick="javascript:kal.wynik();" style="text-align:center" /><div id="kalkwynik" style="border:0px;background:none;display:none"></div>';
				}
			break;
			case 1:
				if ( kal.cached['bron'] == null ) kal.cachuj_select( 'bron' );
				if ( kal.cached['grup'] == null ) kal.cachuj_select( 'grup' );
				if ( kal.cached['panc'] == null ) kal.cachuj_select( 'panc' );

				if ( kal.kalki[num] == null ) {
					kal.kalki[num] = '<table id="kalktable"><tr><td><table><tr><td>Inteligencja:</td><td><input type="text" name="intel" value="0" /></td></tr><tr><td>Siła:</td><td><input type="text" name="sila" value="0" /></td></tr><tr><td>Wytrzymałość:</td><td><input type="text" name="wytr" value="0" /></td></tr></table></td><td><table><tr><td>Wasze bronie:</td><td>'+kal.cached['bron']+'</td></tr><tr><td>Pancerze:</td><td>'+kal.cached['panc']+'</td></tr></td></tr><tr><td>Cel rabunku:</td><td>'+kal.cached['grup']+'</td></tr></table></td></tr></table><input type="button" name="submit" value="Oblicz" onClick="javascript:kal.wynik();" style="text-align:center" /><div id="kalkwynik" style="border:0px;background:none;display:none"></div>';
				}
			break;

				
		}
		kal.kal_ob.innerHTML =kal.pre+kal.menu+'<hr /><form id="kalk" name="kalk" onSubmit="javascript:kal.wynik();">'+kal.kalki[num]+'</form>'+kal.post;
	},

	cachuj_select : function( nazwa ) {
		kal.cached[nazwa] = '<select name="'+nazwa+'">';
		for ( k in kal[nazwa] ) {
			kal.cached[nazwa] += '<option value="'+k+'">'+k+'</option>';
		}
		kal.cached[nazwa] += '</select>';
	},

	pokaz : function() {
		if ( kal.kal_ob == null ) kal.kal_ob = document.getElementById('kalkulator');
		kal.pokazany = !kal.pokazany;
		kal.kal_ob.innerHTML = ( kal.pokazany ) ? kal.pre+kal.menu+kal.post : '';
	},

	wynik : function() {

		if ( kal.num == 0 || kal.num == 1 ) {
			div = document.getElementById('kalkwynik');
			div.style.display = 'block';
			form = document.getElementById('kalk');
			intel = parseInt( form.elements['intel'].value );
			sila = parseInt( form.elements['sila'].value );
			wytr = parseInt( form.elements['wytr'].value );
			if ( !kal.num ) moc = ( intel+sila+wytr/2 )/3 + kal.bron[form.elements['bron'].value][1] * kal.bron[form.elements['bron'].value][0]/10 + kal.panc[form.elements['panc'].value];
			else moc = ( intel+sila+wytr+kal.bron[form.elements['bron'].value][1] * ( kal.bron[form.elements['bron'].value][0]/10 ) + kal.panc[form.elements['panc'].value] ) / 3;
			wymog = ( kal.num ) ? kal.grup[form.elements['grup'].value][1] : kal.ind[form.elements['ind'].value][1];
			div.innerHTML = '<table><tr><td>Moc twojego ataku:</td><td>'+Math.round( moc )+'</td></tr><tr><td>Wymagana moc:</td><td>'+wymog+'</td></tr></table>';

			styl = ( moc > wymog ) ? '070' : '900';
			nie = ( moc > wymog ) ? 'Możesz' : 'Nie możesz';

			div.innerHTML += '<div style="border:1px solid black;margin-top:3px;padding:3px;color:white;font-size:10px;background:#'+styl+'">'+nie+' napadać nie uwzględniając czynnika losowego.</div>';

			pr = [ 5,10,20 ];
			for ( i = 0; i < 3 ; i++ ) {
				styl = ( moc * ((100-pr[i])/100) > wymog ) ? '070' : '900';
				nie = ( moc * ((100-pr[i])/100) > wymog ) ? 'Możesz' : 'Nie możesz';
				div.innerHTML += '<div style="border:1px solid black;margin-top:3px;padding:3px;color:white;font-size:10px;background:#'+styl+'">'+nie+' napadać uwzględniając obciążenie czynnikiem losowym rzędu '+pr[i]+'%.</div>';	
			}
		}
		return false;
	}
};


/*--------------------------------------------------------------------------*/
/*  Prototype JavaScript framework
 *  (c) 2005 Sam Stephenson <sam@conio.net>
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://prototype.conio.net/
/*--------------------------------------------------------------------------*/

//note: modified & stripped down version of prototype, to be used with moo.fx by mad4milk (http://moofx.mad4milk.net).

var Class = {
	create: function() {
		return function() {
			this.initialize.apply(this, arguments);
		}
	}
}

Object.extend = function(destination, source) {
	for (property in source) destination[property] = source[property];
	return destination;
}

Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}

Function.prototype.bindAsEventListener = function(object) {
var __method = this;
	return function(event) {
		__method.call(object, event || window.event);
	}
}

function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	$c(arguments).each(function(el){
		elements.push(get$(el));
	});
	return elements;

	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}

if (!window.Element) var Element = new Object();

Object.extend(Element, {
	remove: function(element) {
		element = $(element);
		element.parentNode.removeChild(element);
	},

	hasClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var hasClass = false;
		element.className.split(' ').each(function(cn){
			if (cn == className) hasClass = true;
		});
		return hasClass;
	},

	addClassName: function(element, className) {
		element = $(element);
		Element.removeClassName(element, className);
		element.className += ' ' + className;
	},
  
	removeClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var newClassName = '';
		element.className.split(' ').each(function(cn, i){
			if (cn != className){
				if (i > 0) newClassName += ' ';
				newClassName += cn;
			}
		});
		element.className = newClassName;
	},

	cleanWhitespace: function(element) {
		element = $(element);
		$c(element.childNodes).each(function(node){
			if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node);
		});
	},

	find: function(element, what) {
		element = $(element)[what];
		while (element.nodeType != 1) element = element[what];
		return element;
	}
});

var Position = {
	cumulativeOffset: function(element) {
		var valueT = 0, valueL = 0;
		do {
			valueT += element.offsetTop  || 0;
			valueL += element.offsetLeft || 0;
			element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
	}
};

document.getElementsByClassName = function(className) {
	var children = document.getElementsByTagName('*') || document.all;
	var elements = [];
	$c(children).each(function(child){
		if (Element.hasClassName(child, className)) elements.push(child);
	});  
	return elements;
}

//useful array functions
Array.prototype.each = function(func){
	for(var i=0;ob=this[i];i++) func(ob, i);
}

function $c(array){
	var nArray = [];
	for (i=0;el=array[i];i++) nArray.push(el);
	return nArray;
}

//based on prototype's ajax class
//to be used with prototype.lite, moofx.mad4milk.net.

ajax = Class.create();
ajax.prototype = {
	initialize: function(url, options){
		this.transport = this.getTransport();
		this.postBody = options.postBody || '';
		this.method = options.method || 'post';
		this.onComplete = options.onComplete || null;
		this.update = $(options.update) || null;
		this.request(url);
	},

	request: function(url){
		this.transport.open(this.method, url, true);
		this.transport.onreadystatechange = this.onStateChange.bind(this);
		if (this.method == 'post') {
			this.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			if (this.transport.overrideMimeType) this.transport.setRequestHeader('Connection', 'close');
		}
		this.transport.send(this.postBody);
	},

	onStateChange: function(){

		if (this.transport.readyState == 4 && this.transport.status == 200) {
			if (this.onComplete) 
				setTimeout(function(){this.onComplete(this.transport);}.bind(this), 10);
			if (this.update)
				setTimeout(function(){this.update.innerHTML = this.transport.responseText;}.bind(this), 10);
			this.transport.onreadystatechange = function(){};
		}
	},

	getTransport: function() {
		if (window.ActiveXObject) return new ActiveXObject('Microsoft.XMLHTTP');
		else if (window.XMLHttpRequest) return new XMLHttpRequest();
		else return false;
	}
};
