// FlickSlide v1.0.2
// Copyright (c) 2011 Kosuke Araki - twitterF@kaleido_kosuke
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
(function ($) {
$.fn.flickSlide = function (settings) {
var strUA = navigator.userAgent.toLowerCase(),
webkitUA = ['iphone', 'android', 'ipad'],
runiLayout = false,
iLayoutLocation = '',
currentX = 0,
maxX = 0,
slideObj = {},
slideLock = 1,
//slideTimer = {}, slideLotation = {}, slideDuration = 4000,
slideCount = 0,
pagerMax = 0,
orientationChangeDelay = 0;
for (var i = 0; i < webkitUA.length; i++) {
if (strUA.indexOf(webkitUA[i], 0) != -1) {
runiLayout = true;
if (webkitUA[i] === 'android') {
orientationChangeDelay = 400
}
if (webkitUA[i] === 'iphone') {
orientationChangeDelay = 0
}
}
}
if (runiLayout !== true) {
return;
}
if (typeof $(this) === undefined || $(this).length === 0) {
return;
}
window.addEventListener("orientationchange", function () {
if (runiLayout !== true) {
return
}
switch (window.orientation) {
case 0:
orientationChangeCore();
break;
case 90:
orientationChangeCore();
break;
case -90:
orientationChangeCore();
break;
}
}, false);
function orientationChangeCore() {
setTimeout(function () {
var styles = getComputedStyle($('.moveWrap').get(0));
if (styles) {
$('.resizable').css('width', styles.width);
$('.slideMask').css('height', $('.move').outerHeight()).css('width', styles.width - 1);
maxX = Number($('.flickSlideContainer li.slideUnit').length - 1) * Number(styles.width.replace('px', '')) * -1;
$('div.flickSlideContainer ul.move').get(0).style.webkitTransform = 'translate3d(0,0,0)';
currentX = 0;
slideCount = 0;
slidePager();
} else {}
}, orientationChangeDelay);
}
function lotation() {
if (slideLock === 0) {
var slideUnitWidth = slideObj.children('li.slideUnit').outerWidth();
//slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out';
diffX = -151;
if (currentX === maxX) {
slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)';
currentX = 0;
slideCount = 0;
slidePager();
} else {
currentX = currentX - slideUnitWidth;
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
slideCount++;
slidePager();
}
}
slideLock = 0;
//slideTimer = setTimeout(lotation, slideDuration);
}
function slidePager() {
var currentPager = $('.slidePagerPointer.active');
var nextID = '#pager' + String(slideCount);
var getPage = slideCount+1;
var LastPaget = pagerMax + 1;
currentPager.removeClass('active');
$(nextID).addClass('active');
var pager = $('
');
bottom.children('ul.slidePager').html(pager);
$("#onPage").html(slideCount+1);
switch (slideCount) {
case 0:
$('.flickSlideBottom .bottomLeft').addClass('off');
$('.flickSlideBottom .bottomRight').removeClass('off');
break;
case pagerMax:
$('.flickSlideBottom .bottomRight').addClass('off');
$('.flickSlideBottom .bottomLeft').removeClass('off');
break;
default:
$('.flickSlideBottom .bottomLeft').removeClass('off');
$('.flickSlideBottom .bottomRight').removeClass('off');
break;
}
}
$.fn.slideButton = function (settings) {
var settings = $.extend({
direction: 'prev',
widthSource: {}
}, settings);
var self = $(this);
self.click(function () {
var slideUnitWidth = settings.widthSource.outerWidth();
slideLock = 1;
slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out';
if (settings.direction === 'prev') {
if (currentX == 0) {
slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)';
slideLock = 0;
} else {
currentX = currentX + slideUnitWidth;
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
slideCount--;
slidePager();
slideLock = 0;
}
} else if (settings.direction === 'next') {
if (currentX === maxX) {
slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)';
slideLock = 0;
} else {
currentX = currentX - slideUnitWidth;
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
slideCount++;
slidePager();
slideLock = 0;
}
}
});
}
$.fn.touchDrag = function (settings) {
var settings = $.extend({
slideDuration: 4000
}, settings);
slideObj = $(this);
slideDuration = settings.slideDuration;
slideObj.bind('touchstart', {
type: 'start'
}, touchHandler);
slideObj.bind('touchmove', {
type: 'move'
}, touchHandler);
slideObj.bind('touchend', {
type: 'end'
}, touchHandler);
function touchHandler(e) {
var slideUnitWidth = slideObj.children('li.slideUnit').outerWidth();
var touch = e.originalEvent.touches[0];
if (e.type == "touchstart") {
startX = touch.pageX;
startY = touch.pageY;
startTime = (new Date()).getTime();
} else if (e.type == "touchmove") {
diffX = touch.pageX - startX;
diffY = touch.pageY - startY;
if (Math.abs(diffX) - Math.abs(diffY) > 0) {
e.preventDefault();
moveX = Number(currentX + diffX);
slideObj.css('-webkit-transition', 'none');
slideObj.get(0).style.webkitTransform = 'translate3d( ' + moveX + 'px, 0, 0)';
}
} else if (e.type == "touchend") {
var endTime = (new Date()).getTime();
var diffTime = endTime - startTime;
if (diffTime < 300) {
slideObj.get(0).style.webkitTransition = '-webkit-transform 0.5s ease-out';
} else {
slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out';
}
if (diffX > 150 || (diffX > 60 && diffTime < 400 && orientationChangeDelay === 0)) {
if (currentX == 0) {
slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)';
} else {
currentX = currentX + slideUnitWidth;
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
slideCount--;
slidePager();
}
} else if (diffX < -150 || (diffX < -60 && diffTime < 400 && orientationChangeDelay === 0)) {
if (currentX === maxX) {
slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)';
} else {
currentX = currentX - slideUnitWidth;
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
slideCount++;
slidePager();
}
} else {
if (currentX === 0) {
slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)';
} else if (currentX === maxX) {
slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)';
} else {
slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)';
}
}
slideLock = 0;
}
}
}
var settings = $.extend({
target: '',
colum: 1,
height: 170,
duration: 10//4000
}, settings);
var contents = $(this);
var contentsLength = contents.length;
var wrap = $('');
var slideMask = $('');
var bottom = $('');
$(this).contents().find('img').removeAttr('width').removeAttr('height').css({
width: '100%',
height: 'auto'
});
var loop = Math.floor(contentsLength / settings.colum);
loop = contentsLength % settings.colum > 0 ? loop++ : loop;
if ( loop == 1 ) {
return;
}
pagerMax = loop - 1;
var contentsCount = 0;
for (var i = 0; i < loop; i++) {
var unitElem = $('').addClass('slideUnit').addClass('resizable');
var pager = $('');
///// var pager = $('');
if (i === 0) {
pager.addClass('active')
var LastPaget = pagerMax + 1;
var pager = $('');
bottom.children('ul.slidePager').html(pager);
}
for (var j = 0; j < settings.colum; j++) {
var itemElem = $('');
if (typeof contents[contentsCount] !== undefined) {
itemElem.append($(contents[contentsCount]).children());
}
unitElem.append(itemElem);
contentsCount++;
}
wrap.contents().find('ul.move').append(unitElem);
// bottom.children('ul.slidePager').append(pager);
}
$(settings.target).after(wrap);
$(settings.target).remove();
bottom.children('.bottomLeft').slideButton({
direction: 'prev',
widthSource: wrap.contents().find('li.slideUnit')
});
bottom.children('.bottomRight').slideButton({
direction: 'next',
widthSource: wrap.contents().find('li.slideUnit')
});
wrap.contents().find('ul.move').touchDrag({
duration: settings.duration
});
wrap.after(bottom);
$(window).bind('load', function () {
var styles = getComputedStyle($('.moveWrap').get(0));
if (styles) {
$('.resizable').css('width', styles.width);
$('.slideMask').css('height', $('.move').outerHeight()).css('width', styles.width - 1);
maxX = Number($('.flickSlideContainer li.slideUnit').length - 1) * Number(styles.width.replace('px', '')) * -1;
}
var slideFirstChild = $('ul.move li:first').clone();
$('ul.move').show();
});
}
})(jQuery);
var is = {
ie: navigator.appName == 'Microsoft Internet Explorer',
java: navigator.javaEnabled(),
ns: navigator.appName == 'Netscape',
ua: navigator.userAgent.toLowerCase(),
version: parseFloat(navigator.appVersion.substr(21)) || parseFloat(navigator.appVersion),
win: navigator.platform == 'Win32'
}
is.mac = is.ua.indexOf('mac') >= 0;
if (is.ua.indexOf('opera') >= 0) {
is.ie = is.ns = false;
is.opera = true;
}
if (is.ua.indexOf('gecko') >= 0) {
is.ie = is.ns = false;
is.gecko = true;
}