/**
* @constructor
* @param {Object} options { element «Node | id», name: «String» }
*/
hui.ui.Layout = function(options) {
this.name = options.name;
this.options = options || {};
this.element = hui.get(options.element);
hui.ui.extend(this);
};
hui.ui.Layout.create = function(options) {
options = hui.override({text:'',highlighted:false,enabled:true},options);
options.element = hui.dom.parse('<table class="hui_layout"><tbody class="hui_layout"><tr class="hui_layout_middle"><td class="hui_layout_middle">'+
'<table class="hui_layout_middle"><tr>'+
'<td class="hui_layout_left hui_context_sidebar"><div class="hui_layout_left"></div></td>'+
'<td class="hui_layout_center"></td>'+
'</tr></table>'+
'</td></tr></tbody></table>');
return new hui.ui.Layout(options);
};
hui.ui.Layout.prototype = {
addToLeft : function(widget) {
var tbody = hui.get.firstByClass(this.element,'hui_layout_left');
tbody.appendChild(widget.element);
},
addToCenter : function(widget) {
var tbody = hui.get.firstByClass(this.element,'hui_layout_center');
tbody.appendChild(widget.element);
},
/** @private */
$$layout : function() {
if (hui.browser.gecko) {
var center = hui.get.firstByClass(this.element,'hui_layout_center');
if (center) {
center.style.height='100%';
}
}
if (!window.navigator.userAgent.indexOf('AppleWebKit/536')) {
if (!hui.browser.msie7 && !hui.browser.msie8 && !hui.browser.msie9) {
return;
}
}
if (!hui.dom.isVisible(this.element)) {
return;
}
if (this.diff===undefined) {
var head = hui.get.firstByClass(this.element,'hui_layout_top');
var top = hui.get.firstByTag(head,'*').clientHeight;
var foot = hui.get.firstByTag(hui.get.firstByTag(this.element,'tfoot'),'td');
var bottom = 0;
if (foot) {
var inner = hui.get.firstByTag(foot,'*');
if (inner) {
bottom = inner.clientHeight;
}
}
top += hui.position.getTop(this.element);
this.diff = bottom+top;
if (this.element.parentNode!==document.body) {
this.diff+=15;
} else {
}
}
var tbody = hui.get.firstByTag(this.element,'tbody');
var cell = hui.get.firstByTag(tbody,'td');
var height = (hui.window.getViewHeight()-this.diff+5);
cell.style.height = height+'px';
}
};