/**
* CCMS fade Background
* Gives a div a fading background whit connected images
*
* Depentent files, jQueryScripts.js, style.css, map ajaxRequests
*
* @SB
*/


(function($) {
	$.ccmsFadeBackground = {version: '0.2 BETA'};

	$.fn.ccmsFadeBackground = function(settings) {
		settings = jQuery.extend({
			animationSpeed: 1000, /* time */
			structuurid: 1,
			ajaxGetImagesScript: '/javascript/ajaxRequests/getImgUl.php',
			ajaxGetBreakStatusScript: '/javascript/ajaxRequests/getBreakStatus.php',
			ajaxSetBreakStatusScript: '/javascript/ajaxRequests/setBreakStatus.php',
			extraPostData: '',
			descriptionDiv: '', //div for the description of the image (alt text) (class).
			timeOut: 5000,
			showBreakOption: false,
			breakActiveHtml: '<a href="Javascript:void(0);" class="bActivLink" rel="0">start</a>',
			breakNotActiveHtml: '<a href="Javascript:void(0);" class="bNotActivLink" rel="1">pauzeer</a>',
			onComplete: function() {} // Function to run when the build of a viewer is completed
		}, settings);

		$.ccmsFadeBackground.cleanUp = function()	{
			if ($("div#imgHold").length > 0)	{
				$("body div#imgHold").remove();
			}
			if ($("div.imgAbsHolder").length > 0)	{
				$("div.imgAbsHolder").remove();
			}
		};

		var imgUlList = false;
		var exEl = $(this);

		//handle the images request
		//returns a
		$.ccmsFadeBackground.getImages = function(shOne)	{

			var extData = '';
			//extra data for request
			if (settings.extraPostData != '')	{
				var extData = '&extraData='+settings.extraPostData;
			}

			//make a request
			$.ajax({
				url: settings.ajaxGetImagesScript,
				type: "GET",
				data: 'wId='+ settings.structuurid + extData,
				dataType: "html",
				//cache: false,				
				complete: function(XMLHttpRequest, textStatus)	{
					var data = XMLHttpRequest.responseText;					
					if (data != '0')	{						
						$.ccmsFadeBackground.handleRecievedDate(data,shOne);
						if (typeof(settings.onComplete) == 'function') {
							$(this).bind("ccmsFadeBackgroundComplete", {state: "ready"}, settings.onComplete);
						}
						$(this).trigger("ccmsFadeBackgroundComplete");
					}																
				}
			});
		};

		$.ccmsFadeBackground.handleRecievedDate = function(ajaxData,shOne)	{
			//put the images in a array

			if ($("div#imgHold").length == 0)	{
				var holder = $('<div id="imgHold"/>').html(ajaxData);
				$("body").append(holder);
			}

			if ($("div.imgAbsHolder").length == 0)	{
				//create a holder after the element
				var imgShowHolder = $('<div class="imgAbsHolder"/>');
				exEl.append(imgShowHolder);
				//$("div#content").html(imgShowHolder);
			}

			$.ccmsFadeBackground.handleBackground(0,false,shOne);

		};

		$.ccmsFadeBackground.handleBackground = function(curImg,restart,shOne)	{

			//check
			if ($("div#imgHold img").length > 0)	{

				var totalImages = $("div#imgHold img").length;
				
				if (totalImages != curImg)	{
					
					var currentImgUrl = $("div#imgHold img:eq("+curImg+")").attr('src');
					var currentImgDesc = $("div#imgHold img:eq("+curImg+")").attr('alt');

					var curI = $("div#imgHold img:eq("+curImg+")").clone(true);
					var curBgImg = 'url('+ currentImgUrl.replace(/(\))/,'').replace(/(\()/,'') +')';

					curImg++;


					if (shOne != 'yes')	{

						//put the first img
						if (curImg == 1 && restart === false)	{
							$("div.imgAbsHolder").html(curI);
							if (settings.descriptionDiv != '' && $("div."+settings.descriptionDiv).length > 0)	{
								$("div."+settings.descriptionDiv).html(currentImgDesc);
							}
							window.setTimeout(function()	{
								$.ccmsFadeBackground.handleBackground(curImg,false)
							},settings.timeOut);
						}else	{
							if (curImg <= totalImages)	{
								//div background src curI image
								$("div.imgAbsHolder").css('backgroundImage', curBgImg);
								$("div.imgAbsHolder img").fadeOut(settings.animationSpeed, function()	{
									$("div.imgAbsHolder").html(curI);
									if (settings.descriptionDiv != '' && $("div."+settings.descriptionDiv).length > 0)	{
										$("div."+settings.descriptionDiv).html(currentImgDesc);
									}
									//$("div.imgAbsHolder img").hide();
	//								$("div.imgAbsHolder img").fadeIn(settings.animationSpeed, function()	{
										window.setTimeout(function()	{
											$.ccmsFadeBackground.handleBackground(curImg,false)
										},settings.timeOut);
	//								});
								})
							}else	{
								//$.ccmsFadeBackground.stop();
								$.ccmsFadeBackground.handleBackground(0,true);
							}
						}

					}else	{
						$("div.imgAbsHolder").html(curI);
						if (settings.descriptionDiv != '' && $("div."+settings.descriptionDiv).length > 0)	{
							$("div."+settings.descriptionDiv).html(currentImgDesc);
						}
					}
				
				}else	{
					$.ccmsFadeBackground.handleBackground(0,true);
				}		

			}
		};


		$.ccmsFadeBackground.setBreakStatus = function(setState)	{
			$.ajax({
				url: settings.ajaxSetBreakStatusScript,
				type: "GET",
				data: 'st='+ setState
			});
			$.ccmsFadeBackground.handleBreakOption('yes');
		};


		$.ccmsFadeBackground.handleBreakOption = function(onlyShow)	{
			//add a button
			if ($("div.breakHolder").length == 0)	{
				var breakHolder = $('<div class="breakHolder"/>');
				exEl.append(breakHolder);
			}
			//get the status for the button text
			$.ajax({
				url: settings.ajaxGetBreakStatusScript,
				dataType: "html",
				//cache: false,
				success: function(responseHtml) {


					if (onlyShow == 'yes')	{
						if (responseHtml == '0')	{
							$("div.breakHolder").html(settings.breakNotActiveHtml);
						}else	{
							$("div.breakHolder").html(settings.breakActiveHtml);
						}
					}else	{

						if (responseHtml == '0')	{
							$("div.breakHolder").html(settings.breakNotActiveHtml);
							$.ccmsFadeBackground.getImages();
						}else	{
							$("div.breakHolder").html(settings.breakActiveHtml);
							$.ccmsFadeBackground.getImages('yes');
							if ($("div#imgHold").length > 0)	{
								$("body div#imgHold").remove();
							}
						}
					}

					$("div.breakHolder a").click(function()	{
						var setState = $(this).attr('rel');
						//change the state
						$.ccmsFadeBackground.setBreakStatus(setState);
						if (setState == '0')	{
							//$.ccmsFadeBackground.handleBackground(0,true);
							$.ccmsFadeBackground.getImages();
						}else	{
							if ($("div#imgHold").length > 0)	{
								$("body div#imgHold").remove();
							}
						}
					});
				}
			});



		};

		$.ccmsFadeBackground.start = function()	{
			//execute the actions
			//$.ccmsFadeBackground.cleanUp();
			//$.ccmsFadeBackground.getImages();
			//check for showing break button
			if (settings.showBreakOption)	{
				$.ccmsFadeBackground.handleBreakOption('no');
			}else	{
				$.ccmsFadeBackground.cleanUp();
				$.ccmsFadeBackground.getImages();
			}
		};

		$.ccmsFadeBackground.stop = function()	{
			return false;
		};

		$.ccmsFadeBackground.stopAndClean = function()	{
			$.ccmsFadeBackground.cleanUp();
			return false;
		};




		//start the function
		$.ccmsFadeBackground.start();


	};
})(jQuery);
