/*
Selector de fecha
(c) Versus Soft 2004
*/

var VST_NAME=0,VST_LANGID=1,VST_IMAGEPATH=2,VST_HOURVIEW=3,VST_DAYACTIVE=4,VST_DAYSTART=5,VST_DAYEND=6,VST_BACKCOLOR=7,VST_DISABLE=8,VST_DISABLENONE=9,VST_USEONCLICK=10,VST_WIDTH=11,VST_INTERVALMODE=12,VST_INTERVALROW=13,VST_INTERVALNAME=14,VST_INTERVALTWIN=15,VST_DEFDAYSTART=16,VST_DEFDAYEND=17,VST_FORM=18,VST_DEFDISABLE=19,VST_STARTED=20,VST_SINGLELINE=21,VST_ELEMENTS=22;
var lSNS = 1; // Muestra la columna de n¦ de semana
var FSstrNoneText,FSstrLangID,FSstrImagePath;
var FSblnDisableNone,FSblnIsShown=false,FSblnCIsShown=false;
var FSobjDateRef,FSobjSelectorRef,FSobjCalendarArea,FSobjCSelectorRef;
var FSdtToday,FSdtSeasonStart,FSdtSeasonEnd;
var FSintFormatMode=1; // 0 para formato americano (mes delante)
var FSintOneMinute=60*1000;
var FSintOneHour=FSintOneMinute*60;
var FSintOneDay=FSintOneHour*24;
var FSintSelectedDay=0;
var FSintSelectedMonth=0;
var FSintSelectedYear=0;
var FSintCurrentMonth=0;
var FSintCurrentYear=0;
var FSaDayActive=new Array(1,1,1,1,1,1,1);
var aLangId = new Array("FR","DE","ES","EN");
var astrNoneText= new Array('Aucune','Kein','Ninguna','None');
var aFailText = new Array("Cette date n'est pas valable","Dieses Datum ist ungültig","Esta fecha no es válida","Date is not valid");
var aChoiceText = new Array ("Veuillez choisir une dâte dans la gamme specifiée","Bitte ein Datum innerhalb des angegebenen Zeitraums wählen","Por favor, elija una fecha dentro del periodo especificado","Please select a date in the range specified");
var aNotEmptyText = new Array("Cette dâte ne peut pas être 'Aucune'","Dieses Datum kann nicht 'Kein' sein","Esta fecha no puede ser 'Ninguna'","This date cannot be set to 'None'");
var aSelectText = new Array("Cliquez ici pour choisir une date","Hier klicken, um ein Datum auszuwählen","Haga clic aquí para seleccionar una fecha","Click here to select a date");
var aFootNote = new Array('Date Selector','Kostenloser Datenauswaehler','Selector de fecha','Date Selector');
var aFestivo = new Array('0101','0106','0409','0501','0815','1101','1206','1208'); // Admite mes+dia o bien año+mes+dia

var FSStore=new Array();
var oE;

if(navigator.userAgent.indexOf("Gecko")>0)
  {
  FSstrBrowser="Gecko";
  document.onclick=FSfncHideFloatFrame
  }
else
  {
  FSstrBrowser="IE";
  document.onclick=function() { FSfncHideFloatFrame(event) }
  }
  
if((typeof(HTMLElement)!="undefined")&&(!HTMLElement.prototype.insertAdjacentHTML))
  {
  HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr) { var r=this.ownerDocument.createRange();r.setStartBefore(this);var parsedHTML=r.createContextualFragment(htmlStr);this.appendChild(parsedHTML); }
  }

function FSfncHideFloatFrame(TheEvent) {
if(FSblnCIsShown) { return FSfncHideColorSelector(TheEvent); }
if(FSblnIsShown) { return FSfncHideDateSelector(TheEvent); }
}

if((typeof(HTMLElement)!="undefined")&&(!HTMLElement.prototype.insertAdjacentHTML))
  { HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr) { var r=this.ownerDocument.createRange();r.setStartBefore(this);var parsedHTML=r.createContextualFragment(htmlStr);this.appendChild(parsedHTML); } }

function FSfncWriteColorSelectorHTML()
{
var colorselectorHTML=''+'<FORM ACTION="#" METHOD="GET" NAME="FScolorSelectorForm" onSubmit="return false">'+'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="160" HEIGHT="130" ID="FScolorSelector" STYLE="width:160px; height:130px">'+'<TR><TD ID="FScolorArea"></TD></TR>'+'</TABLE>'+'</FORM>';document.body.insertAdjacentHTML("BeforeEnd2",colorselectorHTML)
}


function FSfncShowColorSelector(ColorRef,EventRef,ImagePath)
{
var nST,nS;

FieldValue=ColorRef.value;
if(FSblnCIsShown) { FSfncHideColorSelector();return; }
else
  { FSfncHideFloatFrame();FSblnCIsShown=true }
if(document.getElementById)
  {
  if(!FSobjCSelectorRef)
    {
    FSfncWriteColorSelectorHTML();
    FSobjCSelectorRef=document.getElementById("FScolorSelector");
    FSobjColorArea=document.getElementById("FScolorArea");
    }
  FSobjColorRef=ColorRef;
  FSblnDisableNone=false;
  FSstrImagePath=ImagePath;

  FSobjColorArea.innerHTML=FSfncCreateColorArea();  
  if(FSstrBrowser=="Gecko")
    {
    // alert((EventRef.clientX-90+document.body.scrollLeft)+' '+(EventRef.clientY+8+document.body.scrollTop));
    FSobjCSelectorRef.style.left=EventRef.clientX-90+document.body.scrollLeft;
    FSobjCSelectorRef.style.top=EventRef.clientY+8+document.body.scrollTop;
    }
  else
    {
    FSobjCSelectorRef.style.left=EventRef.clientX-EventRef.offsetX-82+document.body.scrollLeft;
    FSobjCSelectorRef.style.top=EventRef.clientY-EventRef.offsetY+16+document.body.scrollTop;
    }
  FSobjCSelectorRef.style.visibility="visible";
  }
}


function FSfncHideColorSelector(TheEvent)
{
if(FSobjCSelectorRef)
  {
  if(FSstrBrowser=="Gecko")
    {
    if(TheEvent)
      {
      var ThisIcon="FSdsIcon_"+FSobjColorRef.name;
      var rel=TheEvent.target;
      while(rel)
        {
        if ((rel.id=="FScolorSelector")||(rel.id==ThisIcon))
           { break }
        else
           { rel=rel.parentNode }
        }
      }
    if(!rel)
      {
      FSobjCSelectorRef.style.visibility="hidden";
      FSblnCIsShown=false
      }
    return;
    }
  else
    {
    if((TheEvent))
      {
      if((TheEvent.clientX+document.body.scrollLeft>FSobjCSelectorRef.style.posLeft+1)&&(TheEvent.clientX+document.body.scrollLeft<FSobjCSelectorRef.style.posLeft+FSobjCSelectorRef.style.posWidth+10)&&(TheEvent.clientY+document.body.scrollTop>FSobjCSelectorRef.style.posTop+1)&&(TheEvent.clientY+document.body.scrollTop<FSobjCSelectorRef.style.posTop+FSobjCSelectorRef.offsetHeight+2))
        { return }
      if((TheEvent.clientX+document.body.scrollLeft>FSobjCSelectorRef.style.posLeft+81)&&(TheEvent.clientX+document.body.scrollLeft<FSobjCSelectorRef.style.posLeft+99)&&(TheEvent.clientY+document.body.scrollTop>FSobjCSelectorRef.style.posTop-17)&&(TheEvent.clientY+document.body.scrollTop<FSobjCSelectorRef.style.posTop))
        { return }
      }
    FSobjCSelectorRef.style.visibility="hidden";
    FSblnCIsShown=false;
    }
  }
else
  {
  FSobjCSelectorRef=false
  }
}


function clrcls(oThis,lMode) { if (lMode) { oThis.style.border="#330066 1px solid";oThis.style.padding="2px";oThis.style['float']="left";oThis.style.backgroundColor="#c4cdd6"; }
                               else       { oThis.style.border="#ffffff 1px solid";oThis.style.padding="2px";oThis.style['float']="left";oThis.style.backgroundColor="#ffffff";}
                             }
                               

function FSfncCreateColorArea()
{
cOutput='<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="0" CLASS="FScalendar" width=100%>';
cOutput+='<TR ALIGN="center"><TD BGCOLOR="#ffffff">\
             <table border=0 cellspacing=0 cellpadding=0><tr><td colspan=8>\
                   <div style="border: #ffffff 1px solid;padding: 2px;float: left;" onmouseover="clrcls(this,1);" onmouseout="clrcls(this,0);" onclick="FSfncSetColor(\'\');">\
		   <table cellspacing="0" cellpadding="0" width="100%" border="0">\
			<tr>\
				<td><div style="border: #808080 1px solid;position: static;font-size: 1px;width: 10px;height: 10px;background-color: #000000"></div></td>\
				<td nowrap width="100%" align="center" unselectable="on">No especificado</td>\
			</tr>\
  		  </table></div>\
  		  </td></tr>';
FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF';
var aColors = FontColors.toString().split(',') ;
var iCounter = 0 ;
while ( iCounter < aColors.length )
      {
      cOutput+='<tr>';
      for ( var i = 0 ; i < 8 && iCounter < aColors.length ; i++, iCounter++ )
		{
                cOutput+='<td><div style="background-color:#ffffff;border: #ffffff 1px solid;padding: 2px;float: left;" onmouseover="clrcls(this,1);" onmouseout="clrcls(this,0);" onclick="FSfncSetColor(\''+ aColors[iCounter] +'\');">\
			      <div style="border: #808080 1px solid;position: static;font-size: 1px;width: 10px;height: 10px;background-color: #' + aColors[iCounter] + '"></div></div></td>' ;
         	}
      cOutput+='</tr>';
      }
cOutput+='</table>';  	     
cOutput+="</TD></TR></TABLE>";
return cOutput;
}


function FSfncSetColor(TheColor,TheOldColor)
{
$lOk=true;TheColor= TheColor.toUpperCase();
if (TheColor.length>0) {
   if (TheColor.length<6) { cZ="000000"; TheColor=cZ.substr(0,6-TheColor.length)+TheColor; }
   for (nC=0;nC<6;nC++)
       { cC=TheColor.substr(nC,1); if (cC<"0" || cC>"F") { $lOk=false; }}
   if (!$lOk) {
      alert("Debe introducir el color en formato HTML (6 caracteres de 0 a F), o pulsar el botón para escoger un color de la muestra.");
      TheColor=TheOldColor;
      }
   }
FSobjColorRef.value=TheColor;
document.getElementById(FSobjColorRef.name+'_td').style.backgroundColor= (TheColor?TheColor:"000000");
fchanged(FSobjColorRef,FSobjColorRef.defaultValue);
FSfncHideColorSelector();
}

function FSfncShowDateSelector(DateRef,EventRef)
{
var nST,nS;
  oE=window.onbeforeunload;
  window.onbeforeunload=null;

for (nS=0;nS<FSStore.length;nS++) {
    if(FSStore[nS][VST_NAME]==DateRef.name) {
      lEnd=(FSStore[nS][VST_INTERVALMODE]=="end"?1:0);
      for (nST=0;nST<FSStore.length;nST++) {
          if(FSStore[nST][VST_INTERVALNAME]==FSStore[nS][VST_INTERVALTWIN] && FSStore[nST][VST_INTERVALMODE]==(lEnd?"start":"end") && FSStore[nST][VST_INTERVALROW]==FSStore[nS][VST_INTERVALROW]-(lEnd?0:1)) {
             cValue = document.forms[FSStore[nST][VST_FORM]].elements[FSStore[nST][VST_NAME]].value;
             dValue= new Date(cValue.substr(6,4),(cValue.substr(3,2)-1),cValue.substr(0,2),0,0,0);
             dValue=new Date(dValue.getTime()+FSintOneDay);cValue=packjsdate(dValue);
             if (FSStore[nS][VST_DEFDAYSTART] < cValue) { FSStore[nS][VST_DAYSTART]= cValue; } else { FSStore[nS][VST_DAYSTART]= FSStore[nS][VST_DEFDAYSTART]; }
             }
          }
      cDayActive = FSStore[nS][VST_DAYACTIVE];
      cDayStart = FSStore[nS][VST_DAYSTART];
      cDayEnd = FSStore[nS][VST_DAYEND];
      LangID = FSStore[nS][VST_LANGID];
      ImagePath = FSStore[nS][VST_IMAGEPATH];
      DisableNone = FSStore[nS][VST_DISABLENONE];
      HourView =  FSStore[nS][VST_HOURVIEW];
      if (cDayActive) { aDayActive = cDayActive.split(','); for (n=0;n<=6;n++)  { FSaDayActive[n]=(aDayActive[n]=='0' ? 0 : 1); }  } else { FSaDayActive=new Array(1,1,1,1,1,1,1); }
      if (cDayStart) { FSdtSeasonStart=new Date(cDayStart.substr(0,4),(cDayStart.substr(5,2)-1),cDayStart.substr(8,2),0,0,0); }
      if (cDayEnd) { FSdtSeasonEnd=new Date(cDayEnd.substr(0,4),(cDayEnd.substr(5,2)-1),cDayEnd.substr(8,2),0,0,0); }
      }
    }

FieldValue=DateRef.value;
HourValue = FieldValue.substr(11,5);
DateValue = FieldValue.substr(0,10);
if(FSblnIsShown) { FSfncHideDateSelector();return; }
else
  { FSfncHideFloatFrame();FSblnIsShown=true }
if(document.getElementById)
  {
  if(!FSobjSelectorRef)
    {
    FSdtToday=new Date();
    FSdtToday.setHours(0,0,0,0);
    FSfncWriteSelectorHTML();
    FSobjSelectorRef=document.getElementById("FSdateSelector");
    FSobjCalendarArea=document.getElementById("FScalendarArea");
    }
  FSobjDateRef=DateRef;
  FSblnDisableNone=DisableNone;
  FSstrLangID=LangID;
  FSstrImagePath=ImagePath;
  FSintSelectedDay=0;
  if(FSobjDateRef.value==FSstrNoneText)
    {
    if(FSobjDateRef.defaultValue==FSstrNoneText)
      {
      cToday = packjsdate(FSdtToday);
      if ( (!cDayStart || cDayStart<=cToday) && (!cDayEnd || cDayEnd >=cToday) ) { var MyDay = FSdtToday; }
      else {
          var MyDay = new Date(cDayStart.substr(0,4),parseInt(cDayStart.substr(5,2))-1,cDayStart.substr(8,2),0,0,0,0);
          aDayActive= cDayActive.split(','); while (aDayActive[(MyDay.getDay()+6)%7]=='0') { MyDay= new Date(MyDay.getTime()+FSintOneDay); }
          var arrCurrentDate=FSfncDateToString(MyDay).split("/");
           }
      var arrCurrentDate=FSfncDateToString(MyDay).split("/");
      FSintSelectedMonth=arrCurrentDate[0+FSintFormatMode]-1;
      }
    else
      {
      var arrCurrentDate=FSobjDateRef.defaultValue.split("/");
      FSintSelectedDay=arrCurrentDate[1-FSintFormatMode];
      FSintSelectedMonth=arrCurrentDate[0+FSintFormatMode]-1;
      }
    }
  else
    {
    var arrCurrentDate=DateValue.split("/");
    FSintSelectedDay=arrCurrentDate[1-FSintFormatMode];
    FSintSelectedMonth=arrCurrentDate[0+FSintFormatMode]-1;
    }
  FSintSelectedYear=arrCurrentDate[2];
  FSintCurrentMonth=parseInt(FSintSelectedMonth,10);
  FSintCurrentYear=parseInt(FSintSelectedYear,10);
  FSobjCalendarArea.innerHTML=FSfncCreateCalendarArea();
  
  
  if(FSstrBrowser=="Gecko")
    {
    FSobjSelectorRef.style.left=EventRef.clientX-90+document.body.scrollLeft;
    FSobjSelectorRef.style.top=EventRef.clientY+8+document.body.scrollTop;
    }
  else
    {
    FSobjSelectorRef.style.left=EventRef.clientX-EventRef.offsetX-82+document.body.scrollLeft;
    FSobjSelectorRef.style.top=EventRef.clientY-EventRef.offsetY+16+document.body.scrollTop;
    }
  FSobjSelectorRef.style.visibility="visible";
  }
}


function FSfncHideDateSelector(TheEvent)
{
if(FSobjSelectorRef)
  {
  if(FSstrBrowser=="Gecko")
    {
    if(TheEvent)
      {
      var cId=TheEvent.target.id;
      if (cId.substr(0,6)== "FSbut_")
         { var rel=TheEvent.target; }
      else {
         var ThisIcon="FSdsIcon_"+FSobjDateRef.name;
         var rel=TheEvent.target;
         while(rel)
           {
           if ((rel.id=="FSdateSelector")||(rel.id==ThisIcon))
              { break }
           else
              { rel=rel.parentNode }
           }
         }
      }
    if(!rel)
      {
      FSobjSelectorRef.style.visibility="hidden";
      FSblnIsShown=false
      }
    return;
    }
  else
    {
    if((TheEvent))
      {
      if((TheEvent.clientX+document.body.scrollLeft>FSobjSelectorRef.style.posLeft+1)&&(TheEvent.clientX+document.body.scrollLeft<FSobjSelectorRef.style.posLeft+FSobjSelectorRef.style.posWidth+10)&&(TheEvent.clientY+document.body.scrollTop>FSobjSelectorRef.style.posTop+1)&&(TheEvent.clientY+document.body.scrollTop<FSobjSelectorRef.style.posTop+FSobjSelectorRef.offsetHeight+2))
        { return }
      if((TheEvent.clientX+document.body.scrollLeft>FSobjSelectorRef.style.posLeft+81)&&(TheEvent.clientX+document.body.scrollLeft<FSobjSelectorRef.style.posLeft+99)&&(TheEvent.clientY+document.body.scrollTop>FSobjSelectorRef.style.posTop-17)&&(TheEvent.clientY+document.body.scrollTop<FSobjSelectorRef.style.posTop))
        { return }
      }

    FSobjSelectorRef.style.visibility="hidden";
    FSblnIsShown=false;
    window.onbeforeunload=oE;
    }
  }
else
  {
  FSobjSelectorRef=false
  }
}


function FSfncCreateCalendarArea()
{
// alert(HourValue+' '+document.forms["FSdateSelectorForm"].elements["hour"].value);
switch(FSstrLangID)
  {
  case"FR":
    var fsHyige6huio=new Array("Lun","Mar","Mer","Jeu","Ven","Sam","Dim");
    var fsHyige6huia=new Array("Janvier","F&eacute;vrier","Marche","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
    var fsHyige6huif="Auj";
    var strNoValue="Aucune";
  break;
  case"DE":
    var fsHyige6huio=new Array("Mon","Die","Mit","Don","Fre","Sam","Son");
    var fsHyige6huia=new Array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
    var fsHyige6huif="Heute";
    var strNoValue="Kein";
    break;
  case"ES":
    var fsHyige6huio=new Array("Lun","Mar","Mi&eacute;","Jue","Vie","S&aacute;b","Dom");
    var fsHyige6huia=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
    var fsHyige6huif="Hoy";
    var strNoValue="Ninguna";
    break;
  default:
    var fsHyige6huio=new Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");
    var fsHyige6huia=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var fsHyige6huif="Today";
    var strNoValue="None";
  }
  var dtFirstOfMonth=new Date(FSintCurrentYear,FSintCurrentMonth,1,0,0,0,0);
switch(dtFirstOfMonth.getDay()) { case 0:var OffsetDays=6;break; case 1:var OffsetDays=0;break; default:var OffsetDays=dtFirstOfMonth.getDay()-1; }
var dtCalendarStart=new Date(dtFirstOfMonth.getTime()-(FSintOneDay*OffsetDays));
var dtCalendarEnd=new Date(dtCalendarStart.getTime()+(FSintOneDay*41));
if (lSNS)
   {
   var dtFirstOfYear=new Date(FSintCurrentYear,0,1,0,0,0,0);
   switch(dtFirstOfYear.getDay()) { case 0:var yOffsetDays=6;break; case 1:var yOffsetDays=0;break; default:var yOffsetDays=dtFirstOfYear.getDay()-1; }
   var dtyCalendarStart=new Date(dtFirstOfYear.getTime()-(FSintOneDay*yOffsetDays));
   var nWeek = parseInt((dtCalendarStart.getTime()-dtyCalendarStart.getTime())/FSintOneDay/7+1.9);
   }
fsHyige6huiz='<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="0" CLASS="FScalendar">';
fsHyige6huiz+="<TR ALIGN='center'>";

if (lSNS) { fsHyige6huiz+="<TD CLASS='FScalendarTitlesSm'>Sm</TD>"; }
for(var i=0;i<=6;i++) { fsHyige6huiz+="<TD WIDTH='22' CLASS='FScalendarTitles"+(i==6 ? "Dom" : (i==5 ? "Sab" : ""))+"'>"+fsHyige6huio[i]+"</TD>" }
fsHyige6huiz+="</TR>";
for(var i=0;i<=41;i++)
   {
   if(i%7==0)  { fsHyige6huiz+="<TR ALIGN='center'>" }
   var StyleString="";
   var dtTheDay = new Date(0);dtTheDay.setHours(0,0,0,0);dtTheDay.setYear(dtCalendarStart.getFullYear()); dtTheDay.setMonth(dtCalendarStart.getMonth());dtTheDay.setDate(dtCalendarStart.getDate()+i);
   // var dtTheDay=new Date(dtCalendarStart.getTime()+(FSintOneDay*i)); 
   var LAddStyle = ""; cMonth = '0'+(dtTheDay.getMonth()+1); cDay = '0'+(dtTheDay.getDate()); cMidDate = cMonth.substr(-2)+cDay.substr(-2); cDate = ''+dtTheDay.getFullYear()+cMidDate;
   for (nF=0;nF<aFestivo.length;nF++) { if(aFestivo[nF]==cDate || aFestivo[nF]==cMidDate) { LAddStyle="Dom"; } }
   if (LAddStyle=="") { LAddStyle =((i%7)==6 ? "Dom" : ((i%7)==5 ? "Sab" : "")); }

   if(dtTheDay.getTime()==FSdtToday.getTime())
     {
     if((dtTheDay.getMonth()==FSintSelectedMonth)&&(dtTheDay.getDate()==FSintSelectedDay)&&(dtTheDay.getFullYear()==FSintSelectedYear))
       { StyleString+="background-image: url("+FSstrImagePath+"today_selected.gif); background-repeat:no-repeat; " }
     else  { StyleString+="background-image: url("+FSstrImagePath+"today.gif); background-repeat:no-repeat; " }
     }
   else if((dtTheDay.getMonth()==FSintSelectedMonth)&&(dtTheDay.getDate()==FSintSelectedDay)&&(dtTheDay.getFullYear()==FSintSelectedYear))
     { StyleString+="background-image: url("+FSstrImagePath+"selected.gif); background-repeat:no-repeat; " }
   if(dtTheDay.getMonth()!=FSintCurrentMonth)
     { var LinkClass="FSnotInMonth"; lInMonth=0; }
   else
     { var LinkClass="FSinMonth"; lInMonth=1; }
     
   if (((lInMonth && i%7==0) || i==0) && lSNS) { fsHyige6huiz+="<TD CLASS='FSinMonthSm'>"+nWeek+"</TD>"; nWeek++; }
   if ( (FSdtSeasonStart && dtTheDay<FSdtSeasonStart) || (FSdtSeasonEnd && dtTheDay>FSdtSeasonEnd) || !FSaDayActive[i%7]  )
     {
     if (lInMonth) { fsHyige6huiz+="<TD CLASS='FSoutOfRange"+LAddStyle+"' STYLE='"+StyleString+"'>"+dtTheDay.getDate()+"</TD>"; }
     else  { fsHyige6huiz+="<TD></TD>"; }
     }
   else
     { 
     if (lInMonth) { fsHyige6huiz+="<TD NAME=\""+FSfncDateToString(dtTheDay)+"\" ID=\""+FSfncDateToString(dtTheDay)+"\" STYLE='"+StyleString+"'><A HREF='Javascript: void FSfncSetDate(\""+FSfncDateToString(dtTheDay)+"\","+(HourView?"0":"1")+")' CLASS='"+LinkClass+LAddStyle+"'>"+dtTheDay.getDate()+"</A></TD>"; }
     else { fsHyige6huiz+="<TD></TD>" }
     
     }
   if(i%7==6) { fsHyige6huiz+="</TR>" }
   }
fsHyige6huiz+="</TABLE>";
for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==FSstrLangID) { var footNote=aFootNote[nL]; } }
var fsHyige6hbghj="";
var strSelected="";
for(var i=0;i<=11;i++)
   {
   if(i==FSintCurrentMonth)
     { strSelected=" SELECTED" }
   else
     { strSelected="" }
   fsHyige6hbghj+='<OPTION'+strSelected+'>'+fsHyige6huia[i]+'</OPTION>';
   }
fsHyige6huiz='<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" WIDTH="100%" HEIGHT="100%">'+'<TR HEIGHT="22" CLASS="FSbuttonsRow">'+'<TD WIDTH="30" ALIGN="left"><INPUT id="FSbut_prev" TYPE="image" SRC="'+FSstrImagePath+'but_prev.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(-1)"></TD>'+'<TD><SELECT NAME="FScurrentMonth" CLASS="FSmonthRolldown" onChange="FSfncChangeMonth(this.selectedIndex + 1)">'+fsHyige6hbghj+'</SELECT></TD>'+'<TD><INPUT TYPE="text" NAME="FScurrentYear" VALUE="'+FSintCurrentYear+'" READONLY CLASS="FSyearInput"></TD>'+'<TD><INPUT id="FSbut_yeard" TYPE="image" SRC="'+FSstrImagePath+'but_yeard.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(12)"><BR><INPUT TYPE="image" id="FSbut_yearu" SRC="'+FSstrImagePath+'but_yearu.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(-12)"></TD>'+'<TD WIDTH="30" ALIGN="right"><INPUT TYPE="image" id="FSbut_next" SRC="'+FSstrImagePath+'but_next.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(1)"></TD>'+'</TR>'+'<TR HEIGHT="133" BGCOLOR="#FFFFFF"><TD COLSPAN="5" ALIGN="center">'+fsHyige6huiz+'</TD></TR>'+
(footNote || HourView ? '<TR HEIGHT="16"><TD COLSPAN="5" ID="FSrangeCell">'+(HourView ? '<table align="center" border=0 cellspacing=0 cellpadding=0><tr><td>Hora: <INPUT TYPE="text" CLASS="FSyearInput" NAME="hour" VALUE="'+HourValue+'" SIZE=5 onchange="tcheck(this);" onkeypress="if((document.all?event.keyCode:event.which)==13){FSfncExitDate();}">&nbsp;&nbsp;</td><td><INPUT TYPE="image" SRC="'+FSstrImagePath+'but_go.gif" WIDTH="18" HEIGHT="18" onClick="FSfncExitDate()"></td></tr></table>': footNote) +'</TD></TR>' : '')+
'<TR HEIGHT="22" CLASS="FSbuttonsRow">'+'<TD COLSPAN="5">'+'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">'+'<TR>'+'<TD ALIGN="left"><INPUT TYPE="image" SRC="'+FSstrImagePath+'but_today_'+FSstrLangID+'.gif" WIDTH="44" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(FSfncDateToString(FSdtToday)+(HourView?\' \'+FSfncTimeToString(new Date()):\'\'),1);if(HourView){FSfncExitDate();}"></TD>'+'<TD ALIGN="center" ID="FSdateToday">'+fsHyige6huif+': '+FSfncDateToString(FSdtToday)+'</TD>'+'<TD ALIGN="right"><INPUT TYPE="image" SRC="'+FSstrImagePath+'but_none_'+FSstrLangID+'.gif" WIDTH="44" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(\''+strNoValue+'\',1);if(HourView){FSfncExitDate();}"></TD>'+'</TR>'+'</TABLE>'+'</TD>'+'</TR>';
return fsHyige6huiz;
}



