﻿// JScript File

    //alert('bef2');
    //alert(document.getElementById('Tabs'));//.className = "tabsDivHide";
    //alert('after2');

function emptyRecycleBin()
{
    leaveSite=true;

    window.location = SiteUrl+"AlefoDev.aspx?EmptyRecycleBin=true";
}
function closeTab(tabID)
{
    openSystemDiv("SysWinCloseTab", "Close Tab", 50, 500, 0, 0, "SysWin_CloseTab_Wrapper");
}


function onTabSelected (e, ui)
{
	isTabLoaded = true;
    lpc.Activate('tab selected');
    currentTab = ui.panel.id.replace("fragment-","");
    if (typeof(ui) != "undefined") // fix a bug in FF
    {
        ajaxUpdateCall(
        {
            type  : "select-tab",
            TabID : ui.panel.id.replace("fragment-",""),
            nt: new Date()
        });
    }
    // blur the textbox of the rename element
    // there are two methods, cant choose which is less ugly..
    
    //find the textbox by its id's prefix
    //$("input[@id^='"+_tbPrefix+"']").blur();
    
    //find the textbox by an input descendant of DIV#Tabs
    $("#Tabs input").blur();
    
    // load the tabs content
    // used timeout swhich tabs more smoothly (first swhich then load..)
    window.setTimeout(delegate(this, loadTabByID, ui.panel.id.replace("fragment-","")), "0");
    //!!!danny unloadNonCurrentTabs();
}
    
function recycleFrames(tabId)
{
    var frames = getFramesForContainer(tabId,false);
    frames.each(function(){
        LoggedClose(this.id.replace("win",""));
    });
}
function getFramesForContainer(tabId,noMinimized)
{
    var prefix = "fragment-";
    var tabContainer = $("#"+prefix+tabId);
    var Frames = {};
    if (tabContainer.length) {
        Frames = tabContainer.children();
    }
    if (noMinimized && Frames.length) {
        Frames = Frames.filter(function(i) {
            return !$(this).hasClass("dragWin_minimized"); // dont load minimized.
        });
    }
    return Frames;
}

// DO NOT DELETE!!!!!!!=====================================================================================

//function addTabHtml(btn,update)
//{
//   var name = $(btn).val();
//   AddTabGetID(name);

//   var next_tab = (+max_tab_id);
//   var closeBtn = '<em class="closeTab" onclick="javascript:closeTab(this); return false;">&nbsp;&nbsp;&nbsp;</em>';
//   
//   $("#Tabs > ul").tabs("add", '#fragment-'+next_tab, name);
//   $("ul.TabSection").children(":last").attr("id",next_tab).append(closeBtn);
//   
//   // TODO: Add images for tabs gui to new tab template!!
//   
//   initializeSortableTabs("#Tabs > ul");
//}

//function AddTabGetID(name)
//{
//   var theData = "type=add-tab-get-id&name="+name

//   $.ajax(
//   {
//       type    : "POST",
//       url     : SiteUrl + DBPageCallUrl,
//       data    : theData,
//       async   : false,
//       success : function(data)
//       {
//           max_tab_id = $("#maxTab", data).text();
//           chk = true;
//       }
//   });   
//}

