﻿//// <reference path="jquery-1[1].3.1-vsdoc.js"/>

function pageLoad() {
  $("#right_scroll_nested1").bind('scroll', function (event) { scrollRight(); })
    $("#left_scroll").bind('scroll', function(event) { scrollLeft(); })
    $("#vscroll").bind('scroll', function(event) { scrollVertical(); })
    $("#GanttChartImg2").bind('load', function (event) { ganttChartImgLoaded(); })
    $("#right").css("top", $("#left").css("top"));
}

$(function () {
  $.scrollTo.defaults.axis = 'xy';
  SetSizes();
  $(window).bind('resize', function (event) { ResizeListner(event); })
  $("#grid_table").bind('click', function (event) { cellClick(event); })
  $("#grid_table").bind('dblclick', function (event) { cellDblClick(event); })
  $("#tbbOpen").bind('click', function (event) { $("#BrowseOpenFilePanel").dialog('open'); })
  $("#tbbTaskInformation").bind('click', function (event) { TaskInfoButtonClick(event, -1); })
  $("#tbbTaskNotes").bind('click', function (event) { TaskInfoButtonClick(event, 4); })
  $("#tbbZoomIn").bind('click', function (event) { ZoomIn(); })
  $("#tbbZoomOut").bind('click', function (event) { ZoomOut(); })

  $("#tbbShowSubtasks").bind('click', function (event) { ShowSubTasksClick(event); })
  $("#tbbHideSubtasks").bind('click', function (event) { HideSubTasksClick(event); })

  $("#mi_open").bind('click', function (event) { $("#BrowseOpenFilePanel").dialog('open'); })
  $("#mi_taskinfo").bind('click', function (event) { TaskInfoButtonClick(event, -1); })
  $("#mi_tasknotes").bind('click', function (event) { TaskInfoButtonClick(event, 4); })
  $("#mi_share").bind('click', function (event) { ShowShareDialogCommand(); })
  $("#mi_opentemplate").bind('click', function (event) { OpenBrowseTemplateDialog(); })
  $("#mi_rp").bind('click', function (event) { toggleRPanel(event); })

  $("#info_panel_view_samples").bind('click', function (event) { OpenBrowseTemplateDialog(); })
  $("#hide_rp").bind('click', function (event) { toggleRPanel(event); })
  Hacks();

  $("#right_scroll_nested2").width($(".timescale_header").width());
  $(".gantt_row").width($(".timescale_header").width());
  $("#vscroll_nested").height($("#grid_table").height() + 30);

  $("#sep").draggable({ axis: 'x', containment: [51, 0, $("#vscroll").position().left - 7, 100] });
  $("#sep").bind('dragstop', function (event, ui) { SeparatorDragStop(event, ui); })
  $(".left_header_col_resizer").draggable({ axis: 'x' });
  $(".left_header_col_resizer").bind('dragstop', function (event, ui) { GridColumnDragStop(event, ui); })
  $(".left_header_col_resizer:last").width(1);
  $(".tb_btn_enabled").hover(
        function () { $(this).addClass("tb_btn_hover"); },
        function () { $(this).removeClass("tb_btn_hover"); });

  $(".expander").bind('click', function (event) { ToggleGridRowExpand(event); });
  SetCollapsedData();

  $("#grid_table").mousewheel(function (event, delta) { MouseWheelScroll(event, delta); });
  $("#GanttChart1").mousewheel(function (event, delta) { MouseWheelScroll(event, delta); });

  if ($("#rp_AutoHide").val() == "1") HideRPanelNA();

  $.ui.dialog.defaults.bgiframe = true;

  $("#reading_error_msgbox").dialog({
    resizable: false,
    height: 200,
    width: 350,
    modal: true,
    position: 'center',
    buttons: { "Ok": function () { $(this).dialog("close"); } },
    autoOpen: false
  });

  $("#BrowseOpenFilePanel").dialog({
    resizable: false,
    height: 130,
    width: 500,
    modal: true,
    position: 'center',
    buttons: {
      "Cancel": function () { $(this).dialog("close"); },
      "Open": function () { ShowUploadIndicator(); }
    },
    autoOpen: false
  });
  $("#BrowseOpenFilePanel").parent().appendTo($("form:first"));

  $("#templates").dialog({
    resizable: false,
    height: 400,
    width: 400,
    modal: true,
    position: 'center',
    buttons: {
      "Close": function () { $(this).dialog("close"); }
    },
    autoOpen: false
  });

  $("#msgbox").dialog({
    resizable: false,
    height: 150,
    width: 350,
    modal: true,
    position: 'center',
    buttons: { "Ok": function () { $(this).dialog("close"); } },
    autoOpen: false
  });

  if ($("#msgbox_message")[0].innerHTML.length > 0) {
    MsgBoxShow();
  }

  if ($("#reading_error_msgbox_message")[0].innerHTML.length > 0) {
    $("#reading_error_msgbox").dialog('open');
  }

  $("ul.sf-menu").supersubs({
    minWidth: 12,
    maxWidth: 27,
    extraWidth: 1
  }).find('ul').bgIframe({ opacity: false });
});

