//********************************************************************************
// Funciones que estaban en Common.js
/*
function EDCal(NombreCampo,Camino, Idioma){
	
	//Definir el formato de fecha a utilizar en el calendario.
	selectedLanguage = Idioma.toLowerCase( )
	if (Idioma.toUpperCase( ) == 'EU')
		calDateFormat    = "yyyy/MM/DD";
	else
		calDateFormat    = "DD/MM/yyyy";
	eval("setDateField(document.thenform."+ NombreCampo +");");
	var CamiCalen = Camino + "calendario.html";
        top.newWin = window.open(CamiCalen,'cal','width=280,height=230','dependent=yes,screenX=200, screenY=300, titlebar=yes');
     return true;
    }
	*/
//********************************************************************************



/* -------------------------------- Llamadas al calendario ------------------------------------------
Recibe el objeto fecha, camino al html del calendario y el Idioma en que debe ser mostrado
Abre el calendario y éste deja el valor seleccionado en el campo que aquí se recibe.
*/
function EDCal(NombreCampo,Camino, Idioma){
	eval("var valor = document.theform." + NombreCampo + ".value;");
	if ( valor != '' ) {
		if (!(isValidDate( valor, Idioma))){
 	    	eval("document.theform." + NombreCampo + ".select();");
        	eval("document.theform." + NombreCampo + ".focus();");
			return false;
  		}
	}
	//Definir el formato de fecha a utilizar en el calendario.
	selectedLanguage = Idioma.toLowerCase( )
	if (Idioma.toUpperCase( ) == 'EU')
		calDateFormat    = "yyyy/MM/DD";
	else if (Idioma.toUpperCase( ) == 'IN')
		calDateFormat    = "MM/DD/yyyy";
	else
		calDateFormat    = "DD/MM/yyyy";
	eval("setDateField(document.theform."+ NombreCampo +");");
	var CamiCalen = Camino + "calendario.asp";
	top.newWin = window.open(CamiCalen,'cal','width=220,height=195','dependent=yes,screenX=200, screenY=300, titlebar=yes');
     return true;
}
	

//


// SPECIFY DATE FORMAT RETURNED BY THIS CALENDAR
// (THIS IS ALSO THE DATE FORMAT RECOGNIZED BY THIS CALENDAR)

// DATE FORMAT OPTIONS:
//
// dd   = 1 or 2-digit Day
// DD   = 2-digit Day
// mm   = 1 or 2-digit Month
// MM   = 2-digit Month
// yy   = 2-digit Year
// YY   = 4-digit Year
// yyyy = 4-digit Year
// month   = Month name in lowercase letters
// Month   = Month name in initial caps
// MONTH   = Month name in captital letters
// mon     = 3-letter month abbreviation in lowercase letters
// Mon     = 3-letter month abbreviation in initial caps
// MON     = 3-letter month abbreviation in uppercase letters
// weekday = name of week in lowercase letters
// Weekday = name of week in initial caps
// WEEKDAY = name of week in uppercase letters
// wkdy    = 3-letter weekday abbreviation in lowercase letters
// Wkdy    = 3-letter weekday abbreviation in initial caps
// WKDY    = 3-letter weekday abbreviation in uppercase letters
//
// Examples:
//
// calDateFormat = "mm/dd/yy";
// calDateFormat = "Weekday, Month dd, yyyy";
// calDateFormat = "wkdy, mon dd, yyyy";
// calDateFormat = "DD.MM.YY";     // FORMAT UNSUPPORTED BY JAVASCRIPT -- REQUIRES CUSTOM PARSING
//

calDateFormat    = "DD/MM/yyyy";


// CALENDAR COLORS
topBackground    = "#ffffff";         	// fondo de la parte superior
bottomBackground = "#ffffff";         	// fondo del area de los numeros
tableBGColor     = "#4c4c4c";         	// BG COLOR OF THE BOTTOM FRAME'S TABLE
cellColor        = "#ffffff";     		// TABLE CELL BG COLOR OF THE DATE CELLS IN THE BOTTOM FRAME
headingCellColor = "#ededed";         	// TABLE CELL BG COLOR OF THE WEEKDAY ABBREVIATIONS
headingTextColor = "#4c4c4c";         	// TEXT COLOR OF THE WEEKDAY ABBREVIATIONS
dateColor        = "#336699";          	// TEXT COLOR OF THE LISTED DATES (1-28+)
focusColor       = "#000000";       	// TEXT COLOR OF THE SELECTED DATE (OR CURRENT DATE)
hoverColor       = "#318900";       	// TEXT COLOR OF A LINK WHEN YOU HOVER OVER IT
fontStyle        = "bolder 13px Trebuchet MS, Verdana, Arial, San Serif;";     	// TEXT STYLE FOR DATES
fondoNormal	     = "../irudiak_admin/fondo_dia_con.gif"
fondoHoy	     = "../irudiak_admin/fondo_dia_activo.gif"
headingFontStyle = "bolder 13px Trebuchet MS, Verdana, Arial, San Serif;";     	// TEXT STYLE FOR WEEKDAY ABBREVIATIONS

// FORMATTING PREFERENCES
bottomBorder  = false;        // TRUE/FALSE (WHETHER TO DISPLAY BOTTOM CALENDAR BORDER)
tableBorder   = 0;            // SIZE OF CALENDAR TABLE BORDER (BOTTOM FRAME) 0=none



// END USER-EDITABLE SECTION -------------------------------------------------------



// DETERMINE BROWSER BRAND
var isNav = false;
var isIE  = false;

// ASSUME IT'S EITHER NETSCAPE OR MSIE
if (navigator.appName == "Netscape") {
    isNav = true;
}
else {
    isIE = true;
}

// GET CURRENTLY SELECTED LANGUAGE
//selectedLanguage = navigator.language;
selectedLanguage = "es";

// PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER
//La llamada se hace desde la inicializacion del campo fecha, 
//para que tenga en cuenta el idioma que se recibe como parámetro 
//buildCalParts();



// CALENDAR FUNCTIONS BEGIN HERE ---------------------------------------------------



// SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD
function setDateField(dateField) {

	var intDate2;

    // ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE
    calDateField = dateField;

    // GET THE VALUE OF THE INCOMING FIELD
		
		//AÑADIDO porque el parse cuando la fecha es en formato corto obliga a formato dd/mm/yyyy
		inDate = dateField.value;

		if (inDate != "")
		{
			if (calDateFormat    == "yyyy/MM/DD")
				
			{ 	var datePat = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/; // requires 4 digit year
				//var datePat = /^(\/|-)(\d{1,2})\2(\d{1,2})$/; // requires 4 digit year
				//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
				var todatei = inDate;  
				var matchArrayi = todatei.match(datePat); 
				var todateii = new Date(matchArrayi[3] + "/" + matchArrayi[4]+ "/" + matchArrayi[1]);  
				inDate2=matchArrayi[3]+"/"+matchArrayi[4]+"/"+matchArrayi[1]; 
			}
			else
			{
				//inDate2=inDate.substring(3, 5)+"/"+inDate.substring(0, 2)+"/"+inDate.substring(6, 10); 
				var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
				var todatei = inDate;    
				var matchArrayi = todatei.match(datePat); 
				var todateii = new Date(matchArrayi[3] + "/" + matchArrayi[1]+ "/" + matchArrayi[4]);  
				inDate2=matchArrayi[3]+"/"+matchArrayi[1]+"/"+matchArrayi[4]; 
			}
			inDate = inDate2;
		}	
		else{
			var hoy = new Date()
			inDate = (hoy.getMonth()+1)+"/"+ hoy.getDate() + "/" + hoy.getFullYear();
		}
	   ///

	// PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER (AÑADIDO)
	buildCalParts();

	// SET calDate TO THE DATE IN THE INCOMING FIELD OR DEFAULT TO TODAY'S DATE
    setInitialDate();

    // THE CALENDAR FRAMESET DOCUMENTS ARE CREATED BY JAVASCRIPT FUNCTIONS
    calDocTop    = buildTopCalFrame();
    calDocBottom = buildBottomCalFrame();
}


// SET THE INITIAL CALENDAR DATE TO TODAY OR TO THE EXISTING VALUE IN dateField
function setInitialDate() {
   
    // CREATE A NEW DATE OBJECT (WILL GENERALLY PARSE CORRECT DATE EXCEPT WHEN "." IS USED AS A DELIMITER)
    // (THIS ROUTINE DOES *NOT* CATCH ALL DATE FORMATS, IF YOU NEED TO PARSE A CUSTOM DATE FORMAT, DO IT HERE)
    calDate = new Date(inDate);

    // IF THE INCOMING DATE IS INVALID, USE THE CURRENT DATE
    if (isNaN(calDate)) {

        // ADD CUSTOM DATE PARSING HERE
        // IF IT FAILS, SIMPLY CREATE A NEW DATE OBJECT WHICH DEFAULTS TO THE CURRENT DATE
        calDate = new Date();
    }

    // KEEP TRACK OF THE CURRENT DAY VALUE
    calDay  = calDate.getDate();

    // SET DAY VALUE TO 1... TO AVOID JAVASCRIPT DATE CALCULATION ANOMALIES
    // (IF THE MONTH CHANGES TO FEB AND THE DAY IS 30, THE MONTH WOULD CHANGE TO MARCH
    //  AND THE DAY WOULD CHANGE TO 2.  SETTING THE DAY TO 1 WILL PREVENT THAT)
    calDate.setDate(1);
}


