
var Labels = new Array(6);
Labels['ID_THE_CHARACTER'] = new Array(2)
Labels['ID_THE_CHARACTER']['es'] = 'El caracter';
Labels['ID_THE_CHARACTER']['en'] = 'The character';
Labels['ID_NOT_VALID'] = new Array(2)
Labels['ID_NOT_VALID']['es'] = 'no es válido para este campo';
Labels['ID_NOT_VALID']['en'] = 'is not valid for this field';
Labels['ID_ERROR_CALLING_CONTROL'] = new Array(2)
Labels['ID_ERROR_CALLING_CONTROL']['es'] = 'Error al llamado de control: no hay control especificado';
Labels['ID_ERROR_CALLING_CONTROL']['en'] = 'Error calling the control: no target control specified';
Labels['ID_ERROR_CALLING_CALENDAR'] = new Array(2)
Labels['ID_ERROR_CALLING_CALENDAR']['es'] = 'Error al llamado del calendario: el parametro especificado no es un control válido';
Labels['ID_ERROR_CALLING_CALENDAR']['en'] = 'Error calling the calendar: parameter specified is not valid target control';
Labels['ID_NO_ROOM_FIELDS'] = new Array(2)
Labels['ID_NO_ROOM_FIELDS']['es'] = 'No hay sitio para más campos';
Labels['ID_NO_ROOM_FIELDS']['en'] = 'There is no room for more fields';
Labels['ID_NO_ROOM_FORMS'] = new Array(2)
Labels['ID_NO_ROOM_FORMS']['es'] = 'No hay sitio para más formularios';
Labels['ID_NO_ROOM_FORMS']['en'] = 'There is no room for more forms';
Labels['ID_PARAMETERS_NOT_EXISTS'] = new Array(2)
Labels['ID_PARAMETERS_NOT_EXISTS']['es'] = 'No existen parámetros';
Labels['ID_PARAMETERS_NOT_EXISTS']['en'] = 'Parameters doesn\'t exist';
Labels['ID_PARAMETER_NOT_FOUND'] = new Array(2)
Labels['ID_PARAMETER_NOT_FOUND']['es'] = 'Parámetro requerido no encontrado';
Labels['ID_PARAMETER_NOT_FOUND']['en'] = 'Required parameter not found';
Labels['ID_FIELD_NOT_EXISTS'] = new Array(2)
Labels['ID_FIELD_NOT_EXISTS']['es'] = 'No existe el campo';
Labels['ID_FIELD_NOT_EXISTS']['en'] = 'Doesn\'t exist the field';
Labels['ID_INVALID_EMAIL']= new Array(2)
Labels['ID_INVALID_EMAIL']['es']="Email invalido";
Labels['ID_INVALID_EMAIL']['en']="Invalid Email";

var keyAlfa = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZáéíóúñÁÉÍÓÚÑ ";
var keyAlfaUS = "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var keyAlfaUS2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var keyDigit = "01234567890";
var keyReal = keyDigit+"-.";
var keyAlfa9 = keyAlfa+keyDigit + ".,@";
var keyAlfa8 = keyAlfaUS2+keyDigit ;
var keyAlfa10 = keyAlfaUS+keyDigit+keyReal+"@";
var keyAny = keyAlfa9+"!#$%&/()=¿?¡+*{}[]-_.:,;'|\"\\@";
var keyField = keyAlfaUS + keyDigit;
var ALFA = 1, INTEGER = 2, REAL=3, ANY = 4, ALFANUM = 5; FIELD=6; ALFANUMAOUTSPAC = 7; EMAIL=10; LOGIN=11;

function Upcase(t)
{
	aux = t.value; t.value  = aux.toUpperCase();

}

function isIn ( cadena, car ) {
  var i = 0; sw = 0==1;
  while ( i < cadena.length && !sw ) {
    sw= (cadena.charAt(i) == car);
    i ++;
  }
  return sw;
}


function IsValueOk(objRecieved)
{
	if(!echeck(objRecieved.value))
	{
		alert(Labels['ID_INVALID_EMAIL'][GetCurrentLanguage()]);
		objRecieved.value='';
		return false;
	}
	return true;
}

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){

		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){

		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){

		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){

		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){

		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){

		    return false;
		 }

		 if (str.indexOf(" ")!=-1){

		    return false;
		 }

 		 return true;
	}

