var kitutils = { debug: false, init: function () { if (typeof $('body').data('debug') === 'boolean' && $('body').data('debug') === true) { this.debug = true; } this.episerveriframecheck(); }, isandroid: function () { if (navigator.useragent.tolowercase().indexof('android') > -1) { return true; } else { return false; } }, ismac: function () { if (navigator.platform.tolowercase().indexof('mac') > -1) { return true; } else { return false; } }, iswindows: function () { if (navigator.platform.tolowercase().indexof('win') > -1) { return true; } else { return false; } }, islinux: function () { if (navigator.platform.tolowercase().indexof('linux') > -1) { return true; } else { return false; } }, isios: function () { if ((navigator.useragent.match(/iphone/i)) || (navigator.useragent.match(/ipad/i)) || (navigator.useragent.match(/ipod/i))) { return true; } else { return false; } }, isblackberry: function () { if (navigator.useragent.match(/blackberry/i)) { return true; } else { return false; } }, isiemobile: function () { if (navigator.useragent.match(/iemobile/i)) { return true; } else { return false; } }, isoperamini: function () { if (navigator.useragent.match(/opera mini/i)) { return true; } else { return false; } }, ismobilebrowser: function () { if (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.useragent)) { return true; } else { return false; } }, // detects the os and adds a class with current operating system to the html element detectos: function () { if (kitutils.ismac()) { document.documentelement.classname += ' macos'; } else if (kitutils.iswindows()) { document.documentelement.classname += ' windows'; } else if (kitutils.islinux()) { document.documentelement.classname += ' linux'; } }, detectbrowservendor: function() { if (kitutils.isfirefox()) { document.documentelement.classname += ' firefox'; } else if (kitutils.isgooglechrome()) { document.documentelement.classname += ' chrome'; } else if(kitutils.issafari()) { document.documentelement.classname += ' safari'; } else if (kitutils.isinternetexplorer()) { document.documentelement.classname += ' ie'; } }, // detects the ie version and adds a class with browser version to the html element detectieversion: function () { if (kitutils.isie6()) { document.documentelement.classname += ' ie6'; } else if (kitutils.isie7()) { document.documentelement.classname += ' ie7'; } else if (kitutils.isie8()) { document.documentelement.classname += ' ie8'; } else if (kitutils.isie9()) { document.documentelement.classname += ' ie9'; } else if (kitutils.isie10()) { document.documentelement.classname += ' ie10'; } }, isinternetexplorer: function() { if ((navigator.appversion.indexof('msie') != -1) || kitutils.isie10() || kitutils.isie6()) { return true; } else { return false; } }, isfirefox: function() { // firefox/mac: mozilla/5.0 (macintosh; intel mac os x 10.10; rv:33.0) gecko/20100101 firefox/33.0 if (navigator.useragent.match(/firefox/i)) { return true; } else { return false; } }, isgooglechrome: function() { // chrome/mac: mozilla/5.0 (macintosh; intel mac os x 10_10_2) applewebkit/537.36 (khtml, like gecko) chrome/40.0.2214.94 safari/537.36 if (navigator.useragent.match(/chrome/i)) { return true; } else { return false; } }, issafari: function() { // safari/mac: mozilla/5.0 (macintosh; intel mac os x 10_10_2) applewebkit/600.3.18 (khtml, like gecko) version/8.0.3 safari/600.3.18 if (navigator.useragent.match(/safari/i) && !navigator.useragent.match(/chrome/i)) { return true; } else { return false; } }, isie6: function() { if (/\bmsie 6/.test(navigator.useragent) && !window.opera) { return true; } else { return false; } }, isie7: function() { if (navigator.appversion.indexof('msie 7.') != -1) { return true; } else { return false; } }, isie8: function() { if (navigator.appversion.indexof('msie 8.') != -1) { return true; } else { return false; } }, isie9: function() { if (navigator.appversion.indexof('msie 9.') != -1) { return true; } else { return false; } }, isie10: function() { if ( /*@cc_on!@*/ false && document.documentmode === 10) { return true; } else { return false; } }, isie11: function() { if (!!navigator.useragent.match(/trident.*rv[ :]*11\./)) { return true; } else { return false; } }, // add class to body tag if page is in episerver edit mode episerveriframecheck: function () { var isiniframe = (window.location !== window.parent.location) ? true : false; if (isiniframe) { $('body').addclass('episerver'); } }, // adds class .last-child on all elements with :last-child. a fix for ie8 lastchildfix: function () { if (/msie [1-8]{1}[^0-9]/.test(navigator.useragent.tolowercase())) { $('*:last-child').addclass('last-child'); } }, log: function (message, data, type) { // change log type if provided, else default to log type = typeof type !== 'undefined' ? type : 'log'; // check if debug is enabled if (this.debug) { // check for console if (window.console) { // check for provided data if(typeof data !== 'undefined' || data !== null || data.length > 0) { console[type](message, data); } else { console[type](message, data); } } } } };