// POPUP A WINDOW WITH THE CALENDAR IN IT
// POPUP A WINDOW WITH THE CALENDAR IN IT
function showCalendar() {

	//Construye el calendario sobre la fecha que exista en el moemnto que se llama a esta función
	calDocTop    = buildTopCalFrame();
    calDocBottom = buildBottomCalFrame();

    // USE THE JAVASCRIPT-GENERATED DOCUMENTS (calDocTop, calDocBottom) IN THE FRAMESET
    calDocFrameset = 
        "<HTML><HEAD><TITLE>JavaScript Calendar</TITLE></HEAD> \n " +
        "<FRAMESET ROWS='70,*' FRAMEBORDER='0'> \n " +
        "  <FRAME NAME='topCalFrame' SRC='javascript:parent.opener.calDocTop' SCROLLING='no'> \n " +
        "  <FRAME NAME='bottomCalFrame' SRC='javascript:parent.opener.calDocBottom' SCROLLING='no'> \n " +
        "</FRAMESET>\n";

    // DISPLAY THE CALENDAR IN A NEW POPUP WINDOW
	top.newWin.document.location.reload();
    top.newWin.focus();
}



// CREATE THE TOP CALENDAR FRAME
function buildTopCalFrame() {
	
	var Strhoy;

	// IF FRENCH
    if (selectedLanguage == "fr") {
        Strhoy  = 'Hoy F';
    }
    // IF GERMAN
    else if (selectedLanguage == "de") {
        Strhoy  = 'Hoy A';
    }
    // IF SPANISH
    else if (selectedLanguage == "ca") {
        Strhoy  = 'Hoy';
    }
    // IF EUSKERA
    else if (selectedLanguage == "eu") {
        Strhoy  = 'Gaur';
    }
    else {
        Strhoy  = 'Day';
    }


    // CREATE THE TOP FRAME OF THE CALENDAR
    var calDoc =
        "<html> \n" +
        "<head> \n" +
		 // 
        "<style type='text/css'> \n" +
        "<!--" +
		".boton { font-weight:bold; background: #cccccc; color: black; border: thin #cccccc solid; font-family: Trebuchet, Verdana, Arial, Helvetica, sans-serif; font-size: 10px; }"+
		".textcampos { font-weight:bold; font-family: Trebuchet, Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: black; text-align: left; }" +
        "-->" +
        "</style> \n" +
        "</head> \n" +
        "<body> \n" +
        "<form name='calControl' onSubmit='return false;'> \n" +
        "<center> \n" +
        "<table CELLPADDING=0 CELLSPACING=1 BORDER=0> \n" +
        "<tr> \n <td COLSPAN=7> \n" +
        "<center> \n" +
        getMonthSelect() +
        " <input name='year' value='" + calDate.getFullYear() + "'type=text size=4 maxlength=4 class='textcampos' onblur='parent.opener.setYear()'> \n" +
        "</center> \n" +
        "</td> \n" +
        "</tr> \n" +
        "<tr> \n" +
        "<td COLSPAN=7>" +
        "<input " +
        "type=button class='boton' name='previousYear' value='<<'    onClick='parent.opener.setPreviousYear()'> \n" + 
		"<input " +
        "type=button class='boton' name='previousMonth' value=' < '   onClick='parent.opener.setPreviousMonth()'> \n" + 
		"<input " +
        "type=button class='boton' name='today' value='" + Strhoy + "' onClick='parent.opener.setToday()'> \n" + 
		"<input " +
        "type=button class='boton' name='nextMonth' value=' > '   onClick='parent.opener.setNextMonth()'> \n" + 
		"<input " +
        "type=button class='boton' name='nextYear' value='>>'    onClick='parent.opener.setNextYear()'> \n" +
        "</td> \n" +
        "</tr> \n" +
        "</table> \n" +
        "</center> \n" +
        "</form> \n" +
        "</body> \n" +
        "</html> \n";

    return calDoc;
}


