

Core = function(parent) { //
  //define base variables here using 'this' keyword
  this._type = "Core"; //for debugging purposes
  
  var parent = this.parent = parent;
  
  this.defaultPosition = {top:"0px"};
  this.defaultOpacity = {opacity:"1"};
  
  this.show = function(duration, callback){
    var master = this;
    var doCallback = function(){
      if(callback) callback.apply(master);
    };
    if(!duration || 1 == 1){
      this.jElement.css(this.defaultPosition);
      //this.jElement.css(this.defaultOpacity);
      doCallback();
    } else {
      this.jElement.css(this.defaultPosition);
      this.jElement.animate(this.defaultOpacity, duration, "linear", doCallback);
      
    }
  }
  
  this.hide = function(duration, callback){
    var master = this;
    var doCallback = function(){
      if(callback) callback.apply(master);
    };
    if(!duration || 1 == 1){
      this.jElement.css({top:"-9999px"});
      doCallback();
    } else {
      this.jElement.animate({opacity:"0"}, duration, "linear", function(){
        $(this).css({top:"-9999px"});
        doCallback();
      });
    }
  }
  
  //neccessary for extending this class
  return this;
  
};