/**
* @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)