/** * @copyright (c) luft co.,ltd. * @link http://www.luft.co.jp/ * @date 2013.01.31 * @author Shigeki Hosomi * @version 1.2 * @required core.js v1.0 * * @update * * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. */ ;(function($) { var plugname = 'com'; $[plugname] = jQuery.sub(); /* ----------------------------- * RollOver * ----------------------------- */ $[plugname].fn.RollOver = function() { return this.each(function() { var $el = $(this); var $el_scr = $el.attr("src"); var preload = new Image(); var scrRep = $el_scr.replace(/^(.+)_off(\.[a-z]+)$/, "$1_on$2"); preload.src = scrRep; $el.hover(function() { $el.attr('src', $el_scr.replace(/^(.+)_off(\.[a-z]+)$/, "$1_on$2")); }, function() { $el.attr('src',$el_scr.replace(/^(.+)_on(\.[a-z]+)$/, "$1_off$2")); }); }); }; /* ----------------------------- * FadeRollOver * ----------------------------- */ $[plugname].fn.FadeRollOver = function(options) { options = $.extend({ inSpeed: 'normal', outSpeed: 'normal', inEasing: 'swing', outEasing: 'swing' }, options); return this.each(function() { var $el = $(this); var $el_scr = $el.attr("src"); var preload = new Image(); var scrRep = $el_scr.replace(/^(.+)_fade(\.[a-z]+)$/, "$1_on$2"); preload.src = scrRep; $el.parent().css({ display: 'block', backgroundImage: 'url('+scrRep+')', backgroundPosition: '0px 0px', backgroundRepeat: 'no-repeat' }); $el.hover(function() { $el.stop(true,false).animate({ opacity: 0 },{duration:options.inSpeed, easing:options.inEasing, queue:false}); }, function() { $el.stop(true,false).animate({ opacity: 1 },{duration:options.outSpeed, easing:options.outEasing, queue:false}); }); }); }; /* ----------------------------- * PageScroll * ----------------------------- */ $[plugname].fn.PageScroll = function(options) { options = $.extend({ speed: 'slow', easing: 'swing', arrivalY: 0, arrivalX: 0, axisX: false /* iPhoneの挙動があやしい? PCならOK! */ }, options); return this.each(function() { var $body = $("html,body"); var $doc = $(document); var $el = $(this); var el_href = $(this.hash); $el.click(function(event) { var docSize = { w: $doc.width(), h: $doc.height() }; var targetSize = { w: $(el_href).get(0).offsetWidth, h: $(el_href).get(0).offsetHeight }; var targetPos = { x: parseInt($(el_href).offset().left + options.arrivalX), y: parseInt($(el_href).offset().top + options.arrivalY) }; targetPos.x = ((docSize.w - targetSize.w) < targetPos.x && targetPos.x < docSize.w) ? docSize.w - targetSize.w : targetPos.x; targetPos.y = ((docSize.h - targetSize.h) < targetPos.y && targetPos.y < docSize.h) ? docSize.h - targetSize.h : targetPos.y; if(!options.axisX) { $body.stop().animate({scrollTop: targetPos.y},options.speed,options.easing,false); } else { $body.stop().animate({scrollTop: targetPos.y,scrollLeft: targetPos.x},options.speed,options.easing,false); } scrollCancel(); return false; }); function onKeyPress(e) { if(e.keyCode == 38 || e.keyCode == 40) { scrollStop(); } } function scrollStop() { $body.stop(); scrollRemove(); } function scrollCancel() { if(document.addEventListener) { if($.browser.mozilla) { document.addEventListener('DOMMouseScroll', scrollStop, false); } else { document.addEventListener('mousewheel', scrollStop, false); document.addEventListener('touchend', scrollStop, false); } } else if(document.attachEvent) { document.attachEvent('onmousewheel', scrollStop); } $doc.bind(($.browser.mozilla ? 'keypress' : 'keydown'), onKeyPress); } function scrollRemove() { if(document.removeEventListener) { if($.browser.mozilla) { document.removeEventListener('DOMMouseScroll', scrollStop, false); } else { document.removeEventListener('mousewheel', scrollStop, false); document.removeEventListener('touchend', scrollStop, false); } } else if(document.attachEvent) { document.detachEvent('onmousewheel', scrollStop); } $doc.unbind(($.browser.mozilla ? 'keypress' : 'keydown')); } }); }; /* ----------------------------- * DeferScroll * ----------------------------- */ $[plugname].fn.DefScroll = function(options) { options = $.extend({ amount: 200, speed: 'normal', easing: 'swing' }, options); var $html = $("html"); var $body = $("body"); var yy = 0; $body.mousewheel(function(event,delta) { if(!$.browser.webkit) { if(delta>0) yy = $html.scrollTop()-options.amount*(delta*0.9); else if(delta<0) yy = $html.scrollTop()+options.amount*(delta*-0.9); } else { if(delta>0) yy = $body.scrollTop()-options.amount*(delta*0.9); else if(delta<0) yy = $body.scrollTop()+options.amount*(delta*-0.9); } $("html,body").stop(true,false).animate({scrollTop: yy},options.speed,options.easing); return false; }); }; /* ----------------------------- * Stripes * ----------------------------- */ $[plugname].fn.Stripes = function(options) { options = $.extend({ isEvenOdd: 'odd', addClass: 'odd', isTableOption: 'tr' }, options); return this.each(function() { var $el = $(this); var el_tagName = $el.get(0).tagName; if(el_tagName == 'TABLE') { $el.find(options.isTableOption).filter(':'+options.isEvenOdd).addClass(options.addClass); } else { $el.contents().filter(':'+options.isEvenOdd).addClass(options.addClass); } }); }; /* ----------------------------- * InputHint * ----------------------------- */ $[plugname].fn.InputHint = function(options) { options = $.extend({ defaultColor: '#bbb', foucsColor: '#666', attribute: 'title', addFocusClass: 'inputFocus' }, options); return this.each(function() { var $el = $(this); var el_hint = $el.attr(options.attribute); if($el.val() == "") { $el.val(el_hint).css('color', options.defaultColor); } else if($el.val() == el_hint) { $el.css('color', options.defaultColor); } $el .focus(function() { if($el.val() == el_hint) { $el.val("").css('color', options.foucsColor); } $el.addClass(options.addFocusClass); }) .blur(function() { if($el.val() == "") { $el.val(el_hint).css('color', options.defaultColor); } else if($el.val() == !el_hint) { $el.css('color', options.foucsColor); } $el.removeClass(options.addFocusClass); }); }); }; /* ----------------------------- * FocusAll * ----------------------------- */ $[plugname].fn.FocusAll = function() { return this.each(function() { var $el = $(this); $el .focus(function() { $el.select(); }) .click(function() { $el.select(); return false; }); }); }; /* ----------------------------- * CheckAll * ----------------------------- */ $[plugname].fn.CheckAll = function(options) { options = $.extend({ customTrigger: 'all' }, options); return this.each(function() { var $el = $(this); $el.find('.'+options.customTrigger).click(function() { if(this.checked) { $el.find("input").prop('checked',true); } else { $el.find("input").prop('checked',false); } }); }); }; /* ----------------------------- * PopupWindow * ----------------------------- */ $[plugname].fn.PopupWindow = function(options) { options = $.extend({ width: 450, height: 380, scrollbars: 'yes' }, options); return this.each(function() { var $el = $(this); var el_href = $el.attr("href"); $el.click(function() { var createWin = window; createWin = open(el_href,'createWindow','left='+(screen.availWidth-options.width)/2+',top='+(screen.availHeight-options.height)/2+',width='+options.width+',height='+options.height+'toolbar=no,menubar=no,location=no,status=no,scrollbars='+options.scrollbars+',resizable=no'); createWin.focus(); return false; }); }); }; /* ----------------------------- * PopupFullScreen * ----------------------------- */ $[plugname].fn.PopupFullScreen = function() { return this.each(function() { var $el = $(this); var el_href = $el.attr("href"); $el.click(function() { var createWin = window.open(el_href,'createWindow','screenX=0,screenY=0,left=0,top=0,toolbar=no,menubar=no,location=no,status=no,scrollbars=no,resizable=no,fullscreen=yes'); createWin.moveTo(0,0); createWin.resizeTo(screen.availWidth, screen.availHeight); createWin.focus(); return false; }); }); }; })(jQuery); $(function() { $.com("a").find("img[src*='_off.']").RollOver(); $.com("input[src*='_off.']").RollOver(); $.com("a").find("img[src*='_fade.']").FadeRollOver(); //$.com("input[src*='_fade.']").FadeRollOver(); $.com(".scroll").PageScroll({speed:800, easing:"easeOutCubic"}); });