// +------------------------------------------------------------+

// |                   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='4' cellspacing='1' 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("", "", "");

  }

}

// ------

