// Juan Matias de la Camara Beovide
// TJF - Tiger JavaScrip Framework
// Abril 2008

// Este archivo contiene funciones generales para el TJF


// Copia, modifica y extiende las opciones por default para la
// creación de un objeto
var Extend = function(options,defaults) {
  var narray = new Array();

  // hacemos una copia primero
  for(var k in defaults)
    narray[k] = defaults[k]

  // y ahora sobreescribimos y agregamos las opciones
  for(var option in options) {
    narray[option] = options[option];
  }
  return narray;
}


// Crea una clase nueva para definir los objetos
// Al hacer 
//      var objeto = Class.create();
// se logra que al instanciar "objeto" se ejecute el metodo
// "initialize" como constructor. El metodo "apply" del objeto
// function permite sobrecargar la funcion initialize de manera
// de poder pasarle distintos numeros de parametros.
var Class = {
  create: function() {
    return function() { this.initialize.apply(this,arguments); }
  }
};

// Agrega la funcion bindAsEventListener al objeto function para que pueda
// bindear listener de eventos a determinado objeto
Function.prototype.bindAsEventListener = function(object) {
  // this apunta a la instancia de la función
  var func = this;
  return function(e) {
    func.call(object, e);
  }
}

// Para buscar un elemento, devuelve el mismo si es un objeto o lo 
// busca por ID si recibe un string
function $(e) {
  if ( typeof(e) == 'string' )
    return document.getElementById(e);
  else
    return e;
}

//  Crea un elemento de un tipo determinado
function CE(type) {
  return document.createElement(type);
}

// Crea un nodo de texto
function CT(string) {
  return document.createTextNode(string);
}

// Agregado para bindear una instancia de una función a un código
// específico
Function.prototype.bind = function(object) {
  var func = this;
  return function() {
    func.apply(object, arguments);
  }
}

// situa un elemento en las coordenadas especificadas
function abs_pos(element, _left, _top) {
  try {
    with ( element.style ) {
      position = 'absolute';
      top	  = _top + 'px';
      left  = _left + 'px';
    }
  }
  catch(e){ 
  };
}

function isNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }
