﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("nl.materieelmarkt.Online.Extensions");

nl.materieelmarkt.Online.Extensions.AdRotator = function(element) {
  nl.materieelmarkt.Online.Extensions.AdRotator.initializeBase(this, [element]);
  this._count=0;
  this._timer=null;
  this._links=null;
  this._buttons=null;
}

nl.materieelmarkt.Online.Extensions.AdRotator.prototype = {
  initialize: function() {
    nl.materieelmarkt.Online.Extensions.AdRotator.callBaseMethod(this, 'initialize');
    this._timerTickHandler=Function.createDelegate(this, this.timerTick);
    this._successHandler=Function.createDelegate(this, this._success);
    this._failedHandler=Function.createDelegate(this, this._failed);
    this.timerTick();        
    this._timer=window.setInterval(this._timerTickHandler, 25000);
  },
  dispose: function() {        
    window.clearInterval(this._timer);
    nl.materieelmarkt.Online.Extensions.AdRotator.callBaseMethod(this, 'dispose');
  },
  get_count: function() { return this._count; },
  set_count: function(value) { this._count=value; },
  _createHTML: nl$materieelmarkt$Online$Extensions$AdRotator$_createHTML,
  _success: nl$materieelmarkt$Online$Extensions$AdRotator$_success,
  _failed: function(r,c,m) {},
  timerTick: nl$materieelmarkt$Online$Extensions$AdRotator$timerTick
}

function nl$materieelmarkt$Online$Extensions$AdRotator$_createHTML() {
  this.get_element().style.display="none";
  var links=[];
  while (links.length<this._count) {
    links[links.length]="<a><img/></a>";
  }
  this.get_element().innerHTML=links.join("");
  this._links=this.get_element().getElementsByTagName("a");
  this._buttons=this.get_element().getElementsByTagName("img");
}

function nl$materieelmarkt$Online$Extensions$AdRotator$timerTick() {
  if (!this._links || this._links.length<this._count) {
    this._createHTML();
  }
  var banners=nl.materieelmarkt.Online.Services.Ads.GetBanners(this._count, this._successHandler, this._failedHandler);
}

function nl$materieelmarkt$Online$Extensions$AdRotator$_success(banners) {
  for (var i=0; i<this._count; i++) {
    this._links[i].href=banners[i].Url;
    this._links[i].className=String.format("banner-{0}", banners[i].BanIdt);
    this._links[i].onclick=nl$materieelmarkt$Online$Extensions$Clickout$clickout;
    this._buttons[i].alt=banners[i].Alt;
    this._buttons[i].src=banners[i].Img;
  }
  this.get_element().style.display="block";
}

nl.materieelmarkt.Online.Extensions.AdRotator.registerClass('nl.materieelmarkt.Online.Extensions.AdRotator', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
