function browserForm(id, form) {
 if (yxIsN4) {
   return "document.layers."+id+".document."+form;
 }
 else {
   return "document."+form;
 }
}
// default settings
var yxConf=["yyyy/mm/dd", 0, 1, 1, 1, "verdana", 12, 120, 1, 22, 1, 1, 1, 1, 1];
var yxColors=["#cccccc", "#000000", "#999999", "#ffffff", "#ffffff", "#000000", "#ffffff", "#000000", "#999999", "#ffffff", "#ffffff", "#999999", "#ffffff", "#cccccc", "#000000", "#ffffff", "#000000", "#ffffff"];
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 yxCore=1;
var yxCals=new Array();
var yxCal=null, yxDateFormat=null, yxIdx=100;
var yxMX=0, yxMY=0, yxN4F=1, yxIMW=2, yxN4L=0, yxIE4C=1;

var yxTL=" style='text-decoration:none; background-color:transparent'>";
var yxTable="<table cellpadding='0' cellspacing='0' border='0'>";
var yxOtherMouseMove=null;

var yxNav=navigator.userAgent.toLowerCase();

var yxIsMac=(yxNav.indexOf("mac")!=-1);
var yxIsOpera=(yxNav.indexOf("opera")!=-1);
var yxIsKon=(yxNav.indexOf("konqueror")!=-1);

var yxIsIE=(!yxIsOpera && yxNav.indexOf("msie")!=-1);
var yxIsIE4=(yxIsIE && yxNav.indexOf("msie 4")!=-1);
var yxIsIE5=(yxIsIE && !yxIsIE4);
var yxIsN4=(yxNav.indexOf('mozilla')!=-1 && yxNav.search(/msie|gecko|opera|spoofer|compatible|webtv|hotjava/)==-1);
var yxIsN6=(yxNav.indexOf("gecko")!=-1);
var yxIsO7=(yxNav.indexOf("opera 7")!=-1);
var yxIsK3=(yxIsKon && navigator.appVersion.indexOf('Konqueror/3')!=-1);

var yxCalSafe=(yxIsN6 || yxIsN4 || yxIsIE5 || yxIsIE4 && !yxIsMac || yxIsK3 || yxIsO7);

var yxLayers=null;
if (yxIsIE) {
  yxLayers=document.all;
}
else if (yxIsN4) {
  yxLayers=document.layers;
  yxConf[6]+=yxN4F;
}
else if (yxIsN6 || yxIsK3 || yxIsO7) {
  yxLayers=yxDOM;
}

if (yxIsIE && yxIsMac) { yxConf[9]+=yxIMW; }

function yxWriteLayer(l, content) {
  if (yxIsN4) {
    with (l.document) { open(); writeln(content); close(); }
  }
  else {
    l.innerHTML=content;
  }
}
function yxMoveLayerTo(l, x, y) {
  if (yxIsN4) {
    l.moveTo(x, y);
  }
  else {
    l.style.top=y+"px"; l.style.left=x+"px";
  }
}
function yxMoveLayerBy(l, x, y) {
  if (yxIsN4) {
    l.moveBy(x, y);
  }
  else {
    l.style.top=(parseInt(l.style.top)+y)+"px"; l.style.left=(parseInt(l.style.left)+x)+"px";
  }
}
function yxShowLayer(l) {
  if (yxIsN4) {
    l.visibility="show";
  }
  else {
    l.style.visibility="visible";
  }
}
function yxHideLayer(l) {
  if (yxIsN4) {
    l.visibility="hide";
  }
  else {
    l.style.visibility="hidden";
  }
}

function yxMakeLayer() {
  var l=null;

  if (yxIsN4) {
    l=new Layer(1000);
    l.zIndex=yxIdx; l.idx=++yxN4L;
  }
  else if (yxIsIE4) {
    var id="yx"+(yxIE4C++)+"";
    document.body.insertAdjacentHTML("AfterBegin",('<div id="'+id+'" style="position:absolute; left:0px; top:0px; visibility:hidden; z-index:'+yxIdx+';"></div>'));
    l=document.all(id);
  }
  else {
    l=document.createElement("DIV");
    with (l.style) { position="absolute"; visibility="hidden"; left="0px"; top="0px"; zIndex=yxIdx; }
    if (yxIsIE && !yxIsMac) {
      document.body.insertBefore(l,document.body.firstChild);
    }
    else {
      document.body.appendChild(l);
    }
  }

  return l;
}

function yxDOM(id) { return document.getElementById(id); }

function yxSpan(color, content) { return "<span style='font-family:"+yxConf[5]+"; font-size:"+yxConf[6]+"px; color:"+color+";'>"+content+"</span>"; }

function yxCalOBJ(idx, name, field, form, date, id, id2, dx, dy) {
  this.idx=idx; this.name=name;
  this.field=field; this.formName=form; this.form=null;
  this.date=date;
  this.id=id; this.id2=id2;
  this.dx=dx; this.dy=dy;

  this.CY=0; this.CM=0; this.mode=1;
  this.holder=null; this.checkHolder=yxCheckHolder;

  this.ref=new Function;
}

function yxRegForm(cal) {
  if (cal.form==null) {
    if (cal.formName=="") {
      if (document.forms[0]) {
        cal.form=document.forms[0];
      }
    }
    else if (document.forms[cal.formName]) {
      cal.form=document.forms[cal.formName];
    }
    else if (typeof(eval(cal.formName))!="undefined") {
      cal.form=eval(cal.formName);
    }
  }
}

function yxFindCal(name) {
  for (var i=0; i<yxCals.length; i++) {
    if (yxCals[i].name==name) {
      return yxCals[i];
    }
  }

  return null;
}

function yxDay3(y, m, d) { return yxDays[(new Date(y, m, d)).getDay()].substring(0, 3); }
function yxMonth3(i) { return yxMonths[i].substring(0, 3); }

function yxMonthFromName(m3) {
  for (var i=0; i<yxMonths.length; i++) {
    if (yxMonth3(i).toLowerCase()==m3.toLowerCase()) {
      return i;
    }
  }
  return 0;
}

function _yxFormat(f) {
  var calF=typeof(f)!="undefined"?f: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/gi, '\\d\\d');
  calF=calF.replace(/mm/gi, '\\d\\d');
  calF=calF.replace(/yyyy/gi, '\\d\\d\\d\\d');
  calF=calF.replace(/yy/gi, '\\d\\d');
  calF=calF.replace(/day/gi, '\\w\\w\\w');
  calF=calF.replace(/mon/gi, '\\w\\w\\w');

  return calF;
}

function yxFormat(f) {
  if (yxDateFormat==null) {
    yxDateFormat=new RegExp('^'+_yxFormat(f)+'$');
  }
  return yxDateFormat;
}

function yxGetNumbers(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 {
    m=yxMonthFromName(date.substring(m3Idx, m3Idx+3));
  }
  d=date.substring(dIdx, dIdx+2)-0;

  return new Array(y, m, d);
}

function yxGetDate(y, m, d) {
  var date=yxConf[0];
  date=date.replace(/yyyy/i, y);
  date=date.replace(/mm/i, yxGetDD(m+1));
  date=date.replace(/MON/, yxMonth3(m).toUpperCase());
  date=date.replace(/mon/i, yxMonth3(m));
  date=date.replace(/dd/i, yxGetDD(d));
  date=date.replace(/DAY/, yxDay3(y, m, d).toUpperCase());
  date=date.replace(/day/i, yxDay3(y, m, d));

  return date;
}

function yxHideCal(idx) {
  if (yxCals[idx].mode==1 && yxCals[idx].holder!=null) {
    yxHideLayer(yxCals[idx].holder)
  }
}

function yxHideAll(idx) {
  for (var i=0; i<yxCals.length; i++) {
    if (i!=idx) { yxHideCal(i); }
  }
}

function yxLeft(l) { return l.offsetLeft+(l.offsetParent?yxLeft(l.offsetParent):(yxIsIE && yxIsMac)?parseInt(document.body.leftMargin):0); }
function yxTop(l) { return l.offsetTop+(l.offsetParent?yxTop(l.offsetParent):(yxIsIE && yxIsMac)?parseInt(document.body.topMargin):0); }
function yxLeftN4(l) { return l.pageX; }
function yxTopN4(l) { return l.pageY; }

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) { return (new Date(d.getFullYear(), d.getMonth(), 1)).getDay(); }

function yxDayDisplay(i) {
  if (yxConf[10]==0) {
    return yxDays[i];
  }
  else {
    return yxDays[i].substring(0, yxConf[10]);
  }
}

function yxCalOpen() { return ""; }

function yxCalTableOpen() { return "<table cellspacing='"+yxConf[13]+"' cellpadding='"+yxConf[14]+"' border='0' bgcolor='"+yxColors[16]+"'><tr bgcolor='"+yxColors[17]+"'><td><table cellspacing='"+yxConf[12]+"' cellpadding='"+yxConf[11]+"' border='0' bgcolor='"+yxColors[15]+"'>"; }

function yxCalTitle() {
  var yy=yxCal.CY, mm=yxMonths[yxCal.CM], idx=yxCal.idx;
  var s;

  if (yxConf[8]==2) {
    s="<tr bgcolor='"+yxColors[0]+"'><td colspan='7' align='center'>"+yxTable+"<tr align='center' valign='middle'>"+(yxConf[2]==1?("<td align='right' colspan='3'><a href='javascript:yxMoveMonth("+idx+",-1)'"+yxTL+yxSpan(yxColors[1], yxTags[2])+"</a></td>"):"")+"<td width='"+yxConf[7]+"'>"+yxSpan(yxColors[1], mm)+"</td>"+(yxConf[2]==1?("<td align='left' colspan='3'><a href='javascript:yxMoveMonth("+idx+",1)'"+yxTL+yxSpan(yxColors[1], yxTags[3])+"</a></td>"):"")+"</tr><tr align='center' valign='middle'>"+(yxConf[2]==1?("<td><a href='javascript:yxMoveYear("+idx+",-10)'"+yxTL+yxSpan(yxColors[1], yxTags[0])+"</a></td><td>"+yxSpan(yxColors[1], "&nbsp;")+"</td><td><a href='javascript:yxMoveYear("+idx+",-1)'"+yxTL+yxSpan(yxColors[1], yxTags[2])+"</a></td>"):"")+"<td width='"+yxConf[7]+"'>"+yxSpan(yxColors[1], yy)+"</td>"+(yxConf[2]==1?("<td><a href='javascript:yxMoveYear("+idx+",1)'"+yxTL+yxSpan(yxColors[1], yxTags[3])+"</a></td><td>"+yxSpan(yxColors[1], "&nbsp;")+"</td><td><a href='javascript:yxMoveYear("+idx+",10)'"+yxTL+yxSpan(yxColors[1], yxTags[1])+"</a></td>"):"")+"</tr></table></td></tr>";
  }
  else {
    s="<tr bgcolor='"+yxColors[0]+"'><td colspan='7' align='center'>"+yxTable+"<tr align='center' valign='middle'>"+(yxConf[2]==1?("<td><a href='javascript:yxMoveYear("+idx+",-1)'"+yxTL+yxSpan(yxColors[1], yxTags[0])+"</a></td><td>"+yxSpan(yxColors[1], "&nbsp;")+"</td><td><a href='javascript:yxMoveMonth("+idx+",-1)'"+yxTL+yxSpan(yxColors[1], yxTags[2])+"</a></td>"):"")+"<td width='"+yxConf[7]+"'><nobr>"+yxSpan(yxColors[1], mm+" "+yy)+"</nobr></td>"+(yxConf[2]==1?("<td><a href='javascript:yxMoveMonth("+idx+",1)'"+yxTL+yxSpan(yxColors[1], yxTags[3])+"</a></td><td>"+yxSpan(yxColors[1], "&nbsp;")+"</td><td><a href='javascript:yxMoveYear("+idx+",1)'"+yxTL+yxSpan(yxColors[1], yxTags[1])+"</a></td>"):"")+"</tr></table></td></tr>";
  }

  return s;
}

function yxCalWeekdays() {
  var s="<tr align='center' bgcolor='"+yxColors[2]+"'>";
  for (var i=yxConf[1]; i<yxConf[1]+7; i++) {
    s+="<td width='"+yxConf[9]+"'>"+yxSpan(yxColors[3], yxDayDisplay(i))+"</td>";
  }
  s+="</tr>";

  return s;
}

function yxCalHeader() { return yxCalOpen()+yxCalTableOpen()+yxCalTitle()+yxCalWeekdays(); }

function yxMouseInOut(idx, day) { return ""; }

function yxDateOff(y, m, d) { return false; }

function yxCalCell(y, m, d, day) {
  var wd=(new Date(y, m, d)).getDay(), dateOff=yxDateOff(y, m, d);

  var bg=(d==day)?yxColors[8]:(wd==0 || wd==6)?yxColors[6]:yxColors[4];
  var fg=(d==day)?yxColors[9]:(wd==0 || wd==6)?yxColors[7]:yxColors[5];

  return _yxCalCell(d, bg, fg, dateOff);
}

function _yxCalCell(d, bg, fg, dateOff) {
  if (dateOff) {
    return "<td bgcolor='"+yxColors[10]+"'>"+yxSpan(yxColors[11], d)+"</td>";
  }
  else {
    return "<td bgcolor='"+bg+"'><a href='javascript:yxPickDate("+yxCal.idx+","+d+")'"+yxMouseInOut(yxCal.idx, d)+yxTL+yxSpan(fg, d)+"</a></td>";
  }
}

function yxCalBody(d, day) {
  var s="", dc=1, fd=yxFirstDay(d), ld=yxLastDay(d);

  if (yxConf[1]>0 && fd==0) { fd=7; }

  for (var i=0; i<6; i++) {
    s+="<tr align='center' bgcolor='"+yxColors[12]+"'>";
    for (var j=yxConf[1]; j<yxConf[1]+7; j++) {
      if (i*7+j<fd || dc>ld) {
        s+="<td>"+yxSpan(yxColors[12], "&nbsp;")+"</td>";
      }
      else {
        s+=yxCalCell(yxCal.CY, yxCal.CM, dc++, day);
      }
    }
    s+="</tr>";
  }

  return s;
}

function yxCalFootBar() {
  var idx=yxCal.idx;
  return yxConf[3]==1?("<tr bgcolor='"+yxColors[13]+"'><td colspan='7' align='center'>"+yxTable+"<tr><td><a href='javascript:yxClearDate("+idx+")'"+yxTL+yxSpan(yxColors[14], yxLinks[0])+"</a></td>"+(yxCal.mode==1?("<td>"+yxSpan(yxColors[14], "&nbsp;&nbsp;")+"</td><td><a href='javascript:yxHideCal("+idx+")'"+yxTL+yxSpan(yxColors[14], yxLinks[1])+"</a></td>"):"")+"</tr></table></td></tr>"):"";
}

function yxCalTableEnd() { return "</table></td></tr></table>"; }

function yxCalEnd() { return ""; }

function yxCalFooter() { return yxCalFootBar()+yxCalTableEnd()+yxCalEnd(); }

function yxCheckRange(dir) {}

function yxMoveYear(idx, dy) {
  yxCal=yxCals[idx];
  yxCal.CY+=dy;

  yxCheckRange(dy);
  yxScrollCal(new Date(yxCal.CY, yxCal.CM, 1));
}

function yxMoveMonth(idx, dm) {
  yxCal=yxCals[idx];
  yxCal.CM+=dm;
  if (yxCal.CM<0) { yxCal.CM=11; yxCal.CY--; }
  if (yxCal.CM>11) { yxCal.CM=0; yxCal.CY++;}

  yxCheckRange(dm);
  yxScrollCal(new Date(yxCal.CY, yxCal.CM, 1));
}

function yxBeforeScroll(d) {}
function yxAfterScroll(d) {}

function yxScrollCal(d) {
  var dd=0, ad=null, calRE=yxFormat(), calV=yxGetForm();

  yxCal.checkHolder();

  if (calV!="" && calRE.test(calV) || yxCal.date!="" && calRE.test(yxCal.date)) {
    var cd=yxGetNumbers((calV!="" && calRE.test(calV))?calV:yxCal.date);
    ad=new Date(cd[0], cd[1], cd[2]);
  }
  else if (yxCal.mode==1) {
    ad=new Date();
  }

  if (ad!=null && ad.getFullYear()==d.getFullYear() && ad.getMonth()==d.getMonth()) {
    dd=ad.getDate();
  }

  yxBeforeScroll(d);

  yxWriteLayer(yxCal.holder, yxCalHeader()+yxCalBody(d, dd)+yxCalFooter());
  yxShowLayer(yxCal.holder);

  yxAfterScroll(d);
}

function yxCheckHolder() {
  if (yxIsN4 && this.holder!=null && this.holder.idx<yxN4L) {
    this.holder.visibility="hide";
    with (this.holder.document) { open(); write(""); close(); }
    this.holder=null;
  }

  if (this.holder==null) { this.holder=yxMakeLayer(); }
}

function yxBeforeShow() { yxHideAll(yxCal.idx); }
function yxAfterShow() {}

function yxGetForm() { return yxCal.form[yxCal.field].value; }

function yxShowCal(name) {
  if (!yxCalSafe) { return; }

  yxCal=yxFindCal(name);

  if (yxCal!=null) {
    yxRegForm(yxCal);

    if (yxCal.form && yxCal.form[yxCal.field]) {
      yxCal.checkHolder();

      var cx=yxCal.dx, cy=yxCal.dy;
      if (yxCal.id=="" && yxCal.id2=="") {
        cx+=yxMX; cy+=yxMY;
      }
      else if (yxIsIE) {
        var l=yxLayers[yxCal.id];
        cx+=yxLeft(l); cy+=yxTop(l);
      }
      else if (yxIsN4) {
        var l=yxLayers[(yxCal.id2!="")?(yxCal.id2):(yxCal.id)];
        cx+=yxLeftN4(l); cy+=yxTopN4(l);
      }
      else {
        var l=yxLayers((yxIsK3 && yxCal.id2!="")?(yxCal.id2):(yxCal.id));
        cx+=yxLeft(l); cy+=yxTop(l);
      }

      var calRE=yxFormat(), calV=yxGetForm(), d=new Date(), dd=0;
      if (calV!="" && calRE.test(calV) || yxCal.date!="" && calRE.test(yxCal.date)) {
        var cd=yxGetNumbers((calV!="" && calRE.test(calV))?calV:yxCal.date);
        d=new Date(cd[0], cd[1], cd[2]);
        dd=d.getDate();
      }
      else if (yxCal.mode==1) {
        dd=d.getDate();
      }

      yxCal.CY=d.getFullYear();
      yxCal.CM=d.getMonth();

      yxCheckRange(0);
      if (yxCal.CY!=d.getFullYear() || yxCal.CM!=d.getMonth()) {
        d=new Date(yxCal.CY, yxCal.CM, 1);
        dd=0;
      }

      yxBeforeShow();

      var h=yxCal.holder;
      yxMoveLayerTo(h, cx, cy);
      yxWriteLayer(h, yxCalHeader()+yxCalBody(d, dd)+yxCalFooter());

      if (yxIsIE) { h.style.clip="rect(0px; "+h.children[0].offsetWidth+"px; "+h.children[0].offsetHeight+"px; 0px)"; }

      yxShowLayer(h);

      yxAfterShow();
    }
    else if (!yxCal.form) {
      window.status="Form ["+yxCal.formName+"] not found.";
    }
    else if (!yxCal.form[yxCal.field]) {
      window.status="Form Field ["+yxCal.formName+"."+yxCal.field+"] not found.";
    }
  }
  else {
    window.status="Calendar ["+name+"] not found.";
  }
}; var showCalendar=yxShowCal;

function yxGetDD(n) { return ((n<10)?"0":"")+n; }

function yxClearDate(idx) {
  yxCal=yxCals[idx];

  yxBeforeUpdate(""); yxUpdateForm(""); yxAfterUpdate("");

  if (yxCal.mode==0) {
    yxScrollCal(new Date(yxCal.CY, yxCal.CM, 1));
  }

  yxHideCal(idx);
}

function yxBeforeUpdate(date,field) {}
function yxAfterUpdate(date,field) {}

function yxAfterUpdate(date,field) {
eval('logiform.'+field.name+'.setValue("'+date+'")')
lfChange('false',field);
}

function yxUpdateForm(date) { yxCal.form[yxCal.field].value=date; }

function yxPickDate(idx, day) {
  yxCal=yxCals[idx];

  var date=yxGetDate(yxCal.CY, yxCal.CM, day);
  yxBeforeUpdate(date); yxUpdateForm(date,yxCal.form[yxCal.field]); yxAfterUpdate(date,yxCal.form[yxCal.field]);

  if (yxCal.mode==0) {
    yxScrollCal(new Date(yxCal.CY, yxCal.CM, 1));
  }

  yxHideCal(idx);
}

function yxTrackIt(e) {
  if (yxIsIE || yxIsK3 || yxIsOpera) {
    yxMX=event.clientX+(yxIsK3?0:window.document.body.scrollLeft);
    yxMY=event.clientY+(yxIsK3?0:window.document.body.scrollTop);
    event.cancelBubble=false;
  }
  else {
    yxMX=e.pageX; yxMY=e.pageY;
		if( !(/applewebkit/i).test(navigator.userAgent) ){
		  document.routeEvent(e);
		}
	}

  yxOtherMouseMove(e);
}
// ------

// user functions
function _addCalendar(name, field, form, date, id, id2, dx, dy) {
  yxCals[yxCals.length]=new yxCalOBJ(yxCals.length, name, field, form, date, id, id2, dx, dy);
}; var addCalendar=_addCalendar;

function setFont(font, size) {
  if (font!="") { yxConf[5]=font; }
  if (size>0) {
    yxConf[6]=size;
    if (yxIsN4) { yxConf[6]+=yxN4F; }
  }
}

function setWidth(tWidth, tMode, dWidth, dDigits, cPadding, iBorder, oBorder, bSpacing) {
  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]+=yxIMW; }
  }
  if (dDigits>=0) { yxConf[10]=dDigits; }

  yxConf[11]=cPadding;
  yxConf[12]=iBorder; yxConf[13]=oBorder; yxConf[14]=bSpacing;
}

function setColor(tColor, wColor, dColor, weColor, cdColor, odColor, bColor, fColor, ibColor, obColor, bsColor) {
  if (tColor!="") { yxColors[0]=tColor; }
  if (wColor!="") { yxColors[2]=wColor; }
  if (dColor!="") { yxColors[4]=dColor; }
  if (weColor!="") { yxColors[6]=weColor; }
  if (cdColor!="") { yxColors[8]=cdColor; }
  if (odColor!="") { yxColors[10]=odColor; }
  if (bColor!="") { yxColors[12]=bColor; }
  if (fColor!="") { yxColors[13]=fColor; }
  if (ibColor!="") { yxColors[15]=ibColor; }
  if (obColor!="") { yxColors[16]=obColor; }
  if (bsColor!="") { yxColors[17]=bsColor; }
}

function setFontColor(tColorF, wColorF, dColorF, weColorF, cdColorF, odColorF, fColorF) {
  if (tColorF!="") { yxColors[1]=tColorF; }
  if (wColorF!="") { yxColors[3]=wColorF; }
  if (dColorF!="") { yxColors[5]=dColorF; }
  if (weColorF!="") { yxColors[7]=weColorF; }
  if (cdColorF!="") { yxColors[9]=cdColorF; }
  if (odColorF!="") { yxColors[11]=odColorF; }
  if (fColorF!="") { yxColors[14]=fColorF; }
}

function setFormat(format) {
  if (format.search(/yyyy/i)!=-1 && (format.search(/mm/i)!=-1 || format.search(/mon/i)!=-1) && format.search(/dd/i)!=-1) {
    yxConf[0]=format;
    yxDateFormat=null; yxFormat();
  }
}

function setWeekDay(wd) {
  if (wd==0 || wd==1) {
    yxConf[1]=wd;
  }
}

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) {
  if (mode==0 || mode==1) {
    yxConf[3]=mode;
  }
}

function setScrollTags(lO, rO, lI, rI) {
  if (lO!="") { yxTags[0]=lO; }
  if (rO!="") { yxTags[1]=rO; }
  if (lI!="") { yxTags[2]=lI; }
  if (rI!="") { yxTags[3]=rI; }
}

function switchTags(mode) {
  if (mode==0 || mode==1) {
    yxConf[2]=mode;
  }
}

function setCalendarMode(mode, name) {
  if (mode==0 || mode==1) {
    if (typeof(name)!="undefined") {
      var cal=yxFindCal(name);
      if (cal!=null) {
        cal.mode=mode;
      }
    }
    else {
      for (var i=0; i<yxCals.length; i++) {
        yxCals[i].mode=mode;
      }
    }
  }
}

function setWindowSize() {}

function toCalDate(date) { return yxGetDate(date.getFullYear(), date.getMonth(), date.getDate()); }
function getCurrentDate() { return toCalDate(new Date()); }

function checkDate(name) {
  yxCal=yxFindCal(name);

  if (yxCal!=null && yxCal.form!=null && yxCal.form[yxCal.field] && yxGetForm()!="") {
    var calRE=yxFormat();

    if (calRE.test(yxGetForm())) {
      return 0;
    }
    else {
      return 1;
    }
  }
  else {
    return 2;
  }
}

function compareDates(date1, date2) {
  var calRE=yxFormat();
  var d1=getNumbers(calRE.test(date1)?date1:getCurrentDate()).join("");
  var d2=getNumbers(calRE.test(date2)?date2:getCurrentDate()).join("");

  return (d1==d2?0:d1>d2?1:-1);
}

function getNumbers(date) {
  var calRE=yxFormat();

  if (calRE.test(date)) {
    var d=yxGetNumbers(date);
    return new Array(yxGetDD(d[0]), yxGetDD(d[1]+1), yxGetDD(d[2]));
  }
  else {
    return new Array("", "", "");
  }
}
// ------

if (yxCalSafe) {
  yxOtherMouseMove=document.onmousemove?document.onmousemove:function() {return true;}
  if (yxIsN6 || yxIsN4) { document.captureEvents(Event.MOUSEMOVE); }
  document.onmousemove=yxTrackIt;
}


var yxY2KBorder=20;

// User interface
function setY2KBorder(n) { yxY2KBorder=n; }

function setFormat(format) {
  if (format.search(/yy/i)!=-1 && (format.search(/mm/i)!=-1 || format.search(/mon/i)!=-1) && format.search(/dd/i)!=-1) {
    yxFormat2K=format;

    if (format.search(/yyyy/i)!=-1) {
      yxConf[0]=format;
    }
    else {
      yxConf[0]=format.replace(/yy/i, 'yyyy'); 
      yxDateFormat2=new RegExp('^'+_yxFormat(format)+'$');
    }

    yxDateFormat=null; yxFormat();
  }
}
// Internal function
var yxFormat2K="yyyy/mm/dd", yxDateFormat2=null;

