Last active
December 10, 2015 03:48
-
-
Save riix/4376820 to your computer and use it in GitHub Desktop.
ui.common.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************************************************* | |
* ui.common.js | |
* @Author : 박순길 | |
* @Version 0.6 | |
* | |
************************************************************************************************/ | |
// Console-polyfill. MIT license. Make it safe to do console.log() always. | |
(function(con){ var method; var dummy = function() {}; var methods = ('assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn,memory').split(','); while (method = methods.pop()) { con[method] = con[method] || dummy; } })(window.console = window.console || {}); | |
// $.browser.mobile, http://detectmobilebrowser.com | |
(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); | |
/* Extended Selector ------------------------------ */ | |
$.extend($.expr[':'],{ | |
// $('div:block'); | |
block: function(el, i, m) { | |
return $(el).css('display') === 'block'; | |
}, | |
// $('div:css(display, inline-block)'); | |
css: function(el, i, m) { | |
var _key = m[3]; | |
if(!_key) return false; | |
_key = _key.replace(" ", "").split(','); | |
return $(el).css(_key[0]) === _key[1]; | |
}, | |
// $('div:width(>200)'); | |
// $('div:width(<300):width(>100)'); | |
width: function(el, i, m) { | |
var $this = $(el), _key = m[3]; | |
if(!_key||!(/^(<|>)\d+$/).test(_key)) return false; | |
return _key.substr(0,1) === '>' ? $this.width() > _key.substr(1) : $this.width() < _key.substr(1); | |
}, | |
// $('div:data(map)'); | |
data: function(el, i, m) { | |
var $el = $(el), element = $el.get(0), _key; | |
if(!m[3]) { | |
for (var x in element) { if((/jQuery\d+/).test(x)) { return true; } } | |
} else { | |
_key = m[3].split('='); | |
if (_key[1]) { | |
if((/^\/.+\/([mig]+)?$/).test(_key[1])) { | |
return (new RegExp( | |
_key[1].substr(1,_key[1].lastIndexOf('/')-1), | |
_key[1].substr(_key[1].lastIndexOf('/')+1)) | |
).test($el.data(_key[0])); | |
} else { | |
return $el.data(_key[0]) == _key[1]; | |
} | |
} else { | |
if($el.data(_key[0])) { | |
return true; | |
} else { | |
$el.removeData(_key[0]); | |
return false; | |
} | |
} | |
} | |
return false; | |
}, | |
// $('div:inView'); | |
inView: function(el) { | |
var $el = $(el), _jqWinHeight = $(window).height(); | |
var _scrollTop = (document.documentElement.scrollTop || document.body.scrollTop), | |
_offsetTop = $el.offset().top, | |
_winHeight = (window.innerHeight && window.innerHeight < _jqWinHeight) ? window.innerHeight : _jqWinHeight; | |
return _offsetTop > _scrollTop && ($el.height() + _offsetTop) < (_scrollTop + _winHeight); | |
} | |
}); | |
/* User Function ------------------------------ */ | |
$.extend({ | |
// 최저값 구하기, var max = $.min(a,b); Math.max(a,b) 와 같으나 parseInt 처리 | |
min: function(a, b){ | |
var _a = parseInt(a, 10), _b = parseInt(b, 10); | |
return _a < _b ? _a : _b; | |
}, | |
// 최고값 구하기, var min = $.min(a,b); | |
max: function(a,b){ | |
var _a = parseInt(a, 10), _b = parseInt(b, 10); | |
return _a > _b ? _a : _b; | |
}, | |
// 객체가 있는지 확인 후 함수 호출, $.callFuncElIs(el, func); | |
callFuncElIs: function(el, func){ | |
if(el.length > 0 ) func(el); | |
} | |
}); | |
(function($) { | |
// jQuery('div').eachQ(function(i){ | |
// this.attr('id', 'd' + i).css('color', 'red'); // etc. | |
// }); | |
$.fn.eachQ = (function(){ | |
var jq = $([1]); | |
return function(c) { | |
var i = -1, el, len = this.length; | |
try { | |
while ( | |
++i < len && | |
(el = jq[0] = this[i]) && | |
c.call(jq, i, el) !== false | |
); | |
} catch(e){ | |
delete jq[0]; | |
throw e; | |
} | |
delete jq[0]; | |
return this; | |
}; | |
}()); | |
// img.imgToggle(); | |
// img.imgToggle({ oldSrc: '_off', newSrc: '_on' }); | |
$.fn.imgToggle = function(settings) { | |
var config = { oldSrc : '_off', newSrc : '_on' }; | |
if (settings) $.extend(config, settings); | |
$.each(this, function(){ | |
var $this = $(this); | |
var $src = $this.attr('src'); | |
if($src) $this.attr('src', $src.replace(config.oldSrc, config.newSrc)); | |
}); | |
}; | |
// $('img[src*="_off"]').imgHover(); | |
// img.imgHover({ oldSrc: '_off', newSrc: '_on' }); | |
$.fn.imgHover = function(settings) { | |
var config = { oldSrc : '_off', newSrc : '_on' }; | |
if (settings) $.extend(config, settings); | |
$.each(this, function(){ | |
var $this = $(this); | |
$this.on('mouseenter',function() { | |
var $src = $this.attr('src'); | |
if ($src && $src.match(config.oldSrc)) { | |
$this.attr('src', $src.replace(config.oldSrc, config.newSrc)).on('mouseleave',function() { | |
$this.attr('src', $src.replace(config.newSrc, config.oldSrc)); | |
}); | |
} | |
}); | |
}); | |
}; | |
// effect border, $('img').border(); , $('img').border({ color: 'blue' }); | |
$.fn.border = function(settings){ | |
var config = { color : '#ff0000' }; | |
if (settings) $.extend(config, settings); | |
$.each(this, function(){ | |
$(this).css('border', 'solid 1px ' + config.color); | |
}); | |
}; | |
// 콘솔창에 해당 객체 html 출력하기 | |
$.fn.viewHtml = function(){ | |
var result = ''; | |
$.each(this, function(){ | |
var $this = $(this); | |
$this.border(); | |
result += $.trim($this.html()+'\n'); | |
}); | |
result = (result) ? "empty" : result; | |
console.log(result); | |
}; | |
// 원하는 태그가 내부를 에워싸지 않을 경우 에워싸기, $('a.button, button').wrapInnerEl(); | |
$.fn.wrapInnerEl = function(settings){ | |
var config = { tag : 'span' }; | |
if (settings) $.extend(config, settings); | |
$.each(this, function(){ | |
var $this = $(this); | |
var temp = $this.html(); | |
if(!temp.match('<' + config.tag + '>')) $this.wrapInner('<' + config.tag + '>'); | |
}); | |
}; | |
})(jQuery); | |
/* Prototype ------------------------------ */ | |
/* 전역변수 */ | |
var $doc = $(document); | |
var $html = $('html'); | |
var $body = $(document.body); | |
var $gnb = $('#gnb'); | |
function riix(){ // 또는 var riix = {}; | |
$html.removeClass('no-js').addClass('js '+riix.browser()); // browser detect | |
riix.isMain(); | |
} | |
/** | |
* Page Detect | |
* @function | |
*/ | |
var _isMain = false; | |
riix.isMain = function(){ | |
var _class = $('body').attr('class'); | |
_isMain = (_class && _class.match('main')) ? true : false; | |
}; | |
/* Prototype Utility ------------------------------ */ | |
/** | |
* Touch Device Check | |
* @function | |
*/ | |
riix.isTouchAble = function() { | |
return 'ontouchstart' in document.documentElement; | |
}; | |
/** | |
* URI Query String | |
* @function | |
*/ | |
riix.getQuerystring = function (keyParam, _default, urlParam) { | |
var url = (urlParam) ? urlParam : window.location.href; | |
if (_default === null) _default = ""; | |
var key = keyParam.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); | |
var regex = new RegExp("[\\?&]" + key + "=([^&#]*)"); | |
var qs = regex.exec(url); | |
if (qs === null) { | |
return _default; | |
} else { | |
return decodeURIComponent(qs[1]); | |
} | |
}; | |
/** | |
* IE png fix | |
* @function | |
*/ | |
riix.png24 = function(selector) { | |
var target; | |
$target = ( typeof(selector) == 'string' ) ? $(selector+' img') : selector ; | |
var c = new Array(); | |
$target.each( function(j) { | |
c[j] = new Image(); | |
c[j].src = this.src; | |
// if ( $.browser.msie ) this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src='"+ this.src +"')"; | |
}); | |
}; | |
/** | |
* Set Preloader | |
* @function | |
*/ | |
riix.showPreloader = function($divPreloader){ | |
if( ! $divPreloader instanceof jQuery ){ | |
return; | |
} | |
var $imgPreloader = '<img class="preloader" src="../img/common/preloading.gif" alt="Loading..." />'; | |
$divPreloader.addClass('loading').append( $imgPreloader ); | |
}; | |
riix.hidePreloader = function($divPreloader){ | |
if( ! $divPreloader instanceof jQuery ){ | |
$divPreloader = $(document.body); | |
} | |
var $imgPreloader = $divPreloader.find('.section-preloading'); | |
$imgPreloader.parent().removeClass('loading').remove(); | |
}; | |
/** | |
* Embed Youtube Object | |
* @function | |
*/ | |
riix.addVideoPlayer = function( $contain, width, height, id, autoPlay ){ | |
var contentId = id; | |
var html = '<object id="object_yt_player" width="'+width +'" height="'+height+'">'; | |
html += '<param name="movie" value="http://www.youtube.com/v/'+ contentId +'?playerapiid=object_yt_player&hl=ko_KR&el=0&autoplay='+autoPlay+'"></param>'; | |
html += '<param name="allowFullScreen" value="true"></param>'; | |
html += '<param name="allowscriptaccess" value="always"></param>'; | |
html += '<embed id="embed_yt_player" src="http://www.youtube.com/v/'+ contentId +'?playerapiid=embed_yt_player&hl=ko_KR&rel=0&autoplay='+autoPlay+'" type="application/x-shockwave-flash" width="'+width +'" height="'+height+'" allowscriptaccess="always" allowfullscreen="true"></embed>'; | |
html += '</object>'; | |
$contain.empty().html(html); | |
}; | |
/** | |
* Disable Window Scroll | |
* @function | |
*/ | |
riix.disableScroll = function(){ | |
$(window).bind("mousewheel.disabled-scroll", function(e){ e.preventDefault(); }); | |
}; | |
/** | |
* window open | |
* @param theURL 새창의 Url | |
* @param winName 새창의 name | |
* @param features 새창의 세부 설정 | |
* @return | |
*/ | |
riix.openWin = function(theURL,winName,features) { | |
var win = window.open(theURL,winName,features); | |
if (win) { | |
win.focus(); | |
} else { | |
alert('팝업이 차단되었습니다.\n브라우저 팝업 설정을 확인해주세요.'); | |
} | |
}; | |
riix.openWinCenter = function(theURL, winName, width, height, fstate ) { | |
var features = "width=" + width ; | |
features += ",height=" + height ; | |
var state = ""; | |
if (fstate === "") { | |
state = features + ", left=" + (screen.width-width)/2 + ",top=" + (screen.height-height)/2; | |
} else { | |
state = fstate + ", " + features + ", left=" + (screen.width-width)/2 + ",top=" + (screen.height-height)/2; | |
} | |
popupWin = window.open(theURL,winName,state+",resizable=1 "); | |
if (popupWin) { | |
popupWin.focus(); | |
} else { | |
alert('팝업이 차단되었습니다.\n브라우저 팝업 설정을 확인해주세요.'); | |
} | |
}; | |
/** | |
* Focus Object Then Alert | |
* @function | |
*/ | |
riix.alertFocus = function(objId, message) { | |
if (message) alert(message); | |
$('#'+objId).focus(); | |
return null; | |
}; | |
/* Document Ready ------------------------------ */ | |
$(function(){ | |
riix(); | |
}); | |
$(window).on('load scroll resize', function(){ | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment