function startCompare(data) {
    var preparedData = {};
    var idToDomain = {};
    for(var key in data) {
        var date = data[key].check_date;
        date = date.substr(0, 10);
        date = new Date(date).getTime();
        var position = -1*data[key].position;
        var site_id = data[key].site_id;
        var domain = data[key].domain_name;
        idToDomain[site_id] = domain;
        if(preparedData[site_id] == undefined) {
            preparedData[site_id] = new Array();
        }
        preparedData[site_id].push([date, position]);
    }
    var res = new Array();
    for (var key in preparedData) {
        res.push({data: preparedData[key], label:idToDomain[key]});
    }
    var options = {
               series: {
                   lines: { show: true },
                   points: { show: true }
               },
               legend: { show: true, container: $("#legend"), noColumns: 5 },
               grid: { hoverable: true, clickable: true },
               xaxis: { mode: 'time', minTickSize: [1, "day"] },
               yaxis: {
                   max:-1,
                   minTickSize:1,
                   tickFormatter: function (val, axis) {
                       val = val * -1;
                       return val;
                   }
               }
    }
    try{
        var plot = $.plot($("#placeholder"), res, options);
    }catch(e) {
        setTimeout(function(){startCompare()}, 500);
    }

    function showTooltip(x, y, contents) {
        $('<div id="tooltip" style="font-size:12px">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            top: y - 25,
            left: x + 5,
            border: '1px solid #fdd',
            padding: '2px',
            'background-color': '#fee',
            opacity: 0.80
        }).appendTo("body").fadeIn(200);
    }

    var previousPoint = null;
    $("#placeholder").bind("plothover", function (event, pos, item) {
        $("#x").text(pos.x.toFixed(2));
        $("#y").text(pos.y.toFixed(2));
        if (item) {
            if (previousPoint != item.datapoint) {
                previousPoint = item.datapoint;
                $("#tooltip").remove();
                var x = new Date(item.datapoint[0]),
                y = -1*Number(item.datapoint[1].toFixed(2)),
                domain = '<b>' + item.series.label + '</b>';
                x = x.getDate() + '.' + (x.getMonth()+1) + '.' + x.getUTCFullYear ();
                showTooltip(item.pageX, item.pageY, domain + ' - ' + x + ': ' + y);
            }
        }
        else {
            $("#tooltip").remove();
            previousPoint = null;
        }
    });

    $("#placeholder").bind("plotclick", function (event, pos, item) {
        if (item) {
            $("#clickdata").text("You clicked point " + item.dataIndex + " in " + item.series.label + ".");
            plot.highlight(item.series, item.datapoint);
        }
    });
}


/**
 * get More Keywords
 * @author Alex
 */

/**
 * create get more buttons
 */

MoreAction = {
    buttonsClick:Array(),

    init:function(data) {
        if(data.max != undefined && data.count != undefined && data.count < data.max) {
            return false;
        }
        var url = '';
        if(data.keyword != undefined) {
            url = '/index/keywords/table/keyword/' + data.keyword + '/keyId/' + data.keyId;
        } else {
            url = '/index/sites/table/site/' + data.site + '/position/' + data.id;
        }
        var show_more = true;
        if(this.buttonsClick[data.id] == true) {
            show_more = false;
        }
        this.createButtons(data.id, url, data.type, show_more);
        if(show_more == true) {
            this.addEvents(data.id);
        }
        return true;
    },

    createButtons:function(id, url, type, show_more) {
         var HTML = '';
         if(show_more == true) {
             HTML += '<span id="more_block_' + id + '"><img id="buttons_loader_' + id + '" style="display:none;" src="/resources/img/ajax-loader.gif"/>\n\
                     <a id="getMoreButton_' + id + '" href="' + url + '" class="more_buttons">\n\
                     More ' + type + '</a>, </span>';
         }
         HTML += 'Download <a href="' + url + '/format/csv" class="more_buttons"> \n\
                    in csv</a> or <a href="' + url + '/format/json" class="more_buttons">in json</a>'
         $('#position_' + id)
        .append(HTML);
    },

    addEvents:function(id) {
        var that = this;
        $('#getMoreButton_' + id).click(function() {
            var url = this.href;
            jQuery.ajax({
                type: 'GET',
                url: url,
                beforeSend: function() {
                    $('#buttons_loader_' + id).show();
                },
                success: function(html) {
                    that.buttonsClick[id] = true;
                    $('#buttons_loader_' + id).hide();
                    $('#more_block_' + id).hide();
                    $('#content_general_' + id).html(html);
                    addCompareListner();
                    try{
                        addEventToCheckBoxes();
                        domainLinks();
                    }catch(err){}
                }
            });
            $('#getMoreButton_' + id).click(function(){return false;});
            return false;
        })
    }
}

var addCompareListner = function() {
    $('.delta_stat').click(function(e) {
        var key = this.getAttribute('key');
        var site = this.getAttribute('site');
        CompareByKeyAndSite(key, site);
        return false;
    });
    $('.table_history').click(function(e) {
        var key = this.getAttribute('key');
        var site = this.getAttribute('site');
        CompareByKeyAndSite(key, site);
        return false;
    });
}
var CompareByKeyAndSite = function(keyword, site) {
        window.location = '/compare/sites/key/' + keyword + '/sites/' + site;
}