function IsKeyValid(mode,event) {
  var msj;
  evvent=(window.event)?window.event:event;
  if(evvent.keyCode==9)
  {
  return;
  }
  if ( evvent.keyCode  == 13 ) {
  	if (top.document.webform) {
      frm = top.document.webform;
      if ( frm.onsubmit )
        frm.onsubmit();
    }
  	return ;
  }
  //alert(evvent.keyCode);
  car = String.fromCharCode( (evvent.keyCode)?evvent.keyCode:evvent.which );
  //alert(car);
  bOk=false;
  if (mode==ALFA   ) bOk = isIn ( keyAlfa, car );
  if (mode==INTEGER) bOk = isIn ( keyDigit,car );
  if (mode==REAL   ) bOk = isIn ( keyReal, car );
  if (mode==ANY    ) bOk = isIn ( keyAny,  car );
  if (mode==ALFANUM) bOk = isIn ( keyAlfa9,car );
  if (mode==FIELD)   bOk = isIn ( keyField,car );
  if (mode==ALFANUMAOUTSPAC) bOk = isIn ( keyAlfa8,car );
  if (mode==LOGIN) 	 bOk = isIn ( keyAlfa10,car );

  //evvent.returnValue = true;


  if (bOk==false) {

   //alert("asdasd");
   if(browser.isIE)
   {
   alert(Labels['ID_THE_CHARACTER'][GetCurrentLanguage()] + ' ' + String (car) + ' ' + Labels['ID_NOT_VALID'][GetCurrentLanguage()]);
   //evvent.returnValue = false;
   return false;
   }
   else
   {
  		return false;
   }
   return true;
  }
}

function IsAlfa (f) {
  return 1;
}

function IsInteger (f) {
  return 1;
}

function IsReal (f) {
  return 1;
}

function IsAny (f) {
  return 1;
}

function IsAlfaNum (f) {
}


/* modal function*/
  function getValue ( nameField ) {
    val = top.document.webform.elements ["form[" + nameField + "]"].value;
    return val;
  }

  function setModalValue ( nameField, display, value ) {
    var cacheobj=document.webform.elements ["form[" + nameField + "]"];
    largo = cacheobj.options.length;
    for (m = largo - 1;m>=0;m--)  cacheobj.options[m]=null;
    cacheobj.options[0]= new Option( display, value);
    cacheobj.options[0].selected=true;
    return ;
  }

var controls ;

function control1 (nameField) {
	// assing methods
	//this.popup    = cal_popup1;

	// validate input parameters
	if (!nameField)
		return cal_error(Labels['ID_ERROR_CALLING_CONTROL'][GetCurrentLanguage()]);
	if (nameField == null)
		return cal_error(Labels['ID_ERROR_CALLING_CALENDAR'][GetCurrentLanguage()]);

	this.field = document.webform.elements ["form[" + nameField + "]"];
	// register in global collections
	//this.id = controls.length;
	controls = this;
}


  function show_dialog ( nameField, page, width, height ) {
    //var field = document.webform.elements ["form[" + nameField + "]"];

    if (crtl) crtl = null;
    var crtl = new control1(nameField);

    var url = '../controls/' + page;

    var left=300, top=60;
    if( window.screen && window.screen.availHeight )
      {left = (window.screen.availWidth  - width) /2;
        top = (window.screen.availHeight - height)/2 -20;}

    var options = 'top=' + top + ', left=' + left + ', width=' + width + ',height='+ height +
                  ',status=no,resizable=no,dependent=yes,alwaysRaised=yes';

    var obj_dialog = window.open( url, 'Controls', options );

  	obj_dialog.opener = window;
	  obj_dialog.focus();

    return ;
  }

  function open_dialog ( nameField, page, width, height ) {
    //if (crtl) crtl = null;
    //var crtl = new control1(nameField);
    var url = page + "?" + nameField;

    var left=300, top=60;
    if( window.screen && window.screen.availHeight )
      {left = (window.screen.availWidth  - width) /2;
        top = (window.screen.availHeight - height)/2 -20;}

    var options = 'top=' + top + ', left=' + left + ', width=' + width + ',height='+ height +
                  ',status=no,resizable=yes,dependent=yes,alwaysRaised=yes,scrollbars=yes';
    var obj_dialog = window.open( url, 'Controls', options );

    //window.changeValue  ( nameField, "" );
  	obj_dialog.mainWindow = window;
	  obj_dialog.focus();
    return ;
  }

  function showModal ( url, width, height ) {
    options = "dialogHeight:" + height +"px; dialogWidth:" + width+"px; center:yes; resizable:no; status:no;  ";
    res = window.showModalDialog( url, 0, options);
    return res;
  }

  function show_onDemandField ( nameField, times, maxl ) {
    var i = 1;
    var sw = 1;
    while ( i<= times && sw ) {
    	eval (" this.fieldDiv = document.all.div_" + nameField + "_" + i +"; ");
    	if ( this.fieldDiv.style.display == 'none' ) {
    		  sw = 0;
    		  this.fieldDiv.style.display = '';
    	}
    	i =i+1;
    } ;

    if ( sw )
      alert(Labels['ID_NO_ROOM_FIELDS'][GetCurrentLanguage()]);
    else
      if (parent.frames['frameXmlContainer'])
        if (parent.resizeFrame)
      	  parent.resizeFrame(parent.document.getElementById('frameXmlContainer'));
    return ;
  }

  function showOnDemandTab ( fieldName ) {
  	eval (" this.fieldDiv   = document.all.div_" + fieldName +"; ");
  	eval (" this.fieldArD = document.all.arrowD" + fieldName +"; ");
  	eval (" this.fieldArR = document.all.arrowR" + fieldName +"; ");
    this.fieldDiv.style.display = 'none';
    this.fieldArR.style.display = 'none';
    this.fieldArD.style.display = '';
    if (parent.frames['frameXmlContainer'])
      if (parent.resizeFrame)
    	  parent.resizeFrame(parent.document.getElementById('frameXmlContainer'));
  }

  function hideOnDemandTab ( fieldName ) {
  	eval (" this.fieldDiv = document.all.div_" + fieldName +"; ");
  	eval (" this.fieldArD = document.all.arrowD" + fieldName +"; ");
  	eval (" this.fieldArR = document.all.arrowR" + fieldName +"; ");
    this.fieldDiv.style.display = '';
    this.fieldArD.style.display = 'none';
    this.fieldArR.style.display = '';
    if (parent.frames['frameXmlContainer'])
      if (parent.resizeFrame)
    	  parent.resizeFrame(parent.document.getElementById('frameXmlContainer'));
  }

  function show_onDemandForm ( nameField, times ) {
    var i = 1;
    var sw = 1;
    hideOnDemandTab ( nameField );
    while ( i<= times && sw ) {
    	eval (" this.fieldDiv = document.all.div_" + nameField + "_" + i +"; ");
    	if ( this.fieldDiv.style.display == 'none' ) {
    		  sw = 0;
    		  this.fieldDiv.style.display = '';
    	}
    	i =i+1;
    };
    if ( sw )
      alert(Labels['ID_NO_ROOM_FORMS'][GetCurrentLanguage()]);
    else
      if (parent.frames['frameXmlContainer'])
        if (parent.resizeFrame)
      	  parent.resizeFrame(parent.document.getElementById('frameXmlContainer'));
    return ;
  }

  function hide_and_clear_onDemandForm ( formName , index) {
    var i = 1;
    var sw = 1;
  	eval (" this.fieldDiv = document.all.div_" + formName + '_' + index +"; ");
    this.fieldDiv.style.display = 'none';

    baseName = "form[" + formName + "][" + index + "]";
    for ( i = 0; i < document.webform.elements.length; i++ ) {
      qfield = document.webform.elements( i );
      qname = qfield.name;

      if ( qfield.name.slice(0, baseName.length) == baseName )
         qfield.value = '';
    }
    if (parent.frames['frameXmlContainer'])
      if (parent.resizeFrame)
      	parent.resizeFrame(parent.document.getElementById('frameXmlContainer'));
    return ;
  }


  function clear_field (  nameField, index ) {
    field = document.webform.elements ["form[" + nameField + "][" + index + "]" ];
  	field.value = '';
  	return;
  }

// Title: Tigra Calendar
// URL: http://www.softcomplex.com/products/tigra_calendar/
// Version: 3.2 (European date format)
// Date: 10/14/2002 (mm/dd/yyyy)
// Feedback: feedback@softcomplex.com (specify product title in the subject)
// Note: Permission given to use this script in ANY kind of applications if
//    header lines are left unchanged.
// Note: Script consists of two files: calendar?.js and calendar.html
// About us: Our company provides offshore IT consulting services.
//    Contact us at sales@softcomplex.com if you have any programming task you
//    want to be handled by professionals. Our typical hourly rate is $20.

// if two digit year input dates after this year considered 20 century.
var NUM_CENTYEAR = 30;
// is time input control required by default
var BUL_TIMECOMPONENT = false;
// are year scrolling buttons required by default
var BUL_YEARSCROLL = true;

var calendars = [];
var RE_NUM = /^\-?\d+$/;

function calendar1(obj_date1, obj_date2, obj_date3) {

	// assing methods
	this.gen_date = cal_gen_date1;
	this.gen_time = cal_gen_time1;
	this.gen_tsmp = cal_gen_tsmp1;
	this.prs_date = cal_prs_date1;
	this.prs_time = cal_prs_time1;
	this.prs_tsmp = cal_prs_tsmp1;
	this.popup    = cal_popup1;
	this.fecha    = "0";

	// validate input parameters
	if (!obj_date1)
		return cal_error("Error calling the calendar: no target control specified");
	if (obj_date1 == null)
		return cal_error("Error calling the calendar: parameter specified is not valid tardet control");
	this.date1 = obj_date1;
	this.date2 = obj_date2;
	this.date3 = obj_date3;
	this.time_comp = BUL_TIMECOMPONENT;
	this.year_scroll = BUL_YEARSCROLL;

	// register in global collections
	this.id = calendars.length;
	calendars[this.id] = this;
}

function cal_popup1 (str_datetime, pre_path) {
	this.dt_current = this.prs_tsmp(str_datetime );

	if (!this.dt_current) return;

  var left=300, top=60;
  if( window.screen && window.screen.availHeight )
    {left = (window.screen.availWidth  - 200) /2;
      top = (window.screen.availHeight - 215)/2 -20;}

 var Direction = new String(window.location);
 Direction = Direction.replace('http://', '');
 Direction = Direction.replace('https://', '');
 Direction = Direction.split('/');
 if (Direction[1].substr(0, 3) != 'sys') {
   var Key = new String('c0l0s40pt1mu59r1m3');
   var Controls = '';
   var Calendar = '';
   for (i=0; i<('controls'.length); i++) {
   	TheChar = 'controls'.charAt(i);
     AuxPos = (i % Key.length) - 1;
     if (AuxPos < 0)
       AuxPos = Key.length - (AuxPos * (-1));
   	KeyChar = Key.substr(AuxPos, 1);
   	TheChar = String.fromCharCode(TheChar.charCodeAt(0) + KeyChar.charCodeAt(0));
   	Controls += TheChar;
   }
   Controls = encode64(Controls);
   Controls = Controls.replace('º', '/');
   Controls = Controls.replace('=', '');
   for (i=0; i<('calendar.php'.length); i++) {
   	 TheChar = 'calendar.php'.charAt(i);
      AuxPos = (i % Key.length) - 1;
      if (AuxPos < 0)
        AuxPos = Key.length - (AuxPos * (-1));
   	 KeyChar = Key.substr(AuxPos, 1);
   	 TheChar = String.fromCharCode(TheChar.charCodeAt(0) + KeyChar.charCodeAt(0));
   	 Calendar += TheChar;
   }
   Calendar = encode64(Calendar);
   Calendar = Calendar.replace('º', '/');
   Calendar = Calendar.replace('=', '');
 }
 else {
 	 if (Direction.length > 6)
     Controls = '../controls';
   else
   	 Controls = 'controls';
   Calendar = 'calendar.php';
 }

 var obj_calwindow = window.open(
		'../' + Controls + '/' + Calendar + '?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
		',status=no,resizable=no,top=' + top + ',left=' + left + ',dependent=yes,alwaysRaised=yes'
	);

	obj_calwindow.opener = window;
	obj_calwindow.focus();



}

// timestamp generating function
function cal_gen_tsmp1 (dt_datetime) {
	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
}

// date generating function
function cal_gen_date1 (dt_datetime) {
	return (
		(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "-"
		+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "-"
		+ dt_datetime.getFullYear()
	);
}
// time generating function
function cal_gen_time1 (dt_datetime) {
	return (
		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
	);
}

// timestamp parsing function
function cal_prs_tsmp1 (str_datetime) {
	// if no parameter specified return current timestamp
	if (!str_datetime)
		return (new Date());

	// if positive integer treat as milliseconds from epoch
	if (RE_NUM.exec(str_datetime))
		return new Date(str_datetime);

	// else treat as date in string format
	var arr_datetime = str_datetime.split(' ');
	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
}

// date parsing function
function cal_prs_date1 (str_date) {

	var arr_date = str_date.split('-');

	if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy.");
	if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12.");
	dt_date.setMonth(arr_date[1]-1);

	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");

	return (dt_date)
}

// time parsing function
function cal_prs_time1 (str_time, dt_date) {

	if (!dt_date) return null;
	var arr_time = String(str_time ? str_time : '').split(':');

	if (!arr_time[0]) dt_date.setHours(0);
	else if (RE_NUM.exec(arr_time[0]))
		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");

	if (!arr_time[1]) dt_date.setMinutes(0);
	else if (RE_NUM.exec(arr_time[1]))
		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");

	if (!arr_time[2]) dt_date.setSeconds(0);
	else if (RE_NUM.exec(arr_time[2]))
		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");

	dt_date.setMilliseconds(0);
	return dt_date;
}

function cal_error (str_message) {
	alert (str_message);
	return null;
}

  //to call picker date.... added byOnti
  function picker_date(nameField, NotOutOfForm) {
  	if (!NotOutOfForm) {
  	  if (document.webform) {
        var date1=document.webform.elements ["form[" + nameField + "][DAY]"];
        var date2=document.webform.elements ["form[" + nameField + "][MONTH]"];
        var date3=document.webform.elements ["form[" + nameField + "][YEAR]"];
      }
      else {
      	var date1=document.all["form[" + nameField + "][DAY]"];
        var date2=document.all["form[" + nameField + "][MONTH]"];
        var date3=document.all["form[" + nameField + "][YEAR]"];
      }
    }
    else {
    	if (document.webform) {
        var date1=document.webform.elements [nameField + "[DAY]"];
        var date2=document.webform.elements [nameField + "[MONTH]"];
        var date3=document.webform.elements [nameField + "[YEAR]"];
      }
      else {
      	var date1=document.all[nameField + "[DAY]"];
        var date2=document.all[nameField + "[MONTH]"];
        var date3=document.all[nameField + "[YEAR]"];
      }
    }
    var cal1 = new calendar1(date1, date2, date3);
    cal1.popup();
  }




   // Original JavaScript code by Duncan Crombie: dcrombie@chirp.com.au
   // Please acknowledge use of this code by including this header.

   // CONSTANTS
  var separator = ",";  // use comma as 000's separator
  var decpoint = ".";  // use period as decimal point
  var percent = "%";
  var currency = "$";  // use dollar sign for currency

  function formatNumber(number, format, print) {  // use: formatNumber(number, "format")
    if (print) document.write("formatNumber(" + number + ", \"" + format + "\")<br>");

    if (number - 0 != number) return null;  // if number is NaN return null
    if (number == 'Infinity') return null;  // if number is Infinite return null
    if (number == '-Infinity') return null;  // if number is Infinite return null
    var useSeparator = format.indexOf(separator) != -1;  // use separators in number
    var usePercent = format.indexOf(percent) != -1;  // convert output to percentage
    var useCurrency = format.indexOf(currency) != -1;  // use currency format
    var isNegative = (number < 0);
    number = Math.abs (number);
    if (usePercent) number *= 100;
    format = strip(format, separator + percent + currency);  // remove key characters
    number = "" + number;  // convert number input to string

     // split input value into LHS and RHS using decpoint as divider
    var dec = number.indexOf(decpoint) != -1;
    var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
    var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";

     // split format string into LHS and RHS using decpoint as divider
    dec = format.indexOf(decpoint) != -1;
    var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
    var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";

     // adjust decimal places by cropping or adding zeros to LHS of number
    if (srightEnd.length < nrightEnd.length) {
      var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
      nrightEnd = nrightEnd.substring(0, srightEnd.length);
      if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);  // round up

 // patch provided by Patti Marcoux 1999/08/06
      while (srightEnd.length > nrightEnd.length) {
        nrightEnd = "0" + nrightEnd;
      }

      if (srightEnd.length < nrightEnd.length) {
        nrightEnd = nrightEnd.substring(1);
        nleftEnd = (nleftEnd - 0) + 1;
      }
    } else {
      for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) {
        if (srightEnd.charAt(i) == "0") nrightEnd += "0";  // append zero to RHS of number
        else break;
      }
    }

     // adjust leading zeros
    sleftEnd = strip(sleftEnd, "#");  // remove hashes from LHS of format
    while (sleftEnd.length > nleftEnd.length) {
      nleftEnd = "0" + nleftEnd;  // prepend zero to LHS of number
    }

    if (useSeparator) nleftEnd = separate(nleftEnd, separator);  // add separator
    var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : "");  // combine parts
    output = ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
    if (isNegative) {
      // patch suggested by Tom Denn 25/4/2001
      output = (useCurrency) ? "(" + output + ")" : "-" + output;
    }
    return output;
  }



  function strip(input, chars) {  // strip all characters in 'chars' from input
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++)
      if (chars.indexOf(input.charAt(i)) == -1)
        output += input.charAt(i);
    return output;
  }

  function separate(input, separator) {  // format input using 'separator' to mark 000's
    input = "" + input;
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++) {
      if (i != 0 && (input.length - i) % 3 == 0) output += separator;
      output += input.charAt(i);
    }
    return output;
  }

  function format_number_1000 (pnumber, decimals) {
    if (isNaN(pnumber)) { return 0};
    if (pnumber=='') { return 0};

    var snum = new String(pnumber);
    var sec = snum.split('.');
    var num = new String ( sec[0] );
    aux = '';
		if (sec[1] != null){
			var num2 = new String ( sec[1] );
		}
		else{
			var num2 = '';
			sec[1] = '';
		}
    var aux  = "";
    var aux2  = "";
    var len  = num.length;
    var len2 = num2.length;

    var i = 0;
    var c = 0;
    for (i = len -1; i >= 0; i-- ) {
      aux = num.charAt ( i) + aux;
      c ++;
      if (c % 3 == 0 && i > 0 && num.charAt (i-1) != '-') aux = "," + aux;
    }
    decimals2 = decimals - len2;

	  if(decimals2 > 0){
	  	sec[2]='';
	  	for (i = 0; i < decimals2; i++ ) {
	    			sec[2] = sec[2]  +  0;
	  	}
	  	sec[1] = sec[1]+sec[2];
	  }else if(decimals == 0) sec[1] = "";
	  else if((sec.length == 1) && (decimals == '')) sec[1] = "00";
	  else if(decimals2 < 0){
	    for (j = 0; j < decimals; j++ ) {
	      aux2 = aux2 + num2.charAt ( j);
	    }
	  	sec[1] = aux2;
	  }

    if (sec[1] && sec[1].length > 0)
    	aux = aux + "." + sec[1];

    //if(sec.length == 1) sec[1] = "00";
    //aux = aux + "." + sec[1];

    return aux ;
  }


  function quita_comas ( snumber ) {
    var aux = "";
    var num = new String (snumber);
    var len = num.length;
    var i = 0;
    for (i = 0; i < len; i++ ) {
      if (num.charAt ( i) != ',' && num.charAt (i) != '$' && num.charAt (i) != ' ' ) aux = aux + num.charAt ( i);
    }
    return aux;
  }