function tcheck(oSelect)
{
lOk=1;
if (oSelect.value=='0:00' || oSelect.value=='0' || oSelect.value=='') { oSelect.value='00:00'; }
if (oSelect.value+""!="") {
   if ((T = /^(\d\d):(\d\d)$/.exec(oSelect.value)) == null) { cAlert="\""+oSelect.value+"\" no es un valor válido para la hora. Utiliza este formato: \"hh:mm\""; oSelect.value=HourValue; alert(cAlert); lOk=0; }
   with (new Date(0, 0, 0, T[1], T[2], 0)) { if (!((getHours() == T[1]) && (getMinutes() == T[2]))) { cAlert="\""+oSelect.value+"\" no es un valor válido para la hora. Debe estar entre 00:00 y 23:59"; oSelect.value=HourValue; alert(cAlert); lOk=0; } }
   }
if (lOk) { HourValue=oSelect.value; }
}


function FSfncSetDate_old(TheDate)
{
if((TheDate==FSstrNoneText)&&(FSblnDisableNone==true))
  {
  for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==FSstrLangID) { alert(aNotEmptyText[nL]); } }    
  return false;
  }
var tempArray=TheDate.split("/");
var resultingDate=new Date(tempArray[2],tempArray[0+FSintFormatMode]-1,tempArray[1-FSintFormatMode]);
//alert(resultingDate.toString()+' '+resultingDate.getDay()+' '+(FSdtSeasonStart  && resultingDate<FSdtSeasonStart)+' '+((FSdtSeasonEnd) && resultingDate>FSdtSeasonEnd)+' '+!FSaDayActive[resultingDate.getDay()] ); 
if( (FSdtSeasonStart  && resultingDate<FSdtSeasonStart) || (FSdtSeasonEnd && resultingDate>FSdtSeasonEnd) || (TheDate!=FSstrNoneText &&  !FSaDayActive[(resultingDate.getDay()==0?6:resultingDate.getDay()-1)]) )
  {
  for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==FSstrLangID) { alert(aChoiceText[nL]); } }  
  return false;
  }
FSintSelectedDay=0;
FSobjDateRef.value=TheDate+(HourView?' '+document.forms["FSdateSelectorForm"].elements["hour"].value:'');
fschanged(FSobjDateRef);
FSfncHideDateSelector();
}

function FSfncSetDate(TheDate,lExit)
{
if((TheDate==FSstrNoneText)&&(FSblnDisableNone==true))
  {
  for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==FSstrLangID) { alert(aNotEmptyText[nL]); } }    
  return false;
  }
if (TheDate.length>10) { document.forms["FSdateSelectorForm"].elements["hour"].value=TheDate.substr(11,5); TheDate=TheDate.substr(0,10); }
var tempArray=TheDate.split("/");
var resultingDate=new Date(tempArray[2],tempArray[0+FSintFormatMode]-1,tempArray[1-FSintFormatMode]);
//alert(resultingDate.toString()+' '+resultingDate.getDay()+' '+(FSdtSeasonStart  && resultingDate<FSdtSeasonStart)+' '+((FSdtSeasonEnd) && resultingDate>FSdtSeasonEnd)+' '+!FSaDayActive[resultingDate.getDay()] ); 
if( (FSdtSeasonStart  && resultingDate<FSdtSeasonStart) || (FSdtSeasonEnd && resultingDate>FSdtSeasonEnd) || (TheDate!=FSstrNoneText &&  !FSaDayActive[(resultingDate.getDay()==0?6:resultingDate.getDay()-1)]) )
  {
  for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==FSstrLangID) { alert(aChoiceText[nL]); } }  
  return false;
  }
if (!lExit) {
   if (DateValue.substr(3,7)==TheDate.substr(3,7) && DateValue!=FSstrNoneText) { document.getElementById(DateValue).style.backgroundColor="#FFFFFF"; }
   if(TheDate!=FSstrNoneText) { document.getElementById(TheDate).style.backgroundColor="#FFFF00"; } else {HourValue='';}
   DateValue=TheDate;
   }
else
   {
   DateValue=TheDate;FSfncExitDate();
   }
}


function FSfncExitDate()
{
FSintSelectedDay=0;
HourValue=(HourView?document.forms["FSdateSelectorForm"].elements["hour"].value:'');
if(HourValue+''=='') { HourValue = '00:00'; }
FSobjDateRef.value=DateValue+(HourView && DateValue!=FSstrNoneText?' '+HourValue:'');
fschanged(FSobjDateRef);
FSfncHideDateSelector();
}


function FSfncAdvanceDate(Adjuster)
{
if((Adjuster==12)||(Adjuster==-12))
  { FSintCurrentYear=FSintCurrentYear+(Adjuster/12) }
else
  {
  FSintCurrentMonth=FSintCurrentMonth+Adjuster;
  if(FSintCurrentMonth==-1)
    { FSintCurrentMonth=11;FSintCurrentYear-- }
  if(FSintCurrentMonth==12)
    { FSintCurrentMonth=0;FSintCurrentYear++ }
  }
FSobjCalendarArea.innerHTML=FSfncCreateCalendarArea();
}



function FSfncChangeMonth(Adjuster)
{
FSintCurrentMonth=Adjuster-1;
FSobjCalendarArea.innerHTML=FSfncCreateCalendarArea();
}



