
// JavaScript for date dialog generation
// by SymeX Software Solutions, 2001
// 2007-03-10: Adaptado a Wenbanko
//------------------------------------

var wbnk_open_calendar_options="scrollbars=no,width=230,height=170";
var wbnk_month_names=new Array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
//var wbnk_month_names=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dec');
var wbnk_month_sizes=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

function date2string(d,fmt)
{
 var sep='-';
 var y=d.getFullYear();
 //if (y<1000) y+=1900;
 if (fmt=='iso') return y+sep+(d.getMonth()+1)+sep+d.getDate();
 else return d.getDate()+sep+(d.getMonth()+1)+sep+y;
}

function timestamp2string(d,fmt)
{
 var sep='-';
 var y=d.getFullYear();
 if (fmt=='iso') return y+sep+(d.getMonth()+1)+sep+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
 else return d.getDate()+sep+(d.getMonth()+1)+sep+y+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
}

function string2date(s)
{
 var d=s.match(/(\d+)-(\d+)-(\d+)/i);
 if (!d || d.length<3) return null;
 else {
  if (d[3]>31) return (new Date(d[3],Number(d[2])-1,d[1]));
  else return (new Date(d[1],Number(d[2])-1,d[3]));
 }
}

//------------------------------------

var date_pick_variable;
var change_event;

function wbnk_generate_calendar(cal,d,fmt,pv,chgevent)
{
 if (!cal) cal="opener";

 var d;
 if (pv) {
  date_pick_variable=pv;
  d=string2date(pv.value);
 }
 if (!d) d=new Date();

 if (chgevent) change_event=chgevent;

 var md=d.getDate();
 var m=d.getMonth();
 var y=d.getFullYear();
 var date_title=wbnk_month_names[m]+"&nbsp;"+y;
 var n=wbnk_month_sizes[m];
 if ((m==1) && (((y%4==0) && (y%100!=0)) || (y%400==0))) n=29;

 if (date_pick_variable) date_pick_variable.value=date2string(d,fmt);
 //if (change_event) change_event(date_pick_variable);

 var aux=new Date(y,m,1);
 var fd=aux.getDay()-1;
 if (fd==-1) fd=6;

 aux=new Date(y,m,md);
 aux.setFullYear(y-1);
 var f1="window,new Date("+aux.getFullYear()+","+aux.getMonth()+","+aux.getDate()+"),'"+fmt+"'";
 aux=new Date(y,m,md);
 aux.setMonth(m-1);
 var f2="window,new Date("+aux.getFullYear()+","+aux.getMonth()+","+aux.getDate()+"),'"+fmt+"'";
 aux=new Date(y,m,md);
 aux.setMonth(m+1);
 var f3="window,new Date("+aux.getFullYear()+","+aux.getMonth()+","+aux.getDate()+"),'"+fmt+"'";
 aux=new Date(y,m,md);
 aux.setFullYear(y+1);
 var f4="window,new Date("+aux.getFullYear()+","+aux.getMonth()+","+aux.getDate()+"),'"+fmt+"'";

 var html="";
 var dc=0,cl,hr;
  html+="<table class='wbnk_calendar'>\n";
  html+="<tr><td class='tit' nowrap colspan='7'>\n";
  html+="<input type='button' value='<<' onclick=\""+cal+".wbnk_write_calendar("+f1+")\">\n";
  html+="<input type='button' value='<' onclick=\""+cal+".wbnk_write_calendar("+f2+")\">\n";
  html+=date_title+"\n";
  html+="<input type='button' value='>' onclick=\""+cal+".wbnk_write_calendar("+f3+")\">\n";
  html+="<input type='button' value='>>' onclick=\""+cal+".wbnk_write_calendar("+f4+")\">\n";
  html+="</td></tr>\n";
  for (var i=0;i<6;i++) {
   html+="<tr>\n";
   for (var j=0;j<7;j++) {
    if (i==0 && j<fd) html+="<td></td>\n";
    else if (dc<n) {
     dc++;
     hr="window,new Date("+y+","+m+","+dc+"),'"+fmt+"'";
     cl='dia';
     if (dc==md) cl='hoy';
     else if (j==6) cl='dom';
     html+="<td class='"+cl+"' onclick=\""+cal+".wbnk_write_calendar("+hr+")\">"+dc+"</td>\n";
    }
   }
   html+="</tr>\n";
  }
 html+="<tr><td class='bottom' colspan='7'><input type='button' value='OK' onclick='if (opener.change_event) opener.change_event(opener.date_pick_variable);window.close()'></td></tr>\n";
 html+="</table>\n";

 return html;
}


function wbnk_write_calendar(w,d,fmt,pv,chgevent)
{
 with (w.document) {
  open("text/html","replace")
  writeln("<html>\n");
  writeln("<head>\n");
  writeln("<link href='/css/webanko.css' rel='stylesheet' type='text/css'>\n");
  writeln("</head>\n");
  writeln("<body>\n");
  writeln("<form><center>\n");
  writeln(wbnk_generate_calendar('opener',d,fmt,pv,chgevent));
  writeln("</center></form>");
  writeln("</body>\n");
  writeln("</html>\n");
  close();
 }
}


function wbnk_open_calendar(pv,fmt,chgevent)
{
 w=open("","wbnk_date_dialog",wbnk_open_calendar_options);
 wbnk_write_calendar(w,new Date(),fmt,pv,chgevent);
}


//------------------------------------