// CREATE THE BOTTOM CALENDAR FRAME 
// (THE MONTHLY CALENDAR)
function buildBottomCalFrame() {       

    // START CALENDAR DOCUMENT
    var calDoc = calendarBegin;

    // GET MONTH, AND YEAR FROM GLOBAL CALENDAR DATE
    month   = calDate.getMonth();
    year    = calDate.getFullYear();


    // GET GLOBALLY-TRACKED DAY VALUE (PREVENTS JAVASCRIPT DATE ANOMALIES)
    day     = calDay;

    var i   = 0;

    // DETERMINE THE NUMBER OF DAYS IN THE CURRENT MONTH
    var days = getDaysInMonth();

    // IF GLOBAL DAY VALUE IS > THAN DAYS IN MONTH, HIGHLIGHT LAST DAY IN MONTH
    if (day > days) {
        day = days;
    }

    // DETERMINE WHAT DAY OF THE WEEK THE CALENDAR STARTS ON
    var firstOfMonth = new Date (year, month, 0);

    // GET THE DAY OF THE WEEK THE FIRST DAY OF THE MONTH FALLS ON
    var startingPos  = firstOfMonth.getDay();
	
    days += startingPos;

    // KEEP TRACK OF THE COLUMNS, START A NEW ROW AFTER EVERY 7 COLUMNS
    var columnCount = 0;

    // MAKE BEGINNING NON-DATE CELLS BLANK
    for (i = 0; i < startingPos; i++) {

        calDoc += blankCell;
	columnCount++;
    }

    // SET VALUES FOR DAYS OF THE MONTH
    var currentDay = 0;
    var dayType    = "weekdaystyle";

    // DATE CELLS CONTAIN A NUMBER
    for (i = startingPos; i < days; i++) {

	var paddingChar = "&nbsp;";

        // ADJUST SPACING SO THAT ALL LINKS HAVE RELATIVELY EQUAL WIDTHS
        if (i-startingPos+1 < 10) {
            padding = "&nbsp;&nbsp;";
        }
        else {
            padding = "&nbsp;";
        }

        // GET THE DAY CURRENTLY BEING WRITTEN
        currentDay = i-startingPos+1;

        // SET THE TYPE OF DAY, THE focusDay GENERALLY APPEARS AS A DIFFERENT COLOR
        if (currentDay == day) {
            dayType = "focusDay";
        }
        else {
           dayType = "weekdaystyle";
        }

        // ADD THE DAY TO THE CALENDAR STRING
        calDoc += "<td align=center class='td_" + dayType + "'> \n" +
                  "\t <a href='javascript:parent.opener.returnDate(" + 
                  currentDay + ")' class='" + dayType + "'>" + padding + currentDay + paddingChar + "</a> \n </td>";

        columnCount++;

        // START A NEW ROW WHEN NECESSARY
        if (columnCount % 7 == 0) {
            calDoc += "\n </tr> \n <tr> \n ";
        }
    }

    // MAKE REMAINING NON-DATE CELLS BLANK
    for (i=days; i<42; i++)  {

        calDoc += blankCell;
	columnCount++;

        // START A NEW ROW WHEN NECESSARY
        if (columnCount % 7 == 0) {
            calDoc += " \n </tr> \n";
            if (i<41) {
                calDoc += " \n <tr> \n";
            }
        }
    }

    // FINISH THE NEW CALENDAR PAGE
    calDoc += calendarEnd;

    // RETURN THE COMPLETED CALENDAR PAGE
    return calDoc;
}


// WRITE THE MONTHLY CALENDAR TO THE BOTTOM CALENDAR FRAME
function writeCalendar() {

/*	if (isNav)
	{
		showCalendar();
	}
	else {
		// CREATE THE NEW CALENDAR FOR THE SELECTED MONTH & YEAR
		calDocBottom = buildBottomCalFrame();


		// WRITE THE NEW CALENDAR TO THE BOTTOM FRAME
	   top.newWin.frames['bottomCalFrame'].document.open();
	   top.newWin.frames['bottomCalFrame'].document.write(calDocBottom);
	   top.newWin.frames['bottomCalFrame'].document.close();
	}
*/


 calDocBottom = buildBottomCalFrame();

  var passfr = top.newWin.frames.bottomCalFrame.document;

  if (navigator.appName=="Netscape"&&parseFloat(navigator.appVersion)>4.7)
	{
	   passfr.body.innerHTML=calDocBottom;
	   passfr.close();
    }
 else
	{
	  passfr.open();
	  passfr.write(calDocBottom);
	  passfr.close();
	}

}