var Compare = function(keyword) {
//    var elements = document.getElementsByClassName('compare_checkbox');
    var sites = getSelectedSites();
    if(sites != '') {
        window.location = '/compare/sites/key/' + keyword + '/sites/' + sites;
    }
}

var getSelectedSites = function() {
    var elements = $('.compare_checkbox');
    var checked = new Array();
    for(var i = 0, count = elements.length; i < count; i++) {
        if(elements[i].checked === true) {
            checked.push(elements[i].id.replace('siteid_', ''));
        }
    }
    var sites = checked.join('-');
    return sites;
}

var addEventToCheckBoxes = function() {
    $('.compare_checkbox').click(function(){
        var sites = getSelectedSites();
        if(sites == '') {
            $('#fly_compare_button').css('display', 'none');
        } else {
            $('#fly_compare_button').css('display', 'block');
        }
    });
}


var Carusel = {
    id:'headcarousel',
    
    start:function() {
        if(0 == $('#' + this.id).lenght) {
            return false;
        }
        var url = '';
        try {
            url = '/widget/site/' + head_type + '/' + head_kid + '/';
        } catch(ex) {
            this.showErrorMessage();
            return false;
        }
        jQuery.ajax({
            type: 'GET',
            url: url,
            success: function(answer) {
//                var data = [];
//                eval('data = ' + answer + ';');
                Carusel.init(answer);
            }
        });
    },

    init:function(data) {
        if(data.length == 0 || data[0].domain == undefined) {
            this.showErrorMessage();
            return false;
        }
        $('#carousel_loading').hide();
        var mycarousel_itemList = data;
        $('.b-media a').live('click', function(){});
        $('.b-media img').live('click', function(){
            var url = $(this).children('.b-media-description').children('.b-media-description-content').children('a').attr('href');
            if(url.indexOf('http://') == -1)  {
                url = 'http://' + window.location.host + url;
            }
            window.location.href=url;
            return false;
        }).css('cursor','pointer');
        
        /**
         * Item html creation helper.
         */
        var mycarousel_getItemHTML = function(item) {
            return '<li class="b-media">\n\
                        <img src="' + item.thumbshot_uri + '" width="220" height="200" alt="" />\n\
                        <div class="b-media-description"><div class="b-media-description-content">\n\
                            <img src="http://www.google.com/s2/favicons?domain_url=http://' + item.domain + '" style="display: inline-block; position: absolute; top: 2px;">\n\
                            <a href="/' + item.domain + '"><b>' + item.domain + '</b> analysis</a><br/>\n\
                            <br/>' + item.title + '\n\
                        </div></div>\n\
                    </li>';
        };
        var mycarousel_itemLoadCallback = function(carousel, state) {
            for (var i = carousel.first; i <= carousel.last; i++) {
                if (carousel.has(i)) {
                    continue;
                }
                if (i > mycarousel_itemList.length) {
                    break;
                }
                carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[i-1]));
            }
        };
        jQuery('#' + this.id).jcarousel({
            size: mycarousel_itemList.length,
            scroll:1,
            itemFallbackDimension:220,
            itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
        });
    },

    showErrorMessage:function() {
        $('#carousel_loading').hide();
        $('#carousel_error').show();
    }
}


function domainLinks(){
    $("#sitestable tr").each(function(){
        var $tr = $(this);
        var $link = $("a.domain_name", $tr);
        var domain = $link.text();
        var keyword = $link.attr('data-keyword');
        var $wrapper = $('<div class="domain-links-wrapper"></div>');
        var $str = $('<div class="domain-table-links"><a href="http://'+window.document.location.host+'/goto/'+domain+'" target="_blank">Visit to the site</a></div>');
        $wrapper.append($str.hide());
        $link.before($wrapper);
        $tr.hover(function(){
            $str.show();
            $tr.addClass('tr-hover');
        }, function(){
            $str.hide();            
            $tr.removeClass('tr-hover');
        })
    })
}

function searchLinks(){
    $(".info-block-content").each(function(){
        var $content = $(this);
        var $link = $("div.info-block-domain", $content);
        var domain = $link.text();
        var keyword = $link.attr('data-keyword');
        var $wrapper = $('<div class="domain-links-wrapper"></div>');
        var $str = $('<div class="domain-table-links" style="padding-top:10px;"><a href="http://'+window.document.location.host+'/goto/'+domain+'" target="_blank">Visit to the site</a></div>');
        $wrapper.append($str.show());
        $link.before($wrapper);        
    })
}

function visitDomain(){
    var content = $('#content h3').get(0);
    if(typeof content  != "undefined" && window.domain){
        var $str = $('<a style="float: right; font-size: 13px;" href="http://'+window.location.host+'/goto/'+window.domain+'" target="_blank">Visit to the site</a>')
        $(content).prepend($str)
    }
}

$(document).ready(function() {
    domainLinks();
    searchLinks();
    visitDomain();
    if(undefined != window._initKeywordsTable && true == window._initKeywordsTable) {
       $("#sitestable").tablesorter({
            sortList: [[1,0]],
            textExtraction: function(node) {
                if(node.firstChild != null && node.firstChild.innerHTML != undefined) {
                    return node.firstChild.innerHTML;
                }
                return node.innerHTML;
            }
        });
//        addEventToCheckBoxes();
    }
    if(undefined != window._compare && true == window._compare) {
        addCompareListner();
    }
    Carusel.start();
});
    



