// +------------------------------------------------------------+
// |                   Popup Calendar(Window)                   |
// +------------------------------------------------------------+
// | Last Modified:                  03-Feb-2003                |
// | Web Site:                       http://www.yxScripts.com   |
// | EMail:                          m_yangxin@hotmail.com      |
// +------------------------------------------------------------+
// |      Copyright 2003  Xin Yang    All Rights Reserved.      |
// +------------------------------------------------------------+

// default settings
var yxConf=["yyyy/mm/dd", 0, 1, 1, 1, "verdana", 12, 120, 1, 18, 1, 200, 220];
var yxColors=["#cccccc", "#000000", "#999999", "#ffffff", "#ffffff", "#000000", "#999999", "#ffffff", "#ffffff", "#999999", "#ffffff", "#cccccc", "#000000", "#000000", "#f0f0f0"]
var yxMonths=["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var yxDays=["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var yxLinks=["[Clear]", "[Close]"];
var yxTags=["&#171;", "&#187;", "&#139;", "&#155;"];
// ------

// codes
var yxCal="yxCal";
var yxCals=new Array();
var yxCurCal=null;
var yxCY, yxCM, yxWinX=0, yxWinY=0, yxCalWin=null, yxCalTimer=0;

var yxTable="<table cellpadding='0' cellspacing='0' border='0'>";

var yxIsOpera=(navigator.userAgent.indexOf("Opera")!=-1);
var yxIsIE=(navigator.userAgent.indexOf("MSIE")!=-1 && !yxIsOpera);
var yxIsIE4=(navigator.appVersion.indexOf("MSIE 4")!=-1);
var yxIsIE5=(yxIsIE && !yxIsIE4);
var yxIsN6=(navigator.userAgent.indexOf("Gecko")!=-1);
var yxIsN4=(typeof(document.layers)!="undefined");
var yxIsMac=(navigator.userAgent.indexOf("Mac")!=-1);
var yxIsKon=(navigator.userAgent.indexOf("Konqueror")!=-1);
var yxIsK3=(yxIsKon && navigator.appVersion.indexOf('Konqueror/3')!=-1);
var yxIsO6=(navigator.userAgent.indexOf("Opera 6")!=-1);
var yxCalSafe=(yxIsN6 || yxIsN4 || yxIsIE5 || yxIsIE4 && !yxIsMac || yxIsK3 || yxIsO6);

if (yxIsN4) { yxConf[6]+=2; }
if (yxIsIE && yxIsMac) { yxConf[9]+=4; }
if (yxIsK3) { yxConf[11]+=10; yxConf[12]+=10; }

function yxSpan(tag) { return "<span class='"+tag+"'>"; }
function yxSpanStyle(tag, color) { return "."+tag+" { font-family:"+yxConf[5]+"; font-size:"+yxConf[6]+"px; color:"+color+"; }\n"; }
function yxA(tag, func, para, content) { return "<a class='"+tag+"' href='javascript:if(window.opener && !window.opener.closed && window.opener."+func+") window.opener."+func+"("+para+")'>"+content+"</a>"; }
function yxAStyle(tag, color) { return "."+tag+" { text-decoration:none; color:"+color+"; }\n"; }

function yxCalOBJ(name, title, field, form, date, dx, dy) {
  this.name=name;
  this.title=title;
  this.field=field; this.formName=form; this.form=null;
  this.date=date;
  this.dx=dx; this.dy=dy;
  this.Sun=1; this.work=1; this.Sat=1;
  this.range=null; this.rangeOn=new Array(); this.rangeOff=new Array(); this.datesOn=""; this.datesOff="";
}

function yxFindCal(name) {
  for (var i=0; i<yxCals.length; i++) {
    if (yxCals[i].name==name) {
      if (yxCals[i].form==null) {
        if (yxCals[i].formName=="") {
          if (document.forms[0]) {
            yxCals[i].form=document.forms[0];
          }
        }
        else if (document.forms[yxCals[i].formName]) {
          yxCals[i].form=document.forms[yxCals[i].formName];
        }
      }

      return yxCals[i];
    }
  }

  return null;
}

function yxDayName(y,m,d) {
  return yxDays[(new Date(y,m,d)).getDay()].substring(0,3);
}

function yxMonthFromName(m3) {
  for (var i=0; i<yxMonths.length; i++) {
    if (yxMonths[i].toLowerCase().substring(0,3)==m3.toLowerCase()) {
      return i;
    }
  }
  return 0;
}

function yxFormat() {
  var calF=yxConf[0];

  calF=calF.replace(/\\/g, '\\\\');
  calF=calF.replace(/\//g, '\\\/');
  calF=calF.replace(/\[/g, '\\\[');
  calF=calF.replace(/\]/g, '\\\]');
  calF=calF.replace(/\(/g, '\\\(');
  calF=calF.replace(/\)/g, '\\\)');
  calF=calF.replace(/\{/g, '\\\{');
  calF=calF.replace(/\}/g, '\\\}');
  calF=calF.replace(/\</g, '\\\<');
  calF=calF.replace(/\>/g, '\\\>');
  calF=calF.replace(/\|/g, '\\\|');
  calF=calF.replace(/\*/g, '\\\*');
  calF=calF.replace(/\?/g, '\\\?');
  calF=calF.replace(/\+/g, '\\\+');
  calF=calF.replace(/\^/g, '\\\^');
  calF=calF.replace(/\$/g, '\\\$');

  calF=calF.replace(/dd/i, '\\d\\d');
  calF=calF.replace(/mm/i, '\\d\\d');
  calF=calF.replace(/yyyy/i, '\\d\\d\\d\\d');
  calF=calF.replace(/day/i, '\\w\\w\\w');
  calF=calF.replace(/mon/i, '\\w\\w\\w');

  return new RegExp(calF);
}

function yxDateNumbers(date) {
  var y, m, d;

  var yIdx=yxConf[0].search(/yyyy/i);
  var mIdx=yxConf[0].search(/mm/i);
  var m3Idx=yxConf[0].search(/mon/i);
  var dIdx=yxConf[0].search(/dd/i);

  y=date.substring(yIdx,yIdx+4)-0;
  if (mIdx!=-1) {
    m=date.substring(mIdx,mIdx+2)-1;
  }
  else {
    var m=yxMonthFromName(date.substring(m3Idx,m3Idx+3));
  }
  d=date.substring(dIdx,dIdx+2)-0;

  return new Array(y,m,d);
}

function yxHideCal() {
  if (yxCalWin!=null && !yxCalWin.closed) {
    yxCalWin.close();
    yxCalWin=null;
  }
  window.status="";
}

function yxLastDay(d) {
  var yy=d.getFullYear(), mm=d.getMonth();
  for (var i=31; i>=28; i--) {
    var nd=new Date(yy,mm,i);
    if (mm==nd.getMonth()) {
      return i;
    }
  }
  return 31;
}

function yxFirstDay(d) {
  var yy=d.getFullYear(), mm=d.getMonth();
  var fd=new Date(yy,mm,1);
  return fd.getDay();
}

function yxDayDisplay(i) {
  if (yxConf[10]==0) {
    return yxDays[i];
  }
  else {
    return yxDays[i].substring(0,yxConf[10]);
  }
}

function yxCalTitle(d) {
  var yy=d.getFullYear(), mm=yxMonths[d.getMonth()];
  var s;

  if (yxConf[8]==2) {
    s="<tr align='center' bgcolor='"+yxColors[0]+"'><td colspan='7' align='center'>"+yxTable+"<tr align='center' valign='middle'>"+(yxConf[2]==1?("<td>"+yxSpan("title")+yxA("titleA","yxMoveYear",-10,yxTags[0])+"</span></td><td>"+yxSpan("title")+"&nbsp;</span></td><td>"+yxSpan("title")+yxA("titleA","yxMoveYear",-1,yxTags[2])+"</span></td>"):"")+"<td width='"+yxConf[7]+"'>"+yxSpan("title")+yy+"</span></td>"+(yxConf[2]==1?("<td>"+yxSpan("title")+yxA("titleA","yxMoveYear",1,yxTags[3])+"</span></td><td>"+yxSpan("title")+"&nbsp;</span></td><td>"+yxSpan("title")+yxA("titleA","yxMoveYear",10,yxTags[1])+"</span></td>"):"")+"</tr><tr align='center' valign='middle'>"+(yxConf[2]==1?("<td align='right' colspan='3'>"+yxSpan("title")+yxA("titleA","yxMoveMonth",-1,yxTags[2])+"</span></td>"):"")+"<td width='"+yxConf[7]+"'>"+yxSpan("title")+mm+"</span></td>"+(yxConf[2]==1?("<td align='left' colspan='3'>"+yxSpan("title")+yxA("titleA","yxMoveMonth",1,yxTags[3])+"</span></td>"):"")+"</tr></table></td></tr><tr align='center' bgcolor='"+yxColors[2]+"'>";
  }
  else {
    s="<tr align='center' bgcolor='"+yxColors[0]+"'><td colspan='7' align='center'>"+yxTable+"<tr align='center' valign='middle'>"+(yxConf[2]==1?("<td>"+yxSpan("title")+yxA("titleA","yxMoveYear",-1,yxTags[0])+"</span></td><td>"+yxSpan("title")+"&nbsp;</span></td><td>"+yxSpan("title")+yxA("titleA","yxMoveMonth",-1,yxTags[2])+"</span></td>"):"")+"<td width='"+yxConf[7]+"'>"+yxSpan("title")+mm+" "+yy+"</span></td>"+(yxConf[2]==1?("<td>"+yxSpan("title")+yxA("titleA","yxMoveMonth",1,yxTags[3])+"</span></td><td>"+yxSpan("title")+"&nbsp;</span></td><td>"+yxSpan("title")+yxA("titleA","yxMoveYear",1,yxTags[1])+"</span></td>"):"")+"</tr></table></td></tr><tr align='center' bgcolor='"+yxColors[2]+"'>";
  }

  for (var i=yxConf[1]; i<yxConf[1]+7; i++) {
    s+="<td width='"+yxConf[9]+"'>"+yxSpan("days")+yxDayDisplay(i)+"</span></td>";
  }

  s+="</tr>";

  return s;
}

function yxCalHeader() {
  return "<head>\n<title>"+yxCurCal.title+"</title>\n<style type='text/css'>\n"+yxSpanStyle("title",yxColors[1])+yxSpanStyle("days",yxColors[3])+yxSpanStyle("foot",yxColors[12])+yxSpanStyle("day",yxColors[5])+yxSpanStyle("curDay",yxColors[7])+yxSpanStyle("offDay",yxColors[9])+yxAStyle("titleA",yxColors[1])+yxAStyle("dayA",yxColors[5])+yxAStyle("curA",yxColors[7])+yxAStyle("offA",yxColors[9])+yxAStyle("footA",yxColors[12])+"</style>\n</head>\n<body bgcolor='"+yxColors[14]+"'>\n<table bgcolor='"+yxColors[13]+"' cellspacing='0' cellpadding='1' border='0' align='center'><tr><td><table cellspacing='1' cellpadding='3' border='0'>";
}

function yxCalFooter() {
  return (yxConf[3]==1?("<tr bgcolor='"+yxColors[11]+"'><td colspan='7' align='center'>"+yxTable+"<tr><td>"+yxSpan("foot")+yxA("footA","yxClearDate","",yxLinks[0])+"</span></td><td>"+yxSpan("foot")+"&nbsp;&nbsp;</span></td><td>"+yxSpan("foot")+yxA("footA","yxHideCal","",yxLinks[1])+"</span></td></tr></table></td></tr>"):"")+"</table></td></tr></table>\n</body>";
}

function yxCalBody(d,day) {
  var s="", dc=1, fd=yxFirstDay(d), ld=yxLastDay(d);
  var yy=d.getFullYear(), mm=d.getMonth();
  var dateOff, wd, nd;

  if (yxConf[1]>0 && fd==0) { fd=7; }

  for (var i=0; i<6; i++) {
    s+="<tr align='center' bgcolor='"+yxColors[10]+"'>";
    for (var j=yxConf[1]; j<yxConf[1]+7; j++) {
      if (i*7+j<fd || dc>ld) {
        s+="<td>"+yxSpan("day")+"&nbsp;</span></td>";
      }
      else {
        nd=new Date(yy,mm,dc); wd=nd.getDay(); dstr=yxGetDate(nd); dateOff=false;
        dateOff=false;

        if (yxCurCal.Sun==0 && wd==0 || yxCurCal.Sat==0 && wd==6 || yxCurCal.work==0 && wd!=0 && wd!=6) {
          dateOff=true;
        }
        if (dateOff) {
          for (var ii=0; ii<yxCurCal.rangeOn.length; ii++) {
            if (compareDates(yxCurCal.rangeOn[ii][0],dstr)<=0 && compareDates(dstr,yxCurCal.rangeOn[ii][1])<=0) {
              dateOff=false; break;
            }
          }
        }
        if (!dateOff) {
          for (var ii=0; ii<yxCurCal.rangeOff.length; ii++) {
            if (compareDates(yxCurCal.rangeOff[ii][0],dstr)<=0 && compareDates(dstr,yxCurCal.rangeOff[ii][1])<=0) {
              dateOff=true;
            }
          }
        }
        if (yxCurCal.datesOn.indexOf(dstr)!=-1) {
          dateOff=false;
        }
        if (yxCurCal.datesOff.indexOf(dstr)!=-1) {
          dateOff=true;
        }
        if (!dateOff && yxCurCal.range!=null) {
          if (compareDates(yxCurCal.range[0],dstr)>0 || compareDates(dstr,yxCurCal.range[1])>0) {
            dateOff=true;
          }
        }

        if (dateOff) {
          s+="<td bgcolor='"+yxColors[8]+"'>"+yxSpan("offDay")+(dc++)+"</span></td>";
        }
        else {
          var bgColor=(dc==day)?yxColors[6]:yxColors[4];
          var fgTag=(dc==day)?"curDay":"day";
          var fgTagA=(dc==day)?"curA":"dayA";

          s+="<td bgcolor='"+bgColor+"'>"+yxSpan(fgTag)+yxA(fgTagA,"yxPickDate",dc,dc++)+"</span></td>";
        }
      }
    }
    s+="</tr>";
  }

  return s;
}

function yxCheckRange(dir) {
  var fd=new Date(yxCY,yxCM,1);
  if (dir<0) {
    fd=new Date(yxCY,yxCM,yxLastDay(fd));
    if (compareDates(yxGetDate(fd),yxCurCal.range[0])<0) {
      var lr=yxDateNumbers(yxCurCal.range[0]);
      yxCY=lr[0]; yxCM=lr[1];
    }
  }
  else {
    if (compareDates(yxGetDate(fd),yxCurCal.range[1])>0) {
      var lr=yxDateNumbers(yxCurCal.range[1]);
      yxCY=lr[0]; yxCM=lr[1];
    }
  }
}

function yxMoveYear(dy) {
  yxCY+=dy;
  if (yxCurCal.range!=null) { yxCheckRange(dy); }

  yxChangeCal(new Date(yxCY,yxCM,1));
}

function yxMoveMonth(dm) {
  yxCM+=dm;
  if (yxCM<0) { yxCM=11; yxCY--; }
  if (yxCM>11) { yxCM=0; yxCY++;}
  if (yxCurCal.range!=null) { yxCheckRange(dm); }

  yxChangeCal(new Date(yxCY,yxCM,1));
}

function yxChangeCal(d) {
  var dd=0;

  if (yxCurCal!=null) {
    var calRE=yxFormat();

    if (yxCurCal.form[yxCurCal.field].value!="" && calRE.test(yxCurCal.form[yxCurCal.field].value) || yxCurCal.date!="" && calRE.test(yxCurCal.date)) {
      var cd=yxDateNumbers((yxCurCal.form[yxCurCal.field].value!="")?yxCurCal.form[yxCurCal.field].value:yxCurCal.date);
      if (cd[0]==d.getFullYear() && cd[1]==d.getMonth()) {
        dd=cd[2];
      }
    }
    else {
      var cd=new Date();
      if (cd.getFullYear()==d.getFullYear() && cd.getMonth()==d.getMonth()) {
        dd=cd.getDate();
      }
    }
  }

  var calendar=yxCalHeader()+yxCalTitle(d)+yxCalBody(d,dd)+yxCalFooter();

  yxCalWin.document.open();
  yxCalWin.document.write(calendar);
  yxCalWin.document.close();
}

function yxShowCal(name) {
  if (!yxCalSafe) { return; }

  var lastCal=yxCurCal;
  var d=new Date(), hasCal=false;

  yxCurCal=yxFindCal(name);

  if (yxCurCal!=null && yxCurCal.form!=null && yxCurCal.form[yxCurCal.field]) {
    var calRE=yxFormat();

    if (yxCurCal.form[yxCurCal.field].value!="" && calRE.test(yxCurCal.form[yxCurCal.field].value) || yxCurCal.date!="" && calRE.test(yxCurCal.date)) {
      var cd=yxDateNumbers((yxCurCal.form[yxCurCal.field].value!="")?yxCurCal.form[yxCurCal.field].value:yxCurCal.date);
      d=new Date(cd[0],cd[1],cd[2]);

      yxCY=cd[0];
      yxCM=cd[1];
      dd=cd[2];
    }
    else {
      yxCY=d.getFullYear();
      yxCM=d.getMonth();
      dd=d.getDate();
    }

    var calendar=yxCalHeader()+yxCalTitle(d)+yxCalBody(d,dd)+yxCalFooter();

    if (yxCalWin!=null && !yxCalWin.closed) {
      if (yxIsK3) {
        yxHideCal();
      }
      else {
        hasCal=true;
        yxCalWin.moveTo(yxWinX+yxCurCal.dx,yxWinY+yxCurCal.dy);
      }
    }

    if (!hasCal) {
      if (yxIsIE || yxIsK3 || yxIsO6) {
        yxCalWin=window.open("",yxCal,"toolbar=0,width="+yxConf[11]+",height="+yxConf[12]+",left="+(yxWinX+yxCurCal.dx)+",top="+(yxWinY+yxCurCal.dy));
      }
      else {
        yxCalWin=window.open("",yxCal,"toolbar=0,width="+yxConf[11]+",height="+yxConf[12]+",screenx="+(yxWinX+yxCurCal.dx)+",screeny="+(yxWinY+yxCurCal.dy));
      }
    }

    yxCalWin.document.open();
    yxCalWin.document.write(calendar);
    yxCalWin.document.close();

    yxCalWin.focus();
  }
  else {
    if (yxCurCal==null) {
      window.status="Calendar ["+name+"] not found.";
    }
    else if (!yxCurCal.form) {
      window.status="Form ["+yxCurCal.formName+"] not found.";
    }
    else if (!yxCurCal.form[yxCurCal.field]) {
      window.status="Form Field ["+yxCurCal.formName+"."+yxCurCal.field+"] not found.";
    }

    if (lastCal!=null) {
      yxCurCal=lastCal;
    }
  }
}; var showCalendar=yxShowCal;

function yxGetDD(n) {
  return ((n<10)?"0":"")+n;
}

function yxClearDate() {
  yxCurCal.form[yxCurCal.field].value="";
  yxHideCal();
}

function yxPickDate(d) {
  yxHideCal();
  window.focus();

  var date=yxConf[0];
  date=date.replace(/yyyy/i, yxCY);
  date=date.replace(/mm/i, yxGetDD(yxCM+1));
  date=date.replace(/MON/, yxMonths[yxCM].substring(0,3).toUpperCase());
  date=date.replace(/Mon/i, yxMonths[yxCM].substring(0,3));
  date=date.replace(/dd/i, yxGetDD(d));
  date=date.replace(/DAY/, yxDayName(yxCY,yxCM,d).toUpperCase());
  date=date.replace(/day/i, yxDayName(yxCY,yxCM,d));

  yxCurCal.form[yxCurCal.field].value=date;
  if (yxIsIE && yxIsMac && !yxCurCal.form[yxCurCal.field].disabled) {
    yxCurCal.form[yxCurCal.field].focus();
  }
}

function yxCheckWin() {
  if (yxIsIE && yxIsMac) {
    yxHideCal();
  }
  else if (yxCalWin!=null && !yxCalWin.closed) {
    yxCalTimer=setTimeout("yxCalWin.focus()",500);
  }
}

function yxClickIt(e) {
  if (yxIsIE || yxIsK3 || yxIsO6) {
    yxWinX=event.screenX;
    yxWinY=event.screenY;
    event.cancelBubble=false;
  }
  else {
    yxWinX=e.screenX;
    yxWinY=e.screenY;
    document.routeEvent(e);
  }
}
// ------

// captures
if (yxCalSafe) {
  if (yxIsN6 || yxIsN4) { document.captureEvents(Event.CLICK); }
  document.onclick=yxClickIt;
  window.onfocus=yxCheckWin;
  window.onunload=yxHideCal;
}
// ----

// user functions
function addCalendar(name, title, field, form, date, dx, dy) {
  yxCals[yxCals.length]=new yxCalOBJ(name, title, field, form, date, dx, dy);
}

function setFont(font, size) {
  if (font!="") { yxConf[5]=font; }
  if (size>0) {
    yxConf[6]=size;
    if (yxIsN4) { yxConf[6]+=2; }
  }
}

function setWidth(tWidth, tMode, dWidth, dDigits) {
  if (tWidth>0) { yxConf[7]=tWidth; }
  if (tMode==1 || tMode==2) { yxConf[8]=tMode; }
  if (dWidth>0) {
    yxConf[9]=dWidth;
    if (yxIsIE && yxIsMac) { yxConf[9]+=4; }
  }
  if (dDigits>0) { yxConf[10]=dDigits; }
}

function setColor(tColor, wColor, dColor, cdColor, odColor, bColor, fColor, bdColor, bgColor) {
  if (tColor!="") { yxColors[0]=tColor; }
  if (wColor!="") { yxColors[2]=wColor; }
  if (dColor!="") { yxColors[4]=dColor; }
  if (cdColor!="") { yxColors[6]=cdColor; }
  if (odColor!="") { yxColors[8]=odColor; }
  if (bColor!="") { yxColors[10]=bColor; }
  if (fColor!="") { yxColors[11]=fColor; }
  if (bdColor!="") { yxColors[13]=bdColor; }
  if (bgColor!="") { yxColors[14]=bgColor; }
}

function setFontColor(tColorF, wColorF, dColorF, cdColorF, odColorF, fColorF) {
  if (tColorF!="") { yxColors[1]=tColorF; }
  if (wColorF!="") { yxColors[3]=wColorF; }
  if (dColorF!="") { yxColors[5]=dColorF; }
  if (cdColorF!="") { yxColors[7]=cdColorF; }
  if (odColorF!="") { yxColors[9]=odColorF; }
  if (fColorF!="") { yxColors[12]=fColorF; }
}

function setFormat(format) { yxConf[0]=format; }

function setWeekDay(wDay) {
  if (wDay==0 || wDay==1) { yxConf[1]=wDay; }
}

function setMonthTitles(jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) {
  if (jan!="") { yxMonths[0]=jan; }
  if (feb!="") { yxMonths[1]=feb; }
  if (mar!="") { yxMonths[2]=mar; }
  if (apr!="") { yxMonths[3]=apr; }
  if (may!="") { yxMonths[4]=may; }
  if (jun!="") { yxMonths[5]=jun; }
  if (jul!="") { yxMonths[6]=jul; }
  if (aug!="") { yxMonths[7]=aug; }
  if (sep!="") { yxMonths[8]=sep; }
  if (oct!="") { yxMonths[9]=oct; }
  if (nov!="") { yxMonths[10]=nov; }
  if (dec!="") { yxMonths[11]=dec; }
}

function setDayTitles(sun, mon, tue, wed, thu, fri, sat) {
  if (sun!="") { yxDays[0]=sun; yxDays[7]=sun; }
  if (mon!="") { yxDays[1]=mon; }
  if (tue!="") { yxDays[2]=tue; }
  if (wed!="") { yxDays[3]=wed; }
  if (thu!="") { yxDays[4]=thu; }
  if (fri!="") { yxDays[5]=fri; }
  if (sat!="") { yxDays[6]=sat; }
}

function setLinkTitles(clearL, closeL) {
  if (clearL!="") { yxLinks[0]=clearL; }
  if (closeL!="") { yxLinks[1]=closeL; }
}

function switchLinks(mode) { yxConf[3]=mode; }

function setScrollTags(lOuter, rOuter, lInner, rInner) {
  if (lOuter!="") { yxTags[0]=lOuter; }
  if (rOuter!="") { yxTags[1]=rOuter; }
  if (lInner!="") { yxTags[2]=lInner; }
  if (rInner!="") { yxTags[3]=rInner; }
}

function switchTags(mode) { yxConf[2]=mode; }

function setWindowSize(w, h) {
  if (w>0) {
    yxConf[11]=w;
    if (yxIsK3) { yxConf[11]+=10; }
  }
  if (h>0) {
    yxConf[12]=h;
    if (yxIsK3) { yxConf[12]+=10; }
  }
}

function setRange(name, start, end) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.range=new Array(start, end);
  }
}

