/** * @copyright (c) Shigeki Hosomi. * @author Shigeki Hosomi * @date 2014.01.31 * @name common.js * @version 1.1.0 * @required core.js v1.0.0 * * @update 2014.03.29 * */ /* Back Forward Cache Cancel */ window.onunload = function(){}; /* console */ if(typeof window.console === "undefined"){window.console = {}} if(typeof window.console.log !== "function"){window.console.log = function(){}} /* Global */ var ua,mobileUtil,util; /* ====================================== * UserAgent Manager * ====================================== */ var UAManager = function() { var userAgent = window.navigator.userAgent; this.os = { Win: new RegExp(/win/i).test(userAgent), Mac: new RegExp(/mac/i).test(userAgent), iOS: new RegExp(/iphone|ipad|ipod/i).test(userAgent), Android:new RegExp(/android/i).test(userAgent) }; this.browser = { IE: !!document.uniqueID, // for IE ltIE6: typeof window.addEventListener === "undefined" && typeof document.documentElement.style.maxHeight === "undefined", // IE6 or earlier ltIE7: typeof window.addEventListener === "undefined" && typeof document.querySelectorAll === "undefined", // IE7 or earlier ltIE8: typeof window.addEventListener === "undefined" && typeof document.getElementsByClassName === "undefined", // IE8 or earlier ltIE9: !!document.uniqueID && !!window.matchMedia, // IE9 or earlier gtIE10: !!document.uniqueID && document.documentMode >= 10, // IE10 and later Firefox:!!window.sidebar, Chrome: !!window.chrome, Webkit: !document.uniqueID && !!window.opera && !!window.sidebar && window.localStorage && typeof window.orientation == "undefined", Touch: typeof document.ontouchstart !== "undefined", Mobile: typeof window.orientation !== "undefined", Pointer:!!window.navigator.pointerEnabled }; }; ua = new UAManager(); /* ====================================== * [Mobile] Utility * ====================================== */ var MobileUtil = function(){}; /** * Hide AddressBar * * iOS7.1 beta2 and later * ??? */ MobileUtil.prototype.hideURLBar = function() { setTimeout(function(){window.scrollTo(0,1)},100); }; /** * History.Back Position Reset */ MobileUtil.prototype.historyBackPosReset = function() { var p; window.onpagehide = function(){p = window.pageYOffset>0 ? window.pageYOffset+1 : 1;}; window.onpageshow = function(){setTimeout(function(){window.scrollTo(0,p)},100);}; }; mobileUtil = new MobileUtil(); /* ====================================== * Utility * ====================================== */ var Utility = function(){}; /** * [GET] Browser Status * @return {Number} */ Utility.prototype.getBrowser = { 'width': function() { return window.innerWidth||(document.documentElement&&document.documentElement.clientWidth)||document.body.clientWidth; }, 'height': function() { return window.innerHeight||(document.documentElement&&document.documentElement.clientHeight)||document.body.clientHeight; }, 'scrollbar': function() { var ow,iw, o = document.createElement("div"), i = document.createElement("div"); o.style.visibility = "hidden"; o.style.width = "100px"; o.style.overflow = "scroll"; document.body.appendChild(o); ow = o.offsetWidth; i.style.width = "100%"; o.appendChild(i); iw = i.offsetWidth; o.parentNode.removeChild(o); return ow - iw; } }; /** * Check Image File * @param path {String} * @return {Boolean} */ Utility.prototype.checkImage = function(path) { return new RegExp(/\.(gif|png|jpg|jpeg|bmp|svg)(?:\?([^#]*))?(?:#(\.*))?$/i).test(path); }; /** * [GET] FileName_ex / FileName * @param string {String} * @return {String} */ Utility.prototype.getFileName_ex = function(string) { return string.match(".+/(.+?)([\?#;].*)?$")[1]; //return string.match(".+/([^\?#;/]+).*$")[1]; }; Utility.prototype.getFileName = function(string) { return string.match(".+/(.+?)\.[a-z]+([\?#;].*)?$")[1]; //return string.match(".+/(.+?)\.[a-z]+(([^\?#;/]+).*)?$")[1]; }; /** * [GET] Number Sign / Math.Sign() * ECMAScript Draft 6th Edition * * @param value {Number} * @return {Number} */ Utility.prototype.numberSign = function(value) { return typeof value==='number'?value?value<0?-1:1:value===value?0:NaN:NaN; }; /** * [GET] Round Calculation * @param value {Number} * @param digit {Number} * @return {Number} */ Utility.prototype.roundCalc = function(value,digit) { return Math.round(value*digit)/digit; }; /** * [GET] Random Variation * @param min {Number} * @param max {Number} * @return {Number} */ Utility.prototype.getRandom = function(min,max) { return Math.random()*(max-min)+min; }; Utility.prototype.getIntegerRandom = function(min,max) { return Math.abs(Math.floor(Math.random()*(max-min)+min)); }; Utility.prototype.getSqrtRandom = function(min,max) { return Math.sqrt(Math.random())*(max-min)+min; }; Utility.prototype.getPlusRandom3 = function(min,max) { return ((Math.random()+Math.random()+Math.random())/3)*(max-min)+min; }; Utility.prototype.getOddsRandom = function(min,max) { if(array.length==0) return 0; var maxNum = 0,i; for(i=0; i LocalTime */ Date.prototype.utc2Local = function() { return this.setTime(this.getTime()-(this.getTimezoneOffset()*60*1000)); }; /* ====================================== * jQuery extends * ====================================== */ ;(function($) { $.fn.extend({ /* ==================== * Image RollOver * ==================== */ ImgRollOver: function() { return this.each(function() { var $this = $(this); var $scr = $this.attr("src"); var preload = new Image(); var target = $scr.replace(/^(.+)_off(\.[a-z]+)$/,"$1_on$2"); preload.src = target; $this.on({ 'mouseenter': function(e){ $this.attr('src',$scr.replace(/^(.+)_off(\.[a-z]+)$/,"$1_on$2")); }, 'mouseleave': function(e){ $this.attr('src',$scr.replace(/^(.+)_on(\.[a-z]+)$/,"$1_off$2")); } }); }); }, /* ==================== * Image Fade RollOver * @param options * ==================== */ ImgFadeRollOver: function(options) { options = $.extend({ inSpeed: 'normal', outSpeed: 'normal', inEasing: 'swing', outEasing: 'swing' }, options); return this.each(function() { var $this = $(this); var $scr = $this.attr("src"); var preload = new Image(); var target = $scr.replace(/^(.+)_fade(\.[a-z]+)$/,"$1_on$2"); preload.src = target; $this.parent().css({ display: 'block', backgroundImage: 'url('+target+')', backgroundPosition: '0px 0px', backgroundRepeat: 'no-repeat' }); $this.on({ 'mouseenter': function(e){ $this.stop(true,false).animate({ opacity: 0 },{duration:options.inSpeed,easing:options.inEasing, queue:false}); }, 'mouseleave': function(e){ $this.stop(true,false).animate({ opacity: 1 },{duration:options.outSpeed,easing:options.outEasing,queue:false}); } }); }); }, /* ==================== * Page Scroll * @param options * ==================== */ PageScroll: function(options) { options = $.extend({ speed: 'slow', easing: 'swing', arrivalY: 0 }, options); /** * [Public Method] pageScrollTrigger * @param hash {String} */ $.fn.PageScroll.pageScrollTrigger = function(hash) { if(new RegExp(/^\#/).test(hash)) { var target = hash; pageScroller(target); //pageScrollCanceler(); } }; /** * [Public Method] pageScrollStop */ $.fn.PageScroll.pageScrollStop = function() { $("html,body").stop(); pageScrollRemover(); }; /** * [Private Method] * @param element {String} */ var pageScroller = function(element) { if(typeof $(element)[0] !== 'undefined') { var status = { dh: $(document).height(), h: $(element)[0].offsetHeight, y: $(element).offset().top + options.arrivalY }; status.y = (((status.dh-status.h)