(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);