function enableRange(name, start, end) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.rangeOn[cal.rangeOn.length]=new Array(start, end);
  }
}

function disableRange(name, start, end) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.rangeOff[cal.rangeOff.length]=new Array(start, end);
  }
}

function enableDates(name, dates) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.datesOn+=dates+", ";
  }
}

function disableDates(name, dates) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.datesOff+=dates+", ";
  }
}

function setDays(name, sun, wk, sat) {
  var cal=yxFindCal(name);
  if (cal!=null) {
    cal.Sun=sun; cal.work=wk; cal.Sat=sat;
  }
}

function checkDate(name) {
  var thisCal=yxFindCal(name);

  if (thisCal!=null && thisCal.form!=null && thisCal.form[thisCal.field]) {
    var calRE=yxFormat();

    if (calRE.test(thisCal.form[thisCal.field].value)) {
      return 0;
    }
    else {
      return 1;
    }
  }
  else {
    return 2;
  }
}

function yxGetDate(d) {
  var date=yxConf[0];
  date=date.replace(/yyyy/i, d.getFullYear());
  date=date.replace(/mm/i, yxGetDD(d.getMonth()+1));
  date=date.replace(/MON/, yxMonths[d.getMonth()].substring(0,3).toUpperCase()); 
  date=date.replace(/Mon/i, yxMonths[d.getMonth()].substring(0,3)); 
  date=date.replace(/dd/i, yxGetDD(d.getDate()));

  return date;
}

