(function($) {
$.eb = $.eb || {};
// $.eb.ie = function (min,max) {
// // return true;
// if ($.browser.msie) {
// var v = math.floor($.browser.version);
// if (v >= min && v <= max) {
// return true;
// }
// }
// return false;
// }
$.eb.ie6 = function () {
return navigator.useragent.tolowercase().indexof('msie 6.0') > -1;
// alert(navigator.useragent.tolowercase().indexof('msie 6.0'));
}
$.eb.color = function () {
var pad = function(num, totalchars) {
var pad = '0';
num = num + '';
while (num.length < totalchars) {
num = pad + num;
}
return num;
};
// ratio is between 0 and 1
this.changecolor = function(color, ratio, darker) {
// trim trailing/leading whitespace
color = color.replace(/^\s*|\s*$/, '');
// expand three-digit hex
color = color.replace(
/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i,
'#$1$1$2$2$3$3'
);
// calculate ratio
var difference = math.round(ratio * 256) * (darker ? -1 : 1),
// determine if input is rgb(a)
rgb = color.match(new regexp('^rgba?\\(\\s*' +
'(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' +
'\\s*,\\s*' +
'(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' +
'\\s*,\\s*' +
'(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' +
'(?:\\s*,\\s*' +
'(0|1|0?\\.\\d+))?' +
'\\s*\\)$'
, 'i')),
alpha = !!rgb && rgb[4] != null ? rgb[4] : null,
// convert hex to decimal
decimal = !!rgb? [rgb[1], rgb[2], rgb[3]] : color.replace(
/^#?([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])/i,
function() {
return parseint(arguments[1], 16) + ',' +
parseint(arguments[2], 16) + ',' +
parseint(arguments[3], 16);
}
).split(/,/),
returnvalue;
// return rgb(a)
return !!rgb ?
'rgb' + (alpha !== null ? 'a' : '') + '(' +
math[darker ? 'max' : 'min'](
parseint(decimal[0], 10) + difference, darker ? 0 : 255
) + ', ' +
math[darker ? 'max' : 'min'](
parseint(decimal[1], 10) + difference, darker ? 0 : 255
) + ', ' +
math[darker ? 'max' : 'min'](
parseint(decimal[2], 10) + difference, darker ? 0 : 255
) +
(alpha !== null ? ', ' + alpha : '') +
')' :
// return hex
[
'#',
pad(math[darker ? 'max' : 'min'](
parseint(decimal[0], 10) + difference, darker ? 0 : 255
).tostring(16), 2),
pad(math[darker ? 'max' : 'min'](
parseint(decimal[1], 10) + difference, darker ? 0 : 255
).tostring(16), 2),
pad(math[darker ? 'max' : 'min'](
parseint(decimal[2], 10) + difference, darker ? 0 : 255
).tostring(16), 2)
].join('');
};
this.lighten = function(color, ratio) {
return changecolor(color, ratio, false);
};
this.darken = function(color, ratio) {
return changecolor(color, ratio, true);
};
return this;
}();
function bootstrapie6(el) {
var dropdownwidthfix = function (el) {
el.each(function () {
var w = 0;
$(this).children('li').each(function() {
var aw = $(this).outerwidth();
if (aw > w) w = aw;
});
$(this).width(w);
});
}
if ($.eb.ie6()) {
el = el || $('html');
//-------------
// grid
//-------------
//-------------
// dropdown
//-------------
// fix for ie6 not support li:hover
var i, lis = ['dropdown-submenu'];
for (i = 0; i < lis.length; i++) {
var child = 'li.' + lis[i];
var hover = lis[i] + '-hover';
$('ul', el).on('mouseenter', child, function () {
$(this).addclass(hover);
}).on('mouseleave', child, function () {
$(this).removeclass(hover);
});
}
/// fix :after selector -- dropdown-submenu > a:after
$('.dropdown-submenu > a', el).after('');
/// fix multi class selector -- .dropdown-submenu.pull-left
$('.dropdown-submenu.pull-left', el).removeclass('pull-left').addclass('dropdown-submenu-pull-left');
// $('.navbar .nav.pull-right').removeclass('pull-right').addclass('nav-pull-right');
/// fix ul li 100% width bug, set ul width to max width of it's sub li
dropdownwidthfix($('.dropdown-menu:visible', el));
//-------------
// buttons
//-------------
var btncolorcls = ['btn-primary','btn-warning','btn-danger','btn-success','btn-info','btn-inverse'];
var btnsizecls = ['btn-mini','btn-small','btn-large'];
$('.btn-group', el).parent().find('.btn-group:eq(0)').addclass('btn-group-first');
$('.btn', el).parent().find('.btn:eq(0)').addclass('btn-first');
// fix button:hover
$('body', el).on('mouseenter', '.btn', function () {
var btn = $(this);
var hover = 'btn-hover';
btn.data('ie6hover',hover);
$.each(btncolorcls, function (k,v) {
if (btn.hasclass(v)) {
hover = v + '-hover';
btn.data('ie6hover',hover);
return false;
}
});
btn.addclass(hover);
}).on('mouseleave', '.btn', function () {
var btn = $(this);
var hover = btn.data('ie6hover');
btn.removedata('ie6hover');
if (hover) btn.removeclass(hover);
});
// fix .btn.dropdown-toggle, .btn-primary.dropdown-toggle ...
// fix .btn.dropdown-toggle, .btn-small.dropdown-toggle ...
$('.btn.dropdown-toggle', el).each(function () {
var btn = $(this);
var ddt = 'btn-dropdown-toggle';
btn.addclass(ddt);
ddt = null;
$.each(btncolorcls, function (k,v) {
if (btn.hasclass(v)) {
ddt = v + '-dropdown-toggle';
return false;
}
});
if (ddt) btn.addclass(ddt);
ddt = null;
$.each(btnsizecls, function (k,v) {
if (btn.hasclass(v)) {
ddt = v + '-dropdown-toggle';
return false;
}
});
if (ddt) btn.addclass(ddt);
});
// fix split button dropdown toggle background color
$('.btn + .btn.dropdown-toggle', el).each(function () {
var btn = $(this);
var c = btn.css('background-color');
// alert($.eb.color.darken(c, .2));
btn.css('background-color', $.eb.color.darken(c, .1));
});
// fix .btn-group.open
var dropdownpropertychange = function(e) {
var self = $(this);
var cls = e.data.cls;
/// fix ul li 100% width bug, set ul width to max width of it's sub li
var el = $('.dropdown-menu:visible', this);
if (el.length) dropdownwidthfix(el);
if (self.hasclass('open') && !self.hasclass(cls+'-open')) {
self.addclass(cls+'-open');
}
else if (!self.hasclass('open') && self.hasclass(cls+'-open')) {
self.removeclass(cls+'-open');
}
self.one('propertychange', {cls:cls}, dropdownpropertychange);
};
$.each(['btn-group', 'dropdown'], function (k,cls) {
$('.'+cls, el).one('propertychange', {cls:cls}, dropdownpropertychange);
});
// fix .btn.disabled selector
$('.btn.disabled', el).addclass('btn-disabled');
var btnpropertychange = function (e) {
var self = $(this);
var cls = e.data.cls;
if (self.hasclass('disabled') && !self.hasclass(cls+'-disabled')) {
self.addclass(cls+'-disabled');
}
else if (!self.hasclass('disabled') && self.hasclass(cls+'-disabled')) {
self.removeclass(cls+'-disabled');
}
self.one('propertychange', {cls:cls}, btnpropertychange);
}
$.each(['btn'], function (k,cls) {
$('.'+cls, el).one('propertychange', {cls:cls}, btnpropertychange);
});
//-------------
// table
//-------------
// fix table-hover effect
$('table.table-hover', el).on('mouseenter', 'tr', function () {
$(this).addclass('tr-hover');
}).on('mouseleave', 'tr', function () {
$(this).removeclass('tr-hover');
});
//-------------
// form
//-------------
// fix input[type=xxx] selector
$('input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"], input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"]', el).each(function () {
var input = $(this);
input.addclass('input-'+input.attr('type'));
});
// fix form-horizontal controls margin-left
$('.form-horizontal .controls:first-child', el).addclass('controls-first-child');
// fix .checkbox.inline
$('.checkbox.inline', el).addclass('checkbox-inline');
$('.radio.inline', el).addclass('radio-inline');
// fix select[multiple], select[size]
$('select[multiple]', el).addclass('select-multiple');
$('select[size]', el).addclass('select-size');
// fix tag[disabled]
$('input[disabled], select[disabled], textarea[disabled]', el).each(function () {
var self = $(this);
self.addclass(self[0].tagname.tolowercase()+'-disabled');
});
// $('input,select,textarea', el).on('propertychange', function() {
// var self = $(this);
// if (self.data('chgdisabled')) return;
// var cls = self[0].tagname.tolowercase();
// // alert(self.attr('disabled'));
// if (self.attr('disabled') && !self.hasclass(cls+'-disabled')) {
// // alert('abc');
// self.addclass(cls+'-disabled');
// self.data('chgdisabled', true);
// }
// else if (!self.attr('disabled') && self.hasclass(cls+'-disabled')) {
// self.removeclass(cls+'-disabled');
// self.data('chgdisabled', true);
// }
// });
// $('input,select,textarea', el).on('propertychange', function() {
// var self = $(this);
// if (self.data('chgreadonly')) return;
// var cls = self[0].tagname.tolowercase();
// if (self.attr('readonly') && !self.hasclass(cls+'-readonly')) {
// self.addclass(cls+'-readonly');
// self.data('chgreadonly', true);
// }
// else if (typeof self.attr('readonly') == 'undefined' && self.hasclass(cls+'-readonly')) {
// self.removeclass(cls+'-readonly');
// self.data('chgreadonly', true);
// }
// });
// fix tag[readonly]
$('input[readonly], select[readonly], textarea[readonly]', el).each(function () {
var self = $(this);
self.addclass(self[0].tagname.tolowercase()+'-readonly');
});
// fix input[type=xxx][disabled]
$('input[type="radio"][disabled], input[type="checkbox"][disabled]', el).each(function () {
var self = $(this);
self.addclass(self.attr('type').tolowercase()+'-disabled');
});
// fix input[type=xxx][readonly]
$('input[type="radio"][readonly], input[type="checkbox"][readonly]', el).each(function () {
var self = $(this);
self.addclass(self.attr('type').tolowercase()+'-readonly');
});
// fix.control-group.warning ...
var ctlgrptypecls = ['warning','success','error','info'];
$.each(ctlgrptypecls, function (k,v) {
$('.control-group.'+v, el).addclass('control-group-'+v);
});
var controlgrouppropertychange = function(e) {
if(e.originalevent.propertyname.tolowercase() == 'classname') {
var self = $(this);
$.each(ctlgrptypecls, function (k,v) {
var iecls = 'control-group-'+v;
if (self.hasclass(v)) {
if (!self.hasclass(iecls)) {
self.addclass(iecls);
}
}
else {
if (self.hasclass(iecls)) {
self.removeclass(iecls);
}
}
});
}
$(this).one('propertychange', controlgrouppropertychange);
};
$('.control-group', el).one('propertychange', controlgrouppropertychange);
//-------------
// popover
//-------------
// $('.popover .arrow', el).after('');
//-------------
// pagination
//-------------
$('.pagination ul li:first-child', el).addclass('first-child');
//-------------
// icons
//-------------
$('[class^="icon-"],[class*=" icon-"]').each(function () {
var self = $(this);
if (!self.hasclass('icon-xxx')) {
self.addclass('icon-xxx');
self.css('background-position-y',
(parseint(self.css('background-position-y')) + 1)+'px');
}
});
//-------------
// carousel
//-------------
$('.carousel-control.left', el).removeclass('left').addclass('carousel-control-left');
$('.carousel-control.right', el).removeclass('right').addclass('carousel-control-right');
$('.carousel-caption').each(function() {
var self = $(this);
var padding = self.outerwidth() - self.width();
self.width(self.parents('.carousel-inner .item').width() - padding);
});
}
}
$.bootstrapie6 = bootstrapie6;
$(document).ready(function () {
bootstrapie6();
});
})(jquery);