/*
 * report.js
 */

var domains = new Array();
var selected_tab = 1;
var domains_grid;
var bookmarks_grid;
var show_we = 0;
var admin = 0;
var logged = 0;

/**
 * @return
 */
function reload_charts()
{
    static_charts_reload();
    main_chart_reload();
    if(admin == 1)
        alexa_reload_charts();
}

/**
 * 
 * @return
 */
function main_chart_reload()
{
    if(domains.length)
    {
        ajax_loader("main_chart");
        jQuery("#main_chart").load("report/main_chart_reload", {
            type: selected_tab
        });
    }
    else
    {
        jQuery("#main_chart").html('No data available');
    }
}



/**
 * @return
 */
function alexa_reload_charts()
{
    if(selected_tab == 2) // TODO: condizione temporanea
    {
        ajax_loader("alexa_chart");
        jQuery("#alexa_chart").load("report/alexa_chart_reload", {
            type: selected_tab
        });
    }
    else
    {
        jQuery("#alexa_chart").html('Alexa > No data available');
    }
}




/**
 * 
 * @return
 */
function domains_grid_reload()
{
    ajax_loader("gridbox");
    jQuery("#gridbox").load("report/domains_grid_reload");
}


/**
 * 
 * @return
 */
function groups_grid_reload()
{
    ajax_loader("groups_gridbox");
    jQuery("#groups_gridbox").load("report/groups_grid_reload");
}


/**
 * 
 * @return
 */
function refresh_charts()
{
    if(domains.length)
    {
        domains = domains_grid.getCheckedRows(0).split(",");
        reload_charts();
        reload_snapshots();
    }
    else
    {
        document.getElementById('flash-report').innerHTML = 'Seleziona almeno un dominio';
        document.getElementById('static_charts').innerHTML = 'Seleziona almeno un dominio';
    }
}



/**
 * 
 * @return
 */
function focus_on(chart_type)
{
    selected_tab = chart_type;
    jQuery("static_charts_"+chart_type).animate({
        "top": "-=200px"
    });
    reset_focuson_btns();
    jQuery("#focus_on_btn_"+selected_tab).addClass("active");
    reload_charts();
}




/**
 * 
 * @param domain_id
 * @return
 */
function remove_domain_from_charts(domain_id)
{
    pop_domain(domain_id);
    popSnapshot(domain_id);
    domains_grid.cells(domain_id, 0).setValue(0);
    bounce_alert();
}


/**
 * 
 * @return
 */
function static_charts_reload()
{
    ajax_loader("static_charts");
    jQuery("#static_charts").load("report/static_charts_reload", {
        type: selected_tab,
        we: show_we
    });
}


/**
 *
 * @return
 */
function isLogged()
{
    jQuery.ajax( {
        type :"POST",
        url :"report/is_logged",
        async :false,
        success : function(msg) {
            logged = msg;
        }
    });
}

/**
 * 
 * @return
 */
function isSuperAdmin()
{
    jQuery.ajax( {
        type :"POST",
        url :"report/is_super_admin",
        async :false,
        success : function(msg) {
            admin = msg;
        }
    });
}

/**
 * 
 * @param rowId
 * @param cellInd
 * @param chk_value
 * @return
 */
function doOnCheck(rowId, cellInd, chk_value) {
    var i;
    var maxDomains = getMaxLoadableDomains();
	
    // Uncheck groups grid radiobuttons -------
    if(bookmarks_grid) gridUncheckAll(bookmarks_grid);
    // Uncheck groups grid radiobuttons -------
	
    if(chk_value)
    {
        if (domains.length < maxDomains)
        {
            push_domain(rowId);
            bounce_alert();
        }
        else
        {
            if(logged == 1) {
                showTip("gridbox", 'Puoi confrontare un massimo di ' + maxDomains + ' domini.', true);
            }
            else {
                showTip("gridbox", 'Puoi confrontare un massimo di ' + maxDomains + ' domini. Registrati per raddoppiare il numero dei domini confrontabili, e per accedere a funzioni avanzate.', true);
            }
            
            // Unckecking combobox -------------
            cell = domains_grid.cells(rowId, 0);
            cell.setValue(0);
            // Unckecking combobox -------------

            return;
        }
    }
    else
    {
        pop_domain(rowId);
        bounce_alert();
    }
}


