|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /home/queenjbs/www/test/imgshow/ |
Upload File : |
/*!------------------------------------------------*
* Monochrome (www.monocr.com)
* Creater: Kim, Ki-hong (raindrop@monocr.com)
*-------------------------------------------------*/
;(function($){
$.fn.raindropSchedule = function(set){
var now = new Date();
var y, m, artist, lang_code;
var opts = {
title: '.cal-head p',
calTable: '.side-calendar',
btnPrev: '.side-calendar input.btn-prev',
btnNext: '.side-calendar input.btn-next',
schList: '.side-schedule',
schSlider: '.side-schedule > .schedule-slider',
schBtnPrev: '.side-schedule input.btn-prev',
schBtnNext: '.side-schedule input.btn-next',
monthJSON: null,
dayJSON: null
};
$.extend(opts, set);
var calendar = {
init: function($t){
var _this = this;
lang_code = $t.data('lang');
artist = $t.data('artist');
y = now.getFullYear();
m = now.getMonth();
function dayActive(data){
$( opts.calTable + ' table tbody td:not(.dim)', $t).each(function(k,v){
if( data[k] >= 1 )
$(this).addClass('active');
});
$( opts.calTable + ' table tbody td.select input', $t).each(dayLoad);
}
function dayLoad(){
$(this).parents('tbody').find('td.select').removeClass('select');
$(this).parent().removeClass('hover').addClass('select');
$(this).addClass('ajax');
var d = $(this).val();
var btn = $(this);
_this.dayDataLoad(y,m,d,function(data){
btn.removeClass('ajax');
if( opts.schSlider ){
$(opts.schSlider + ' ul', $t).empty();
for( s in data ){
$('<li>').html('<div class="date">' + data[s][0] + '<span>' + ( data[s][2] ? ('<sup>' + data[s][1] + '</sup>' + data[s][2] ) : '' ) + '</span></div>'
+ '<div class="content"><strong>' + data[s][3] + '</strong><p>' + data[s][4] + '</p></div>').appendTo( $(opts.schSlider + ' ul', $t) );
}
}
});
}
if( opts.title )
$( opts.title , $t).html( y + '<span>/</span>' + this.numberZero(m+1) );
if( opts.calTable ){
$( opts.calTable + ' table tbody', $t).html( this.render(now) );
$( opts.calTable + ' table tbody td:not(.select):not(.dim) input', $t).live({
mouseenter: function(){
$(this).parent().addClass('hover');
},
mouseleave: function(){
$(this).parent().removeClass('hover');
},
click: dayLoad
});
$( opts.calTable + ' table tbody td.select input', $t).each(dayLoad);
this.monthDataLoad(y, m, dayActive);
}
if( opts.btnPrev || opts.btnNext ){
var btnEl;
if( opts.btnPrev && opts.btnNext )
btnEl = opts.btnPrev + ',' + opts.btnNext;
else if( opts.btnPrev )
btnEl = opts.btnPrev;
else
btnEl = opts.btnNext;
$( btnEl , $t).bind('click',function(){
var get;
if( $(this).is( opts.btnPrev ) )
get = _this.getMonth('prev');
else
get = _this.getMonth('next');
var clickDate = new Date(get.year, get.month, 1);
if( opts.title )
$( opts.title , $t).html( get.year + '<span>/</span>' + _this.numberZero( get.month+1 ) );
if( opts.calTable ){
$( opts.calTable + ' table tbody', $t).html( _this.render( clickDate ) );
_this.monthDataLoad(get.year, get.month, dayActive);
}
});
}
// slider
if( opts.schSlider && ( opts.schBtnPrev || opts.schBtnNext ) ){
var btnSchEl;
var $slider = $(opts.schSlider, $t);
$slider.data({page:1});
//$( opts.schBtnPrev , $t).attr('disabled','disabled');
if( opts.schBtnPrev && opts.schBtnNext )
btnSchEl = opts.schBtnPrev + ',' + opts.schBtnNext;
else if( opts.schBtnPrev )
btnSchEl = opts.schBtnPrev;
else
btnSchEl = opts.schBtnNext;
$( btnSchEl , $t).bind('click',function(){
var $ul = $('ul',$slider);
var page = $slider.data('page');
var totalpage = Math.ceil( $ul.height() / $slider.height() );
if( $(this).is( opts.schBtnPrev ) ){
if( page <= 1 )return;
page = (page-1);
$ul.animate({marginTop:'+=284px'});
}else{
if( page >= totalpage )return;
page = (page+1);
$ul.animate({marginTop:'-=284px'});
}
$slider.data({page:page});
});
}
},
render: function(date){
var cal = new Date(date.getFullYear(),date.getMonth(),1,0,0,0,0);
var year = cal.getFullYear();
var month = cal.getMonth();
var week = cal.getDay();
var day = cal.getDate();
var today = now.getDate();
var days = [];
var lastDay = this.lastDay(year, month);
var getPrevMonth = this.getMonth('prev', year, month);
var getNextMonth = this.getMonth('next', year, month);
var prevMonthDay = this.lastDay(getPrevMonth.year, getPrevMonth.month) - week;
// 이전달 미리 출력
for(var i=0; i<week; i++){
prevMonthDay++;
days.push('<td class="dim" data-month="'+getPrevMonth.year+'-'+getPrevMonth.month+'" data-day="'+prevMonthDay+'"><input type="button" value="'+prevMonthDay+'" /></td>');
}
// 이번달
for(var i=1; i<=lastDay; i++){
var holiday;
if((i+week)%7 == 1)
holiday = ' class="sun"';
else if((i+week)%7 == 0)
holiday = ' class="sat"';
else
holiday = '';
if( (year+''+month+''+i) == (year+''+month+''+today) )
days.push('<td data-day="'+i+'" class="select"><input type="button" value="'+i+'"'+holiday+' /></td>');
else if( (year+''+month+''+i) == (now.getFullYear()+''+now.getMonth()+''+now.getDate()) )
days.push('<td data-day="'+i+'" class="today"><input type="button" value="'+i+'"'+holiday+' /></td>');
else
days.push('<td data-day="'+i+'"><input type="button" value="'+i+'"'+holiday+' /></td>');
if((i+week)%7 == 0){
days.push('</tr><tr>');
}
if(i == lastDay && (i+week)%7 != 0){
for(var k=0; k<parseInt( 7 - (i+week)%7 ); k++){
days.push('<td class="dim" data-month="'+getNextMonth.year+'-'+getNextMonth.month+'" data-day="'+parseInt(k+1)+'"><input type="button" value="'+parseInt(k+1)+'" /></td>');
}
}
}
return '<tr>' + days.join('') + '</tr>';
},
getMonth: function(is){
if(is == 'next'){
if(m == 11){
year = parseInt(y)+1;
month = 0;
}else{
year = y;
month = parseInt(m)+1;
}
}else if(is == 'prev'){
if(m == 0){
year = parseInt(y)-1;
month = 11;
}else{
year = y;
month = parseInt(m)-1;
}
}
y = year;
m = month;
return {year:year, month:month};
},
lastDay: function(year, month){
var daysArr = [31,28,31,30,31,30,31,31,30,31,30,31],lastDay;
if(month == 1)
lastDay = ((( year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))? 29 : 28;
else
lastDay = daysArr[month];
return lastDay;
},
numberZero: function(n){
n = Number(n);
if( n < 10 )
n = '0' + n;
return n;
},
monthDataLoad: function(year,month,callback){
$.getJSON(opts.monthJSON,{
artist: artist,
lang_code: lang_code,
startdate: (year + '-' + this.numberZero(month+1))
},function(data){
if( data.status == 'success' ){
callback(data.sch);
}
});
},
dayDataLoad: function(year,month,day,callback){
$.getJSON(opts.dayJSON,{
artist: artist,
lang_code: lang_code,
startdate: (year + '-' + this.numberZero(month+1) + '-' + this.numberZero(day))
},function(data){
if( data.status == 'success' ){
callback(data.list);
}
});
}
};
this.each(function(){
calendar.init( $(this) );
});
return this;
};
})(jQuery);