function MouseWheelScroll(event, delta) {
  $("#vscroll").stop().scrollTo((delta > 0 ? '-' : '+') + '=20px');
}
    
function MsgBoxShow() {
    $("#msgbox").dialog('option', 'buttons', { "Ok": function() { $(this).dialog("close"); } }).dialog('open');
}

function MsgBoxShowYN() {
    $("#msgbox").dialog('option', 'buttons', { "No": function() { $(this).dialog("close"); }, "Yes": function() { $(this).dialog("close"); } }).dialog('open');
}

function MsgBox(msg, buttons, icon) {
    $("#msgbox_message")[0].innerHTML = msg;
    switch (buttons) {
        case "yn":
            var buttons = { "No": function() { $(this).dialog("close"); }, "Yes": function() { $(this).dialog("close"); } };
            break;
        default:
            var buttons = { "Ok": function() { $(this).dialog("close"); } };
    }
    $("#msgbox_icon").attr('class', 'msgbox-icon-' + icon);
    $("#msgbox").dialog('option', 'buttons', buttons).dialog('open');
}

function ToggleGridRowExpand(event) {
    var parID = '.p' + $(event.target).parents('tr').attr('id')
    if ($(event.target).attr('src') == '/apImg/grid/expanded.png') {
        HideSubTasks(parID);
    }
    else {
        ShowSubTasks(parID);
    }
}

function ShowSubTasks(row) {
    if ($('#' + row.substring(2) + ' .expander').attr('src') == '/apImg/grid/expanded.png') return;
    $('#' + row.substring(2) + ' .expander').attr('src', '/apImg/grid/expanded.png');
    $(row).each(function(n) {
        $(this).data('collapsed', $(this).data('collapsed') - 1);
    }).filter(function() {
        return $(this).data('collapsed') == 0;
    }).show();
    UpdateVScrollHeight();
}

function HideSubTasks(row) {
    if ($('#' + row.substring(2) + ' .expander').attr('src') == '/apImg/grid/collapsed.png') return;
    $('#' + row.substring(2) + ' .expander').attr('src', '/apImg/grid/collapsed.png');
    $(row).hide().each(function(n) {
        $(this).data('collapsed', $(this).data('collapsed') + 1);
    });
    UpdateVScrollHeight();
}

function ShowSubTasksClick(event) {
    ShowSubTasks('.ptr' + GetSelTaskUID());
}

function HideSubTasksClick(event) {
    HideSubTasks('.ptr' + GetSelTaskUID());
}

function GetSelTaskUID() {
    var taskUid = ($(".grid_table_td_selected").parents().filter("tr").attr("id")).substring(2);
    return taskUid;
}

function ShowUploadIndicator() {
    $("#FileUpload1").hide();
    $("#UploadingImg").show();
    $("#BrowseOpenFilePanel").data("title.dialog", "Uploading... Please wait");
    __doPostBack('', '');
}

