/* Extra Functions - Matteo Memelli - cipher@be4mind.com 02-11-2005 */

// Addon function to take actions on inserting new records
// Must be defined also if no action must be taken.

// ---                  START                      --
// --------------------------------------------------
// GENERAL FUNCTIONS (Enable/Disable page, etc.)
// --------------------------------------------------
function pkHelper(loggedUser, user, date)
{
//    var user = getElement(user);
//    var date = getElement(date);
//    var myDate = new Date();
// 
//    if (loggedUser)
//    {
//       // Suggest current user as the one to be inserted
//       var len=user.length;
//       for(var i=0;i<len;i++)
//       {
//          if (user.options[i].value == loggedUser)
//             user.options[i].selected = true;
//       }
//    }
//    // Suggest current date to be inserted
//    var nday = myDate.getDate();
//    if (nday < 10)
//    {
//       nday = "0" + nday;
//    }
//    var nmonth = myDate.getMonth() + 1;
//    if (nmonth < 10)
//    {
//       nmonth = "0" + nmonth;
//    }
//    var nyear = myDate.getYear();
//    if (nyear <= 99)
//      nyear= "19"+nyear;
//    if ((nyear > 99) && (nyear < 2000))
//     nyear += 1900;
//    date.value = nday + '-' + nmonth + '-' + nyear;
   return 1;
}

// Check that the date is not > today date
function checkDate(str_date) {
   myobj = getElement(str_date.id);
   today = new Date();
   mystr = str_date.value;
   date_array = mystr.split("-");
   mydate = new Date(date_array[2]-0,date_array[1]-1,date_array[0]-0);
   if (mydate > today)
   {
      alert('La Data indicata non e\' corretta');
      myobj.value='';
      return 0;
   }
   else
   {
      return 1;
   }
}

// Check that the date is not > today date
function checkIntegrity(cod_cliente, nome, cognome) {
   if (confirm('Codice Nuovo Cliente: '+cod_cliente+'\n'+'Nome: '+nome+'\n'+'Cognome: '+cognome+'\n\n'+' Nuovo inserimento/ricerca?'))
   {
      window.location.href="?q=anagragiche_mask";
   }
   else
   {
      return 1;
   }
}

// Returns a DOM object by its id
function getElement(id)
{
   var nava = (document.layers);
   var dom = (document.getElementById);
   var iex = (document.all);
   if (nava) 
   {
      var obj = document.id;
   }
   else if (dom) 
   {
      var obj = document.getElementById(id);
   }
   else if (iex) 
   {
      var obj = id;
   }
   return obj;
}

// Change style of primary keys when insert mode is active
function changePkStyle(element)
{
   element = element.name;
   var dom = (document.getElementById);
   var nava = (document.getElementById);
   var iex = (document.all);
   if (nava) { cach = document.element}
   else if (dom) {cach = document.getElementById(element).style}
   else if (iex) {cach = element.style}
   else if (iex) {cach = element.style}
   if (nava) { cach = document.element}
   style = document.getElementById(element).style;
   style.border = 'solid 1px #6e2';
   return;
}
// Set focus on a specified form element
function setFocus(formname, element)
{
   document.formname.element.focus();
   return;
}
// ---                  END                        --
// --------------------------------------------------
// GENERAL FUNCTIONS (Enable/Disable page, etc.)
// --------------------------------------------------



// ---                  START                      --
// --------------------------------------------------
// SHOW RESULTS FUNCTION (Enable/Disable page, etc.)
// --------------------------------------------------

// Set page opacity to 25%
function disable_page()
{
   var header = getElement('header');
   var content = getElement('content');
   var tab = getElement('tab-pane-1');
   var footer = getElement('footer');
   header.style.opacity = .25;
   header.style.filter = 'alpha(opacity=' + 25 + ')'; 
   content.style.filter = 'alpha(opacity=' + 25 + ')';
   content.style.opacity = .25;
   tab.style.filter = 'alpha(opacity=' + 25 + ')';
   tab.style.opacity = .25;
   footer.style.opacity = 0.25;
   footer.style.filter = 'alpha(opacity=' + 25 + ')';
   return;
}

