// STANDARD FUNCTIONS USED IN ARTIC
// by Bernat Comerma

function windowLTWH(pWidth, pHeight, pXchange, pYchange)
{
  var x = (screen.width/2) - (pWidth/2);
  if (pXchange) x += pXchange;
  var y = (screen.height/2) - (pHeight/2);
  if (pYchange) y += pYchange;
  return ("left="+x+",top="+y+",width="+pWidth+",height="+pHeight);
}

// Returns an array with the location search params with option labels as indexes.
function getParams() 
{
  var dls = document.location.search;
  var idx = dls.indexOf('?');
  var params = [];
  if (idx != -1) 
  {
    var pairs = dls.substring(idx+1, dls.length).split('&');
    for (var i=0; i<pairs.length; i++) 
    {
      nameVal = pairs[i].split('=');
      params[unescape(nameVal[0])] = unescape(nameVal[1]);
    }
  }
  return params;
}

// Eliminates leading & trailing blanks
function trim(pStr) 
{
  if (! pStr) return pStr;
  var ini, fin, len = pStr.length;
  
  for (ini = 0; ini < len; ini++)
  {
    if (pStr.charAt(ini) != ' ') break;
  }
  for (fin = len - 1; fin > ini; fin--)
  {
    if (pStr.charAt(fin) != ' ') break;
  }
  return pStr.substring(ini, fin+1)
}

function sortArrayObjsCompareNums(a, b)
{
  return a[0] - b[0];
}

// Sorts an array of objects by a given attribute
// Returns a new array with the original objects sorted
function sortArrayObjs(aObjs, attr, isNumeric)
{
   var aVals = [];
   var tObjs = [];
   for (var i = 0; i < aObjs.length; i++)
   {
     aVals[i] = [eval("aObjs[i]." + attr), i];
   }
   if (isNumeric)
      aVals.sort(sortArrayObjsCompareNums);
   else    
      aVals.sort();
   for (var i=j=0, tmp=""; i < aVals.length; i++)
   {
     j = aVals[i][1];
     tObjs[i] = new Object(aObjs[j]);
   }
   return tObjs;
}
    
// Blinks a text. 5th generation browsers only.
function blinkText(cellId, text, css, timeOn, timeOff, recall)
{
  if ("undefined" == typeof(blinkOnOff))
  {
    blinkOnOff = 1
  }
  if (! recall)
  {
     theBlinkCell = document.getElementById(cellId);
     theBlinkCell.innerHTML = '<span class="'+ css + '">' + text + '</span>'
     timeOn = timeOn || 500;
     timeOff = timeOff || 250;
     blinkOnOff = 1;
  }
  theBlinkCell.style.visibility =  (blinkOnOff) ? 'visible' : 'hidden';
  setTimeout("blinkText(\""+cellId+"\",\""+text+"\",\""+css+"\","+timeOn+","+timeOff+","+1+")", ((blinkOnOff)? timeOn : timeOff));
  blinkOnOff = (! blinkOnOff);
}