function SeparatorDragStop(event, ui) {
    var sepLeft = parseInt($("#sep").css("left"), 0);
    var rpWidth;
    if ($("#rp").length)
      rpWidth = parseInt($("#rp").width(), 0);
    else
      rpWidth = 0;
    var emptyBoxWidth = 17;
    var viewBarWidth = 17,
    sepWidth = 7,
    gridSelectorWidthAndBorder = 34;
    var rightWidth = $(window).width() - sepLeft - sepWidth - rpWidth - viewBarWidth;
    var correction = 0;
    if (!$.browser.mozilla) correction = 17;
    $("#right").css("left", sepLeft);
    $("#right").width(rightWidth);
    $(".right_header").css("left", sepLeft);
    $(".right_header").width(rightWidth);
    $("#right_scroll").css("left", sepLeft);
    $("#right_scroll").width(rightWidth);
    $("#right_scroll_nested1").width(rightWidth);
    $("#left_header").width(sepLeft - viewBarWidth - gridSelectorWidthAndBorder);
    $("#left").width(sepLeft - viewBarWidth - gridSelectorWidthAndBorder);
    $("#left_scroll").width(sepLeft - viewBarWidth + correction);
}

function SetHeights() {
    $("#vscroll").height($.browser.mozilla ? $(window).height() - 100 - 40 : $(window).height() - 100 - 40 + 17);
    $("#row_selector").height($(window).height() - 132 - 40);
    $("#left").height($(window).height() - 132 - 40);
    $("#right").height($(window).height() - 132 - 40);
    $("#view_bar").height($(window).height() - 100);
    $("#sep").height($(window).height() - 100);
    if ($("#rp").length)
      $("#rp").height($(window).height() - 100);
}

function ResizeListner(event) {
  var rpWidth;
  if ($("#rp").length)
    rpWidth = parseInt($("#rp").width(), 0);
  else
    rpWidth = 0;

  SeparatorDragStop(event, 0);
  SetHeights();
};

function SetSizes(event) {
  var rpWidth;
  if ($("#rp").length)
    rpWidth = parseInt($("#rp").width(), 0);
  else
    rpWidth = 0;

    $("#left_scroll").width($.browser.mozilla ? $("#head").width() * 0.4 - 17 : $("#head").width() * 0.4);
    $("#left_scroll_nested").width($("#grid_table").width()+38);
    $("#left_header").width($("#head").width() * 0.4 - 49); // ff
    $("#left").width($("#head").width() * 0.4 - 49);
    // ^^^ 49 is 17 view bar + 34 grid selector - 2 extra px of column resizer
    $("#right_scroll").width($.browser.mozilla ? $("#head").width() * 0.6 - rpWidth - 6 - 17 : $("#head").width() * 0.6 - rpWidth - 6);
    $("#right_scroll_nested1").width($("#right_scroll").width());
    $(".right_header").width($("#right_scroll").width());
    $("#right").width($.browser.mozilla ? $("#head").width() * 0.6 - rpWidth - 6 - 17 : $("#head").width() * 0.6 - rpWidth - 6);
    SetHeights();
};

function GridColumnDragStop(event, ui) {
    var oldWidth = $(ui.helper).prev().width();
    var newWidth = parseInt($(ui.helper).css("left")) - parseInt($(ui.helper).prev().css("left"));
    if (newWidth < 0) {
        newWidth = 0;
        $(ui.helper).css("left", parseInt($(ui.helper).prev().css("left"),0));
    }
    $(ui.helper).prev().width(newWidth);
    var offset = $(ui.helper).prev().width() - oldWidth;
    var colNum = $(ui.helper).prevAll().length / 2 - 1;
    $(ui.helper).nextAll().each(function() { $(this).css("left", parseInt($(this).css("left"), 0) + offset); });
    $("#grid_table").css("width", parseInt($("#grid_table").css("width"), 0) + offset)
    $("#left_scroll_nested").width($("#grid_table").width() + 38);
    var column = $("#grid_table col:eq(" + colNum + ")");
    column.attr("width", parseInt(column.attr("width"), 0) + offset);
}

