/* File: js/date_build.js, Ratio: 25.3% */

var dateRangeDiffs=new Array();(function($){$.fn.calendarPickFocus=function(){};$.fn.calendarPickBlur=function(){};$.fn.dateRangeDiffs=function(){$(this).find('.dateRange').dateRangeDiff();return $(this);};$.fn.dateRangeDiff=function(skipIfFound){var p=$(this).closest('.dateRange');if(!p.attr('id')){skipIfFound=false;p.attr('id','dateRange'+dateRangeDiffs.length);}
if(!skipIfFound){var d=p.dateDiffObjs();dateRangeDiffs[p.attr('id')]=d.stampDiff;}
return dateRangeDiffs[p.attr('id')];};$.fn.dateRangeObjs=function(){var p=$(this).closest('.dateRange');var objs={dateStart:p.find('.datetime').first(),timeStart:p.find('.time').first(),dateStop:p.find('.dateRange2 .datetime').first(),timeStop:p.find('.dateRange2 .time').first()};return objs;};$.fn.dateDiffObjs=function(){var obj=$(this).dateRangeObjs();obj.startStamp=timeStampFromStr(obj.dateStart.attr('value'),obj.timeStart.attr('value'));obj.stopStamp=timeStampFromStr(obj.dateStop.attr('value'),obj.timeStop.attr('value'));obj.stampDiff=obj.stopStamp-obj.startStamp;return obj;};$.fn.dateRangeSet=function(startStamp,stopStamp){var d=$(this).dateRangeObjs();d.dateStart.dateStampSet(startStamp);d.timeStart.timeStampSet(startStamp);d.dateStop.dateStampSet(stopStamp);d.timeStop.timeStampSet(stopStamp);return $(this);};$.fn.dateStampSet=function(timeStamp){var dateObj=timeStampSplit(timeStamp);$(this).attr('value',dateIntToSlash(dateObj.date));return $(this);};$.fn.timeStampSet=function(timeStamp){var dateObj=timeStampSplit(timeStamp);$(this).attr('value',timeIntToStr(dateObj.time));return $(this);};$.fn.dateRangeIn=function(){$(this).dateRangeDiff(true);return $(this);};$.fn.dateRangeOut=function(dateType){var timeStart=timeStop=dateStart=dateStop='';var dateLabel;if($(this).closest('.dateBuild').find('.dateBuild').length==1){dateLabel=dateType=='date'?'dateStart':'timeStart';}else{dateLabel=dateType=='date'?'dateStop':'timeStop';}
var d=$(this).dateDiffObjs();var p=$(this).closest('.dateRange');var pId=p.attr('id');var oDiff=dateRangeDiffs[pId];if(d.stampDiff<0){var isStart=(dateLabel=='dateStart'||dateLabel=='timeStart');if(d.stampDiff>-1200){d.stopStamp+=1200;}else if(d.stampDiff>-2400){d.stopStamp+=2400;}else{if(isStart){d.stopStamp=d.startStamp+oDiff;}else{d.startStamp=d.stopStamp-oDiff;}}}
p.dateRangeSet(d.startStamp,d.stopStamp).dateRangeDiff();return true;};$.fn.setDateBuild=function(dateVal,timeVal){var $d=$(this).closest('.dateBuild').find('input[class*=date]');var $t=$(this).closest('.dateBuild').find('input.time');if($d.length>0){$d.attr('value',dateVal);}
if($t.length>0){$t.attr('value',timeVal);}
return $(this);};})(jQuery);var calHover=false;var calClick=false;var timeHover=false;var timeClick=false;var dateBuildMonthLoad=false;$(document).ready(function(){$('div.calendarPick,div.timePick').live('mouseover mouseout',function(event){if(event.type=='mouseover'){calHover=true;}else if(event.type=='mouseout'){calHover=false;if(!$(this).parent().children('input').hasClass('focus')){$(this).hide();}}});$('.calendarPick').find('.month').live('click',function(event){calClick=true;var srcEl=$(this);var parentEl=srcEl.closest('.calendarPick');var container=srcEl.closest('.dateBuildMonth');parentEl.prev().focus();calClick=false;if(dateBuildMonthLoad){return false;}
if($(this).hasClass('nextMonth')){$targets=container.nextAll('.dateBuildMonth');$target=$targets.first();$success=function(msg){container.after(msg);$target=container.nextAll('.dateBuildMonth').first().show();};}else{$targets=container.prevAll('.dateBuildMonth');$target=$targets.first();$success=function(msg){container.before(msg);$target=container.prevAll('.dateBuildMonth').first().show();};}
if($targets.length==0){parentEl.addClass('loading');dateBuildMonthLoad=true;$.ajax({url:$(this).attr('href'),success:function(msg){dateBuildMonthLoad=false;$success(msg);container.hide();parentEl.removeClass('loading');},error:function(){dateBuildMonthLoad=false;parentEl.removeClass('loading');}});}else{$target.show();container.hide();}
return false;return false;});$('.timePick').find('a').live('click',function(){var timeVal=$(this).attr('href');timeVal=timeVal.substring(timeVal.indexOf('?')+1);$(this).closest('.timePick').closest('.timePickHolder').find('input').attr('value',timeVal).select();$(this).closest('.timePick').hide();return false;});$('.calendarPick').find('.day').live('click',function(){var parentEl=$(this).closest('.calendarPick');var input=parentEl.prev();var href=$(this).attr('href');href=href.substring(href.indexOf('?')+1);var inputVal=input.attr('value');var spaceIndex=inputVal.indexOf(' ');if(inputVal!=''&&spaceIndex!=-1){href+=inputVal.substring(spaceIndex);}
input.attr('value',href).select();parentEl.hide();return false;});$('[class*=PickHolder]').find('input').live('focusout focusin',function(event){var isCalendar=$(this).parent().hasClass('calendarPickHolder');var container=$(this);if(event.type=='focusin'&&!$(this).hasClass('focus')){$(this).addClass('focus').select();var url;var data;if(isCalendar){if(calClick){return true;}
$(this).select();url="/date_builds/index/";data="start="+$(this).attr("value")+'&sel='+$(this).attr("value");calHover=false;}else{url="/date_builds/time/";data="curr="+$(this).attr("value");timeHover=false;}
var targetEl=$(this).next().show().addClass('loading').html('Loading...');$.ajax({url:url,data:data,success:function(msg){targetEl.html(msg).removeClass('loading').attr('tabindex',-1);if(!isCalendar){var scrollSel=targetEl.find('.sel');if(scrollSel.length){targetEl.scrollTo(scrollSel,{axis:'y'});}
targetEl.focusout();}},error:function(){targetEl.removeClass('loading').hide().html('');}});return $(this);}else{$(this).removeClass('focus');if(!calHover){$(this).next().hide();}}});$('[class*=dateBuild]').find('input').live('focus blur',function(event){if(event.type=='focusin'){$(this).dateRangeIn();}else if(event.type=='focusout'){if($(this).hasClass('datetime')){$(this).dateRangeOut('date');}else{$(this).dateRangeOut('time');}}
return $(this);});});function timeStampFromStr(dateStr,timeStr){return timeStampFromInt(dateToInt(dateStr),timeToInt(timeStr));}
function timeStampFromInt(dateInt,timeInt){return dateInt*10000+timeInt;}
function timeStampSplit(timeStamp){var date=Math.round(timeStamp/10000);var time=timeStamp-date*10000;while(time>=2400){time-=2400;date+=1;}
return{date:date,time:time};}
function timeToInt(timeStr){if(!timeStr){return 0;}
if(timeStr&&timeStr.match(/^\d+$/)){timeInt=parseInt(timeStr,10);if(timeInt<24){timeInt*=100;}else if(timeInt>2400){timeInt=0;}}else{var reg=/(\d+)\s*:*\s*(\d*)\s*([am|pm|AM|PM]*)/;timeMatch=timeStr.match(reg);if(!timeMatch){return false;}
var h=timeMatch[1];var m=timeMatch[2];var a=timeMatch[3];if(isNaN(h)||h==''){h=0;}
h=parseInt(h,10);if(isNaN(m)||m==''){m=0;}
m=parseInt(m,10);if(a=='PM'||a=='pm'){if(h!=12){h+=12;}}else if(h==12){h=0;}
var timeInt=(h*100)+m;}
return timeInt;}
function timeIntToStr(timeInt){if(timeInt>10000){timeInt=timeInt-(Math.floor(timeInt/10000)*10000);}
var h=Math.floor(timeInt/100);var m=timeInt-(h*100);var a='am';if(h>=12){a='pm';if(h>12){h-=12;}}else if(h==0){h=12;}
var timeStr='';timeStr+=h+':'+zeroPad(m)+a;return timeStr;}
function dateToInt(dateStr){var slashDateReg=/(\d+)\s*\/\s*(\d+)\s*\/*\s*(\d*)/;var dashDateReg=/(\d+)\-(\d+)\-(\d+)/;var dateInt;var dateArray=dateStr?dateStr.match(slashDateReg):false;var date=new Date();var y=0,m=0,d=0;if(dateArray){y=dateArray[3];m=dateArray[1];d=dateArray[2];if(isNaN(y)||y==''){y=date.getFullYear();}}else if(dateStr){dateArray=dateStr.match(dashDateReg);if(dateArray){y=dateArray[1];m=dateArray[2];d=dateArray[3];}else{return false;}}
return parseInt(y,10)*10000+parseInt(m,10)*100+parseInt(d,10);}
function timeIntGet(getStr,timeInt){var newInt=0;if(getStr=='t'){newInt=timeInt-(Math.floor(timeInt/10000)*10000);}else if(getStr=='h'){newInt=timeIntGet('t',timeInt);newInt=Math.floor(newInt/100);}else if(getStr=='g'){newInt=timeIntGet('h',timeInt);if(newInt>12){newInt-=12;}else if(newInt==0){newInt=12;}}
return parseInt(newInt,10);}
function dateIntToSlash(dateInt){var dateArray=dateIntToArray(dateInt);var dateStr=dateArray[1]+"/"+dateArray[2]+"/"+dateArray[0];return dateStr;}
function dateIntToDash(dateInt){var dateArray=dateIntToArray(dateInt);return
dateArray[1].toString()+"-"+
dateArray[2].toString()+"-"+
dateArray[0].toString();}
function dateIntToArray(dateInt){if(dateInt>100000000){dateInt=Math.floor(dateInt/100000000);}
var y=Math.floor(dateInt/10000);var m=Math.floor((dateInt-y*10000)/100);var d=dateInt-y*10000-m*100;var dateArray=new Array(y,m,d);return dateArray;}
function zeroPad(val){return(!isNaN(val)&&val.toString().length==1)?"0"+val:val;}
