﻿	function aindexOf(a,obj)
	{
	    for(var i=0; i<a.length; i++){
	        if(a[i]==obj){
	            return i;
	        }
	    }
	    return -1;
	}
	
	banners = {};
	
	banners.defaults = 
    {
    	flashStageURL : "/media/banners/bannerStageSmall.swf",
    	bannersURL : "/media/",
    	replace : '',
    	adredirectorURL : "/adredirector.wbp",
    	stageWidth : 486,
    	stageHeight : 200,
    	stageColor : "#fff",
	    stageVersion : "9",    		
    	stageParams :
    		[
    			{paramName: "wmode", paramValue : "opaque"},
    			{paramName: "allowScriptAccess", paramValue : "always"}
    		]    		
     };	
	
    banners.groups = [];
    banners.drawAllBanners = function()
    {
        try
        {
        	var i,j;
        	for (i = 0; i< banners.groups.length; i++)
        	{
        		var gr = banners.groups[i]
        		for (j = 0; j<gr.BannerStages.length; j++)
        		{
    				gr.BannerStages[j].drawBanner();
        		}
        	}
        }
        catch( err )
        {
        }
    }
    
	banners.getGroupById = function(Id)
    {
    	var i;
    	var groups = banners.groups;
    	   	
    	for (i=0; i<groups.length; i++)
    	{
    		if (groups[i].Id == Id) return groups[i];
    	}
    	return null;
    }    
    
	banners.addBannersGroup = function(options)
	{
	    var group = {};
	   
	    //group.settings = $.extend({},$.banners.defaults);
	    //group.settings = $.extend(group.settings,options);
	   
	    group.settings = banners.defaults;
	    group.Id = AdGroupId;
	    group.Count = AdBannerId.length;
	    group.AdBannerId = AdBannerId;
	    group.AdMediaId = AdMediaId;
	    group.AdMediaWidth = AdMediaWidth;
	    group.AdMediaHeight = AdMediaHeight;
	    group.AdText = AdText;
	    group.BannerStages = new Array();
	    group.SelectedInds = new Array();
	    group.settings.replace = options.replace;
	    group.FreeInds = new Array();
	   
	    for (var i=0; i<group.Count; i++)
	    {
	   	group.FreeInds.push(i);
	    }
	   
	    group.getStageById = function(Id)
		{
			var i;
			var stages = group.BannerStages;
	   	for (i=0; i<stages.length; i++)
			{
				if (stages[i].StageId == Id) return stages[i];
			}
			return null;
		}
		
	    group.getFreeBanner = function()
	    {
	   	//var i = group.FreeInds.pop();
	   	if (group.FreeInds.length == 0 ) return -1;
	   	var i = group.FreeInds[0];
	   	group.FreeInds.splice(0,1);	   	
	   	group.SelectedInds.push(i);
	   	return i;	
	    }
	   
	    group.registerBannerStage  = function(stage)
	    {
	   	var bstage = new Object();
			bstage.SelectedIndex = group.getFreeBanner();			
			bstage.StageId = stage.id;
			bstage.Group = group;
			
			bstage.drawStage = function()
			{
				var s = group.settings;
				var url = s.flashStageURL+"?stageId="+bstage.StageId+"&groupId="+group.Id;	
				var so = new SWFObject(url,bstage.StageId+"Flash",s.stageWidth,s.stageHeight,s.stageVersion,s.stageColor);
				for (i = 0; i<s.stageParams.length; i++)									
				{
					so.addParam( s.stageParams[i].paramName, s.stageParams[i].paramValue );
				}
				so.write(bstage.StageId);
			}
			
			bstage.drawBanner = function()
			{
				var s = group.settings;
				var index = bstage.SelectedIndex;
								
				var uri = s.adredirectorURL +"?gid="+group.Id+"&id="+group.AdBannerId[index]+"&replace=" + s.replace;
				var url = s.bannersURL+group.AdText[index];
				var movie = getFlashMovie(bstage.StageId+"Flash");				
				if (movie.drawBanner)movie.drawBanner(url,uri);
					else setTimeout(bstage.drawBanner,500);				
			}
			
			bstage.next = function()
			{
				if (group.FreeInds.length <= 0) 
					return;
				var oldindex = bstage.SelectedIndex;
				var index = bstage.SelectedIndex;
				var count = 0;
				while ((count < group.Count) || (aindexOf(group.SelectedInds,index) != -1))
				{
					count++;
					index++;
					if (index == group.Count) index = 0;
				}
				bstage.SelectedIndex = index;
				group.SelectedInds.push(index);
				group.FreeInds.push(oldindex);
				group.SelectedInds.splice(aindexOf(group.SelectedInds,oldindex),1);
				group.FreeInds.splice(aindexOf(group.FreeInds,index),1);
				bstage.drawBanner();				
			}
			
			bstage.prev = function()
			{
				if (group.FreeInds.length <= 0) 
					return;

				var oldindex = bstage.SelectedIndex;
				var index = bstage.SelectedIndex;
				var count = 0;
				while ((count < group.Count) || (aindexOf(group.SelectedInds,index) != -1))
				{
					count++;
					index--;
					if (index == -1) index = group.Count-1;
				}
				bstage.SelectedIndex = index;
				group.SelectedInds.push(index);
				group.FreeInds.push(oldindex);
				group.SelectedInds.splice(aindexOf(group.SelectedInds,oldindex),1);
				group.FreeInds.splice(aindexOf(group.FreeInds,index),1);
				bstage.drawBanner();
			}
			
			bstage.goDirect = function(num)
			{
				var oldindex = bstage.SelectedIndex;
				if (aindexOf(group.SelectedInds,num) == -1) group.SelectedInds.push(num);
				bstage.SelectedIndex = num;
				group.FreeInds.splice(aindexOf(group.FreeInds,oldindex),1);
				bstage.drawBanner();
			}
	
	   	group.BannerStages.push(bstage);
	   	return bstage;	   	
	    }	   
	   
	    banners.groups.push(group);
	}
	
    var SetBannerInfo = function(bannerId, groupId)
    {    	
    	var group = banners.getGroupById(groupId);    	
    	var bstage = group.registerBannerStage(tag(bannerId));    	  	   	
    	bstage.drawStage();
    }	
	
    function getFlashMovie(movieName)
    {       	
    	return (browser.msie) ? document.getElementById(movieName) : document[movieName];  
    }     	
		   	  
	E.set( "onLoad", banners.drawAllBanners );				  