function Hacks() {
  // http://stackoverflow.com/questions/1035706/firefox-1-pixel-bug-with-border-collapse-workaround
    /* - fixed in new ver
    if ($.browser.mozilla) {
        $("#left").css("padding-left", 1);
        $("#left").css("padding-top", 1);
    }
*/
    if ($.browser.msie && $.browser.version != "8.0") {
    $(".grid_table col").attr("width", function() { return $(this).attr("width") - 1 + "px"; });
    }
                                                                                                                                                      
    if ($.browser.msie && $.browser.version != "8.0") {
      $("#timescale3 col").attr("width", function() { return $(this).attr("width") - 1; });
      $("#timescale2 col").attr("width", function() { return $(this).attr("width") - 1; });
      $("#timescale1 col").attr("width", function() { return $(this).attr("width") - 1; });
    }

    if ($.browser.msie && $.browser.version == "8.0") {
    $(".grid_table td").css("height", "19px");
    }

    if ($.browser.msie && ($.browser.version == "7.0" || $.browser.version == "6.0")) {
    $.each($.grep($(".grid_table td"), function(value) { return value.innerHTML.length > 0 }), function() { $(this).css("height", "19px"); });
    }

    if ($.browser.safari) {
        $(".grid_table td").css("height", "19px");
    }
}

function ganttChartImgLoaded() {
  // set right scroll width
    $("#GanttRendering2").css("display", "none");
    if ($("#GanttChartImg2").width() == 0) {
        //$("#msgbox_message")[0].innerHTML = "Gantt Chart drawing error. This error has been logged and we try to resolve it.";
        //MsgBoxShow();
        MsgBox("Gantt Chart drawing error. This error has been logged and we try to resolve it.", 'ok', 'error');
        return;        
    }
    
    $("#right_scroll_nested2").width($("#GanttChartImg2").width());
    // set right block height
    $("#vscroll_nested").height($("#GanttChartImg2").height() + 30);

    $(".gantt_row").width($("#GanttChartImg2").width());
  }

function scrollRight(ev) {
    $.scrollTo.defaults.axis = 'x';
    var x = $get("right_scroll_nested1").scrollLeft;
    $(".right_header").stop().scrollTo(x);
    $("#right").stop().scrollTo(x);
}

function scrollLeft(ev) {
    $.scrollTo.defaults.axis = 'x';
    var x = $get("left_scroll").scrollLeft;
    $("#left_header").stop().scrollTo(x);
    $("#left").stop().scrollTo(x);
}

function scrollVertical(ev) {
    $.scrollTo.defaults.axis = 'y';
    var y = $get("vscroll").scrollTop;
    $("#left").stop().scrollTo(y);
    $("#right").stop().scrollTo(y);
    $("#row_selector").stop().scrollTo(y);
}

function cellClick(ev) {
    $("#EntryBar").val($(ev.target).text());
    $(".grid_table_td_selected").removeClass("grid_table_td_selected");
    $(ev.target).parents().add(ev.target).filter("td").addClass("grid_table_td_selected");
}

function TaskInfoButtonClick(ev, tabIndex) {
    if ($(".grid_table_td_selected").size() > 0) {
        var taskUid = ($(".grid_table_td_selected").parents().filter("tr").attr("id")).substring(2);
        if (taskUid) {
            ShowTaskInfoDialogCommand(taskUid, tabIndex);
        } 
    }
}

function cellDblClick(event) {
    var taskUid = ($(event.target).parents().filter("tr").attr("id")).substring(2);
    if(taskUid != '')
        ShowTaskInfoDialogCommand(taskUid, -1);
}

function ShowTaskInfoDialogCommand(taskUid, tabIndex) {
    if ($("#task_info_dialog").size() == 0) {
        LoadTaskInfoDialog(taskUid);
    }
    else {
        LoadTaskInfoData(taskUid, tabIndex);
    } 
}

function LoadTaskInfoDialog(taskUid, tabIndex) {
    $.ajax({
        type: "POST",
        url: "/WebService.asmx/GetTaskInfoDialog",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $("#hidden_div").append(msg.d);
            InitTaskInfoDialog();
            LoadTaskInfoData(taskUid, tabIndex);
        }
    });    
}