function bounce_alert()
{
    jQuery("#refresh_charts a").addClass('refresh_alert');
    jQuery("#refresh_charts a").css('padding-left', '20px');
//	jQuery("#refresh_charts a").effect('bounce', {times: 1, distance: 30}, 300);
}

/**
 * 
 * @param rowId
 * @param cellInd
 * @param chk_value
 * @return
 */
function doOnCheckGroups(rowId, cellInd, chk_value)
{
    jQuery.ajax( {
        url :"report/get_group_domains",
        data :"id=" + rowId,
        success : function(response) {
            load_bookmark_group(response.split(","));
        }
    });
}


/**
 * 
 * @param domain_id
 * @return
 */
function pushSnapshot(domain_id) {
    jQuery.ajax( {
        url :"report/get_snapshot_url",
        data :"id=" + domain_id,
        success : function(html) {
            jQuery("#snapshots_container").append(html);
        }
    });
}


/**
 * 
 * @param domain_id
 * @return
 */
function popSnapshot(domain_id) {
    jQuery("#snap_" + domain_id).remove();
}


/**
 * 
 * @return
 */
function reset_snapshots()
{
    jQuery("#snapshots_container").html("");
}


/**
 * 
 * @return
 */
function getMaxLoadableDomains() {
    var maxDomains = 0;

    jQuery.ajax( {
        type :"POST",
        url :"report/get_max_domains_loadable",
        async :false,
        success : function(msg) {
            maxDomains = msg;
        }
    });
    return maxDomains;
}



/**
 * 
 * @param domain_id
 * @return
 */
function push_domain(domain_id)
{
    //	pushSnapshot(domain_id);
    domains.push(domain_id);
    remote_domainlist_u();
}



/**
 * 
 * @param domain_id
 * @return
 */
function pop_domain(domain_id)
{
    //	popSnapshot(domain_id);
    removeItems(domains, domain_id);
    remote_domainlist_u();
}



/**
 * 
 * @param domain_id
 * @param action
 * @return
 */
function remote_domainlist_u()
{
    jQuery.ajax({
        url :"report/domainlist_u",
        async :false,
        data : serialize_domains()
    });
}


/**
 * 
 * @return
 */
function serialize_domains() {
    var serialized = '';
    for ( var i = 0, max = domains.length; i < max; i++) {
        serialized += 'domain_id[]=' + domains[i] + '&';
    }
    return serialized;
}


/**
 * 
 * @param array
 * @param item
 * @return
 */
function removeItems(array, item) {
    var i = 0;
    while (i < array.length) {
        if (array[i] == item) {
            array.splice(i, 1);
        } else {
            i++;
        }
    }
    return array;
}


/**
 * 
 * @param Array
 * @return
 */
function load_bookmark_group(domain_list)
{
    gridCheckValues(domains_grid, domain_list);
    domains = domains_grid.getCheckedRows(0).split(",");
    remote_domainlist_u();
    refresh_charts();
}


function gridUncheckAll(grid)
{
    grid.forEachRow(function(id){
        grid.cells(id,0).setValue(0);
    });
}


function gridCheckValues(grid, domains_array)
{
    gridUncheckAll(grid);
    for(var i=0; i<domains_array.length; i++)
    {
        domains_grid.cells(domains_array[i],0).setValue(1);
    }
}

/**
 * 
 * @return
 */
function reload_snapshots()
{
    reset_snapshots();
    ajax_loader("snapshots_container");
    jQuery("#snapshots_container").load("report/reload_snapshots?"+serialize_domains());
}



function ajax_loader(id)
{
    jQuery("#"+id).html('<img src="/images/ajax-loader.gif" style="width:24px;height:24px"/>');
}


/**
 * 
 */
