
// image class
function img(src, alt, caption)
{
	this.src = src;
	this.alt = alt;
	this.caption = caption;
}

jQuery.fn.bannerrotator = function(xmlFile, pSettings)
{
	var banner = this;
	var settings = jQuery.extend({
		fade: 1000,
		timeout: 5000,
		imgSrcs: [],
		frontFrame: null,
		backFrame: null,
		curSrc: 0,
		cookieNameIndex: 'index_' + banner.attr("id"),
		cookieNamePath: 'path_' + banner.attr("id")
	}, pSettings);

	fadeSpeed = settings.fade;
	imageTimeout = settings.timeout;
	
	
	
	
	// load image sources
	jQuery.get(xmlFile, {}, function(xml){
	    var i = 0;
	    
		// iterate xml
		jQuery(xml).find("image").each(function()
		{
			var node = jQuery(this);
			// append image to array
			settings.imgSrcs[i] = new img(node.attr('src'), node.attr('alt'), node.text() );
			i++;
		});
		
		

		// make sure there are at least 2 elements
		if (settings.imgSrcs.length < 2) return;

		// only create element if it's not already there
		if (banner.length == 1) banner.append(document.createElement('img'));

		// get array of img elements to swap
		var imgs = banner.find("img");
		settings.frontFrame = imgs[1];
		settings.backFrame = imgs[0];
		
		jQuery(settings.frontFrame).css("display", "none");//test
		
		startIndex = 0;
		
		cookieIndex = getCookie(settings.cookieNameIndex)
		if(cookieIndex != "")
		{
		  startIndex = parseInt(cookieIndex);
		}
		
		settings.curSrc = startIndex % settings.imgSrcs.length;
		//alert(settings.curSrc);
		
		//set initial image and caption - TODO: make it on server side
		banner.children(".caption").html(settings.imgSrcs[settings.curSrc].caption);
		settings.backFrame.src = settings.imgSrcs[settings.curSrc].src;
	    settings.backFrame.alt = settings.imgSrcs[settings.curSrc].alt;
	    
	    //alert(settings.imgSrcs[settings.curSrc].src);

		// start toggling!
		toggleBanner(banner, settings);
	},"xml");
};
	
function toggleBanner(banner, settings)
{
    //remember current Index in cookie
    setCookie(settings.cookieNameIndex, settings.curSrc);
    //remember path int cookie
    setCookie(settings.cookieNamePath, settings.imgSrcs[settings.curSrc].src);
    
	// move to next image
	settings.curSrc++;
	if (settings.curSrc >= settings.imgSrcs.length) settings.curSrc = 0;

	// swap frames
	var temp = settings.frontFrame;
	settings.frontFrame = settings.backFrame;
	settings.backFrame = temp;
		
	// set current image to hide next
	settings.frontFrame.className = "";
	settings.frontFrame.removeAttribute('style');

	// prepare to swap image
	settings.backFrame.className = "show";
	settings.backFrame.src = settings.imgSrcs[settings.curSrc].src;
	settings.backFrame.alt = settings.imgSrcs[settings.curSrc].alt;
	
	// fade in next image and repeat
	
	setTimeout( function() {
	      
	      banner.children(".caption").slideUp('fast', function(){
	         jQuery(settings.backFrame).fadeIn(settings.fade, function(){ 
	         	 banner.children(".caption").html(settings.imgSrcs[settings.curSrc].caption);
	             banner.children(".caption").slideDown('fast'); 
	             toggleBanner(banner, settings);
	         });
	      });
   }, ++(settings.timeout));
}


function getCookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    if (offset != -1) { 
      offset += search.length
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}

function setCookie(name, val)
{
   document.cookie = name+"="+val;
}

