/**
 * @author richard
 * Futher functions are used for the rotating banner principle
 */

function loadBanners() {
   var obj = new BannerManager();
	
	// Put banners into BannerManager
	for (var n = 0; n < bannerData.length; n++) {
		var src = 'beheer/viewfile.php?id=' + bannerData[n]['id'];
		
		var img = new Image();
		img.src = src;
		
		obj.addBanner(
		bannerData[n]['id'],
		bannerData[n]['type'],
		src,
		bannerData[n]['filename'],
		'543', '250',
		bannerData[n]['filename']
		//DEFAULT width = 543 , height = 250
		//id, type, source, name, width, height, link
		);
	}
	obj.startSlide('bannerHeader');
}


// Class BannerManager - manages rotation, views, clicks, etc.
function BannerManager()
{
   this.banners = new Array();
   this.slideElements = new Array();
}

// BannerManager::timeout - miliseconds between slide items
BannerManager.prototype.timeout = 6000;

// BannerManager::addBanner - add banner, type supported: 'image', 'flash'
BannerManager.prototype.addBanner = function(id, type, source, name, width, height, link)
{
	//DEFAULT width = 543 , height = 250
	
   // check type
   if (type != 'image' && type != 'flash' && type != 'image/pjpeg')
      alert('BannerManager warning - type supplied with add banner is invalid');
   
   // new item
   this.banners[this.banners.length] = 
   {
      "id":       id,
      "type":     type,
      "source":   source,
      "link":     link,
      "name":     name,
      "width":    width,
      "height":   height,
      "view":     false
   };
}

// BannerManager::showBanner - show a banner from the array index in a container with id element
BannerManager.prototype.showBanner = function(element, index)
{
   // check index
   if (index < 0 || index >= this.banners.length)
      alert('BannerManager warning - index supplied with show banner is invalid');
   
   // add first time view
   //if (this.banners[index].view == false)
   //   new Ajax.Request('public/banner.php?type=view&id=' + this.banners[index].id);
   
   // check view
   this.banners[index].view = true;
   
   // switch type
   switch(this.banners[index].type)
   {
      case 'image/pjpeg':
         // get container
         var container = document.getElementById(element);
         container.innerHTML = '';
         
         // create image tag
         var img     = document.createElement('img');
         img.src     = this.banners[index]['source'];
         img.alt     = this.banners[index]['name'];
         img.width   = this.banners[index]['width'];
         img.height  = this.banners[index]['height'];
         
//         if (this.banners[index]['link'] != false && this.banners[index]['link'].length > 7)
//         {
//            // create link tag
//            var a    = document.createElement('a');
//            a.href      = this.banners[index]['link'];
//            a.title     = this.banners[index]['name'];
//            a.target = '_blank';
//            //a.onclick = clickBanner, this.banners[index].id;
//            a.appendChild(img);
//            
//            // add to container
//            container.appendChild(a);
//         }
//         else
            // add to container
            container.appendChild(img);
         
         break;
      
      case 'flash':
         // get object
         var object = this.banners[index];
         
         // create flash object
         var swf = new SWFObject(object['source'], object['name'], object['width'], object['height'], "8", "#ffffff");
         swf.write(element);
         
         break;
      
      default:
         alert('BannerManager warning - type supplied with show banner is invalid');
         break;
   }
}

// BannerManager::startSlide - start banner slide
BannerManager.prototype.startSlide = function(element)
{
   if (typeof(element) != 'string' || element == null)
      alert('BannerManager warning - element id string supplied with slide is invalid');
   else
   {
      // record element
      var index = this.slideElements.length;
      this.slideElements[index] = element;
      
      // no banners
      if (this.banners.length == 0)
         alert('BannerManager warning - no banners added');
      
      // one banner
      else if (this.banners.length == 1)
         this.showBanner(this.slideElements[index], 0);
      
      // cycle banners from random start point
      else
      {
         var startIndex = Math.floor(Math.random() * this.banners.length);
         this.showBanner(this.slideElements[index], startIndex);
         
         var object = this;
         setTimeout(function(){ showNext(object, index, startIndex); }, this.timeout);
      }
   }
}

// BannerManager::showNext - show next banner for slide
function showNext(object, slideIndex, bannerIndex)
{
   // next index
   bannerIndex++;
   if (bannerIndex >= object.banners.length)
      bannerIndex = 0;
   
   // show and timeout
   object.showBanner(object.slideElements[slideIndex], bannerIndex);
   setTimeout(function(){ showNext(object, slideIndex, bannerIndex); }, object.timeout);
}
/*
// clickBanner - register banner click
function clickBanner(id)
{
   new Ajax.Request('public/banner.php?type=click&id='+id);
}
*/