// SET THE CALENDAR TO TODAY'S DATE AND DISPLAY THE NEW CALENDAR
function setToday() {

    // SET GLOBAL DATE TO TODAY'S DATE
    calDate = new Date();

    // SET DAY MONTH AND YEAR TO TODAY'S DATE
    var month = calDate.getMonth();
    var year  = calDate.getFullYear();

    // SET MONTH IN DROP-DOWN LIST
    top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;

    // SET YEAR VALUE
    top.newWin.frames['topCalFrame'].document.calControl.year.value = year;

    // DISPLAY THE NEW CALENDAR
    writeCalendar();
}


// SET THE GLOBAL DATE TO THE NEWLY ENTERED YEAR AND REDRAW THE CALENDAR
function setYear() {

    // GET THE NEW YEAR VALUE
    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    // IF IT'S A FOUR-DIGIT YEAR THEN CHANGE THE CALENDAR
    if (isFourDigitYear(year)) {
        calDate.setFullYear(year);
		top.newWin.frames['topCalFrame'].document.calControl.month.focus();
        writeCalendar();
    }
    else {
        // HIGHLIGHT THE YEAR IF THE YEAR IS NOT FOUR DIGITS IN LENGTH
        top.newWin.frames['topCalFrame'].document.calControl.year.focus();
        top.newWin.frames['topCalFrame'].document.calControl.year.select();
    }
}


// SET THE GLOBAL DATE TO THE SELECTED MONTH AND REDRAW THE CALENDAR
function setCurrentMonth() {

    // GET THE NEWLY SELECTED MONTH AND CHANGE THE CALENDAR ACCORDINGLY
    var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

    calDate.setMonth(month);
    writeCalendar();
}