function InitTaskInfoDialog() {
    $.ui.dialog.defaults.bgiframe = true;

    $("#task_info_tabs").tabs({
        selected: 0
    });

    $("#task_info_dialog").dialog({
        resizable: false,
        height: 450,
        width: 650,
        modal: true,
        position: 'center',
        buttons: { "Ok": function() { $(this).dialog("close"); } },
        autoOpen: false
    });
}

function LoadTaskInfoData(taskUid, tabIndex) {
    $.ajax({
        type: "POST",
        url: "/WebService.asmx/GetTaskInfoData",
        data: "{'ProjectFileID':'" + $("#ProjectID").val() + "','TaskUID':'" + taskUid + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            //alert(msg.d);
            ShowTaskInfoDialog(eval('(' + msg.d + ')'), tabIndex);
        }
    });
}

function ShowTaskInfoDialog(taskRecord, tabIndex) {
    if (taskRecord.msg != null) {
        MsgBox(taskRecord.msg, 'ok', taskRecord.icon);        
        return;
    }
    $("#task_info_name").val(taskRecord.name);
    $("#task_info_duration").val(taskRecord.duration);
    $("#task_info_estimated").attr("checked", (taskRecord.duration.indexOf('?') != -1));
    $("#task_info_percent_complete").val(taskRecord.percentComplete);
    $("#task_info_priority").val(taskRecord.priority);
    $("#task_info_start").val(taskRecord.start);
    $("#task_info_finish").val(taskRecord.finish);
    $("#task_info_hide_bar").attr("checked", (taskRecord.hideBar == "True"));
    $("#task_info_rollup").attr("checked", (taskRecord.rollup == "True"));
    $("#task_info_deadline").val(taskRecord.deadline);
    $("#task_info_constraint_type").val(taskRecord.constraintType);
    $("#task_info_constraint_value").val(taskRecord.constraintValue);
    $("#task_info_task_type").val(taskRecord.taskType);
    $("#task_info_effort_driven").attr("checked", (taskRecord.effortDriven == "True"));
    $("#task_info_calendar").val(taskRecord.calendar);
    $("#task_info_ignore_resource_calendar").attr("checked", (taskRecord.ignoreResourceCalendar == "True"));
    $("#task_info_wbs").val(taskRecord.wbs);
    $("#task_info_earned_value_method").val(taskRecord.earnedValueMethod);
    $("#task_info_milestone").attr("checked", (taskRecord.milestone == "True"));
    $("#task_info_tab_notes textarea").text(taskRecord.notes);
    
    // clear predecessors grid
    $("#task_info_tab_predecessors table tbody").html("<tr><td></td><td></td><td></td><td></td></tr>");    
    
    for(var i=0; i<taskRecord.predecessors.length; i++)
    {
        var p = taskRecord.predecessors[i];
        var rowString = "<tr><td>" + p.id + "</td><td>" + p.taskName + "</td><td>" + p.type + "</td><td>" + p.lag + "</td></tr>";
        if(i==0) {
            $("#task_info_tab_predecessors table tbody").html(rowString);
        }
        else {
            $("#task_info_tab_predecessors table tbody").append(rowString);
        }
    }

    // clear resouces grid
    $("#task_info_tab_resources table tbody").html("<tr><td></td><td></td><td></td><td></td></tr>");

    for (var i = 0; i < taskRecord.resources.length; i++) {
        var r = taskRecord.resources[i];
        var rowString = "<tr><td>" + r.resourceName + "</td><td>" + r.assignmentOwner + "</td><td>" + r.units + "</td><td>" + r.cost + "</td></tr>";
        if (i == 0) {
            $("#task_info_tab_resources table tbody").html(rowString);
        }
        else {
            $("#task_info_tab_resources table tbody").append(rowString);
        }
    }

    $("#task_info_dialog").dialog('open');
    if (tabIndex >= 0 && tabIndex <= 4)
        $("#task_info_tabs").tabs('select', tabIndex);
}

function FileReadingErrorMsgBoxOkClicked() {
    if($('[name=FileReadingErrorMsgBox1$ctl03]').val().length > 0)
        AmiProject.WebService.SetEmail4ReadingFailure($('[name=FileReadingErrorMsgBox1$ctl05]').val(), $('[name=FileReadingErrorMsgBox1$ctl03]').val(), OnRequestComplete);
}