// Set page opacity to 100%
function enable_page()
{
   var content = getElement('content');
   var header = getElement('header');
   var footer = getElement('footer');
   header.style.opacity = 1.0;
   header.style.filter = 'alpha(opacity=' + 100 + ')';
   content.style.opacity = 1.0;
   content.style.filter = 'alpha(opacity=' + 100 + ')';
   footer.style.opacity = 1.0;
   footer.style.filter = 'alpha(opacity=' + 100 + ')';
   return;
}

// Show a DOM object and disable page elements
function show(id)
{
   disable_page();
   disable_elements();
   var obj = getElement(id);
   obj = obj.style;
   obj.zIndex = 10;
   obj.visibility = "visible";
   obj.display = "inline";
}

// Hide a DOM object
function hide(id)
{
   var obj = getElement(id);
   obj = obj.style;
   obj.zIndex = -10;
   obj.visibility = "hidden";
   obj.display = "none";
   enable_page();
}

// TR over function
function trOver(element) {
  element.style.backgroundColor="#ff6464";
  return;
}
// TR out function
function trOut(element) {
  element.style.backgroundColor="transparent";
  return;
}

// Disable Links/Input/Select/Textarea elements
function disable_elements()
{
   // Replace Links with span elements
   removeN('a','header');
   removeN('a','content');
   removeN('a','footer');
   // Disable form elements
   var input = document.getElementById('content').getElementsByTagName("input");
   for(var i = 0; i < input.length; i++)
   {
      input[i].setAttribute("disabled","true");
   }
   var select = document.getElementById('content').getElementsByTagName("select");
   for(var i = 0; i < select.length; i++)
   {
      select[i].setAttribute("disabled","true");
   }
   var textarea = document.getElementById('content').getElementsByTagName("textarea");
   for(var i = 0; i < textarea.length; i++)
   {
      textarea[i].setAttribute("disabled","true");
   }
   return;
}

// Replace "tag" with span elements
function removeN(tag, contanier){
var cont = document.getElementById(contanier);
var tags = cont.getElementsByTagName(tag);
    for (var i=tags.length-1;i>=0;i--){
        var root = tags[i].parentNode;
        var kids = tags[i].childNodes;
        var eSpan = document.createElement('span')
        for(var j=0;j<kids.length;j++){
           clon = kids[j].cloneNode(true);
           eSpan.appendChild(clon)
        }
    root.replaceChild(eSpan,tags[i])
    }
}
// ---                  END                        --
// --------------------------------------------------
// SHOW RESULTS FUNCTION (Enable/Disable page, etc.)
// --------------------------------------------------



// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------

// Return keyCode of key pressed
function getkeyCode(e)
{
   if( !e ) {
       //if the browser did not pass the event information to the
       //function, we will have to obtain it from the event register
       if( window.event ) {
           //DOM
           e = window.event;
       } else {
           //TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT
           return;
       }
   }
   if( typeof( e.which ) == 'number' ) {
       //NS 4, NS 6+, Mozilla 0.9+, Opera
       e = e.which;
   } else if( typeof( e.keyCode ) == 'number'  ) {
       //IE, NS 6+, Mozilla 0.9+
       e = e.keyCode;
   } else if( typeof( e.charCode ) == 'number'  ) {
       //also NS 6+, Mozilla 0.9+
       e = e.charCode;
   } else {
       //TOTAL FAILURE, WE HAVE NO WAY OF OBTAINING THE KEY CODE
       return;
   }
   return e;
}