function getCurrentDate() { return yxGetDate(new Date()); }

function compareDates(date1, date2) {
  var calRE=yxFormat();
  var d1, d2;

  if (calRE.test(date1)) {
    d1=getNumbers(date1);
  }
  else {
    d1=getNumbers(getCurrentDate());
  }

  if (calRE.test(date2)) {
    d2=getNumbers(date2);
  }
  else {
    d2=getNumbers(getCurrentDate());
  }

  var dStr1=d1[0]+""+d1[1]+""+d1[2];
  var dStr2=d2[0]+""+d2[1]+""+d2[2];

  if (dStr1==dStr2) {
    return 0;
  }
  else if (dStr1>dStr2) {
    return 1;
  }
  else {
    return -1;
  }
}

function getNumbers(date) {
  var calRE=yxFormat();
  var y, m, d;

  if (calRE.test(date)) {
    var yIdx=yxConf[0].search(/yyyy/i);
    var mIdx=yxConf[0].search(/mm/i);
    var m3Idx=yxConf[0].search(/mon/i);
    var dIdx=yxConf[0].search(/dd/i);

    y=date.substring(yIdx,yIdx+4);
    if (mIdx!=-1) {
      m=date.substring(mIdx,mIdx+2);
    }
    else {
      var mm=yxMonthFromName(date.substring(m3Idx,m3Idx+3))+1;
      m=(mm<10)?("0"+mm):(""+mm);
    }
    d=date.substring(dIdx,dIdx+2);

    return new Array(y,m,d);
  }
  else {
    return new Array("", "", "");
  }
}
// ------