//===============================================================================================================================================
function initializeSortableTabs(sortClassName)
{
   $(sortClassName).sortable(
   {
       cursor      : 'move',
       axis        : "x",
       containment : 'parent',
       start       : function(ev,ui)
       {
           //registerEventName(event,'tab_drag_start');
       },
       stop        : function(ev,ui)
       {
           //registerEventName(event,'tab_drag_stop');
           var Items = $(this).parents("ul.TabSection").children();
           var order = "";
           Items.each(function()
           {
               order += this.id + ','
           });
           ajaxUpdateCall(
           {
               type  : "sort-stop",
               tabOrder : order
           });
       },
       update      : function(ev,ui)
       {
           //registerEventName(event,'tab_sort_update');
       },
       sort        : function(ev,ui)
       {
           //registerEventName(event,'tab_sort_sort');
       },
       change      : function(ev,ui)
       {
           //registerEventName(event,'tab_sort_change');
       }
   });
}
function initializeDroppables(dropClassName)
{
    $(".dropZone").droppable(
        {
            
            accept : ".dragWin",
            hoverClass : 'dropZone_hover',
            tolerance : 'pointer',
            over : function(ev,ui) {
                var selectedTabClassName = "ui-tabs-selected";
                if (!$(this).hasClass(selectedTabClassName)) {
                    var frameID = this.id;
                    //$("#tabLink"+frameID).css("color","#000000");
                    //$(this).css("background","url(Style/Images/tab_center_hover.png) repeat-x");
                } else {
                    $(this).removeClass(ui.options.hoverClass);
                }
            },
            out : function(ev,ui) {
                var selectedTabClassName = "ui-tabs-selected";
                if (!$(this).hasClass(selectedTabClassName))
                {
                    var frameID = this.id;
                    //$("#tabLink"+frameID).css("color","#ff7f00");
                    //$(this).css("background","url(Style/Images/tab_center.png) repeat-x");
                }
            },
            drop : function(ev,ui) {
                //registerEventName(event,'drop');
                leaveSite=true;
                try
                {
                    // wrap the click event in order to skip dropping event
                    _isDropEvent = true;
                    
                    dragged_element = $(dragged_element).removeClass("ui-draggable")[0];
                    
                    if ($(dragged_element).children(".resizeSheet").length)
                        dragged_element = $(dragged_element).children(".resizeSheet").removeClass("ui-resizable").parents(".dragWin")[0];
                    
                    var future_parent_id = "";
                        future_parent_id = $(this).children('a').attr("Href");
                        future_parent_id=(future_parent_id.substring(future_parent_id.indexOf("fragment-")+9));
                        
                    var current_tab_num = $(tabs).data('selected.ui-tabs') + 1;
                    var current_parent = $("#fragment-"+current_tab_num);
                    var future_parent = $(future_parent_id);
                    
                    $(dragged_element).remove();
                    $(dragged_element).appendTo(future_parent);

                    SetPosition(dragged_element,dragged_element_top,dragged_element_left);
                    SetSize($(dragged_element),dragged_element_width,dragged_element_height);
                    
                    initializeDraggables(".dragWin");
                    initializeResizable(".resizeSheet");

                    // Add the z-index update to the onDrop event.
                    // set zindex in future parents max + 1
                    var tid = future_parent_id;
                    var new_zindex = GetMaxZindex(tid) + 1;
//                    ajaxUpdateCall(
//                    {
//                        type   : "drop",
//                        id     : dragged_element.id.replace("win",""),
//                        tabID  : future_parent_id,//future_parent_id.replace("#fragment-",""),
//                        frTop  : dragged_element_top,
//                        frLeft : dragged_element_left,
//                        zi     : new_zindex
//                    });
//                    
                $(dragged_element).css("z-index",new_zindex);
                
                //$(this).children('a').trigger('click');
                var redirect = SiteUrl + "DropTab.aspx?futureTab="+tid+"&frameID="+dragged_element.id.replace("win","")+"&frTop="+dragged_element_top+"&frLeft="+dragged_element_left+"&zi="+new_zindex;
                window.location = redirect;
                //_isDropEvent = false;
            }
            catch(ex)
            {
                alert('an error has occured:\n'+
                       ex.description+'\n'
                       +ex.name);
            }
        }
    });
}

function RenameTab(element)
{
var elid = element.id;
//!!!danny
//alert('renametab');
    //window.location='http://www.google.com';
    //return false;
    var e = window.event || arguments.callee.caller.arguments[0];
    
    if (_isBlocked) {
        _isBlocked = false;
        return false;
    }
    if ($(getTargetElement(e)).hasClass('img_menu')) return false; // break if its the menu click.
    
    var selectedTabClassName = "ui-tabs-selected";
    var li = $(element).parents("li");
    if (li.hasClass(selectedTabClassName) && !_isDropEvent) {
        var rtc = new RenameTabControl(li);
        rtc.edit();
    } else {
        //danny!!!
        leaveSite=true;
        window.location=SiteUrl+'AlefoDev.aspx?TabID='+elid;
        return false;
    }
}


/************************/
/*  Rename Tab Control  */
/************************/