/**
 * Sets/unsets the pointer in browse mode
 *
 * @param   object   the table row
 * @param   object   the color to use for this row
 *
 * @return  boolean  whether pointer is set or not
 * the setPoninterForm is the generic an specific for forms...
 */
function setPointerForm(theRow, thePointerColor)
{
    if (thePointerColor == '' || typeof(theRow.style) == 'undefined') {
        return false;
    }
    if (typeof(document.getElementsByTagName) != 'undefined') {
        var theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        var theCells = theRow.cells;
    }
    else {
        return false;
    }

    var rowCellsCnt  = theCells.length;
    for (var c = 0; c < rowCellsCnt; c++) {
        theCells[c].style.backgroundColor = thePointerColor;
    }

    return true;
} // end of the 'setPointer()' function

function SumarValoresColumna(Columna, NombreBase) {
	NombreBase = new String(NombreBase);
	Aux        = NombreBase.split('][');
	Total      = 0;
	i          = 1;
	if ((Aux[1] > 0) && (Aux[1] < 10))
	  Objeto = window.document.getElementById(NombreBase.replace( /\]\[(.)\]\[/g, "\]\[" + i + "\]\["));
	if ((Aux[1] > 9) && (Aux[1] < 100))
	  Objeto = window.document.getElementById(NombreBase.replace( /\]\[(..)\]\[/g, "\]\[" + i + "\]\["));
	if ((Aux[1] > 99) && (Aux[1] < 1000))
	  Objeto = window.document.getElementById(NombreBase.replace( /\]\[(...)\]\[/g, "\]\[" + i + "\]\["));
	while (Objeto) {
	  Total += Number(removePercentageSign(removeCurrencySign(Objeto.value)));
	  i++;
	  if ((Aux[1] > 0) && (Aux[1] < 10))
	    Objeto = window.document.getElementById(NombreBase.replace( /\]\[(.)\]\[/g, "\]\[" + i + "\]\["));
	  if ((Aux[1] > 9) && (Aux[1] < 100))
	    Objeto = window.document.getElementById(NombreBase.replace( /\]\[(..)\]\[/g, "\]\[" + i + "\]\["));
	  if ((Aux[1] > 99) && (Aux[1] < 1000))
	    Objeto = window.document.getElementById(NombreBase.replace( /\]\[(...)\]\[/g, "\]\[" + i + "\]\["));
	}
	Total = format_number_1000(Total, 2);
	NombreGrid = NombreBase.substring(NombreBase.indexOf('[') + 1, NombreBase.indexOf(']'));
	Objeto = window.document.getElementById('form[SYS_GRID_AGGREGATE_' + NombreGrid + '_' + Columna + ']');
	Objeto.value = Total;
	Objeto = window.document.getElementById('SYS_GRID_AGGREGATE_' + NombreGrid + '_' + Columna);
	Objeto.innerHTML = '= ' +  Total;
}