function FSfncDateToString(TheDate)
{
if(!TheDate)
  { return"" }
else
  {
  if(FSintFormatMode==1)
    { return(TheDate.getDate()<10?"0"+TheDate.getDate():TheDate.getDate())+"/"+(TheDate.getMonth()<9?"0"+(TheDate.getMonth()+1):(TheDate.getMonth()+1))+"/"+TheDate.getFullYear() }
  else
    { return(TheDate.getMonth()<9?"0"+(TheDate.getMonth()+1):(TheDate.getMonth()+1))+"/"+(TheDate.getDate()<10?"0"+TheDate.getDate():TheDate.getDate())+"/"+TheDate.getFullYear() }
  }
}

function FSfncTimeToString(TheDate)
{
if(!TheDate)
  { return"" }
else
  {
  return (TheDate.getHours()<10?"0":"")+TheDate.getHours()+':'+(TheDate.getMinutes()<10?"0":"")+TheDate.getMinutes()
  }
}




function FSfncMakeDate(TheDay,TheMonth,TheYear)
{
return new Date(TheYear,TheMonth-1,TheDay)
}


function FSfncCheckDate(thisDateField,LangID)
{
if(!LangID) { LangID=FSstrLangID }
for (nL=0;nL<aLangId.length;nL++) { if(aLangId[nL]==LangID) { FSstrNoneText=astrNoneText[nL]; FSintFormatMode=aFormatMode[nL]; strFailText=aFailText[nL]; } }
if(thisDateField.value=="")
  { thisDateField.value=FSstrNoneText }
if((thisDateField.value!=FSstrNoneText)&&(!FSfncCheckDateFormat(thisDateField.value)))
  { alert(strFailText);thisDateField.value=thisDateField.defaultValue }
fschanged(thisDateField);
}


function FSfncCheckDateFormat(thisDate)
{
if(thisDate.indexOf("/")==-1)
  { return false }
var ArrayDate=thisDate.split("/");
if(ArrayDate.length!=3)
  { return false }
if((isNaN(ArrayDate[0]))||(ArrayDate[0]==""))
  { return false }
if((isNaN(ArrayDate[1]))||(ArrayDate[1]==""))
  { return false }
if((isNaN(ArrayDate[2]))||(ArrayDate[2]==""))
  { return false }
var daysInMonth=new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
if((parseInt(ArrayDate[1-FSintFormatMode],10)<1)||(parseInt(ArrayDate[1-FSintFormatMode],10)>daysInMonth[parseInt(ArrayDate[0+FSintFormatMode],10)]))
  { return false }
if((parseInt(ArrayDate[0+FSintFormatMode],10)==2)&&(parseInt(ArrayDate[1-FSintFormatMode],10)>FSfncDaysInFebruary(parseInt(ArrayDate[2],10))))
  { return false }
if((parseInt(ArrayDate[0+FSintFormatMode],10)<1)||(parseInt(ArrayDate[0+FSintFormatMode],10)>12))
  { return false }
return true;
}


function FSfncDaysInFebruary(year)
{
return(((year%4==0)&&((!(year%100==0))||(year%400==0)))?29:28)
}


function FSfncWriteSelectorHTML()
{
var selectorHTML=''+'<FORM ACTION="#" METHOD="GET" NAME="FSdateSelectorForm" onSubmit="return false">'+'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="188" HEIGHT="194" ID="FSdateSelector" STYLE="width:190px; height:196px">'+'<TR><TD ID="FScalendarArea"></TD></TR>'+'</TABLE>'+'</FORM>';document.body.insertAdjacentHTML("BeforeEnd",selectorHTML)
}


function SelectFechaHTML(FormName,FieldName,FieldValue,FieldWidth,ImagePath,LangID,DisableNone,UseOnClick,cDayActive,cDayStart,cDayEnd,cBackColor,lDisable,IntervalMode,IntervalRow,IntervalName,IntervalTwin,HourView,SingleLine)
{

if(!LangID) { LangID="EN" }
if(!DisableNone)
  { DisableNone=false }
if(ImagePath.charAt(ImagePath.length-1)!="/")
  { ImagePath=ImagePath+"/" }

FSStore.push( new Array(VST_ELEMENTS)); nLast = FSStore.length-1;
FSStore[nLast][VST_NAME] = FieldName;
FSStore[nLast][VST_FORM] = FormName;
FSStore[nLast][VST_HOURVIEW] = HourView;
FSStore[nLast][VST_DAYACTIVE] = cDayActive;
FSStore[nLast][VST_DAYSTART] = cDayStart;
FSStore[nLast][VST_DAYEND] = cDayEnd;
FSStore[nLast][VST_DEFDAYSTART] = cDayStart;
FSStore[nLast][VST_DEFDAYEND] = cDayEnd;
FSStore[nLast][VST_LANGID] = LangID;
FSStore[nLast][VST_IMAGEPATH] = ImagePath;
FSStore[nLast][VST_BACKCOLOR] = cBackColor;
FSStore[nLast][VST_DISABLE] = lDisable;
FSStore[nLast][VST_DISABLENONE] = DisableNone;
FSStore[nLast][VST_USEONCLICK] = UseOnClick;
FSStore[nLast][VST_WIDTH] = FieldWidth;
FSStore[nLast][VST_INTERVALMODE] = IntervalMode;
FSStore[nLast][VST_INTERVALROW] = IntervalRow;
FSStore[nLast][VST_INTERVALNAME] = IntervalName;
FSStore[nLast][VST_INTERVALTWIN] = IntervalTwin;
FSStore[nLast][VST_SINGLELINE] = SingleLine;
FSStore[nLast][VST_STARTED] = 0;

if(document.getElementById)
  {
  var FSimg1=new Image();
  FSimg1.src=ImagePath+"today_selected.gif";
  var FSimg2=new Image();
  FSimg2.src=ImagePath+"today.gif";
  var FSimg3=new Image();
  FSimg3.src=ImagePath+"selected.gif";
  var FSimg4=new Image();
  FSimg4.src=ImagePath+"but_prev.gif";
  var FSimg5=new Image();
  FSimg5.src=ImagePath+"but_yearu.gif";
  var FSimg6=new Image();
  FSimg6.src=ImagePath+"but_yeard.gif";
  var FSimg7=new Image();
  FSimg7.src=ImagePath+"but_next.gif";
  var FSimg8=new Image();
  FSimg8.src=ImagePath+"but_today_"+LangID+".gif";
  var FSimg9=new Image();
  FSimg9.src=ImagePath+"but_none_"+LangID+".gif";
  var FSimg10=new Image();
  FSimg10.src=ImagePath+"but_go.gif";

  var ActionString='FSfncShowDateSelector(document.'+FormName+'.'+FieldName+',event)';
  if(UseOnClick==true)
    {
    var ActionEvent="onMouseDown="+ActionString;
    for (n=0;n<aLangId.length;n++) { if(aLangId[n]==LangID) { var IconAltText=aSelectText[n]; } }      
    }
  else
   {
   var ActionEvent="onMouseOver="+ActionString+" onMouseDown="+ActionString;
   var IconAltText="";
   }
   var formFieldHTML=''+'<TABLE ALIGN="LEFT" BORDER="0" CELLPADDING="0" CELLSPACING="0" BGCOLOR="#FFFFFF" CLASS="FSdateSelect" ID="'+FieldName+'FStable" WIDTH="'+FieldWidth+'" HEIGHT="22" STYLE="width:'+FieldWidth+'px">'+'<TR>'+'<TD><INPUT TYPE="text" STYLE="width:'+(HourView?'95':'76')+'px;background-color:'+(cBackColor ? cBackColor : 'FFFFFF')+'" NAME="'+FieldName+'" VALUE="'+FieldValue+'" SIZE="'+(HourView?'15':'9')+'" MAXLENGTH="'+(HourView?'16':'10')+'" CLASS="FSdateField" onChange="FSfncCheckDate(this,\''+LangID+'\')" '+(lDisable ? " DISABLED" : "READONLY")+'></TD>'+'<TD ALIGN="right" ID="'+FieldName+'_td"'+(lDisable ? ' style="display:none"':'')+'><A HREF="JavaScript: void 0" '+ActionEvent+'><IMG SRC="'+ImagePath+'calendar.gif" HEIGHT="16" WIDTH="16" HSPACE="3" BORDER="0" ALT="'+IconAltText+'" ID="FSdsIcon_'+FieldName+'"></A></TD>'+'<TD ALIGN="right" ID="'+FieldName+'_tdgray"'+(lDisable ? '' : ' style="display:none"')+'><IMG SRC="'+ImagePath+'calendar_gray.gif" HEIGHT="16" WIDTH="16" HSPACE="3" BORDER="0"></TD>'+'</TR>'+'</TABLE>';
   // document.write(formFieldHTML);
  }
else
  {
  var formFieldHTML='<INPUT'+(lDisable ? " DISABLED" : "")+' TYPE="text" STYLE="background-color:'+(cBackColor ? cBackColor : 'FFFFFF')+'" NAME="'+FieldName+'" VALUE="'+FieldValue+'" SIZE="'+(HourView?'16':'10')+'" MAXLENGTH="'+(HourView?'16':'10')+'" onChange="FSfncCheckDate(this,\''+LangID+'\')" STYLE="width:'+FieldWidth+'px; height:22px">';
  // document.write(formFieldHTML);
  }
// fschanged(document.forms[FormName].elements[FieldName],1);
return formFieldHTML;
}


