var Global={};
Global.namespace = function (str) {
var arr=str.split('.'),
o=Global;
for(var i= 0,len=arr.length;i<len;i++){
o[arr[i]]=o[arr[i]] || {};
o=o[arr[i]];
}
};
/*
* CountDown module
* usage: new Global.Countdown() and use init() ,send params to init,like
* {
* day:10,
* hour:10,
* minute:10,
* second:10
* }
* Author :wz
* 2015-12-20
*
* */
Global.namespace('Countdown');
(function(){
Global.Countdown.end=0;
var day=document.getElementById('day');
var hour=document.getElementById('hour');
var minute=document.getElementById('minute');
var second=document.getElementById('second');
Global.Countdown=function(obj){
Global.Countdown.end=new Date().getTime()+(obj.day*24*60*60+obj.hour*60*60+obj.minute*60+obj.second)*1000;
};
Global.Countdown.prototype = {
init:function(){
var now=new Date().getTime();
if(Global.Countdown.end-now > 0){
setTimeout(Global.Countdown.prototype.init,1000);
var obj= Global.Countdown.prototype.timeformat(Global.Countdown.end-now);
day.innerHTML=obj.day;
hour.innerHTML=obj.hour;
minute.innerHTML=obj.minute;
second.innerHTML=obj.second;
}else{
second.innerHTML='00';
alert('time out')
}
},
timeformat:function(t){
var days = Math.floor(t/(1000*60*60*24));
var hour=this.check(Math.floor((t%(1000*60*60*24))/(1000*60*60)));
var minute=this.check(Math.floor((t%(1000*60*60))/(1000*60)));
var second=this.check(Math.round((t%(1000*60))/1000));
return {
'day':days,
'hour':hour,
'minute':minute,
'second':second
}
},
check:function(str){
if(str<10) return '0'+str;
return str;
}
};
}());
new Global.Countdown({
'day':0,
'hour':0,
'minute':0,
'second':5
}).init();
/*
* common function
*/
Global.namespace('dom');
Global.dom.addEvent=function(obj,type,listener){
if(obj.addEventListener){
obj.addEventListener(type,listener,false)
}else{
obj.attachEvent('on'+type,listener);
}
};
Global.dom.removeEvent=function(obj,type,listener){
if(obj.removeEventListener){
obj.removeEventListener(type,listener,false)
}else{
obj.detachEvent('on'+type,listener);
}
};
Global.namespace('window');
Global.window.windowRect=function(){
var winWidth= 0,winHeight=0;
if(document.compatMode=='CSS1Compat'){
winWidth=document.documentElement.clientWidth;
winHeight=document.documentElement.clientHeight;
}else{
winWidth=document.body.clientWidth;
winHeight=document.body.clientHeight;
}
return {
winWidth:winWidth,
winHeight:winHeight
}
}
/*
* Dragdrop module
* usage: new Global.Dragdrop() and send a dom as params
* Author :wz
* 2015-12-23
*
*
*/
Global.namespace('Dragdrop');
(function(){
Global.Dragdrop=function (obj){
obj.onmousedown = function(ev){
var ev = ev||event;
var disX = ev.clientX-this.offsetLeft;
var disY = ev.clientY-this.offsetTop;
if(obj.setCapture){
obj.setCapture();
}
document.onmousemove= function(ev){
var ev = ev||event;
var L = ev.clientX - disX;
var T = ev.clientY - disY;
if ( L < 0 ) {
L = 0;
} else if ( L > Global.window.windowRect().winWidth - obj.offsetWidth ) {
L = Global.window.windowRect().winWidth - obj.offsetWidth;
}
if ( T < 0 ) {
T = 0;
} else if ( T > Global.window.windowRect().winHeight - obj.offsetHeight ) {
T = Global.window.windowRect().winHeight - obj.offsetHeight;
}
obj.style.left = L + 'px';
obj.style.top = T + 'px';
}
document.onmouseup= function(){
document.onmousemove = document.onmouseup =null;
//release capture
if(obj.releaseCapture){
obj.releaseCapture();
}
}
return false;//prevent select word and pics
}
}
}());
/*=================
Fade slider module
use new Global.Fade and send params like below
{
box:$('.box'), //container
picli:$('.pic li'), // pic li
btnli:$('.btn li'), //btn li
prev:$('.prev'), //prev btn
next:$('.next'), //next btn
len:$('.btn li').size(), //length of btns
index:0, // init index default 0
btnul:$('.btn'), //btn ul
auto:true, //default true
time:1000 //default auto time 3s
}
time:2015-12-26
author:wz
=================== */
html==============
<div class="box">
<span class="prev"></span>
<span class="next"></span>
<ul class="pic">
<li class="active"><img src="images/1.jpg" width="1000" height="377" alt=""/></li>
<li><img src="images/2.jpg" width="1000" height="377" alt=""/></li>
<li><img src="images/3.jpg" width="1000" height="377" alt=""/></li>
</ul>
<ul class="btn">
<li class="active">0</li>
<li>1</li>
<li>2</li>
</ul>
</div>
css==============
*{margin:0;padding:0;}
.box{1000px;height:377px;position:relative;margin:0 auto;}
.pic{position:absolute;left:0;top:0;z-index:1;}
.pic li{position:absolute;left:0;top:0;opacity:0;}
.pic .active{opacity:1;}
.btn{position:absolute;z-index:2;left:300px;bottom:10px;}
.btn li{float:left;text-indent:-9999px;20px;height:20px;border-radius:50%;background:#ccc;margin-left:20px;}
.btn .active{background:red;}
.prev{position:absolute;z-index:3;left:0;top:200px;30px;height:30px;background:red;text-indent:-9999px;}
.next{position:absolute;z-index:3;right:0;top:200px;30px;height:30px;background:red;text-indent:-99999px;}
li{list-style:none}
js=================
Global.Fade=function(options){
var _self=this;
var timer=null;
this.box=options.box;
this.picli=options.picli;
this.btnul=options.btnul;
this.btnli=options.btnli;
this.len=options.len;
this.index=options.index;
this.prev=options.prev;
this.next=options.next;
this.auto=options.auto;
this.time=options.time;
this.next.on('click',function(){
_self.nextmove();
});
this.prev.on('click',function(){
_self.prevmove();
});
this.btnul.on('click', function (e) {
if (e.target.nodeName.toLowerCase() !== 'li') return false;
_self.index = e.target.innerHTML;
_self.show(_self.index);
});
// auto slider
timer= _self.auto ? setInterval(function(){
_self.nextmove();
},_self.time) :null;
this.box.on('mouseover', function () {
if(_self.auto) clearInterval(timer);
}).on('mouseout',function(){
timer=setInterval(function(){
_self.nextmove();
},3000)
})
};
Global.Fade.prototype = {
nextmove: function () {
if (this.picli.is(':animated')) return false;
this.index = (this.index >= this.len - 1) ? 0 : ++this.index;
this.show(this.index);
},
prevmove:function(){
if (this.picli.is(':animated')) return false;
this.index=(this.index<=0) ? this.len-1:--this.index;
this.show(this.index);
},
show: function () {
var _self=this;
this.picli.css('opacity', 0).eq(this.index).animate({
'opacity': 1
}, 300, function () {
});
_self.btnli.removeClass('active').eq(_self.index).addClass('active');
}
};
var slider=new Global.Fade({
box:$('.box'),
picli:$('.pic li'),
btnli:$('.btn li'),
prev:$('.prev'),
next:$('.next'),
len:$('.btn li').size(),
index:0,
btnul:$('.btn'),
auto:true, //default true
time:1000 //default auto time 3s
});