// Capture key presses
function keyCapture(id, manageKey)
{
   var obj = getElement(id);
   //FIRST, TELL THE BROWSERS TO REACT TO THE EVENT
   if( obj.captureEvents ) {
       //non IE
       if( Event.KEYPRESS ) {
           //NS 4, NS 6+, Mozilla 0.9+
           obj.captureEvents( Event.KEYPRESS );
       }
   }
   /* this next line tells the browser to detect a keyup
   event over the whole document and when it detects it,
   it should run the event handler function 'alertkey' */
   // document.onkeyup = alertkey;
   obj.onkeypress = eval(manageKey);
}

//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearData(e) {
    id = e;
    e = getkeyCode(e);
    var obj = id.target;
    if (e.target) var obj = e.target;
    else if (e.srcElement) var obj = e.srcElement;
    if (obj.nodeType == 3) // defeat Safari bug
       obj = obj.parentNode;

    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}

//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataNascita(e) {
    e = getkeyCode(e);
    var obj = getElement('DATA_NASCITA');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataTrattativa(e) {
    e = getkeyCode(e);
    var obj = getElement('DATA_TRATTATIVA');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataInizio(e) {
    e = getkeyCode(e);
    var obj = getElement('DADATA');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataFine(e) {
    e = getkeyCode(e);
    var obj = getElement('ADATA');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataAcquisto(e) {
    e = getkeyCode(e);
    var obj = getElement('DATA_ACQUISTO');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// ---                  START                      --
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
// --------------------------------------------------
// EVENT HANDLER FUNCTION
// --------------------------------------------------
//EVENT HANDLER FUNCTION TO PROCESS THE EVENT
function clearDataWarning(e) {
    e = getkeyCode(e);
    var obj = getElement('DATA_WARNING');
    //String.fromCharCode(e) -> return corresponding char
   if (e != 8)
   {
       if (obj.value.length == 2 || obj.value.length == 5)
       {
          obj.value += '-';
       }
   }
}
// --------------------------------------------------
// AJAX FUNCTIONS
// --------------------------------------------------
//AJAX REQUEST CREATOR
function createRequestObject() {
   var ro;
   var browser = navigator.appName;
   if(browser == "Microsoft Internet Explorer")
   {
      ro = new ActiveXObject("Microsoft.XMLHTTP");
   }
   else
   {
      ro = new XMLHttpRequest();
   }
   return ro;
}
var http = createRequestObject();

//AJAX SEND REQUEST
function sndReq(action, user, codice_ba, codice_alimento, 
                lotto_alimento, ddt, data_ddt, data_inizio, data_fine) {
   http.open('get', 'ajax.php?action='+action+'&USER='+user+'&CODICE_BA='+codice_ba+'&CODICE_ALIMENTO='+codice_alimento+'&LOTTO_ALIMENTO='+lotto_alimento+'&DDT='+ddt+'&DATA_DDT='+data_ddt+'&DATA_SOMMINISTRAZIONE_INIZIO='+data_inizio+'&DATA_SOMMINISTRAZIONE_FINE='+data_fine);
   http.onreadystatechange = handleResponse;
   http.send(null);
}
//AJAX SEND REQUEST
function sndReqDel(action, codice_ba, myoptions) {
   var myoptionsLen = myoptions.length;
   var selected = '';
   for(i = 0; i < myoptionsLen; i++) {
      if(myoptions.options[i].selected == true)
      {
            selected = selected + myoptions.options[i].value + ',';
      }
   }
   http.open('get', 'ajax.php?action='+action+'&CODICE_BA='+codice_ba+'&SELECTED='+selected);
   http.onreadystatechange = handleResponse;
   http.send(null);
}
//AJAX SEND REQUEST
function sndReqCopy(action, codice_ba, myoptions) {
   var myoptionsLen = myoptions.length;
   var selected = '';
   for(i = 0; i < myoptionsLen; i++) {
      if(myoptions.options[i].selected == true)
      {
            selected = selected + myoptions.options[i].value + ',';
      }
   }
   http.open('get', 'ajax.php?action='+action+'&CODICE_BA='+codice_ba+'&SELECTED='+selected);
   http.onreadystatechange = handleResponseCopy;
   http.send(null);
}
//AJAX SEND REQUEST
function sndReqPaste(action, user, codice_ba) {
   http.open('get', 'ajax.php?action='+action+'&USER='+user+'&CODICE_BA='+codice_ba);
   http.onreadystatechange = handleResponse;
   http.send(null);
}
//AJAX SEND REQUEST
function sndReqClick(action, codice_bm) {
   http.open('get', 'ajax.php?action='+action+'&CODICE_BM='+codice_bm);
   http.onreadystatechange = handleResponseClick;
   http.send(null);
}
//AJAX SEND REQUEST
function sndReqCheckUniv(action, marca_auricolare, codice_ba, codice_allevamento) {
   marca_auricolare = trim(marca_auricolare);
   http.open('get', 'ajax.php?action='+action+'&MARCA_AURICOLARE='+marca_auricolare+'&CODICE_BA='+codice_ba+'&CODICE_ALLEVAMENTO='+codice_allevamento);
   http.onreadystatechange = handleResponseCheckUniv;
   http.send(null);
}
//AJAX HANDLE REQUEST
function handleResponseCheckUniv() 
{
   if(http.readyState == 4)
   {
      var response = http.responseText;
      var update = new Array();

      if(response.indexOf('|' != -1))
      {
         update = response.split('|');
         if(update[1]=='NOVALIDATE')
         {
            getElement('alert').innerHTML = "<img src=\"themes/renzini/messagebox_warning.png\">";
            getElement('NUOVO_RECORD').disabled=1;
            return;
         }
         else
         {
            getElement('alert').innerHTML = "<img src=\"themes/renzini/fake_messagebox_warning.gif\">";
            return;
         }
      }
   }
}
//AJAX HANDLE REQUEST
function handleResponse() 
{
   if(http.readyState == 4)
   {
      var response = http.responseText;
      var update = new Array();

      if(response.indexOf('|' != -1))
      {
         update = response.split('*|*');
         //document.getElementById(update[0]).innerHTML = update[1];
         myselect = getElement(update[0]);
         //myselect = document.getElementById(update[0]);
         for(nOpt=0;nOpt=myselect.options.length;nOpt++) 
         {
            myselect.options[0] = null;
         }
         for(k=1;k<update.length-1;k++)
         {
            myopt = update[k].split('|');
            if(myopt)
               myselect.options[k-1] = new Option(myopt[1],myopt[0]);
         }
      }
   }
}
//AJAX HANDLE REQUEST
function handleResponseCopy() 
{
   if(http.readyState == 4)
   {
      var response = http.responseText;

      if(response.indexOf('|' != -1))
      {
         alert('COPIA ESEGUITA!')
      }
   }
}
//AJAX HANDLE REQUEST
function handleResponseClick()
{
   if(http.readyState == 4)
   {
      var response = http.responseText;
      var update = new Array();

      if(response.indexOf('|' != -1))
      {
         update = response.split('|');
         getElement(update[0]).value  = update[1];
         getElement(update[2]).value  = update[3];
         getElement(update[4]).value  = update[5];
         getElement(update[6]).value  = update[7];
         getElement(update[8]).value  = update[9];
         getElement(update[10]).value = update[11];
      }
   }
}

//AJAX SEND REQUEST SCHEDA RENZINI
function sndReqRenzini(action, user, codice_bk, codice_allevamento, codice_mattatoio, numero_macellazione,
                       data_macellazione, tabella_suini_spaiati, tabella_associazioni,codice_lotto_dest) {
   if(action == 'insert_suini_associati' || action == 'delete_suini_associati')
   {
        if(action == 'insert_suini_associati')
           var myoptions = tabella_suini_spaiati;
        else
           var myoptions = tabella_associazioni;
	var myoptionsLen = myoptions.length;
	var selected = '';
	for(i = 0; i < myoptionsLen; i++) {
	   if(myoptions.options[i].selected == true)
	   {
		selected = selected + myoptions.options[i].value + ',';
	   }
	}
   }
   http.open('get', 'ajax.php?action='+action+'&USER='+user+'&CODICE_BK='+codice_bk+'&CODICE_ALLEVAMENTO='+codice_allevamento+'&CODICE_MATTATOIO='+codice_mattatoio+'&NUMERO_MACELLAZIONE='+numero_macellazione+'&DATA_MACELLAZIONE='+data_macellazione+'&SELECTED='+selected+'&CODICE_BR='+tabella_associazioni+'&CODICE_LOTTO_DEST='+codice_lotto_dest);
   http.onreadystatechange = function() { handleResponseRenzini(action); };
   http.send(null);
}
//AJAX HANDLE REQUEST SCHEDA RENZINI
function handleResponseRenzini(action)
{
   if(http.readyState == 4)
   {
      var response = http.responseText;
      var update = new Array();

      if(action == 'fill_suini_spaiati')
      {
	if(response.indexOf('|' != -1))
	{
		update = response.split('*|*');
		myselect = getElement(update[0]);
		//Cancello le option
		for(nOpt=0;nOpt=myselect.options.length;nOpt++) 
		{
		myselect.options[0] = null;
		}
		//Popolo le option
		for(k=1;k<update.length-1;k++)
		{
		myopt = update[k].split('|');
		if(myopt)
		myselect.options[k-1] = new Option(myopt[1],myopt[0]);
		}
	}
      }
      else if(action == 'insert_suini_associati' || action == 'delete_suini_associati')
      {
	if(response.indexOf('|' != -1))
	{
		update_array = response.split('**|**');
                for(i=0;i<update_array.length;i++)
                {
			update = update_array[i].split('*|*');
			myselect = getElement(update[0]);
			//Cancello le option
			for(nOpt=0;nOpt=myselect.options.length;nOpt++) 
			{
			myselect.options[0] = null;
			}
			//Popolo le option
			for(k=1;k<update.length-1;k++)
			{
			myopt = update[k].split('|');
			if(myopt)
			myselect.options[k-1] = new Option(myopt[1],myopt[0]);
			}
                }
	}
      }
      else if(action == 'click_suini_associati')
      {
	if(response.indexOf('|' != -1))
	{
         update = response.split('|');
         getElement(update[0]).value  = update[1];
         getElement(update[2]).value  = update[3];
         getElement(update[4]).value  = update[5];
         getElement(update[6]).value  = update[7];
	}
      }
      else if(action == 'checkunivocita_lotto' || action == 'checkunivocita_lotto_codice')
      {
	if(response.indexOf('|' != -1))
	{
		update = response.split('|');
		if(update[1]=='NOVALIDATE')
		{
		getElement('alert').innerHTML = "<img src=\"themes/renzini/messagebox_warning.png\">";
		getElement('NUOVO_RECORD').disabled=1;
		return;
		}
		else
		{
		getElement('alert').innerHTML = "<img src=\"themes/renzini/fake_messagebox_warning.gif\">";
		return;
		}
	}
      }
   }
}


// MODIFICARE......

// TR over function
function trOver(element) {
  element.style.backgroundColor="#d9ad57";
  return;
}
// TR out function
function trOut(element) {
  element.style.backgroundColor="transparent";
  return;
}

// TR over function
function trOver2(element) {
  element.style.backgroundColor="#d9596e";
  return;
}

//Attiva/Disattiva la scheda Marche Auricolari
function manage_marche_auricolari() {
   if (document.RENZINI.UPDATABLE.value == '0')
   {
      document.RENZINI.CODICE_ALLEVAMENTO.disabled=1;
      document.RENZINI.CODICE_MATTATOIO.disabled=1;
      document.RENZINI.NUMERO_MACELLAZIONE.disabled=1;
      document.RENZINI.DATA_MACELLAZIONE.disabled=1;
      document.RENZINI.TABELLA_SUINI_SPAIATI.disabled=1;
      document.RENZINI.TABELLA_ASSOCIAZIONI.disabled=1;
   }
   else
   {
      document.RENZINI.CODICE_ALLEVAMENTO.disabled=0;
      document.RENZINI.CODICE_MATTATOIO.disabled=0;
      document.RENZINI.NUMERO_MACELLAZIONE.disabled=0;
      document.RENZINI.DATA_MACELLAZIONE.disabled=0;
      document.RENZINI.TABELLA_SUINI_SPAIATI.disabled=0;
      document.RENZINI.TABELLA_ASSOCIAZIONI.disabled=0;
   }
   return;
}
// Attiva/Disattiva la scheda alimentazione
function manage_alimentazione() {
   if (document.ALLEVATORI.UPDATABLE.value == '0')
   {
      document.ALLEVATORI.CODICE_ALIMENTO.disabled=1;
      document.ALLEVATORI.LOTTO_ALIMENTO.disabled=1;
      document.ALLEVATORI.DDT.disabled=1;
      document.ALLEVATORI.DATA_DDT.disabled=1;
      document.ALLEVATORI.DATA_SOMMINISTRAZIONE_INIZIO.disabled=1;
      document.ALLEVATORI.DATA_SOMMINISTRAZIONE_FINE.disabled=1;
      document.ALLEVATORI.TABELLA_RIASSUNTIVA.disabled=1;
      //document.getElementById('NEW_MANGIME').disabled=1;
      getElement('NEW_MANGIME').disabled=1;
   }
   else
   {
      document.ALLEVATORI.CODICE_ALIMENTO.disabled=0;
      document.ALLEVATORI.LOTTO_ALIMENTO.disabled=0;
      document.ALLEVATORI.DDT.disabled=0;
      document.ALLEVATORI.DATA_DDT.disabled=0;
      document.ALLEVATORI.DATA_SOMMINISTRAZIONE_INIZIO.disabled=0;
      document.ALLEVATORI.DATA_SOMMINISTRAZIONE_FINE.disabled=0;
      document.ALLEVATORI.TABELLA_RIASSUNTIVA.disabled=0;
      //document.getElementById('NEW_MANGIME').disabled=0;
      getElement('NEW_MANGIME').disabled=0;
   }
   return;
}

function checkFields() {
   if (trim(document.ALLEVATORI.CODICE_ALIMENTO.value) != ''
       &&
       trim(document.ALLEVATORI.LOTTO_ALIMENTO.value) != ''
       &&
       trim(document.ALLEVATORI.DDT.value) != ''
       &&
       trim(document.ALLEVATORI.DATA_DDT.value) != ''
       &&
       trim(document.ALLEVATORI.DATA_SOMMINISTRAZIONE_INIZIO.value) != ''
       &&
       trim(document.ALLEVATORI.DATA_SOMMINISTRAZIONE_FINE.value) != ''
      )
   {
      return true;
   }
   else
   {
      return false;
   }
}

function checkFieldsRenzini() {
   if (trim(document.RENZINI.CODICE_ALLEVAMENTO.value) != ''
       &&
       trim(document.RENZINI.CODICE_MATTATOIO.value) != ''
       &&
       trim(document.RENZINI.NUMERO_MACELLAZIONE.value) != ''
       &&
       trim(document.RENZINI.DATA_MACELLAZIONE.value) != ''
      )
   {
      return true;
   }
   else
   {
      return false;
   }
}
// Removes leading whitespaces
function LTrim( value ) {
   var re = /\s*((\S+\s*)*)/;
   return value.replace(re, "$1");
}

// Removes ending whitespaces
function RTrim( value ) {
   var re = /((\s*\S+)*)\s*/;
   return value.replace(re, "$1");
}

// Removes leading and ending whitespaces
function trim( value ) {
   return LTrim(RTrim(value));	
}