function SelectColor(FormName,FieldName,FieldValue,lDisable,ImagePath,cBackColor)
{
FieldWidth=6;
if(document.getElementById) {
  var ActionEvent='onMouseDown=FSfncShowColorSelector(document.'+FormName+'.'+FieldName+',event,"'+ImagePath+'")';
  var formFieldHTML=''+'<TABLE title="Seleccionar un color" ALIGN="LEFT" BORDER="0" CELLPADDING="0" CELLSPACING="2" BGCOLOR="#FFFFFF" CLASS="FSdateSelect" ID="'+FieldName+'FStable" WIDTH="'+FieldWidth+'" HEIGHT="22" STYLE="width:'+FieldWidth+'px">'+'<TR>'+'<TD><INPUT TYPE="text" onChange="FSobjColorRef=this;FSfncSetColor(this.value,\''+FieldValue+'\')" STYLE="width:50px;background-color:'+(cBackColor ? cBackColor : 'FFFFFF')+'" NAME="'+FieldName+'" VALUE="'+FieldValue+'" SIZE="6" MAXLENGTH="6" CLASS="FSdateField" '+(lDisable ? " DISABLED" : "")+'></TD>'+'<TD ALIGN="right" WIDTH=36 ID="'+FieldName+'_td" style="background-color:'+(FieldValue?FieldValue:'000000')+';'+(lDisable ? 'display:none;':'')+'"><A HREF="JavaScript: void 0" '+ActionEvent+'><IMG SRC="'+ImagePath+'pickcolor.gif" HEIGHT="16" WIDTH="36" BORDER="0" ALT="Seleccionar color" ID="FSdsIcon_'+FieldName+'"></A></TD>'+'<TD WIDTH=36 ALIGN="right" ID="'+FieldName+'_tdgray"'+(lDisable ? '' : ' style="display:none"')+'><IMG SRC="'+ImagePath+'pickcolor_gray.gif" HEIGHT="16" WIDTH="36" BORDER="0"></TD>'+'</TR>'+'</TABLE>';
  }
else
  {
  var formFieldHTML='<INPUT'+(lDisable ? " DISABLED" : "")+' TYPE="text" STYLE="background-color:'+(cBackColor ? cBackColor : 'FFFFFF')+'" NAME="'+FieldName+'" VALUE="'+FieldValue+'" SIZE="6" MAXLENGTH="6" STYLE="width:'+FieldWidth+'px; height:22px">';
  }
return formFieldHTML;
}


function SetWeekDays(cName,cDayActive)
{ for (nS=0;nS<FSStore.length;nS++) { if (FSStore[nS][VST_NAME]==cName) {FSStore[nS][VST_DAYACTIVE] = cDayActive; } } }

function SetDayStart(cName,cDayStart)
{ for (nS=0;nS<FSStore.length;nS++) { if (FSStore[nS][VST_NAME]==cName) {FSStore[nS][VST_DAYSTART] = cDayStart; } } }

function SetDayEnd(cName,cDayEnd)
{ for (nS=0;nS<FSStore.length;nS++) { if (FSStore[nS][VST_NAME]==cName) {FSStore[nS][VST_DAYEND] = cDayEnd; } } }

function DisableDate(cName,nDisable)
{ for (nS=0;nS<FSStore.length;nS++) { if (FSStore[nS][VST_NAME]==cName) { FSStore[nS][VST_DISABLE]=nDisable; itemdisable(FSStore[nS],nDisable,nDisable,0); } } }

function fsstart()
{ for (nS=0;nS<FSStore.length;nS++) { if (!FSStore[nS][VST_STARTED]) { fschanged(document.forms[FSStore[nS][VST_FORM]].elements[FSStore[nS][VST_NAME]]); } } }