jQuery(document).ready( function() {
    isLogged();
    isSuperAdmin();
    jQuery("#focus_on_btn_"+selected_tab).addClass("active");
    jQuery("#weekend_btn_off").addClass("active");
    domains_grid_reload();
    groups_grid_reload();
});



/**
 * 
 */
jQuery(function(){
    jQuery('#weekend_btn_on').click(function(){
        reset_weekend_btns();
        show_we = 1;
        jQuery('#weekend_btn_on').addClass('active');
        reload_charts();
    });
	
    jQuery('#weekend_btn_off').click(function(){
        reset_weekend_btns();
        show_we = 0;
        jQuery('#weekend_btn_off').addClass('active');
        reload_charts();
    });
	
    jQuery("#refresh_charts a").click(function() {
        jQuery("#refresh_charts a").removeClass('refresh_alert');
        jQuery("#refresh_charts a").css('padding-left', '0px');
    });
});


function reset_focuson_btns()
{
    jQuery("#focus_on_btn_1").removeClass("active");
    jQuery("#focus_on_btn_2").removeClass("active");
    jQuery("#focus_on_btn_3").removeClass("active");
}


function reset_weekend_btns()
{
    jQuery("#weekend_btn_on").removeClass("active");
    jQuery("#weekend_btn_off").removeClass("active");
}


function to_bookmarks() {
    jQuery("#to_bookmarks_panel").toggle();
    jQuery("#save_to_bookmarks_button").toggleClass("active");
    ajax_loader("to_bookmarks_panel");
    jQuery("#to_bookmarks_panel").load("report/bookmark_groups_modalbox");
}


function close_bookmarks_panel() {
    jQuery("#to_bookmarks_panel").hide();
    jQuery("#save_to_bookmarks_button").toggleClass("active");
    groups_grid_reload();
}



function showTip(domId, text, showOnCreate) {
    new Tip(domId, text , {
        stem: 'bottomRight',
        style: 'protogrey',
        hideOn: 'mouseout',
        hook: {
            tip: 'bottomRight'
        },
        offset: {
            x: 14,
            y: 2
        }
    }, showOnCreate);
}


// Put tooltips on disabled functions' buttons ----------------------------------------
document.observe('dom:loaded', function() {
    $$(".disabled").each(function(element) {
        new Tip(element, "Per utilizzare questa funzione è necessario essere utenti registrati al sito. Fai click su 'registrati' per interagire con Audibew  - Report, oppure effettua l'accesso cliccando su 'Login' se sei già iscritto ad Audiweb-report", {
            style: 'protogrey',
            showOn: 'mousemove',
            hideOn: 'mouseout',
            hideOthers: true,
            stem: 'bottomRight',
            hook: {
                tip: 'bottomRight'
            },
            offset: {
                x: 14,
                y: 2
            }
        });
    })
});
// Put tooltips on disabled functions' buttons ----------------------------------------



// Put tooltips on toolbar ------------------------------------------------------------

document.observe('dom:loaded', function() {

    $$(".control_bar_button").each(function(element) {
        var message = "";
        
        switch(element.id) {
            case "focus_on_btn_1":
                message = "Focus on: browser unici";
                break;
            case "focus_on_btn_2":
                message = "Focus on: pagine viste";
                break;
            case "focus_on_btn_3":
                message = "Focus on: tempo medio per pagina";
                break;
            case "weekend_btn_on":
                message = "Mostra weekend";
                break;
            case "weekend_btn_off":
                message = "Nascondi weekend";
                break;
            case "save_to_bookmarks_button":
                message = "Salva il confronto corrente nei preferiti";
                break;
            default:
                break;
        }


        new Tip(element, message, {
            style: 'protogrey',
            showOn: 'mousemove',
            hideOn: 'mouseout',
            hideOthers: true,
            stem: 'bottomRight',
            hook: {
                tip: 'bottomRight'
            },
            offset: {
                x: 14,
                y: 2
            },
            width: 100
        }, true);
    })
});

// Put tooltips on toolbar ------------------------------------------------------------