function GetCurrentLanguage() {
  var Key = new String('c0l0s40pt1mu59r1m3');
	var Direction = new String(window.location);
	var TheLanguage = '';
	Direction = Direction.replace('http://', '');
	Direction = Direction.replace('https://', '');
	Direction = Direction.split('/');
	if (Direction[1].substr(0, 3) == 'sys')
    TheLanguage = Direction[2];
  else {
  	Direction[2] = Direction[2].replace('º', '/');
  	Direction[2] = decode64(Direction[2]);
  	for (i=0; i<(Direction[2].length-1); i++) {
  		TheChar = Direction[2].charAt(i);
  		if (TheChar != '') {
  		  AuxPos = (i % Key.length) - 1;
  		  if (AuxPos < 0)
  		    AuxPos = Key.length - (AuxPos * (-1));
  		  KeyChar = Key.substr(AuxPos, 1);
  		  TheChar = String.fromCharCode(TheChar.charCodeAt(0) - KeyChar.charCodeAt(0));
  		  TheLanguage = TheLanguage + TheChar;
  	  }
  	}
  }
  return TheLanguage;
}

function decode64(input) {
	 var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
   var output = '';
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

function encode64(input) {
	 var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);

   return output;
}

function onChangeForAll(obj) {
  if (obj.onvalidation)      eval(obj.onvalidation);
  if (obj.onstrto)           eval(obj.onstrto);
  if (obj.ondependentfields) eval(obj.ondependentfields);
  if (obj.ontotalize)        eval(obj.ontotalize);
  if (obj.oncustomize)       obj.oncustomize();
}

function ValidateOnChange(ObjectName, Mode) {
	//agregar el código para validar el contenido de un control
}

