/**
* jQuery ligerUI 1.1.9
*
* http://ligerui.com
*
* Author daomi 2012 [ gd_star@163.com ]
*
*/
(function ($)
{
$.fn.ligerAccordion = function (options)
{
return $.ligerui.run.call(this, "ligerAccordion", arguments);
};
$.fn.ligerGetAccordionManager = function ()
{
return $.ligerui.get(this);
};
$.ligerDefaults.Accordion = {
height: null,
speed: "normal",
changeHeightOnResize: false,
heightDiff: 0 // 高度补差
};
$.ligerMethos.Accordion = {};
$.ligerui.controls.Accordion = function (element, options)
{
$.ligerui.controls.Accordion.base.constructor.call(this, element, options);
};
$.ligerui.controls.Accordion.ligerExtend($.ligerui.core.UIComponent, {
__getType: function ()
{
return 'Accordion';
},
__idPrev: function ()
{
return 'Accordion';
},
_extendMethods: function ()
{
return $.ligerMethos.Accordion;
},
_render: function ()
{
var g = this, p = this.options;
g.accordion = $(g.element);
if (!g.accordion.hasClass("l-accordion-panel")) g.accordion.addClass("l-accordion-panel");
var selectedIndex = 0;
if ($("> div[lselected=true]", g.accordion).length > 0)
selectedIndex = $("> div", g.accordion).index($("> div[lselected=true]", g.accordion));
$("> div", g.accordion).each(function (i, box)
{
var header = $('
');
if (i == selectedIndex)
$(".l-accordion-toggle", header).addClass("l-accordion-toggle-open");
if ($(box).attr("title"))
{
$(".l-accordion-header-inner", header).html($(box).attr("title"));
$(box).attr("title", "");
}
$(box).before(header);
if (!$(box).hasClass("l-accordion-content")) $(box).addClass("l-accordion-content");
});
//add Even
$(".l-accordion-toggle", g.accordion).each(function ()
{
if (!$(this).hasClass("l-accordion-toggle-open") && !$(this).hasClass("l-accordion-toggle-close"))
{
$(this).addClass("l-accordion-toggle-close");
}
if ($(this).hasClass("l-accordion-toggle-close"))
{
$(this).parent().next(".l-accordion-content:visible").hide();
}
});
$(".l-accordion-toggle", g.accordion).hover(function ()
{
if ($(this).hasClass("l-accordion-toggle-open"))
$(this).addClass("l-accordion-toggle-open-over");
else if ($(this).hasClass("l-accordion-toggle-close"))
$(this).addClass("l-accordion-toggle-close-over");
}, function ()
{
if ($(this).hasClass("l-accordion-toggle-open"))
$(this).removeClass("l-accordion-toggle-open-over");
else if ($(this).hasClass("l-accordion-toggle-close"))
$(this).removeClass("l-accordion-toggle-close-over");
});
$(">.l-accordion-header", g.accordion).click(function ()
{
var togglebtn = $(".l-accordion-toggle:first", this);
if (togglebtn.hasClass("l-accordion-toggle-close"))
{
togglebtn.removeClass("l-accordion-toggle-close")
.removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
togglebtn.addClass("l-accordion-toggle-open");
$(this).next(".l-accordion-content")
.show(p.speed)
.siblings(".l-accordion-content:visible").hide(p.speed);
$(this).siblings(".l-accordion-header").find(".l-accordion-toggle").removeClass("l-accordion-toggle-open").addClass("l-accordion-toggle-close");
}
else
{
togglebtn.removeClass("l-accordion-toggle-open")
.removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
.addClass("l-accordion-toggle-close");
$(this).next(".l-accordion-content").hide(p.speed);
}
});
//init
g.headerHoldHeight = 0;
$("> .l-accordion-header", g.accordion).each(function ()
{
g.headerHoldHeight += $(this).height();
});
if (p.height && typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
{
g.onResize();
if (p.changeHeightOnResize)
{
$(window).resize(function ()
{
g.onResize();
});
}
}
else
{
if (p.height)
{
g.height = p.heightDiff + p.height;
g.accordion.height(g.height);
g.setHeight(p.height);
}
else
{
g.header = g.accordion.height();
}
}
g.set(p);
},
onResize: function ()
{
var g = this, p = this.options;
if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
//set accordion height
if (g.accordion.parent()[0].tagName.toLowerCase() == "body")
{
var windowHeight = $(window).height();
windowHeight -= parseInt(g.layout.parent().css('paddingTop'));
windowHeight -= parseInt(g.layout.parent().css('paddingBottom'));
g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
}
else
{
g.height = p.heightDiff + (g.accordion.parent().height() * parseFloat(p.height) * 0.01);
}
g.accordion.height(g.height);
g.setContentHeight(g.height - g.headerHoldHeight);
},
setHeight: function (height)
{
var g = this, p = this.options;
g.accordion.height(height);
height -= g.headerHoldHeight;
$("> .l-accordion-content", g.accordion).height(height);
}
});
})(jQuery);