﻿// JScript File
Function.myCreateDelegate = function(instance, method) 
{
    return function() 
    {
        method.apply(instance, arguments);
    }
}

var __transitions = new Array(24);
__transitions[0] = "progid:DXImageTransform.Microsoft.RandomDissolve()";
__transitions[1] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='star', motion='out')";
__transitions[2] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='diamond', motion='in')";
__transitions[3] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='cross', motion='out')";
__transitions[4] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='circle', motion='in')";
__transitions[5] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='square', motion='out')";
__transitions[6] = "progid:DXImageTransform.Microsoft.Iris(irisStyle='plus', motion='in')";
__transitions[7] = "progid:DXImageTransform.Microsoft.Barn(orientation='vertial' motion='in')";
__transitions[8] = "progid:DXImageTransform.Microsoft.Barn(orientation='vertial' motion='out')";
__transitions[9] = "progid:DXImageTransform.Microsoft.Barn(orientation='horizontal' motion='in')";
__transitions[10] = "progid:DXImageTransform.Microsoft.Barn(orientation='horizontal' motion='out')";
__transitions[11] = "progid:DXImageTransform.Microsoft.Pixelate()";
__transitions[12] = "progid:DXImageTransform.Microsoft.Inset()";
__transitions[13] = "progid:DXImageTransform.Microsoft.Checkerboard(Direction='left')";
__transitions[14] = "progid:DXImageTransform.Microsoft.Checkerboard(Direction='right')";
__transitions[15] = "progid:DXImageTransform.Microsoft.Checkerboard(Direction='down')";
__transitions[16] = "progid:DXImageTransform.Microsoft.Checkerboard(Direction='up')";
__transitions[17] = "progid:DXImageTransform.Microsoft.RandomBars(motion='horizontal')";
__transitions[18] = "progid:DXImageTransform.Microsoft.RandomBars(motion='vertical')";
__transitions[19] = "progid:DXImageTransform.Microsoft.Slide(bands=5, slideStyle='push')";
__transitions[20] = "progid:DXImageTransform.Microsoft.Slide(bands=5, slidestyle='swap')";
__transitions[21] = "progid:DXImageTransform.Microsoft.Slide(bands=5, slidestyle='hide')";
__transitions[22] = "progid:DXImageTransform.Microsoft.Spiral()";
__transitions[23] = "progid:DXImageTransform.Microsoft.Stretch(stretchStyle='push')";

ADTransformer = function()
{      
    var _current = __transitions[0];
    
    this.random = function()
    {
        var index = Math.floor(Math.random() * (__transitions.length + 1)) - 1;
        _current = __transitions[index];
    }
    
    this.setTransform = function(trans)
    {
        _current = trans;
    }
    
    this.transform = function(adObj)
    {
        if (!adObj)
        {
            return;
        }    
        
        var element = adObj.getElement();
        if (!element)
        {
            return;
        }
        
        element.style.filter = _current;
        if (element.filters)
        {
            if ((element.filters.length != 0) && (element.src != ""))
            {
                var filter = element.filters[0];
                filter.apply();
                element.src = adObj.getImage();
                filter.play();
            }
            else
            {
                element.src = adObj.getImage();
            }
        }
        else
        {
            element.src = adObj.getImage();
        }
    }
}

function ADTimeoutHandler(){}
ADTimeoutHandler.prototype.onLifecycleEnd = function(sender){}

ADObject = function()
{
    var _lifecycle = 0;
    var _img = "";
    var _url = "";
    var _target = "_blank";
    var _status = "";
    var _element = null;
    var _owner = null;
    var _alt = "";
    
    this.setLifecycle = function(lifecycle)
    {
        if (typeof(lifecycle) != "number")
        {
            _lifecycle = 5000;
        }
        else
        {
            _lifecycle = lifecycle * 1000;
        }
    }
    this.setImage = function(image) { _img = image; }
    this.getImage = function() { return _img; }
    this.setOpenUrl = function(url) { _url = url; }
    this.setOpenTarger = function(target) { _target = target; }
    this.setStatusText = function(status) { _status = status; }
    this.setAlt = function(alt) { _alt = alt; }
    this.setOwner =function(owner){ _owner = owner; }
    this.getElement = function(){ return _element; }
    
    this.associate = function(element, transformer)
    {
        if (!element)
        {
            return;
        }
        
        _element = element;
        
        if (_alt)
        {
            _element.alt = _alt;
        }
        
        if (_url)
        {
            _element.style.cursor = "hand";
            _element.onclick = this.onClick;
        }
        
        if (_status)
        {
            _element.onmouseover = this.onMouseOver;
            _element.onmouseout = this.onMouseOut;
        }
        
        if (transformer)
        {
            transformer.transform(this);
        }
        else
        {
            _element.src = _img; 
        }
        
        if (_owner)
        {
            window.setTimeout(Function.myCreateDelegate(_owner, _owner.onLifecycleEnd), _lifecycle);
        }
    }
    
    this.onClick = function()
    {
        if (_target == "_self")
        {
            window.location = _url;
        }
        else if (_target == "_blank")
        {
            window.open(_url);
        }
    }
    
    var _oldStatus = "";
    this.onMouseOver = function()
    {
        _oldStatus = window.status;
        window.status = _status;
    }
    
    this.onMouseOut = function()
    {
        window.status = _oldStatus;
    }    
}

ADBanner = function(name, width, height)
{
    var _adList = new Array();
    var _current = -1;
    var _transformer = new ADTransformer();
    var _name = name;
    var _element = document.createElement("img");
    _element.className = "ADBanner";
    _element.height = height;
    _element.width = width;    
    //var _container = null;
    
    function getNextAD()
    {
        _current++;
        if (_current >= _adList.length)
        {
            _current = 0;
        }
        return _adList[_current];
    }
    
    this.addAD = function(lifecycle, image, alt, url, target, status)
    {
        var ad = new ADObject();
        ad.setAlt(alt);
        ad.setLifecycle(lifecycle);
        ad.setImage(image);
        ad.setOpenUrl(url);
        ad.setOpenTarger(target);
        ad.setStatusText(status);
        
        this.addADObject(ad);
    }
    
    this.addADObject = function(ad)
    {
        if(ad)
        {
            ad.setOwner(this);
            _adList.push(ad);
        }
        else
        {
            throw "invalid ad object";
        }
    }
     
    this.startAt = function(start)
    {
        _current = start - 1;
        this.changeAD(); 
    }
    
    this.changeAD = function()
    {
        _transformer.random();
        var newAd = getNextAD();
        
        newAd.associate(_element, _transformer);
    }
    
    this.associate = function(container)
    {
        if (container)
        {
            container.appendChild(_element);
        }
    }
}
ADBanner.prototype = new ADTimeoutHandler();
ADBanner.prototype.onLifecycleEnd = function(sender)
{
    //alert(this.constructor);
    this.changeAD();
}