function yxToY4(date) {
  var y2Idx=yxFormat2K.search(/yy/i);
  var y2=date.substring(y2Idx, y2Idx+2)-0; y2+=(y2>yxY2KBorder?1900:2000);
  return date.substring(0, y2Idx)+y2+date.substring(y2Idx+2);
}

function yxToY2(date) {
  var y4Idx=yxConf[0].search(/yyyy/i);
  return date.substring(0, y4Idx)+date.substring(y4Idx+2, y4Idx+4)+date.substring(y4Idx+4);
}

// Mod functions
function yxGetForm() {
  var calV=yxCal.form[yxCal.field].value; 

  if (calV!="" && yxFormat2K.search(/yyyy/i)==-1) {
    if (yxDateFormat2.test(calV)) {
      calV=yxToY4(calV);
    }
    else {
      calV="";
    }
  }

  return calV;
}

function yxUpdateForm(date) {
  var fd=date;

  if (date!="" && yxFormat2K.search(/yyyy/i)==-1) {
    fd=yxToY2(date);
  }

  yxCal.form[yxCal.field].value=fd;
}

// date validation functions
// these functions are includes in the cal_core.js, cal_core_mpage.js and the datevalidation.js files. When a date field is included with the form, one
// of these files will be included and they will always have these standard functions

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}


ie4 = (document.all)? true:false
ns6 = (!ie4 && document.getElementById)? true:false
ns4 = (document.layers)? true:false


function daysinthemonth(totaldays,mn,dn,yn,turnon){
//alert('' + mn + ',' + dn + ',' + yn + ',' + turnon + '');
if (turnon=="yes"){

	if (ns6){
		if (document.getElementsByName(mn)){
			monthname=document.getElementsByName(mn)[0]; 
			dayname=document.getElementsByName(dn)[0];
			yearname=document.getElementsByName(yn)[0];
		}
	}
	if (ie4){
	//alert(document.all[mn]);
		if (document.all[mn]){
		//alert('yes1');
			if (document.all[mn][0].name){monthname=document.all[mn][0];dayname=document.all[dn][0];yearname=document.all[yn][0]}
			else if (document.all[mn].name){monthname=document.all[mn];dayname=document.all[dn];yearname=document.all[yn]}
		}
	}
	if (ns4){
		for (i=0;i<pages.length;i++){
			if (eval('document.'+pages[i][2]+'.document.'+pages[i][2]+'_form.'+mn)){
				monthname=eval('document.'+pages[i][2]+'.document.'+pages[i][2]+'_form.'+mn);
				dayname=eval('document.'+pages[i][2]+'.document.'+pages[i][2]+'_form.'+dn);
				yearname=eval('document.'+pages[i][2]+'.document.'+pages[i][2]+'_form.'+yn);
			}
		}
	}
	totaldays=parseFloat(totaldays);
	


	
	
	if (totaldays>28){
		var daysinmonth=totaldays;
		if (monthname.options[monthname.selectedIndex].value == "February"){
			if (yearname[yearname.selectedIndex].value%400==0 || (yearname[yearname.selectedIndex].value%4 == 0 && yearname[yearname.selectedIndex].value%100!=0) ){daysinmonth =29}
			else {daysinmonth=28}
		}
		if (monthname.options[monthname.selectedIndex].value == "April" || monthname.options[monthname.selectedIndex].value == "June" || monthname.options[monthname.selectedIndex].value == "September" || monthname.options[monthname.selectedIndex].value == "November"){
			if (totaldays>=30){daysinmonth=30}else{daysinmonth=totaldays}}
			dayname.length=daysinmonth;
			for (i=0;i<daysinmonth;i++){
				dayname[i].value=i+1;
				dayname[i].text=i+1;
		}
		dayname.length=daysinmonth;
	}
}
}




// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}
	

// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the 
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {

	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";
	
	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"||token=="NNN"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (token=="MMM"||(token=="NNN"&&i>11)) {
						month=i+1;
						if (month>12) { month -= 12; }
						i_val += month_name.length;
						break;
						}
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return 0; }
			}
		else { if (date > 28) { return 0; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return 0; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();

	}


// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

