﻿(function($){$.layoutEngine=function(layoutSettings){$(window).resize(function(){render(layoutSettings)});render(layoutSettings)};$.layoutEngine.Version=function(){return"1.0.0"};$.layoutEngine.DOCK={TOP:0,LEFT:1,FILL:2,RIGHT:3,BOTTOM:4,NONE:5};getTopMargin=function(item){return item.MarginTop?item.MarginTop:(item.Margin?item.Margin:0)};getLeftMargin=function(item){return item.MarginLeft?item.MarginLeft:(item.Margin?item.Margin:0)};getBottomMargin=function(item){return item.MarginBottom?item.MarginBottom:(item.Margin?item.Margin:0)};getRightMargin=function(item){return item.MarginRight?item.MarginRight:(item.Margin?item.Margin:0)};render=function(layoutSettings){$(document.body).css({margin:0,padding:0});$(document.forms[0]).height($(window).height());var xDOC=$("#"+layoutSettings.EleID);var Top=0+getTopMargin(layoutSettings);var Left=0+getLeftMargin(layoutSettings);switch(layoutSettings.Dock){case $.layoutEngine.DOCK.FILL:xDOC.height($(window).height()-getBottomMargin(layoutSettings)-getTopMargin(layoutSettings));xDOC.width($(window).width()-getRightMargin(layoutSettings)-getLeftMargin(layoutSettings));xDOC.css({position:"absolute",top:Top,left:Left});break}renderChildren(layoutSettings)};renderChildren=function(currentObject){var currentContainer=$("#"+currentObject.EleID);var containerWidth=currentContainer.innerWidth();var containerHeight=currentContainer.innerHeight();var Top=0;var Left=0;var Bottom=containerHeight;var Right=containerWidth;var topList=$.grep(currentObject.Children,function(item){return item.Dock==$.layoutEngine.DOCK.TOP});var leftList=$.grep(currentObject.Children,function(item){return item.Dock==$.layoutEngine.DOCK.LEFT});var fillList=$.grep(currentObject.Children,function(item){return item.Dock==$.layoutEngine.DOCK.FILL});var rightList=$.grep(currentObject.Children,function(item){return item.Dock==$.layoutEngine.DOCK.RIGHT});var bottomList=$.grep(currentObject.Children,function(item){return item.Dock==$.layoutEngine.DOCK.BOTTOM});$.each(topList,function(index,item){var currentItem=$("#"+item.EleID);var currentTop=Top+getTopMargin(item);var currentLeft=Left+getLeftMargin(item);var widthDiff=getLeftMargin(item)+getRightMargin(item);var heightDiff=getTopMargin(item)+getBottomMargin(item);currentItem.css({position:"absolute",top:currentTop,left:currentLeft});currentItem.height(item.Height);currentItem.width(containerWidth-widthDiff);Top+=(item.Height+heightDiff)});$.each(bottomList,function(index,item){var currentItem=$("#"+item.EleID);var currentLeft=Left+getLeftMargin(item);var widthDiff=getLeftMargin(item)+getRightMargin(item);var heightDiff=getTopMargin(item)+getBottomMargin(item);Bottom-=(item.Height+heightDiff);var currentBottom=Bottom+getTopMargin(item);currentItem.css({position:"absolute",top:currentBottom,left:currentLeft});currentItem.height(item.Height);currentItem.width(containerWidth-widthDiff)});$.each(leftList,function(index,item){var currentItem=$("#"+item.EleID);var currentTop=Top+getTopMargin(item);var currentLeft=Left+getLeftMargin(item);var widthDiff=getLeftMargin(item)+getRightMargin(item);var heightDiff=getTopMargin(item)+getBottomMargin(item);currentItem.css({position:"absolute",top:currentTop,left:currentLeft});currentItem.width(item.Width);currentItem.height(Bottom-Top-heightDiff);Left+=(item.Width+widthDiff);if(item.Children&&item.Children.length>0){renderChildren(item)}});$.each(rightList,function(index,item){var currentItem=$("#"+item.EleID);var currentTop=Top+getTopMargin(item);var widthDiff=getLeftMargin(item)+getRightMargin(item);var heightDiff=getTopMargin(item)+getBottomMargin(item);Right-=(item.Width+widthDiff);var currentRight=Right+getLeftMargin(item);currentItem.css({position:"absolute",top:currentTop,left:currentRight});currentItem.width(item.Width);currentItem.height(Bottom-Top-heightDiff);if(item.Children&&item.Children.length>0){renderChildren(item)}});$.each(fillList,function(index,item){var currentItem=$("#"+item.EleID);var currentTop=Top+getTopMargin(item);var currentLeft=Left+getLeftMargin(item);var widthDiff=getLeftMargin(item)+getRightMargin(item);var heightDiff=getTopMargin(item)+getBottomMargin(item);currentItem.css({position:"absolute",top:currentTop,left:currentLeft});currentItem.width(Right-Left-widthDiff);currentItem.height(Bottom-Top-heightDiff);if(item.Children&&item.Children.length>0){renderChildren(item)}})}})(jQuery);