/**
 * @author Serve it V.O.F.
 */
var cNieuwsflits = function(strPZID) {
	this.strPZID = strPZID;
	
	this.zmod;
	this.blnIsLoading = false;
	this.strCurrentURL;
	this.strLocalBaseURI;
	
	this.intFotoWidth = 516;
	this.intFotoAnimatieSpeed = 1000;
	this.strFotoAnimatieEasing = "swing";
	
	this.timer;
	this.intTimerInterval = 5000;

	/**
	 * Achterhaal waarde van parameter uit URL
	 * 
	 * @access 	private
	 * @param 	{String}	URL
	 * @param 	{String}  Parameter
	 * @param 	{String}	Waarde, null indien niet gevonden
	 */
	this.getParam = function(strHref, strParam) {
		var intPos = strHref.indexOf("?");
		if (intPos == -1) return null;
		
		// Ontleed parameters
		var arrParams = strHref.substr(intPos + 1).split("&");
		
		// Loop alle parameters langs
		var strWaarde = null;
		for (var i = 0; i < arrParams.length; i++) {
			var arrParam = arrParams[i].split("=");
			if (arrParam.length == 2 && arrParam[0] == strParam) {
				strWaarde = arrParam[1];
				break;
			}
		}
		
		return strWaarde;
	}
	
	/**
	 * Preload afbeeldingen
	 * 
	 * @param {Array} URL's
	 */
	this.preloadImages = function(arrSrc) {
		for (var i = 0; i < arrSrc.length; i++)
			if (arrSrc[i].length > 0)
				$("<img>").attr("src", arrSrc[i])
	}
	
	/**
	 * Initaliseer module
	 */	
	this.init = function() {
		var $zmod = $("#zmod_nieuwsflits_" + this.strPZID);
		
		var _self = this;

		// Bind event clicks
		$("div.knop.vorige a", $zmod).click(function() {
			clearInterval(_self.timer);
			var intID = parseInt(_self.getParam(this.href, "nfid"), 10);
			if (!isNaN(intID)) _self.toonNieuwsflits.call(_self, intID, false);
			return false;
		});

		$("div.knop.volgende a", $zmod).click(function() {
			clearInterval(_self.timer);
			var intID = parseInt(_self.getParam(this.href, "nfid"), 10);
			if (!isNaN(intID)) _self.toonNieuwsflits.call(_self, intID, true);
			return false;
		});
		
		// Doe niks (return false) indien lege (#) link
		$("div.nieuwsflits_foto a", $zmod).click(function() {
			return (this.href.substr(-1, 1) != "#");
		});
		
		// Start timer
		this.timer = setTimeout(function() {
			_self.autoNext.call(_self);
		}, this.intTimerInterval);
	}
	
	/**
	 * Wordt aangeroepen door timer
	 * 
	 * Zal zichzelf weer aanroepen
	 */
	this.autoNext = function() {
		var _self = this;
		
		// Toon volgende nieuwsflits
		var intID = parseInt(_self.getParam($("div.knop.volgende a", _self.$zmod).attr("href"), "nfid"), 10);
		if (!isNaN(intID)) {
			_self.toonNieuwsflits(intID, true, function() {				
				_self.timer = setTimeout(function() {
					_self.autoNext.call(_self);
				}, _self.intTimerInterval);
			})
		} 
	}
	
	/**
	 * Toon vorige of volgende nieuwsflits
	 * 
	 * @param {Integer} ID van nieuwsflits
	 * @param {Boolean} Volgende
	 * @param {Function} Callback
	 */
	this.toonNieuwsflits = function(intNieuwsflitsID, blnVolgende, fnOnComplete) {
		if (this.blnIsLoading) {
			if (typeof fnOnComplete == "function") fnOnComplete();
			return;
		}
		
		this.blnIsLoading = true;

		var _self = this;
		
		$.ajax({
			type: "POST",
			url: this.strCurrentURL + "?nfid=" + intNieuwsflitsID,
			data: {
				method: "zmod_nieuwsflits_geefAndereNieuwsflits"
				//media_id: intNieuwsflitsID
			},
			dataType: "xml",
			success: function(data, textStatus) {
				var objNieuwsflits = {
					tekst: $("nieuwsflits > tekst", data).text(),
					foto: $("nieuwsflits > foto", data).text(),
					url: $("nieuwsflits > url", data).text()
				};
				if (!objNieuwsflits.foto) objNieuwsflits.foto = _self.strLocalBaseURI + "images/blank.gif";
				if (!objNieuwsflits.url) objNieuwsflits.url = "#";
				
				var intVorigeID = parseInt($("vorige > id", data).text(), 10);
				var intVolgendeID = parseInt($("volgende > id", data).text(), 10);
				
				var strVorigeFoto = $("vorige > foto", data).text();
				var strVolgendeFoto = $("volgende > foto", data).text();
				
				// Preload afbeeldingen
				_self.preloadImages([strVorigeFoto, strVolgendeFoto]);				
				
				// Pas knoppen aan
				if (!isNaN(intVorigeID)) {
					$("div.knop.vorige").show();
					$("div.knop.vorige a", _self.$zmod).attr("href", _self.strCurrentURL + "?nfid=" + intVorigeID);
				}
				else {
					$("div.knop.vorige", _self.$zmod).hide();
					$("div.knop.vorige a", _self.$zmod).attr("href", "#");
				}
					
				if (!isNaN(intVolgendeID)) {
					$("div.knop.volgende").show();
					$("div.knop.volgende a", _self.$zmod).attr("href", _self.strCurrentURL + "?nfid=" + intVolgendeID);
				}
				else {
					$("div.knop.volgende", _self.$zmod).hide();
					$("div.knop.volgende a", _self.$zmod).attr("href", "#");
				}
				
				// Pas tekst aan
				$("div.nieuwsflits_tekst", _self.$zmod).html(objNieuwsflits.tekst);

				// Pas URL aan
				var $a = $("div.nieuwsflits_foto a", _self.$zmod)
				$a.attr("href", objNieuwsflits.url);
				$a.toggleClass("emptylink", objNieuwsflits.url == "#");
				
				// Pas foto aan				
				var $imgOrg = $("div.nieuwsflits_foto img", _self.$zmod);
				$imgOrg
					.css({
						"float": blnVolgende ? "left" : "right"
					})
					.animate({
						width: 0
					}, _self.intFotoAnimatieSpeed, _self.strFotoAnimatieEasing, function() {
						$(this).remove();
						_self.blnIsLoading = false;
						if (typeof fnOnComplete == "function") fnOnComplete();
					});

					
				// Foto toevoegen, met 0 breedte
				$("<img>")
					.attr("src", objNieuwsflits.foto)
					.css({
						"float": blnVolgende ? "right" : "left",
						"width": 0
					})
					.insertAfter($imgOrg)
					.animate({
						width: _self.intFotoWidth
					}, _self.intFotoAnimatieSpeed, _self.strFotoAnimatieEasing);
			}
		});
	}
}
