// Globals
var wachattime;
var wachatre_ping;
var titleBackup = document.title;
var wachatvege1 = 1;
var wachatvege2 = 1;
var wachataktiv = 1;
var wachatmeret = 'nagy';
// IE vagy normális böngésző
if (window.XMLHttpRequest) {
	var xmlhttpwachat = new XMLHttpRequest();
	var xmlhttpwachat2 = new XMLHttpRequest();
}
else {
	var xmlhttpwachat = new ActiveXObject("Microsoft.XMLHTTP");
	var xmlhttpwachat2 = new ActiveXObject("Microsoft.XMLHTTP");
}

// Aktív az ablak?
window.onfocus = function () {
	if (wachatmeret == 'nagy') {
		if (document.title != titleBackup) document.title = titleBackup;
		wachataktiv = 1;
	}
}
window.onblur = function () {
	wachataktiv = 0;
}

$(document).ready(function() {
	var i,x,y,ARRcookies=document.cookie.split(";");
	for (i=0;i<ARRcookies.length;i++) {
		x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
		y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
		x=x.replace(/^\s+|\s+$/g,"");
		if (x=='wachatmeret') {
			wachatmeret = unescape(y);
		}
	}
});

// Pingeléshez
function wachatajax1 (str, callb) {
	var fajl = '/wachat/getchat.php';
	xmlhttpwachat.abort();
	// Ezzel térünk vissza
	xmlhttpwachat.onreadystatechange = function() {
		if (xmlhttpwachat.readyState == 4 && xmlhttpwachat.status == 200) {
			callb(xmlhttpwachat.responseText);
		}
	}
	// IE szivató
	var ido = new Date;
	xmlhttpwachat.open('GET',fajl+'?'+str+'&ido='+ido.getMinutes()+ido.getSeconds(),true);
	xmlhttpwachat.send();
}

// Üzi küldéshez + kilépéshez
function wachatajax2 (str2, callb2) {
	var fajl2 = '/wachat/postchat.php';
	xmlhttpwachat2.abort();
	// Ezzel térünk vissza
	xmlhttpwachat2.onreadystatechange = function() {
		if (xmlhttpwachat2.readyState == 4 && xmlhttpwachat2.status == 200) {
			callb2(xmlhttpwachat2.responseText);
		}
	}
	// IE szivató
	var ido2 = new Date;
	xmlhttpwachat2.open('GET',fajl2+'?'+str2+'&ido='+ido2.getMinutes()+ido2.getSeconds(),true);
	xmlhttpwachat2.send();
}

function chat_indit_kilep() {
	clearTimeout(wachatre_ping);
	/* Ie -.- */
	wachataktiv = 1;
	if (wachatvege1 == 0) return false;
	wachatvege1 = 0;
	if (wachatbelepve == 1) {
		document.getElementById("uzimegjelenito").innerHTML = '';
		$("#wachatuzenet p").slideUp("slow",function () {
			clearTimeout(wachattime);
			xmlhttpwachat.abort();
			wachatvege2 = 1;
			wachatbelepve = 0;
			document.getElementById("chat_indit_kilep_button").value = "Belépés a chatbe";
			wachatajax2 ('kilep=1',function() {
				wachatping (-2);
				wachatvege1 = 1;
			});
		});
	}
	else {
		$('#wachatuzenet p').slideDown('slow',function () {
			/* Ie -.- */
			wachataktiv = 1;
			clearTimeout(wachattime);
			xmlhttpwachat.abort();
			wachatvege2 = 1;
			wachatbelepve = 1;
			document.getElementById('chat_indit_kilep_button').value = 'Kilépés a chatből';
			document.getElementById('wachatuzi').focus();
			wachatvege1 = 1;
			wachatping(0);
		});
	}
}

var hangbe = new Image;
hangbe.src = '/wachat/hangbe.png';
var hangki = new Image;
hangki.src = '/wachat/hangki.png';
function hangbk () {
	wachataktiv = 1;
	if (document.getElementById('hangbeki').src == hangki.src) {
		document.getElementById('hangbeki').src = hangbe.src;
	}
	else {
		document.getElementById('hangbeki').src = hangki.src;
	}
}