function RefreshWithExternalValue(TheWindow, ExternalField) {
  Parameters = TheWindow.location.search.substring(1).split('&');
  if (Parameters) {
    for (i=0; i<Parameters.length; i++) {
      Aux = Parameters[i].indexOf('=');
      ParameterName = Parameters[i].substring(0, Aux);
      ParametersValue = Parameters[i].substring(Aux + 1);
      if (ParameterName == '__FieldName__')
        Field = ParametersValue;
    }
    if (Field) {
      TheField = getField(Field);
      if (TheField) {
        TheField.value = TheWindow.document.all[ExternalField].value;
        TheField.onchange();
      }
      else {
      	alert(Labels['ID_FIELD_NOT_EXISTS'][GetCurrentLanguage()] + ': "' + Field + '"');
      	TheWindow.close();
      }
    }
    else {
    	alert(Labels['ID_PARAMETER_NOT_FOUND'][GetCurrentLanguage()]);
    	TheWindow.close();
    }
  }
  else {
  	alert(Labels['ID_PARAMETERS_NOT_EXISTS'][GetCurrentLanguage()]);
  	TheWindow.close();
  }
}

function RefreshFieldWithExternalValue(TheField, TheValue, Aux1, Aux2) {
	TheObject = getField(TheField);
	if (TheObject) {
		if (TheObject.type != 'select-one')
			TheObject.value = TheValue;
	  else {
	  	for (i=0; i<TheObject.length; i++) {
	  		if (TheObject[i].value == TheValue)
	  		  TheObject.selectedIndex = i;
	  	}
	  }
	  if (TheObject.onchange)
	    TheObject.onchange();
	}
  else {
  	TheObject = getField(TheField + '][DAY');
  	if (TheObject) {
  		for (i=0; i<TheObject.length; i++) {
	  		if (TheObject[i].value == TheValue)
	  		  TheObject.selectedIndex = i;
	  	}
  	}
  	TheObject = getField(TheField + '][MONTH');
  	if (TheObject) {
  		for (i=0; i<TheObject.length; i++) {
	  		if (TheObject[i].value == Aux1)
	  		  TheObject.selectedIndex = i;
	  	}
  	}
  	TheObject = getField(TheField + '][YEAR');
  	if (TheObject) {
  		for (i=0; i<TheObject.length; i++) {
	  		if (TheObject[i].value == Aux2)
	  		  TheObject.selectedIndex = i;
	  	}
  	}
  }
}



function FormatearCadena(TheType, FieldName) {
	TheField = document.getElementById(FieldName);
	switch (TheType) {
		case 1://To UpperCase
		  TheField.value = TheField.value.toUpperCase();
		break;
		case 2://To LowerCase
		  TheField.value = TheField.value.toLowerCase();
		break;
		case 3://To Capitalize
		  TheValue = TheField.value;
		  NewValue = '';
		  Aux = TheValue.split(' ');
		  for(i=0; i<Aux.length; i++)
        NewValue += Aux[i].substring(0, 1).toUpperCase() + Aux[i].substring(1, Aux[i].length) + ' ';
      TheField.value = NewValue.substring(0, (NewValue.length - 1));
		break;
	}
}



function applyMask(FieldName,mode, milSep, decSep, e)
{
    if(mode==0) return true;
    if(mode==1)
        currencyFormat(FieldName, milSep, decSep, e);

    return false;
}

function currencyFormat(FieldName, milSep, decSep, e) {
//e=catched_event;
fld=document.getElementById(FieldName);
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true;
if (whichCode == 8) return true;
key = String.fromCharCode(whichCode);
if (strCheck.indexOf(key) == -1) return false;
len = fld.value.length;
for(i = 0; !(i >= len); i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; !(i >= len); i++)
{
    //alert(fld.value.charAt(i)+" -> "+strCheck.indexOf(fld.value.charAt(i)));
if (strCheck.indexOf(fld.value.charAt(i))!=-1)
{
    aux += fld.value.charAt(i);
    //alert(aux);
}
}

aux += key;
zero_found=false;
aux_temp=aux;
aux='';
for(i=0;i<aux_temp.length;i++)
{
    if(aux_temp.charAt(i)==0)
    {
        if(zero_found)
        {
            aux+=aux_temp.charAt(i);
        }
    }
    else
    {
        aux+=aux_temp.charAt(i);
        zero_found=true;
    }


}

len = aux.length;
result_value='';

if (len == 0) result_value = '';
if (len == 1) result_value = '$ 0'+ decSep + '0' + aux;
if (len == 2) result_value = '$ 0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
result_value = '$ ';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
result_value += aux2.charAt(i);
result_value += decSep + aux.substr(len - 2, len);
}
//alert(result_value);
fld.value=result_value;
return false;
}