(function($){
function buildTabs(target){
var options = $.data(target,"ribbon").options;
$(target).tabs(options);
}
function loadData(target,data){
debugger;
var r = $(target);
var options = $.data(target,"ribbon").options;
options.data = data;
for (var i = 0; i < data.tabs.length; i++) {
var tab = data.tabs[i];
r.tabs("add",tab);
var tabTarget = r.tabs("getTab",i);
buildGroup(tab.groups,tabTarget);
}
}
function buildGroup(groups,tabTarget){
for (var i = 0; i < groups.length; i++) {
var group = groups[i];
var gt = $('').appendTo(tabTarget);
var tg = $('').appendTo(gt);
$('').html(group.title).appendTo(gt);
buildToolBarRows(group.rows,tg);
}
}
function buildToolBarRows(rows,toolbarTarget){
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var rowDiv = $('').appendTo(toolbarTarget);
buildToolBarColumns(row.columns,rowDiv);
}
}
function buildToolBarColumns(columns,rowTarget){
debugger;
for (var i = 0; i < columns.length; i++) {
var col = columns[i];
var type = col.type;
var colDiv = $('').appendTo(rowTarget);
if (type == "toolbar") {
if (col.items) {
buildTool(col.items,colDiv);
}else{
// $('')
}
}else{
if (col.menuItems) {
var m = $('').appendTo('body');
m.menu();
$.each(col.menuItems,function(index,ele){
m.menu("appendItem",ele);
})
col.menu = m;
}
var btn = $('').appendTo(colDiv);
btn[type](col);
}
}
}
function buildTool(items,colTarget){
for (var i = 0; i < items.length; i++) {
var item = items[i];
var line = $('').appendTo(colTarget);
var btn = $('').appendTo(line);
var type = item.type||'linkbutton';
btn[type](item);
}
}
$.fn.ribbon = function(options,para){
debugger;
// if (typeof options == "string") {
// var method = $.fn.ribbon.methods[options];
// if (method) {
// return method(this,para);
// }else{
// }
// }
return this.each(function(){
var state = $.data(this,"ribbon");
if (state) {
$.extend(state.options,options);
}else{
state = $.data(this,"ribbon",{options:$.extend({},$.fn.ribbon.defaults,$.fn.ribbon.parseOptions(this),options)})
}
buildTabs(this);
if (state.options.data) {
loadData(this,state.options.data);
}
})
}
$.fn.ribbon.methods = {
options:function(jq){
return $.data(jq[0],"ribbon").options;
}
}
$.fn.ribbon.parseOptions = function(target){
return $.extend({},$.fn.tabs.parseOptions(target),{});
}
$.fn.ribbon.defaults = $.extend({},$.fn.tabs.defaults);
$.parser.plugins.push('ribbon');
})(jQuery);