var fController = new FlirtController();

$(document).ready(function(){fController.init()});


function FlirtController()
{
	this.ClassID = 'FlirtController';
	this.FormOpen = false;
	
	this.MessageWaiting = false;
	this.StatusUpdating = false;
	this.StatusUpdate   = false;
	this.lastStatus     = 0;
	this.lowestID       = 0;

	this.loadedAll = false;

	this.addConvTO = null;

	this.InitialContent = '';
	
	this.FormUpdater = null;

	this.SendResetter = null;

	this.statusEntryList = new Array();

	this.onComplete = function()
	{
		this.MessageWaiting = false;
	}

	// Anzeige des Formulars zum Versand einer Flirtnachricht


	this.ShowForm = function()
	{
		if (this.InitialContent == '')
		{
			this.InitialContent=$('#flirt').html();
		}
		else
		{
			$('#flirt').html(this.InitialContent);
		}
		
		if (!this.FormOpen)
		{
			this.FormOpen = true;
			this.FormUpdater = window.setInterval(UpdateFlirtForm, 250);
			$('#flirt').slideDown();
		}
		else
		{
			window.clearInterval(this.FormUpdater);
			this.FormOpen = false;
			$('#flirt').slideUp();
		}
	}
	
	// Versand einer Nachricht aus dem Profilformular heraus
	
	this.Send = function()
	{
		if(!this.MessageWaiting)
		{
			var MessageContent=$('#flirtmessage').val();
	
			if (MessageContent.length > 0)
			{
				var Content = $('#flirtform').serialize();
				
				$('#flirtmessagesubmit').val('Senden...');
				$('#flirtmessagesubmit').attr('disabled', 'disabled');
			
				window.clearInterval(this.FormUpdater);
				$('#flirt').load('ajax.php?'+Content);
			}
			else
			{
				alert ('Bitte gib eine Nachricht ein');
			}
		}
		else
		{
			alert ('Die Nachricht wird im Moment versendet.');
		}
	
		return (false);
	}

	// Initalisieren des automatischen Updates - 10 Sekunden für den Anfang
	
	this.init = function()
	{
		window.setInterval(function(){fController.updateConversation()}, 18000);
		fController.updateConversation();
		
		// Schreiben der Klassen zur Anzeige der Bilder
		
		if (typeof(window['idSender']) != 'undefined')
		{
			var SenderStyle="<style type='text/css'> .img"+idSender+" {background-repeat:no-repeat; display:block; float:left; width:50px; height:50px; background-image:url(http://www.rubensfan.de/script/getProfilePreview.php?user="+idSender+"&w=50&h=50)} </style>";
			var ReceiverStyle="<style type='text/css'> .img"+convReceiver+" {background-repeat:no-repeat; display:block; float:left; width:50px; height:50px; background-image:url(http://www.rubensfan.de/script/getProfilePreview.php?user="+convReceiver+"&w=50&h=50)} </style>";
			
			$(SenderStyle).appendTo("head");
			$(ReceiverStyle).appendTo("head");
		}
		
	}
	
	this.loadAll = function()
	{
		$('#conversationcontrol').hide();
		
		if (!this.loadedAll)
		{
			if (typeof(window['convReceiver']) !="undefined")
			{
				this.loadedAll=true;
				var postObj=new Object();
						postObj.sender=convSender;
						postObj.receiver=convReceiver;
						postObj.lastStatus=this.lowestID;
						postObj.updatetype='older';
				
				$.post('flirt/'+convReceiver+'/update', postObj, function (data){ fController.updatedConversation(data);});			
			}
		}
	}
	
	// Eine Updatefunktion, wird die noch aufgerufen?
	
	this.updateFlirtContainer = function()
	{
		if ($('#flirtcontainer').length != 0)
		{
			$('#flirtcontainer').load('ajax.php', {module:'FlirtMessageList'});
		}
	}
	
	// Neue Funtionen für neue Flirts.... wer mag, darf gerne aufräumen ;-)
	
	
	// Versand einer Nachricht im Nachrichtenformular
	
	
	this.SendConversation = function()  // Versenden eines Eintrags in der Konversationsliste
	{
		if(!this.MessageWaiting)
		{
			this.SendResetter = window.setTimeout(ClearFlirtForm, 5000);
		
			this.MessageWaiting = true;
			
			$.post('flirt/sendReply', $("#conversationform").serialize(), function (data){ fController.SentConversation(data);}).error(function(){
				fController.MessageWaiting=false;
				window.clearTimeout(fController.SendResetter);
			});			
		}
		else
		{
			alert ('Die Nachricht wird im Moment versendet.');
		}
	
		return false;
	}	


	// Callbacke, wenn die Nachricht versendet wurde
	
	this.SentConversation = function(data) // Der Eintrag in der Konversationsliste wurde versendet.
	{
		window.clearTimeout(fController.SendResetter);
		this.MessageWaiting = false;
		
		$('#conversationform_message').val('');
	
		eval(data);
		
		if (resultData.result=='OK')
		{
			this.updateConversation();
		}
	}
	
	
	// Abfrage, ob neue Flirts gekommen sind...
	
	this.updateConversation = function()
	{
		if (this.StatusUpdating) // Wenn Update läuft warten bis fertig und dann neues starten
		{
			this.StatusUpdate=true;
		}
		else
		{
			if (typeof(window['convReceiver']) !="undefined")
			{
				var ConvDate = new Object();
		
				this.StatusUpdating=true;
				
				var postObj=new Object();
						postObj.sender=convSender;
						postObj.receiver=convReceiver;
						postObj.lastStatus=this.lastStatus;
				
				$.post('flirt/'+convReceiver+'/update', postObj, function (data){ fController.updatedConversation(data);});			
			}
			else if ($('#conversationOV').length > 0)
			{
				this.StatusUpdating=true;
				var postObj=new Object();
				$.post('flirt/updatestatus/', postObj, function (data){ fController.updatedStatus(data);});			
			}
		}
	}
	
	// Callback, wenn Daten empfangen wurden
	
	this.updatedConversation = function(data)
	{
		$('#loader').hide();
	
		this.StatusUpdating=false;
		
		if (data != '')
		{
			eval(data);
		}
		
		if (this.StatusUpdate)
		{
			this.StatusUpdate=false;
			this.updateConversation();
		}
	}
	
	
	// Auswerten der Status-Liste
	
	this.updatedStatus = function(data)
	{
		this.StatusUpdating = false;

		$('#conversationOV').html(data);
	}
	
	this.statusEntry = function(senderID,content)
	{
		this.statusEntryList.push(senderID);
	}
	
	// Hinzufügen eines Conversation Eintrags
	
	this.addConv = function(Location,ConvID,ConvMsg,isNew)
	{
		if (Location == 'top')
		{
			$('#conversationlist').prepend(ConvMsg);

			if (this.lastStatus != 0)
			{
				$(('#conv_'+ConvID)).slideDown("slow");
			}
		
			$(('#conv_'+ConvID)).fadeIn("slow");


		}
		else if (Location == 'bottom')
		{
			$('#conversationlist').append(ConvMsg);
		}
	}
	
	// Setzen der Conversation ID
	
	this.setConvID = function (ConvID)
	{
		this.lastStatus=ConvID;
		
		if (this.addConvTO != null)
		{
			window.clearTimeout(this.addConvTO);
		}
		
		if ($('.isnew').length > 0)
		{
			this.addConvTO=window.setTimeout("fController.hideNew()",10000);		
		}
	}

	// Entfernen der "Neu" Markierungen

	this.hideNew = function(data)
	{
		$('.isnew').removeClass("isnew","slow");
	}


	this.setAllOffset = function (lID)
	{
		this.lowestID=lID;
		$('#conversationcontrol').show();
	}
}

