
var device_has_tasks = false;
var device_is_selected = false;
var device_name_selected = "";
var data_sources_selected = {"calendar":"", "contacts":"", "tasks":"", "email":""};
var active_class = "active";

var animation_max_cycles = 10;
var animation_cycle_count = 0;

function begin_animation()
{
    var old_count = animation_cycle_count;
    animation_cycle_count = 0;
    if (old_count >= animation_max_cycles || old_count == 0)
    {
        animate0();
    }
}

function animate0()
{
    if (animation_cycle_count < animation_max_cycles)
    {
        animate1();
        setTimeout("animate3()", 6000);
        animation_cycle_count++;
    } else
    {
        animation_cycle_count = 0;
    }
}

function animate1()
{
    $(".throb").animate({opacity:0.0},500);
}

function animate2()
{
    $(".throb").animate({opacity:1.0},500);
}

function animate3()
{
    animate2();
    setTimeout("animate0()", 1500);
}

function reset_sources()
{
    data_sources_selected = {"calendar":"", "contacts":"", "tasks":"", "email":""};
}

function deviceSelected()
{
    $("#sc-src-label-id").removeClass("hidden");
    $("#sc-dev-label-id").addClass("hidden");
    $(".sc-src-li-class").removeClass(active_class);
    reset_sources();
    $("#sc-blurb2-id").html(info_message2);
    device_is_selected = true;
    begin_animation();
}

function deviceDeSelected()
{
    $("#sc-src-label-id").addClass("hidden");
    $("#sc-dev-label-id").removeClass("hidden");
    $(".sc-src-li-class").removeClass(active_class);
    reset_sources();
    $("#sc-blurb2-id").html(info_message1);
    device_is_selected = false;
    begin_animation();
}

function flash_message(text)
{
    $("#sc-blurb2-id").css({ 'opacity' : 0.0 });
    $("#sc-blurb3-id").html(text);
    $("#sc-blurb3-id").animate({opacity:1.0},500);
    setTimeout("flash_message_off()", 3000);
}

function flash_message_off()
{
    $("#sc-blurb3-id").animate({opacity:0.0},500);
    setTimeout("flash_message_restore()", 700);
}

function flash_message_restore()
{
    $("#sc-blurb2-id").css({ 'opacity' : 1.0 });
}

function get_source_text(type)
{
    var ret = "";
    if (data_sources_selected[type] != "")
    {
        ret = data_sources_selected[type] + " " + type;
    }
    return ret;
}

function update_sources_display()
{
    var prefix_text = "Click on the right to sync your device with ";
    var source_strings = [];
    source_strings[0] = get_source_text("calendar");
    source_strings[1] = get_source_text("contacts");
    source_strings[2] = get_source_text("tasks");
    source_strings[3] = get_source_text("email");
    var number_sources = count_selected_sources();
    var current_source = 0;
    var new_text = prefix_text;
    var sep = "";
    while (number_sources > 0)
    {
        if (source_strings[current_source] != "")
        {
            new_text = new_text + sep + source_strings[current_source];
            if (number_sources == 2)
            {
                sep = " and ";
            }
            if (number_sources > 2)
            {
                sep = ", ";
            }
            number_sources--;
        }
        current_source++;
    }
    new_text = new_text + "&nbsp;&raquo;&raquo;&raquo;";
    $("#sc-blurb2-id").html(new_text);
}

function update_go_button()
{
    if ( count_selected_sources() > 0 && device_is_selected)
    {
        $("#sc-go-id").addClass(active_class);
    } else
    {
        $("#sc-go-id").removeClass(active_class);
    }
}

function deviceClicked(e)
{
    var tasksattr = $(this).attr("nstasks");
    var device_value = $(this).attr("nsval");
    if ($(this).hasClass(active_class))
    {
        device_name_selected = "";
        deviceDeSelected();
        update_go_button();
        $(this).removeClass(active_class);
    } else
    {
        if (tasksattr == "true")
        {
            device_has_tasks = true;
        }
        else
        {
            device_has_tasks = false;
            $(".sc-src-type-tasks").removeClass(active_class);
        }
        $(".sc-dev-li-class").removeClass(active_class);
        $(this).addClass(active_class);
        device_name_selected = device_value;
        deviceSelected();
    }
}

function sourceClicked(e)
{
    if (device_is_selected)
    {
    var source_name = $(this).attr("nsval");
    var datatype = $(this).attr("nstype");
    if (datatype == "tasks" && device_has_tasks == false)
    {
        flash_message(error_message1 + device_name_selected);
    } else
    {
        if ($(this).hasClass(active_class))
        {
            data_sources_selected[datatype] = "";
            $(this).removeClass(active_class);
        } else
        {
            data_sources_selected[datatype] = source_name;
            var class_to_deactivate = ".sc-src-type-" + datatype;
            $(class_to_deactivate).removeClass(active_class);
            $(this).addClass(active_class);
        }
        update_sources_display();
        update_go_button();
    }
    } else
    {
        flash_message(error_message2);
    }
}

function count_selected_sources()
{
    var count = 0;
    for ( i in data_sources_selected)
    {
        if (data_sources_selected[i] != "")
        {
            count++;
        }
    }
    return count;
}

function goClicked(e)
{
    if (device_is_selected && count_selected_sources() > 0)
    {
    var device_param = "d=" + device_name_selected;
    var calendar_source_param = "c=" + data_sources_selected["calendar"];
    var contacts_source_param = "o=" + data_sources_selected["contacts"];
    var tasks_source_param = "t=" + data_sources_selected["tasks"];
    var email_source_param = "e=" + data_sources_selected["email"];
    var sources_param = calendar_source_param + "&" + contacts_source_param + "&" + tasks_source_param + "&" + email_source_param;
    var is_production = true;
    var protocol = "https";
    var port = "";
    if (location.hostname == "localhost")
    {
        is_production = false;
        protocol = "http";
    }
    if (location.port != "")
    {
        port = ":" + location.port;
    }
    var url = protocol + "://" + location.hostname + port + "/PublicSite/setup/accountsetup/new-account-setup.htm" + "?" + device_param + "&" + sources_param;
    window.location = url;
    return false;
    } else
    {
        flash_message(error_message3);
    }
}

$(document).ready(function(){
    $(".sc-dev-li-class").click(deviceClicked);
    $(".sc-src-li-class").click(sourceClicked);
    $("#sc-go-id").click(goClicked);
    $("#sc-blurb2-id").html(info_message1);
    begin_animation();
});