var _tbPrefix = "tbTabName-";
// if there is an event that triggers the edit mode on a tab
// simply change _isBlocked to true and it will not be triggered!
var _isBlocked = false;

function RenameTabControl(li) {
    this._li = li;
}

RenameTabControl.prototype._li;

RenameTabControl.prototype.edit = function () {
    var li = this._li;
    var tabNameLink = li.children('a');
    var textbox = GenerateRenameTextBox(tabNameLink.width(),tabNameLink.height(),li[0].id);
    tabNameLink.hide();
    tabNameLink.before(textbox);
    textbox.val(tabNameLink.children("span").text().trim());
    textbox.keypress(delegate(this, handleKeyPress));
    textbox.blur(delegate(this, this.submit));
    setTimeout(delegate(this, SelectText, textbox),0);
    //setTimeout(delegate(this, this.submit,textbox),0);
}

var escapeTB = false;

RenameTabControl.prototype.submit = function() {
    var id = this._li[0].id;
    var li = this._li;
    var tabNameLink = li.children('a');
    var textbox = $("#" + _tbPrefix + id);
    
    if (escapeTB)
    {
        tabNameLink.show();
        textbox.remove();
        return;
     }

    // break if no text!
    if (jQuery.trim(textbox.val()).length == 0) return;
    
    var isChanged = jQuery.trim(textbox.val()) != jQuery.trim(tabNameLink.children('span').text());
    
    if (jQuery.trim(textbox.val()).length > 0)
        tabNameLink.children('span').text(jQuery.trim(textbox.val()));
    
    tabNameLink.show();
    textbox.remove();
    if (isChanged) {
        ajaxUpdateCall(
        {
           type     : "rename_tab",
           tabID    : id,
           new_name : jQuery.trim(textbox.val())
       });
    }
}

RenameTabControl.prototype.cancel = function() {
    var id = this._li[0].id;
    var li = this._li;
    var tabNameLink = li.children('a');
    var textbox = $("#" + _tbPrefix + id);
    
    tabNameLink.show();
    textbox.remove();
}

var handleKeyPress = function()
{
//alert('cc');
    var theEvent = window.event || arguments.callee.caller.arguments[0];
    if(theEvent.which || theEvent.keyCode)
    {
        if ((theEvent.which == 13) || (theEvent.keyCode == 13))
        {
            // we take the focus from the textbox in order to trigger the submit without calling it.
            this._li.children("input").blur();
        } else if ((theEvent.which == 27) || (theEvent.keyCode == 27)) {
            escapeTB=true;
            this._li.children("input").blur();
        } else if ((theEvent.which == 8) || (theEvent.keyCode == 8)) {
            // backspace in IE only be on keydown
            // not used yet..
        }
    }
}

var SelectText = function()
{
    arguments[0].select();
}

function GenerateRenameTextBox(width,height,id)
{
    var style = "width:"+width+"px;";
    style += "height:"+12+"px;";
    style += "background-color:#f6f6f6;";
    style += "border:0;";
    style += "font-size:10px;";
    style += "text-align:center;";
    style += "_margin-left:-5px;";
    style += "_margin-top:-10px;";
    return $("<input type='text' id='"+_tbPrefix+id+"' style='"+style+"' class='tbRenameTab'  />");
}


//==============Tab Menu=======================================================================================================================
var mouseOnTabMenu ='';
var currentMenuTabID = 0;

function OpenCloseTabMenu(tabID)
{
    var menu = document.getElementById("tabMenu");
    var li = $("#"+tabID);
    if(menu.style.display == "none")
    {
        currentMenuTabID = tabID;
        menu.style.display = "block";
        var off = li.offset();
        var l = off.left + li.width() - 30;
        menu.style.left = l + "px";
        var t = off.top + li.height() + 2 - divAllTop;
        menu.style.top = t + "px";
    }
    else if(menu.style.display != "none" && tabID == currentMenuTabID)
        menu.style.display = "none";
}

function ConditionalCloseTabMenu()
{
    if(mouseOnTabMenu.endsWith('-'))
    {
        document.getElementById("tabMenu").style.display = "none";
        mouseOnTabMenu = "";
    }
}