/*
	Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.date.posix"]){dojo._hasResource["dojox.date.posix"]=true;dojo.provide("dojox.date.posix");dojo.require("dojo.date");dojo.require("dojo.date.locale");dojo.require("dojo.string");dojox.date.posix.strftime=function(_1,_2,_3){var _4=null;var _=function(s,n){return dojo.string.pad(s,n||2,_4||"0");};var _8=dojo.date.locale._getGregorianBundle(_3);var $=function(_a){switch(_a){case "a":return dojo.date.locale.getNames("days","abbr","format",_3)[_1.getDay()];case "A":return dojo.date.locale.getNames("days","wide","format",_3)[_1.getDay()];case "b":case "h":return dojo.date.locale.getNames("months","abbr","format",_3)[_1.getMonth()];case "B":return dojo.date.locale.getNames("months","wide","format",_3)[_1.getMonth()];case "c":return dojo.date.locale.format(_1,{formatLength:"full",locale:_3});case "C":return _(Math.floor(_1.getFullYear()/100));case "d":return _(_1.getDate());case "D":return $("m")+"/"+$("d")+"/"+$("y");case "e":if(_4==null){_4=" ";}return _(_1.getDate());case "f":if(_4==null){_4=" ";}return _(_1.getMonth()+1);case "g":break;case "G":dojo.unimplemented("unimplemented modifier 'G'");break;case "F":return $("Y")+"-"+$("m")+"-"+$("d");case "H":return _(_1.getHours());case "I":return _(_1.getHours()%12||12);case "j":return _(dojo.date.locale._getDayOfYear(_1),3);case "k":if(_4==null){_4=" ";}return _(_1.getHours());case "l":if(_4==null){_4=" ";}return _(_1.getHours()%12||12);case "m":return _(_1.getMonth()+1);case "M":return _(_1.getMinutes());case "n":return "\n";case "p":return _8[_1.getHours()<12?"am":"pm"];case "r":return $("I")+":"+$("M")+":"+$("S")+" "+$("p");case "R":return $("H")+":"+$("M");case "S":return _(_1.getSeconds());case "t":return "\t";case "T":return $("H")+":"+$("M")+":"+$("S");case "u":return String(_1.getDay()||7);case "U":return _(dojo.date.locale._getWeekOfYear(_1));case "V":return _(dojox.date.posix.getIsoWeekOfYear(_1));case "W":return _(dojo.date.locale._getWeekOfYear(_1,1));case "w":return String(_1.getDay());case "x":return dojo.date.locale.format(_1,{selector:"date",formatLength:"full",locale:_3});case "X":return dojo.date.locale.format(_1,{selector:"time",formatLength:"full",locale:_3});case "y":return _(_1.getFullYear()%100);case "Y":return String(_1.getFullYear());case "z":var _b=_1.getTimezoneOffset();return (_b>0?"-":"+")+_(Math.floor(Math.abs(_b)/60))+":"+_(Math.abs(_b)%60);case "Z":return dojo.date.getTimezoneName(_1);case "%":return "%";}};var _c="";var i=0;var _e=0;var _f=null;while((_e=_2.indexOf("%",i))!=-1){_c+=_2.substring(i,_e++);switch(_2.charAt(_e++)){case "_":_4=" ";break;case "-":_4="";break;case "0":_4="0";break;case "^":_f="upper";break;case "*":_f="lower";break;case "#":_f="swap";break;default:_4=null;_e--;break;}var _10=$(_2.charAt(_e++));switch(_f){case "upper":_10=_10.toUpperCase();break;case "lower":_10=_10.toLowerCase();break;case "swap":var _11=_10.toLowerCase();var _12="";var ch="";for(var j=0;j<_10.length;j++){ch=_10.charAt(j);_12+=(ch==_11.charAt(j))?ch.toUpperCase():ch.toLowerCase();}_10=_12;break;default:break;}_f=null;_c+=_10;i=_e;}_c+=_2.substring(i);return _c;};dojox.date.posix.getStartOfWeek=function(_15,_16){if(isNaN(_16)){_16=dojo.cldr.supplemental.getFirstDayOfWeek?dojo.cldr.supplemental.getFirstDayOfWeek():0;}var _17=_16;if(_15.getDay()>=_16){_17-=_15.getDay();}else{_17-=(7-_15.getDay());}var _18=new Date(_15);_18.setHours(0,0,0,0);return dojo.date.add(_18,"day",_17);};dojox.date.posix.setIsoWeekOfYear=function(_19,_1a){if(!_1a){return _19;}var _1b=dojox.date.posix.getIsoWeekOfYear(_19);var _1c=_1a-_1b;if(_1a<0){var _1d=dojox.date.posix.getIsoWeeksInYear(_19);_1c=(_1d+_1a+1)-_1b;}return dojo.date.add(_19,"week",_1c);};dojox.date.posix.getIsoWeekOfYear=function(_1e){var _1f=dojox.date.posix.getStartOfWeek(_1e,1);var _20=new Date(_1e.getFullYear(),0,4);_20=dojox.date.posix.getStartOfWeek(_20,1);var _21=_1f.getTime()-_20.getTime();if(_21<0){return dojox.date.posix.getIsoWeeksInYear(_1f);}return Math.ceil(_21/604800000)+1;};dojox.date.posix.getIsoWeeksInYear=function(_22){function p(y){return y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400);};var y=_22.getFullYear();return (p(y)%7==4||p(y-1)%7==3)?53:52;};}