function OnRequestComplete(result) {
}

function toggleRPanel(event) {
  if ($("#rp:visible").length > 0)
    HideRPanel();
  else
    ShowRPanel();    
}

function HideRPanel() {
  $("#rp").animate({ width: 0 }, "normal", function() { HideRPanelFinish(); });
  $(".right_header").animate({ width: parseInt($(".right_header").width(), 0) + 160 });
  $("#right").animate({ width: parseInt($("#right").width(), 0) + 160 });
  $("#vscroll").animate({ right: 0 });
  $("#right_scroll_nested1").animate({ width: parseInt($("#right_scroll_nested1").width(), 0) + 160 });
  $("#empty_box").animate({ right: 0 });
}

function HideRPanelFinish() {
  $("#rp").hide();
  $("#sep").draggable('option', 'containment', [51, 0, $("#vscroll").position().left, 100]);
}

function ShowRPanel() {
  $("#rp").show();
  $("#rp").animate({ width: 160 }, "normal", function() { ShowRPanelFinish(); });
  $(".right_header").animate({ width: parseInt($(".right_header").width(), 0) - 160 });
  $("#right").animate({ width: parseInt($("#right").width(), 0) - 160 });
  $("#vscroll").animate({ right: 160 });
  $("#right_scroll_nested1").animate({ width: parseInt($("#right_scroll_nested1").width(), 0) - 160 });
  $("#empty_box").animate({ right: 160 });
}

function HideRPanelNA() {
  $("#rp").width(0);
  $("#rp").hide();
  $(".right_header").width(parseInt($(".right_header").width(), 0) + 160);
  $("#right").width(parseInt($("#right").width(), 0) + 160);
  $("#vscroll").css("right", 0);
  $("#right_scroll_nested1").width(parseInt($("#right_scroll_nested1").width(), 0) + 160);
  $("#empty_box").css("right", 0);
}

function ShowRPanelFinish() { 
  $("#sep").draggable('option', 'containment', [51, 0, $("#vscroll").position().left, 100]);
}

function ShowShareDialogCommand() {
    if ($("#share_dialog").size() == 0) {
        LoadShareDialog();
    }
    else {
        LoadShareData();
    }
}

function SetCode(msg) {
    var r = eval('(' + msg + ')');
    if (r.projectFileCode != null) {
        $("#share_dialog_link").val('http://www.amiproject.com/open/' + r.projectFileCode);
        $("#share_dialog_email_link").attr('href', 'mailto:?subject=You%20have%20received%20AmiProject%20link!&body=http://www.amiproject.com/open/' + r.projectFileCode);
    }
}


function ShowUploadIndicator2() {
    $("#FileUpload2").hide();
    $("#UploadingImg2").show();
    $("#share_dialog_submit").html("Uploading... Please wait");
    $("#share_dialog_submit").unbind('click');
    $("#IsOwner").after($("#FileUpload2"));
    __doPostBack('', '');
}

function LoadShareDialog() {
    $.ajax({
        type: "POST",
        url: "/WebService.asmx/GetShareDialog",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $("#hidden_div").append(msg.d);
            $("#share_dialog").dialog({
                resizable: false,
                height: 255,
                width: 550,
                modal: true,
                position: 'center',
                buttons: { "Ok": function() { $(this).dialog("close"); } },
                autoOpen: false
            });

            $("#share_dialog").parent().appendTo($("form:first"));

            $("#UploadingImg2").after($("#FileUpload2"));

            $("#share_dialog_delete").bind('click', function(event) {
                RunCommand("ShareDelete");
                $("#share_dialog").dialog('close');
            })

            $("#share_dialog_change_code").bind('click', function(event) {
                RunCommand2("ShareChangeCode", SetCode);
            })

            $("#share_dialog_change_file").bind('click', function(event) {
                $("#FileUpload2").show();
                $("#share_dialog_submit").show();
            })

            $("#share_dialog_submit").bind('click', function(event) {
                ShowUploadIndicator2()
            })

            LoadShareData();
        }
    });
}