var wachatvege2 = 1;
function wachatreping (uszam) {
	wachatvege2 = 1;
	wachatping (uszam);
}
function wachatping (uziszam) {
	if(isNaN(parseInt(uziszam))) return false;
	if (uziszam > -1 && wachatbelepve == 0) return false;
	if (wachatvege2 == 0) return false;
	wachatvege2 = 0;
	clearTimeout(wachattime);
	// Ha elakadna a függvény, akkor újrahívjuk
	clearTimeout(wachatre_ping);
	wachatre_ping = setTimeout('wachatreping('+uziszam+')',35000); // Ping futási ideje legalább 24 másodperc + az újrahívás 3 vagy 5 sec
	wachatajax1 ("uziszam="+uziszam, function(data) {
		wachatvege2 = 1;
		if (uziszam > -1 && wachatbelepve == 0) return false;
		// Nem történt semmi érdekes?
		if (data == 0) {
			if (uziszam < 0) {
				wachattime = setTimeout ('wachatping(-1);',5000);
			}
			else {
				wachattime = setTimeout ('wachatping('+uziszam+');',2000);
			}
			return true;
		}
		// nincs is bejelentkezve a felhasználó
		else if (data == -1) {
			clearTimeout(wachatre_ping);
			return false;
		}
		// Ha kijelentkezés miatt -2-vel tértünk vissza, akkor úgy folytatjuk a pingelést mintha ki lettünk volna jelentkezve alapból
		else if (data == -2) {
			wachattime = setTimeout ('wachatping(-1);', 5000);
			return true;
		}
		// Van változás
		else {
			// Onlineok
			var seged = data.indexOf(';;;ONL;;;');
			if (seged != -1) {
				var elvalaszto = data.indexOf(';;;', seged+9);
				var onlineok = data.substr(seged+9,elvalaszto-seged-9);
				if (onlineok.length == 0) onlineok = 'Jelenleg nincs online<br />felhasználó a chaten.';
				else onlineok = onlineok.substr(0,onlineok.length-2)+' elérhető';
				document.getElementById('wachatonl').innerHTML = onlineok;
			}
			// Üzenetek
			var seged = data.indexOf(';;;UZIK;;;');
			if (seged != -1) {
				var seged2 = data.indexOf(';;;LAST;;;');
				if (seged2 == -1) return false;
				var elvalaszto = data.indexOf(';;;', seged+10);
				if (wachataktiv == 0 || wachatmeret == 'kis') document.title = 'Új chat üzenet érkezett!';
				var gorget = 0;
				var uzimegjmag = $('#uzimegjelenito').height();
				if ($('#uzimegjelenito').scrollTop() == $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9) {
					gorget = 1;
				}
				document.getElementById('uzimegjelenito').innerHTML += data.substr(seged+10,elvalaszto-seged-10);
				if (uziszam == 0) {
					uzimegjmag = $('#uzimegjelenito').height();
					$('#uzimegjelenito').attr({ scrollTop: $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9 });
				}
				else if (gorget == 1) {
					$('#uzimegjelenito').animate({ scrollTop: $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9 }, 'fast');
				}
				// Last
				var elvalaszto2 = data.indexOf(';;;', seged2+10);
				var utso = data.substr(seged2+10,elvalaszto2-seged2-10);
				// BEEP
				var seged3 = data.indexOf(';;;BEEP;;;');
				if (seged3 != -1) {
					niftyplayer('beep').play();
				}
			}
			if (uziszam < 0) {
				wachattime = setTimeout ('wachatping(-1);', 5000);
			}
			else {
				wachattime = setTimeout ('wachatping('+utso+');',3000);
			}
		}
	});
}

