code: function cloneObject(source)
  {
  	var clone,key,value;
  	
  	if (Array.isArray(source) === true)
  	{
  		clone = [];
  	}
  	else
  	{
  		// Only clone the prototype -- more efficient as it will not convert keys to prototype keys
  		clone = Object.create( Object.getPrototypeOf(source) );
  	}
  	
  	// Clone keys/indexes
  	// TODO :: use Object.keys() for more speed
  	for (key in source)
  	{
  		if (hasOwnProperty.call(source, key) === true)
  		{
  			value = source[key];
  			
  			if (value!==null && typeof value==="object")
  			{
  				clone[key] = cloneObject(value);
  			}
  			else
  			{
  				clone[key] = value;
  			}
  		}
  	}
  	
  	return clone;
  }
docs: /*
  Clones an object and its prototype while maintaining enumerable
  keys and support for `instanceof`.
   TODO :: this may not be necessary if linkObj.base.parsed and linkObj.url.parsed are cleaned out TODO :: move this into urlobj