function LoadShareData() {
    $.ajax({
        type: "POST",
        url: "/WebService.asmx/ShareStart",
        data: "{'ProjectFileID':'" + $("#ProjectID").val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var r = eval('(' + msg.d + ')');
            if (r.msg != null) {
                MsgBox(r.msg, 'ok', msg.icon);
                return;
            }
            var projectFileCode = r.projectFileCode;
            $("#share_dialog_link").val('http://www.amiproject.com/open/' + projectFileCode);
            $("#share_dialog_email_link").attr('href', 'mailto:?subject=You%20have%20received%20AmiProject%20link!&body=http://www.amiproject.com/open/' + projectFileCode);
            if (IsUserRegistered()) {
                $(".share_dialog_free").hide()
                $(".share_dialog_premium").show()
                if (IsUserOwner())
                    $(".share_dialog_owner").show()
                else
                    $(".share_dialog_owner").hide();
            }
            else {
                $(".share_dialog_free").show()
                $(".share_dialog_premium").hide()
                $(".share_dialog_owner").hide()
            }
            $("#FileUpload2").hide();
            $("#share_dialog_submit").hide();
            $("#UploadingImg2").hide();
            
            $("#share_dialog").dialog('open');
        }
    });
}

function DefaultOnSuccess(msg) {
    var r = eval('(' + msg + ')');
    if (r.msg != null) {
       MsgBox(r.msg, 'ok', r.icon);
   } 
}

function RunCommand2(cmd, onSuccess) {
    $.ajax({
        type: "POST",
        url: "/WebService.asmx/" + cmd,
        data: "{'ProjectFileID':'" + $("#ProjectID").val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            onSuccess(msg.d);
        }
    });
}

function RunCommand(cmd) {
    RunCommand2(cmd, DefaultOnSuccess);
}

function OpenBrowseTemplateDialog() {
    $("#templates").dialog('open');
}

function IsUserRegistered() {
    if ($("#login_info a").html() == "Login / Register")
        return false;
    else
        return true;
}
function IsUserOwner() {
    if ($("#IsOwner").val() == "1")
        return true;
    else
        return false;
}

function SetCollapsedData() {
    $(".grid_table tr").data("collapsed", 0);
    $(".rsi").data("collapsed", 0);
    $(".rsr").data("collapsed", 0);
    $(".gantt_row").data("collapsed", 0);
    var c = eval('(' + $('#grid_table_collapses').val() + ')');
    for (var j = 0; j < c.c.length; j++)
    {
      $("#tr" + c.c[j].i).data("collapsed", c.c[j].c);
      $("#rsi" + c.c[j].i).data("collapsed", c.c[j].c);
      $("#rsr" + c.c[j].i).data("collapsed", c.c[j].c);
      $("#gr" + c.c[j].i).data("collapsed", c.c[j].c);
    }
}

function UpdateVScrollHeight() {
    $("#vscroll_nested").height($(".gantt_row:visible").length * 20 + 30);
}

function ZoomIn() {
    GantRendering();
    RunCommand2("ZoomIn", RefreshGanttChart);
}
function ZoomOut() {
    GantRendering();
    RunCommand2("ZoomOut", RefreshGanttChart);
}

function GantRendering() {
    $("#GanttChart1 .gantt_row:first").css('background-image', '');
}

function RefreshGanttChart(msg) {
    var pat = /[0-9]*/;
    var tsperpixel = msg.match(pat);

    var imgurl = $(".gantt_row:last").css('background-image');
    imgurl = imgurl.replace(/zoom=[0-9]*/, "zoom=" + Math.floor(Math.random() * 1000000));
    imgurl = imgurl.replace(/timeSpanPerPixel=[0-9]*/, "timeSpanPerPixel=" + tsperpixel);
    $(".gantt_row").css('background-image', imgurl);

    msg = msg.replace(pat, "");
    $(".right_header").remove();
    $(msg).insertAfter('#sep');

    $(".gantt_row").width($(".timescale_header").width());
    $(".gantt_rendering").width($(".timescale_header").width());
    $("#right_scroll_nested2").width($(".timescale_header").width());
}