﻿if (typeof AjaxGetHandler == "undefined") window.AjaxGetHandler = Communicator.Web.Ajax.Optimization.AjaxGetHandler;
var DockZoneSaveQueue = {
 _queuedDocks : [],
 _SAVE_EXPIRATION : 1200,
 _saveTimer : null,
 _locked : false,
 queue : function(sender, eventArgs){    
    if(sender.get_dockZoneID() && sender.get_id()){ //check if docked and not floating
        if(!DockZoneSaveQueue._locked){ //check if not currently saving
            var entry = sender.get_id() + ";" + sender.get_dockZoneID();
            if(DockZoneSaveQueue._queuedDocks.indexOf(entry) < 0){ //do not add duplicate entries                             
                DockZoneSaveQueue._queuedDocks.push(sender.get_id() + ";" + sender.get_dockZoneID());
                DockZoneSaveQueue._saveTimer = setTimeout(DockZoneSaveQueue.save, DockZoneSaveQueue._SAVE_EXPIRATION);
            }
        }else
            setTimeout(function(){DockZoneSaveQueue.queue(sender, eventArgs);}, 10);
    }
 },
 save : function(){
    if(DockZoneSaveQueue._queuedDocks && DockZoneSaveQueue._queuedDocks.length > 0){
       DockZoneSaveQueue._locked = true;
       CommAjaxOptimizationUtilities.doGet("SaveDockZoneSate", DockZoneSaveQueue._queuedDocks);
       DockZoneSaveQueue._queuedDocks = [];
       DockZoneSaveQueue._saveTimer = null;
       DockZoneSaveQueue._locked = false;
    }
 },
 cancelSave : function(){
    if(DockZoneSaveQueue._saveTimer)
        clearTimeout(DockZoneSaveQueue._saveTimer); 
 }
};