// SET THE GLOBAL DATE TO THE PREVIOUS YEAR AND REDRAW THE CALENDAR
function setPreviousYear() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    if (isFourDigitYear(year) && year > 1000) {
        year--;
        calDate.setFullYear(year);
        top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE PREVIOUS MONTH AND REDRAW THE CALENDAR
function setPreviousMonth() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;
    if (isFourDigitYear(year)) {
        var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

        // IF MONTH IS JANUARY, SET MONTH TO DECEMBER AND DECREMENT THE YEAR
        if (month == 0) {
            month = 11;
            if (year > 1000) {
                year--;
                calDate.setFullYear(year);
                top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
            }
        }
        else {
            month--;
        }
        calDate.setMonth(month);
        top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE NEXT MONTH AND REDRAW THE CALENDAR
function setNextMonth() {

    var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    if (isFourDigitYear(year)) {
        var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

        // IF MONTH IS DECEMBER, SET MONTH TO JANUARY AND INCREMENT THE YEAR
        if (month == 11) {
            month = 0;
            year++;
            calDate.setFullYear(year);
            top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
        }
        else {
            month++;
        }
        calDate.setMonth(month);
        top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE NEXT YEAR AND REDRAW THE CALENDAR
function setNextYear() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;
    if (isFourDigitYear(year)) {
        year++;
        calDate.setFullYear(year);
        top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
		writeCalendar();
    }
}


// GET NUMBER OF DAYS IN MONTH
function getDaysInMonth()  {

    var days;
    var month = calDate.getMonth()+1;
    var year  = calDate.getFullYear();

    // RETURN 31 DAYS
    if (month==1 || month==3 || month==5 || month==7 || month==8 ||
        month==10 || month==12)  {
        days=31;
    }
    // RETURN 30 DAYS
    else if (month==4 || month==6 || month==9 || month==11) {
        days=30;
    }
    // RETURN 29 DAYS
    else if (month==2)  {
        if (isLeapYear(year)) {
            days=29;
        }
        // RETURN 28 DAYS
        else {
            days=28;
        }
    }
    return (days);
}


// CHECK TO SEE IF YEAR IS A LEAP YEAR
function isLeapYear (Year) {

    if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
        return (true);
    }
    else {
        return (false);
    }
}


// ENSURE THAT THE YEAR IS FOUR DIGITS IN LENGTH
function isFourDigitYear(year) {

    if (year.length != 4 || isNaN(year) ) {
        top.newWin.frames['topCalFrame'].document.calControl.year.value = calDate.getFullYear();
        top.newWin.frames['topCalFrame'].document.calControl.year.select();
        top.newWin.frames['topCalFrame'].document.calControl.year.focus();
    }
    else {
        return true;
    }
}


// BUILD THE MONTH SELECT LIST
function getMonthSelect() {

    // BROWSER LANGUAGE CHECK DONE PREVIOUSLY (navigator.language())
    // FIRST TWO CHARACTERS OF LANGUAGE STRING SPECIFIES THE LANGUAGE
    // (THE LAST THREE OPTIONAL CHARACTERS SPECIFY THE LANGUAGE SUBTYPE)
    // SET THE NAMES OF THE MONTH TO THE PROPER LANGUAGE (DEFAULT TO ENGLISH)

    // IF FRENCH
    if (selectedLanguage == "fr") {
        monthArray = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                               'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
    }
    // IF GERMAN
    else if (selectedLanguage == "de") {
        monthArray = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
                               'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
    }
    // IF SPANISH
    else if (selectedLanguage == "ca") {
        monthArray = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
                               'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
    }
    // IF EUSKERA
    else if (selectedLanguage == "eu") {
        monthArray = new Array('Urtarrila', 'Otsaila', 'Martxoa', 'Apirila', 'Maiatza', 'Ekaina', 'Uztaila', 'Abuztua', 'Iraila', 'Urria', 'Azaroa', 'Abendua');
    }
    // DEFAULT TO ENGLISH
    else {
        monthArray = new Array('January', 'February', 'March', 'April', 'May', 'June',
                               'July', 'August', 'September', 'October', 'November', 'December');
    }

    // DETERMINE MONTH TO SET AS DEFAULT
    var activeMonth = calDate.getMonth();

    // START HTML SELECT LIST ELEMENT
    monthSelect = "<SELECT NAME='month' onChange='parent.opener.setCurrentMonth()' class= 'textcampos'>";

    // LOOP THROUGH MONTH ARRAY
    for (i in monthArray) {
        
        // SHOW THE CORRECT MONTH IN THE SELECT LIST
        if (i == activeMonth) {
            monthSelect += "<OPTION SELECTED>" + monthArray[i] + "\n";
        }
        else {
            monthSelect += "<OPTION>" + monthArray[i] + "\n";
        }
    }
    monthSelect += "</SELECT>";

    // RETURN A STRING VALUE WHICH CONTAINS A SELECT LIST OF ALL 12 MONTHS
    return monthSelect;
}


// SET DAYS OF THE WEEK DEPENDING ON LANGUAGE
function createWeekdayList() {

    // IF FRENCH
    if (selectedLanguage == "fr") {
        weekdayList  = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
        weekdayArray = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
    }
    // IF GERMAN
    else if (selectedLanguage == "de") {
        weekdayList  = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
        weekdayArray = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
    }
    // IF SPANISH
    else if (selectedLanguage == "ca") {
        weekdayList  = new Array( 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado','Domingo')
        weekdayArray = new Array( 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa','Do');
    }
    // IF EUSKERA
    else if (selectedLanguage == "eu") {
        weekdayList  = new Array( 'Astelehena', 'Asteartea','Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata', 'Igandea')
        weekdayArray = new Array( 'Al', 'As', 'Az', 'Og', 'Or', 'Lr', 'Ig');
    }
    else {
        weekdayList  = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
        weekdayArray = new Array('Su','Mo','Tu','We','Th','Fr','Sa');
    }

    // START HTML TO HOLD WEEKDAY NAMES IN TABLE FORMAT
    var weekdays = "<tr BGCOLOR='" + headingCellColor + "'>";

    // LOOP THROUGH WEEKDAY ARRAY
    for (i in weekdayArray) {

        weekdays += "<td class='heading' align=center>" + weekdayArray[i] + "</td>";
    }
    weekdays += "</tr>";

    // RETURN TABLE ROW OF WEEKDAY ABBREVIATIONS TO DISPLAY ABOVE THE CALENDAR
    return weekdays;
}


// PRE-BUILD PORTIONS OF THE CALENDAR (FOR PERFORMANCE REASONS)
function buildCalParts() {

    // GENERATE WEEKDAY HEADERS FOR THE CALENDAR
    weekdays = createWeekdayList();
	

    // BUILD THE BLANK CELL ROWS
    blankCell = "<td align=center bgcolor='" + cellColor + "'>&nbsp;&nbsp;&nbsp;</td>";

    // BUILD THE TOP PORTION OF THE CALENDAR PAGE USING CSS TO CONTROL SOME DISPLAY ELEMENTS
    calendarBegin =
		"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \n " +
		"<html xmlns=\"http://www.w3.org/1999/xhtml\"> \n " +
        "<head> \n " +
        // STYLESHEET DEFINES APPEARANCE OF CALENDAR
        "<style type=\"text/css\"> \n " +
		"<!--  \n " +
        "td.heading { \n\t text-decoration: none; color:" + headingTextColor + "; font: "    + headingFontStyle + "; \n } \n " +
		"focusDay a { \n\t background: transparent url(" + fondoHoy + ") repeat-x left bottom; \n } \n " +
        "A.focusDay:link { \n\t color: " + hoverColor + "; text-decoration: none; font: "    + fontStyle + "; \n } \n " +
        "A.focusDay:hover { \n\t color: " + hoverColor + "; text-decoration: none; font: "   + fontStyle + "; \n } \n " +
        "A.focusDay:active { \n\t color: " + hoverColor + "; text-decoration: none; font: "  + fontStyle + "; \n } \n " +
        "A.focusDay:visited { \n\t color: " + hoverColor + "; text-decoration: none; font: " + fontStyle + "; \n } \n " +
		"td_weekdaystyle { \n\t background: transparent url(" + fondoNormal + ") repeat-x left top; } \n " +
        "A.weekdaystyle:link { \n\t color: " + focusColor + "; text-decoration: none; font: "     + fontStyle + "; \n } \n " +
        "A.weekdaystyle:hover { \n\t color: " + focusColor + "; text-decoration: none; font: "    + fontStyle + "; \n } \n " +
        "A.weekdaystyle:active { \n\t color: " + focusColor + "; text-decoration: none; font: "   + fontStyle + "; \n } \n " +
        "A.weekdaystyle:visited { \n\t color: " + focusColor + "; text-decoration: none; font: "  + fontStyle + "; \n } \n " +
		".boton { \n\t background : #ff9933 ;color : #003366;border: thin #FFCC66 solid; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold; \n } \n " +
		" --> \n " +
        "</style> \n " +
        "</head> \n " +
        "<body bgcolor='" + bottomBackground + "'> \n " +
        "<CENTER>";

        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE TABLE OUTLINES PROPERLY
        if (isNav) {
            calendarBegin += 
               <!-- "<TABLE width=100  CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'><tr><td>"; -->
                "<table width=100  cellpadding=0 cellspacing=1 border=" + tableBorder + " align=center><tr><td>";
        }

        // BUILD WEEKDAY HEADINGS
        calendarBegin +=
            "<table width=100  cellpadding=0 cellspacing=1 border=" + tableBorder + " align=center><tr><td>" +
            weekdays +
            "<tr>";


    // BUILD THE BOTTOM PORTION OF THE CALENDAR PAGE
    calendarEnd = "";

        // WHETHER OR NOT TO DISPLAY A THICK LINE BELOW THE CALENDAR
        if (bottomBorder) {
            calendarEnd += "<tr></tr>";
        }

        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE BORDERS PROPERLY
        if (isNav) {
            calendarEnd += "</td></tr></table>";
        }

        // END THE TABLE AND HTML DOCUMENT
        calendarEnd +=
            "</table>" +
            "</center>" +
            "</body>" +
            "</html>";
}


// REPLACE ALL INSTANCES OF find WITH replace
// inString: the string you want to convert
// find:     the value to search for
// replace:  the value to substitute
//
// usage:    jsReplace(inString, find, replace);
// example:  jsReplace("To be or not to be", "be", "ski");
//           result: "To ski or not to ski"
//
function jsReplace(inString, find, replace) {

    var outString = "";

    if (!inString) {
        return "";
    }

    // REPLACE ALL INSTANCES OF find WITH replace
    if (inString.indexOf(find) != -1) {
        // SEPARATE THE STRING INTO AN ARRAY OF STRINGS USING THE VALUE IN find
        t = inString.split(find);

        // JOIN ALL ELEMENTS OF THE ARRAY, SEPARATED BY THE VALUE IN replace
        return (t.join(replace));
    }
    else {
        return inString;
    }
}


// JAVASCRIPT FUNCTION -- DOES NOTHING (USED FOR THE HREF IN THE CALENDAR CALL)
function doNothing() {
}


// ENSURE THAT VALUE IS TWO DIGITS IN LENGTH
function makeTwoDigit(inValue) {

    var numVal = parseInt(inValue, 10);

    // VALUE IS LESS THAN TWO DIGITS IN LENGTH
    if (numVal < 10) {

        // ADD A LEADING ZERO TO THE VALUE AND RETURN IT
        return("0" + numVal);
    }
    else {
        return numVal;
    }
}


function openExternal() {
}

// SET FIELD VALUE TO THE DATE SELECTED AND CLOSE THE CALENDAR WINDOW
function returnDate(inDay)
{

    // inDay = THE DAY THE USER CLICKED ON
    calDate.setDate(inDay);

    // SET THE DATE RETURNED TO THE USER
    var day           = calDate.getDate();
    var month         = calDate.getMonth()+1;
    var year          = calDate.getFullYear();
    var monthString   = monthArray[calDate.getMonth()];
    var monthAbbrev   = monthString.substring(0,3);
    var weekday       = weekdayList[calDate.getDay()];
    var weekdayAbbrev = weekday.substring(0,3);

    outDate = calDateFormat;

    // RETURN TWO DIGIT DAY
    if (calDateFormat.indexOf("DD") != -1) {
        day = makeTwoDigit(day);
        outDate = jsReplace(outDate, "DD", day);
    }
    // RETURN ONE OR TWO DIGIT DAY
    else if (calDateFormat.indexOf("dd") != -1) {
        outDate = jsReplace(outDate, "dd", day);
    }

    // RETURN TWO DIGIT MONTH
    if (calDateFormat.indexOf("MM") != -1) {
        month = makeTwoDigit(month);
        outDate = jsReplace(outDate, "MM", month);
    }
    // RETURN ONE OR TWO DIGIT MONTH
    else if (calDateFormat.indexOf("mm") != -1) {
        outDate = jsReplace(outDate, "mm", month);
    }

    // RETURN FOUR-DIGIT YEAR
    if (calDateFormat.indexOf("yyyy") != -1) {
        outDate = jsReplace(outDate, "yyyy", year);
    }
    // RETURN TWO-DIGIT YEAR
    else if (calDateFormat.indexOf("yy") != -1) {
        var yearString = "" + year;
        var yearString = yearString.substring(2,4);
        outDate = jsReplace(outDate, "yy", yearString);
    }
    // RETURN FOUR-DIGIT YEAR
    else if (calDateFormat.indexOf("YY") != -1) {
        outDate = jsReplace(outDate, "YY", year);
    }

    // RETURN DAY OF MONTH (Initial Caps)
    if (calDateFormat.indexOf("Month") != -1) {
        outDate = jsReplace(outDate, "Month", monthString);
    }
    // RETURN DAY OF MONTH (lowercase letters)
    else if (calDateFormat.indexOf("month") != -1) {
        outDate = jsReplace(outDate, "month", monthString.toLowerCase());
    }
    // RETURN DAY OF MONTH (UPPERCASE LETTERS)
    else if (calDateFormat.indexOf("MONTH") != -1) {
        outDate = jsReplace(outDate, "MONTH", monthString.toUpperCase());
    }

    // RETURN DAY OF MONTH 3-DAY ABBREVIATION (Initial Caps)
    if (calDateFormat.indexOf("Mon") != -1) {
        outDate = jsReplace(outDate, "Mon", monthAbbrev);
    }
    // RETURN DAY OF MONTH 3-DAY ABBREVIATION (lowercase letters)
    else if (calDateFormat.indexOf("mon") != -1) {
        outDate = jsReplace(outDate, "mon", monthAbbrev.toLowerCase());
    }
    // RETURN DAY OF MONTH 3-DAY ABBREVIATION (UPPERCASE LETTERS)
    else if (calDateFormat.indexOf("MON") != -1) {
        outDate = jsReplace(outDate, "MON", monthAbbrev.toUpperCase());
    }

    // RETURN WEEKDAY (Initial Caps)
    if (calDateFormat.indexOf("Weekday") != -1) {
        outDate = jsReplace(outDate, "Weekday", weekday);
    }
    // RETURN WEEKDAY (lowercase letters)
    else if (calDateFormat.indexOf("weekday") != -1) {
        outDate = jsReplace(outDate, "weekday", weekday.toLowerCase());
    }
    // RETURN WEEKDAY (UPPERCASE LETTERS)
    else if (calDateFormat.indexOf("WEEKDAY") != -1) {
        outDate = jsReplace(outDate, "WEEKDAY", weekday.toUpperCase());
    }

    // RETURN WEEKDAY 3-DAY ABBREVIATION (Initial Caps)
    if (calDateFormat.indexOf("Wkdy") != -1) {
        outDate = jsReplace(outDate, "Wkdy", weekdayAbbrev);
    }
    // RETURN WEEKDAY 3-DAY ABBREVIATION (lowercase letters)
    else if (calDateFormat.indexOf("wkdy") != -1) {
        outDate = jsReplace(outDate, "wkdy", weekdayAbbrev.toLowerCase());
    }
    // RETURN WEEKDAY 3-DAY ABBREVIATION (UPPERCASE LETTERS)
    else if (calDateFormat.indexOf("WKDY") != -1) {
        outDate = jsReplace(outDate, "WKDY", weekdayAbbrev.toUpperCase());
    }

    // SET THE VALUE OF THE FIELD THAT WAS PASSED TO THE CALENDAR
    calDateField.value = outDate;

    // GIVE FOCUS BACK TO THE DATE FIELD
    calDateField.focus();

    // CLOSE THE CALENDAR WINDOW
    top.newWin.close()
		
}