function UpdateFlirtForm()
{
	if ($('#flirtmessage'))
	{
		var Content = $('#flirtmessage').val();
		$('#flirtleftchars').html('('+(255-Content.length)+' Zeichen Ã¼brig)');
	}
}

function ClearFlirtForm()
{
	alert ('Der Flirt konnte leider nicht gesendet werden, bitte klick erneut auf "Senden"');
	fController.MessageWaiting=false;

	var msgObj=new Object();
	msgObj.text='Fehler: Nachricht konnte nicht versendet werden';
	msgObj.appCodeName = navigator.appCodeName;
	msgObj.appName = navigator.appName;
	msgObj.appVersion = navigator.appVersion;
	msgObj.cookieEnabled = navigator.cookieEnable;
	msgObj.language = navigator.language;
	msgObj.platform = navigator.platform;
	msgObj.userAgent = navigator.userAgent;
		
	//jQuery.post('sendMail.php',msgObj);
}

function updateFlirtContainer()
{
	fController.updateConversation();
}


// Begrenzer für Zeilenlänge festlegen. Maximal 255 Zeichen sind erlaubt.

jQuery(document).ready(function(){
	
	if ($('#conversationform_message').length > 0)
	{
		this.autoUpdater=window.setInterval(function(){
			
			cLen = $('#conversationform_message').val().length;
			cLeft = 255-cLen;

			if (cLeft < 0)
			{
				$('#conversationform_message').val($('#conversationform_message').val().substr(0,255));
				cLeft = 0;
			}

			$('#charsleft').html(cLeft);
	
		}, 100);
	}

	
	// Automatische Statusanzeige, wenn etwas passiert ist....
	
	$('#conversationlog').ajaxComplete(function(e, xhr, settings){
		
		var sChunks = settings.url.split('/');
		var lastOffset=sChunks.length-1;
		
		if (sChunks[lastOffset] == 'savenote')
		{
			if (typeof(this.closeTO) != undefined)
			{
				window.clearTimeout(this.closeTO);
				$(this).slideUp("slow").text(xhr.responseText).slideDown("slow");
			}
			else
			{
				$(this).text(xhr.responseText);
				$(this).slideDown("slow");
			}
			
			this.closeTO=window.setTimeout(function(){
				$('#conversationlog').slideUp("slow");
			}, 7500);
		}
	})

	// Globaler Error Event Handler 

	/*
	$(document).ajaxError(function(e, jqxhr, settings, exception){
		
		
		var MsgText = '';
		
		MsgText+=exception.name+"\n";
		MsgText+=exception.message+"\n"+"\n";

		
		MsgText+='e:'+"\n";
		for (var eText in e)
			MsgText+= eText+': '+e[eText]+"\n";

		MsgText+="\n\n";

		MsgText+='jqxhr:'+"\n";
		for (var eText in jqxhr)
			MsgText+= eText+': '+jqxhr[eText]+"\n";
		
		MsgText+="\n\n";


		MsgText+='settings:'+"\n";
		for (var eText in settings)
			MsgText+= eText+': '+settings[eText]+"\n";


		MsgText+="\n\n";

		MsgText+='exception:'+"\n";
		for (var eText in exception)
			MsgText+= eText+': '+exception[eText]+"\n";

		MsgText+="\n\n";
		
		var msgObj=new Object();
		msgObj.text=MsgText;
		msgObj.appCodeName = navigator.appCodeName;
		msgObj.appName = navigator.appName;
		msgObj.appVersion = navigator.appVersion;
		msgObj.cookieEnabled = navigator.cookieEnable;
		msgObj.language = navigator.language;
		msgObj.platform = navigator.platform;
		msgObj.userAgent = navigator.userAgent;
		
		if (settings.url != 'sendMail.php' && settings.url != 'userstatus/update')
		{
			alert ('Leider ist ein Fehler aufgetreten, bitte versuche es nochmal'+"\n");
			jQuery.post('sendMail.php',msgObj);
		}
	});*/

});


