/*
* Usage:
* var opts = {
*	.... // array of options
* }
* $('#my-id').informer(opts)
*
*/
(function($) {
    $.fn.informer = function(opts) {
        this.target = $(this)[0];
        if (!this.target || !this.target.nodeName){return alert('Informer: argument "target" is not DOM Element');}
        options = $.extend({cssClass: "informer", width: 222, height: 144, circleSpeed: 1000, updateSpeed: 1000, url:""}, opts);
        var domain = options.url.match(/^http:\/\/[\w\d\.\-]+\//);
        $.flXHRproxy.registerOptions(domain[0],{xmlResponseText:false,loadPolicyURL:domain[0]+"crossdomain.xml"});
        if(DetectFlashVer(8, 0, 0)) {
            $.ajaxSetup({transport:'flXHRproxy'});
        }
        $.ajaxSetup({error:handleError, timeout:3000});
        var table = '<table id="inform_table" style="width:'+options.width+'; height:'+options.height+';" cellpadding=0 cellspacing=0>\n\
    <thead>\n\
        <tr><td width=90>Symbol</td><td width=58>Bid</td><td width=58>Ask</td></tr>\n\
    </thead>\n\
    <tbody>\n\
        <tr><td width=90></td><td width=58></td><td width=58></td></tr>\n\
        <tr><td width=90></td><td width=58></td><td width=58></td></tr>\n\
        <tr><td width=90></td><td width=58></td><td width=58></td></tr>\n\
        <tr><td width=90></td><td width=58></td><td width=58></td></tr>\n\
    </tbody>\n\
</table>';
        this.workzone = $('<div class="inform_body"/>').html(table);
        this.informer = $('<div class="'+options.cssClass+'" style="width:'+options.width+'; height:'+options.height+';" />').append(this.workzone);
        $(this.target).append(this.informer);
        $('#inform_table > tr').hover(function(){$(this).addClass("active")},function(){$(this).removeClass("active")});
        loadData();
        var timer = window.setInterval(loadData, options.updateSpeed);
        i = 0;
        var circle = window.setInterval(function(){i = hoverNext(i);}, options.circleSpeed);
    }

    function loadData(){
        if(DetectFlashVer(8, 0, 0)) {
            try{
                $.get(options.url,"",handleLoading,"json");
            } catch(e) {
                console.log(e);
            }
        }
        else{
            $.ajax({
                url:"/informer.php",
                type:"POST",
                dataType:"json",
                success:function(response){
                    if (response.success) $("#inform_table tbody").empty().append(response.data);
                },
                error:function(q,w,e){
                }
            });
        }
    }
    function handleLoading(response,status,XHRobj) {
        $("#inform_table tbody").empty();
        if (XHRobj.readyState == 4) {
            $("#inform_table tbody").empty();
            if(response.success==true){
                for(var i=0; i<4; i++){
                    var symbol = response.data[i].item.symbol.toString();
                    var bid = response.data[i].item.bid.toString();
                    var ask = response.data[i].item.ask.toString();
                    var direction = response.data[i].item.direction.toString();
                    $("#inform_table tbody").append("<tr><td><img src=\"/img/"+direction+"arrow_inform.gif\" /><p>"+symbol+"</p></td><td>"+bid+"</td><td>"+ask+"</td></tr>");
                }
            }
            else{
                $("#inform_table tbody").empty();
                $("#inform_table tbody").append("<tr><td colspan=3>Ошибка при загрузке данных</td></tr>");
            }
	}
    }
    function handleError(XHRobj,errtype,errObj) {
        $("#inform_table tbody").empty();
        $("#inform_table tbody").append("<tr><td colspan=3>Ошибка при загрузке данных</td></tr>");
        $.ajax({
            url:"/informer.php",
            type:"POST",
            dataType:"json",
            success:function(response){
                if (response.success) $("#inform_table tbody").empty().append(response.data);
            },
            error:function(q,w,e){
            }
        });
    }
    function hoverNext(i){
        if(i>=4){i=0}
        else{i++}
        $("#inform_table tr:eq("+i+")").addClass("active").siblings().removeClass("active");
        return i;
    }
})(jQuery);
