﻿(function ($) {

    function AdRotator() {
        this.intervalTime = 0,
        this.xmlFileName = '',
        this.keywords = 'All'
    }

    $.extend(AdRotator.prototype, {
        _init: function (target, options) {
            var inst = {};
            inst.options = $.extend({}, options);
            $.data(target, "adrotator", inst);
            var intervalTime = this._get(inst, 'intervalTime');
            var xmlFileName = this._get(inst, 'xmlFileName');
            var keywords = this._get(inst, 'keywords');
            this._getxml(xmlFileName, target, keywords);
            if (intervalTime != '0')
                this._setInterval(inst, target, keywords);
        },
        _getxml: function (xmlFileName, target, keywords) {
            var Id;
            var url;
            var text;
            var imageurl;

            function set_exists(rn, NavigateUrl, AlternateText, ImageUrl) {
                Id = rn;
                url = NavigateUrl;
                text = AlternateText;
                imageurl = ImageUrl;
            }

            $.ajax({
                url: xmlFileName,
                type: "GET",
                async: false, // set to false so order of operations is correct               
                success: function (data) {
                    var imgArray = new Array();
                    var searchkeywords = 'Ad';
                    if (keywords != 'All') {
                        searchkeywords = 'Ad[Keyword=' + keywords + ']';
                    }

                    $(data).find(searchkeywords).each(function (index) {
                        var json = $.xml2json(this);
                        imgArray[index] = new Array();
                        imgArray[index]['Id'] = 'Img_' + index;
                        imgArray[index]['NavigateUrl'] = json.NavigateUrl;
                        imgArray[index]['AlternateText'] = json.AlternateText;
                        imgArray[index]['ImageUrl'] = json.ImageUrl;
                    });
                    if (imgArray.length > 0) {
                        var rn = Math.floor(Math.random() * imgArray.length);
                        set_exists(imgArray[rn]["Id"], imgArray[rn]["NavigateUrl"], imgArray[rn]["AlternateText"], imgArray[rn]["ImageUrl"]);
                    }
                }
            });
            if (Id != null)
                this._createatags(target.id, Id, url, text, imageurl);
        },
        _createatags: function (renderctl, id, url, text, imageurl) {
            $("#" + renderctl).html("");
            var atag = $('<a>');
            atag.attr('id', id);
            atag.attr('href', url);
            atag.attr('target', '_blank');

            var img = $("<img>");
            img.attr('style', 'border-width: 0px;');
            img.attr('alt', text);
            img.attr('title', text);
            img.attr('src', imageurl);
            img.appendTo(atag);

            atag.appendTo('#' + renderctl);
        },
        _get: function (inst, name) {
            return (inst.options[name] != null ? inst.options[name] : $.adrotator[name]);
        },
        _setInterval: function (inst, target, keywords) {
            setInterval(function () {
                $.adrotator._getxml(inst.options['xmlFileName'], target, keywords);
            }, inst.options['intervalTime']);
        }
    });

    $.fn.adrotator = function (options) {
        return this.each(function () {         
            var inlineSettings = ($.fn.metadata ? $(this).metadata() : {});
            $.adrotator._init(this, $.extend(inlineSettings, options));
        });
    };

    $.adrotator = new AdRotator();

})(jQuery);

