123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- (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('<span class="dropdown-tri"></span>');
- /// 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('<span class="arrow-after"></span>');
- //-------------
- // 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);
|