//
var wachatdisable = 0;
function wachatwait () {
	wachatdisable = 0;
}
function wachatujuzi () {
	/* IE miatt: */
	wachataktiv = 1;
	var uzenet = document.getElementById('wachatuzi').value;
	if (uzenet.length == 0 || wachatdisable == 1) return false;
	document.getElementById('wachatuzi').disabled = true;
	wachatdisable = 1;
	uzenet = uzenet.replace(/&/g,'[[[amp]]]');
	uzenet = uzenet.replace(/;/g,'[[[_]]]');
	uzenet = uzenet.replace(/\+/g,'[[[meg]]]');
	wachatajax2 ('uzenet='+encodeURI(uzenet), function(dataa) {
		setTimeout ('wachatwait()',1500);
		document.getElementById('wachatuzi').disabled = false;
		if (dataa != 0) {
			var segged = dataa.indexOf(';;;UZI;;;');
			if (segged != -1) {
				var elvalasztoo = dataa.indexOf(';;;', segged+9);
				var gorget = 0;
				var uzimegjmag = $('#uzimegjelenito').height();
				if ($('#uzimegjelenito').scrollTop() == $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9) {
					gorget = 1;
				}
				document.getElementById('uzimegjelenito').innerHTML += dataa.substr(segged+9,elvalasztoo-segged-9);
				if (gorget == 1) {
					$('#uzimegjelenito').animate({ scrollTop: $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9 }, 'fast', function () {
						// Továbbgörgetés, ha új üzi is érkezett közben
						var uzimegjmag = $('#uzimegjelenito').height();
						if ($('#uzimegjelenito').scrollTop() != $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9) {
							$('#uzimegjelenito').animate({ scrollTop: $('#uzimegjelenito').attr("scrollHeight")-uzimegjmag-9 }, 'fast');
						}
					});
				}
				// BEEP
				var segged2 = dataa.indexOf(';;;BEEP;;;');
				if (segged2 != -1) {
					niftyplayer('beep').play();
				}
			}
			document.getElementById('wachatuzi').value = '';
			document.getElementById('wachatuzi').focus();
		}
		return false;
	});
}

function chat_kis_nagy_meret () {
	if (wachatmeret == 'nagy') {
		$('#chathatter').css('height',0);
		document.getElementById('chat_kis_nagy_meret_felirat').innerHTML = 'Nagy méret';
		document.cookie='wachatmeret=kis';
		wachatmeret = 'kis';
		return true;
	}
	else {
		$('#chathatter').css('height','auto');
		document.getElementById('chat_kis_nagy_meret_felirat').innerHTML = 'Kis méret';
		document.cookie='wachatmeret=nagy';
		wachatmeret = 'nagy';
		return true;
	}
}


//Lejátszónak
var FlashHelper =
{
	movieIsLoaded : function (theMovie)
	{
		if (typeof(theMovie) != "undefined") return theMovie.PercentLoaded() == 100;
		else return false;
  },

	getMovie : function (movieName)
	{
  	if (navigator.appName.indexOf ("Microsoft") !=-1) return window[movieName];
	  else return document[movieName];
	}
};

function niftyplayer(name)
{
	this.obj = FlashHelper.getMovie(name);

	if (!FlashHelper.movieIsLoaded(this.obj)) return;

	this.play = function () {
		this.obj.TCallLabel('/','play');
	};

	this.load = function (url) {
		this.obj.SetVariable('currentSong', url);
		this.obj.TCallLabel('/','load');
	};

	this.getState = function () {
		var ps = this.obj.GetVariable('playingState');
		var ls = this.obj.GetVariable('loadingState');

		// returns
		//   'empty' if no file is loaded
		//   'loading' if file is loading
		//   'playing' if user has pressed play AND file has loaded
		//   'stopped' if not empty and file is stopped
		//   'paused' if file is paused
		//   'finished' if file has finished playing
		//   'error' if an error occurred
		if (ps == 'playing')
			if (ls == 'loaded') return ps;
			else return ls;

		if (ps == 'stopped')
			if (ls == 'empty') return ls;
			if (ls == 'error') return ls;
			else return ps;

		return ps;

	};

	this.getPlayingState = function () {
		// returns 'playing', 'paused', 'stopped' or 'finished'
		return this.obj.GetVariable('playingState');
	};

	this.getLoadingState = function () {
		// returns 'empty', 'loading', 'loaded' or 'error'
		return this.obj.GetVariable('loadingState');
	};

	this.registerEvent = function (eventName, action) {
		// eventName is a string with one of the following values: onPlay, onStop, onPause, onError, onSongOver, onBufferingComplete, onBufferingStarted
		// action is a string with the javascript code to run.
		//
		// example: niftyplayer('niftyPlayer1').registerEvent('onPlay', 'alert("playing!")');

		this.obj.SetVariable(eventName, action);
	};

	return this;
}
