AC_4897, AC_4898, AC_4899: Multifile uploader fixes.
[acontent.git] / include / jscripts / infusion / components / reorderer / js / ImageReorderer.js
1 var fluid_1_4=fluid_1_4||{};(function($,fluid){var deriveLightboxCellBase=function(namebase,index){return namebase+"lightbox-cell:"+index+":"};var addThumbnailActivateHandler=function(container){var enterKeyHandler=function(evt){if(evt.which===fluid.reorderer.keys.ENTER){var thumbnailAnchors=$("a",evt.target);document.location=thumbnailAnchors.attr("href")}};container.keypress(enterKeyHandler)};var seekNodesById=function(rootnode,tagname,idmatch){var inputs=rootnode.getElementsByTagName(tagname);var togo=[];for(var i=0;i<inputs.length;i+=1){var input=inputs[i];var id=input.id;if(id&&id.match(idmatch)){togo.push(input)}}return togo};var createImageCellFinder=function(parentNode,containerId){parentNode=fluid.unwrap(parentNode);var lightboxCellNamePattern="^"+deriveLightboxCellBase(containerId,"[0-9]+")+"$";return function(){return seekNodesById(parentNode,"div",lightboxCellNamePattern)}};var seekForm=function(container){return fluid.findAncestor(container,function(element){return $(element).is("form")})};var seekInputs=function(container,reorderform){return seekNodesById(reorderform,"input","^"+deriveLightboxCellBase(container.prop("id"),"[^:]*")+"reorder-index$")};var mapIdsToNames=function(container,reorderform){var inputs=seekInputs(container,reorderform);for(var i=0;i<inputs.length;i++){var input=inputs[i];var name=input.name;input.name=name||input.id}};var createIDAfterMoveListener=function(container){var reorderform=seekForm(container);mapIdsToNames(container,reorderform);return function(){var inputs,i;inputs=seekInputs(container,reorderform);for(i=0;i<inputs.length;i+=1){inputs[i].value=i}if(reorderform&&reorderform.action){var order=$(reorderform).serialize();$.post(reorderform.action,order,function(type,data,evt){})}}};var setDefaultValue=function(target,path,value){var previousValue=fluid.get(target,path);var valueToSet=previousValue||value;fluid.set(target,path,valueToSet)};fluid.reorderImages=function(container,options){var defaults=fluid.defaults("fluid.reorderImages");var mergedOptions=fluid.merge(defaults.mergePolicy,{},defaults,options);container=fluid.container(container);setDefaultValue(mergedOptions,"listeners.afterMove",mergedOptions.afterMoveCallback||createIDAfterMoveListener(container));setDefaultValue(mergedOptions,"selectors.movables",createImageCellFinder(container,container.prop("id")));var reorderer=fluid.reorderer(container,mergedOptions);fluid.tabindex($("a",container),-1);addThumbnailActivateHandler(container);return reorderer};fluid.lightbox=fluid.reorderImages;fluid.defaults("fluid.reorderImages",{layoutHandler:"fluid.gridLayoutHandler",selectors:{labelSource:".flc-reorderer-imageTitle"}})})(jQuery,fluid_1_4);