function fschanged(FSobjDateRef)
{
// Chequea TWIN
var MyStoreTwin, MyStoreNTwin,lDisable,MyStorePTwin;
for (n=0;n<FSStore.length;n++) { if(FSStore[n][VST_NAME]==FSobjDateRef.name) { MyStore = FSStore[n]; } }
for (n=0;n<aLangId.length;n++) { if(aLangId[n]==MyStore[VST_LANGID]) { FSstrNoneText=astrNoneText[n];; } }
lStart=(MyStore[VST_STARTED]?0:1);
if (lStart) { MyStore[VST_DEFDISABLE]=MyStore[VST_DISABLE]; MyStore[VST_STARTED]=1;}
if (MyStore[VST_INTERVALMODE]=="start")
   {
   // Localiza TWIN propio
   for (n=0;n<FSStore.length;n++) { if(FSStore[n][VST_INTERVALNAME]==MyStore[VST_INTERVALTWIN] && FSStore[n][VST_INTERVALMODE]=="end"  && FSStore[n][VST_INTERVALROW]==MyStore[VST_INTERVALROW] ) { MyStoreTwin = FSStore[n]; } }

   // Localiza TWIN anterior fila, si existe
   if (!MyStore[VST_SINGLELINE]) {
      for (n=0;n<FSStore.length;n++) { if(FSStore[n][VST_INTERVALNAME]==MyStore[VST_INTERVALTWIN] && FSStore[n][VST_INTERVALMODE]=="end"  && FSStore[n][VST_INTERVALROW]==(MyStore[VST_INTERVALROW]-1) ) { MyStoreNTwin = FSStore[n]; } }
      }
   // Averigua si corresponde desactivar twin del actual (fin de este inicio)
   lDisable = (FSobjDateRef.value==FSstrNoneText ? 1: 0);
   if (MyStoreTwin)
      { 
      // Establece valor propio y valor de twin
      cValue = packdate(FSobjDateRef.value);
      cValueTwin = packdate(document.forms[MyStoreTwin[VST_FORM]].elements[MyStoreTwin[VST_NAME]].value);
      // Si fin existe y es inferior, se vacÝa ortomîticamente
      if (cValueTwin<cValue) { document.forms[MyStoreTwin[VST_FORM]].elements[MyStoreTwin[VST_NAME]].value = FSstrNoneText; }
      // Activa twin si procede
      itemdisable(MyStoreTwin,lDisable,0,lStart);
      }
   if (MyStoreNTwin)
      {
      // Desactiva twin de la fila anterior, si procede
      itemdisable(MyStoreNTwin,!lDisable,0,lStart);
      // Si twin de la fila anterior está vacío, este "start" debe vaciarse y desactivarse
      MyObj = document.forms[MyStoreNTwin[VST_FORM]].elements[MyStoreNTwin[VST_NAME]];
      lDisableMe = (MyObj.value==FSstrNoneText ? 1 : 0);
      itemdisable(MyStore,lDisableMe,lDisableMe,lStart);
      }
   }
if (MyStore[VST_INTERVALMODE]=="end")
   {
   // Localiza TWIN propio
   for (n=0;n<FSStore.length;n++) { if(FSStore[n][VST_INTERVALNAME]==MyStore[VST_INTERVALTWIN] && FSStore[n][VST_INTERVALMODE]=="start"  && FSStore[n][VST_INTERVALROW]==MyStore[VST_INTERVALROW] ) { MyStoreTwin = FSStore[n]; } }
   // Localiza TWIN siguiente fila, si existe
   if (!MyStore[VST_SINGLELINE]) {
      for (n=0;n<FSStore.length;n++) { if(FSStore[n][VST_INTERVALNAME]==MyStore[VST_INTERVALTWIN] && FSStore[n][VST_INTERVALMODE]=="start"  && FSStore[n][VST_INTERVALROW]==(1+MyStore[VST_INTERVALROW]) ) { MyStoreNTwin = FSStore[n]; } }
      }
   // Activa/desactiva fila actual
   lDisable = (FSobjDateRef.value==FSstrNoneText ? 0: 1);
   
   if (MyStoreTwin)
      {
      // Localiza end fila anterior, si existe
      if (!MyStore[VST_SINGLELINE]) {
         for (n=0;n<FSStore.length;n++) {
         if(FSStore[n][VST_INTERVALNAME]==MyStore[VST_INTERVALNAME] && FSStore[n][VST_INTERVALMODE]=="end"  && FSStore[n][VST_INTERVALROW]==(-1+MyStore[VST_INTERVALROW]) ) { MyStorePTwin = FSStore[n]; }
         }
      }
      //Si el end anterior existe, no debe estar vacío cuando se ha solicitado activar el start
      if (MyStorePTwin && !lDisable)
         {
         if (document.forms[MyStorePTwin[VST_FORM]].elements[MyStorePTwin[VST_NAME]].value!=FSstrNoneText) { itemdisable(MyStoreTwin,0,0,lStart); }
         }
      else
         { itemdisable(MyStoreTwin,lDisable,0,lStart);  }
      // Si twin está vacío, este "end" debe vaciarse y desactivarse
      MyObj = document.forms[MyStoreTwin[VST_FORM]].elements[MyStoreTwin[VST_NAME]];
      lDisableMe = (MyObj.value==FSstrNoneText ? 1 : 0);
      itemdisable(MyStore,lDisableMe,lDisableMe,lStart);
      }

   if (MyStoreNTwin) {
      //Activa/desactiva siguiente fila 
      itemdisable(MyStoreNTwin,!lDisable,0,lStart);
      }
   
   }
if (!lStart) { return fchanged(FSobjDateRef,FSobjDateRef.defaultValue); }
}

function packdate(cdate) { return cdate.substr(6,4)+'-'+cdate.substr(3,2)+'-'+cdate.substr(0,2)+(cdate.length>10?'-'+cdate.substr(11,5):''); }
function packjsdate(ddate) { if(!ddate) { return "" }  else { return ddate.getFullYear()+'-'+(ddate.getMonth()<9?"0"+(ddate.getMonth()+1):(ddate.getMonth()+1))+"-"+(ddate.getDate()<10?"0"+ddate.getDate():ddate.getDate()) } }


function itemdisable(aItem,lDisable,lReset,lStart)
{
// No habilita los objetos que se definieron como inhabilitados
if (lDisable || !aItem[VST_DISABLE])
   {  
   if (lStart) { aItem[VST_DEFDISABLE] = lDisable; }
   MyObj = document.forms[aItem[VST_FORM]].elements[aItem[VST_NAME]];
   if (lReset) { MyObj.value=MyObj.defaultValue;restorecolor(MyObj); }
   MyObj.disabled=lDisable; MyObj.readOnly=(lDisable ? 0 : 1) ;
   document.getElementById(aItem[VST_NAME]+'_td').style.display = (lDisable ? "none" : "");
   document.getElementById(aItem[VST_NAME]+'_tdgray').style.display = (lDisable ? "" : "none");
   }
}
   
function discarddisable() { for (n=0;n<FSStore.length;n++) { itemdisable(FSStore[n],FSStore[n][VST_DEFDISABLE],0,0); } }
