(function($) {
    $.fn.Campaigns = function(_properties) {
        var _pro = jQuery.extend({
            type: _properties.type || 1,
            root: _properties.root || MYROOT,
            loader: _properties.loader || "_i/loaderImg2.gif",
            loaderDivName: "loaderImg",
            containerImg: "containerImg",
            path: _properties.xmlPath || "/_xml/campaigns.xml"
        }, _properties);

        return this.each(function() {
            $.fn.Campaigns._pro = _pro;
            $.fn.Campaigns._o = $(this);
            $.fn.Campaigns.init($.fn.Campaigns._pro, $.fn.Campaigns._o);
            //return jQuery(this);
        })
    }

    $.fn.Campaigns._o = null;
    $.fn.Campaigns._pro = null;
    $.fn.Campaigns.loaderDiv = null;
    $.fn.Campaigns.containerImg = null;
    $.fn.Campaigns.xmlObject = null;
    $.fn.Campaigns.activeNode = 0;
    $.fn.Campaigns.amountNodes = 0;
    $.fn.Campaigns.timeOut = null;

    $.fn.Campaigns.init = function(_pro, _o) {
        _o.fadeIn("slow");
        $.fn.Campaigns.loadXML(_pro.root + _pro.path, function(_xml) {
            $.fn.Campaigns.xmlObject = $(_xml);
            _o.append("<div id=\"containerCamps\"></div>")
            $("#containerCamps", _o).append("<div id=\"arrows\"><a href=\"#\" class=\"prev\">Previous</a><a href=\"#\" class=\"next\">Next</a></div>")
            $("#arrows", _o).after("<div id=\"" + _pro.containerImg + "\"></div>")
            $("#containerImg", _o).after("<div id=\"" + _pro.loaderDivName + "\"><img src=\"" + _pro.loader + "\" /></div>")
            $.fn.Campaigns.loaderDiv = $("#" + _pro.loaderDivName)
            $.fn.Campaigns.containerImg = $("#" + _pro.containerImg)
            $.fn.Campaigns.amountNodes = $.fn.Campaigns.xmlObject.find("item").size();
            $("#arrows .prev").hide();
            $("#arrows .next").hide();
            if ($.fn.Campaigns.amountNodes > 0) {
                $("#arrows .next").show();
                $.fn.Campaigns.containerImg.width(($.fn.Campaigns.amountNodes + 1) * 256)
                $.fn.Campaigns.loadImage();
                $("#containerCamps").hover(
					 function() {
					     $("#arrows .prev").animate({ "left": "0px" }, 100);
					     $("#arrows .next").animate({ "right": "0px" }, 100);
					 },
					  function() {
					      $("#arrows .prev").animate({ "left": "-40px" }, 100);
					      $("#arrows .next").animate({ "right": "-40px" }, 100);
					  }
					);
                $("#arrows .next").click(function() {
                    $.fn.Campaigns.showCampaign("next");
                    return false;
                });

                $("#arrows .prev").click(function() {
                    $.fn.Campaigns.showCampaign("previous");
                    return false;
                });

            }
        })
    }

    $.fn.Campaigns.loadXML = function(_path, _callback) {
        $.ajax({
            type: "GET",
            url: _path,
            data: "rnd =" + Math.random(),
            dataType: "xml",
            success: function(_xml) {
                _callback(_xml);
            }
        });
    }
    $.fn.Campaigns.loadImage = function() {
        _myActiveNode = $.fn.Campaigns.xmlObject.find("item").eq($.fn.Campaigns.activeNode);
        _src = _myActiveNode.find("src").text();
        _url = _myActiveNode.find("url").text();
        _delay = parseInt(_myActiveNode.attr("delay"));
        $.fn.Campaigns.loaderStatu("show")
        _actImg = $.fn.Campaigns.containerImg.find("img:eq(" + $.fn.Campaigns.activeNode + ")");
        //alert(_actImg.hasClass("loaded"))
        if (_actImg.hasClass("loaded")) {
            $("#containerImg").animate({ left: -(_actImg.width() * $.fn.Campaigns.activeNode) }, { "duration": "slow", "easing": "easeOutQuint" });
            $.fn.Campaigns.loaderStatu("hide")
        } else {
            $.fn.Campaigns.containerImg.append("<a href=\"" + _url + "\"><img src=\"" + _src + "\" /></a>")
            $.fn.Campaigns.containerImg.find("img:eq(" + $.fn.Campaigns.activeNode + ")").load(function() {
                $("#containerImg").animate({ left: -($(this).width() * $.fn.Campaigns.activeNode) }, { "duration": "slow", "easing": "easeOutQuint" });
                $(this).addClass("loaded")
                $.fn.Campaigns.loaderStatu("hide")
            })
        }
        $.fn.Campaigns.timeOut = setTimeout("$.fn.Campaigns.showCampaign('next')", _delay * 1000)
    }
    $.fn.Campaigns.loaderStatu = function(_statu) {
        if (_statu == "show") {
            $.fn.Campaigns.loaderDiv.show();
            $.fn.Campaigns.loaderDiv.animate({ 'opacity': 0.0 }, 1);
            $.fn.Campaigns.loaderDiv.animate({ 'opacity': 0.6 }, 600);
        } else {
            $.fn.Campaigns.loaderDiv.hide();
        }
    }

    $.fn.Campaigns.showCampaign = function(_statu) {
        clearInterval($.fn.Campaigns.timeOut)
        if (_statu == "next") {
            $.fn.Campaigns.activeNode++
            if ($.fn.Campaigns.activeNode > $.fn.Campaigns.amountNodes - 1) {
                $.fn.Campaigns.activeNode = 0;
                //$("#arrows .next").hide();
            }
            $("#arrows .prev").show();
        }
        else {

            $.fn.Campaigns.activeNode--
            if ($.fn.Campaigns.activeNode < 0) {
                //$("#arrows .prev").hide();
                $.fn.Campaigns.activeNode = $.fn.Campaigns.amountNodes;
                if ($.fn.Campaigns.amountNodes > $("#containerImg img").size() - 1) {
                    $.fn.Campaigns.activeNode = $("#containerImg img").size() - 1;
                }
            }
            $("#arrows .next").show();
        }
        $.fn.Campaigns.loadImage()
    }
})(jQuery);


