/**
* This Class's responsible to preload the images
*
* @param String Div where images will be preloaded
* @param Object
* @param [Optional] Object(1) ... Object(n)
*
* @author pedrocorreia.net
*/

ImagePreloader = function(div, obj /**,objs */){

	this.args = arguments; //assign attribute

/**
	* Preload Images
*/

	this.Preload = function(){
//		check if we have a valid placeholder
		if(!$(this.args[0])) throw("DIV_NOT_FOUND");
//		check placeholder style display
		if($(this.args[0]).style.display!="none"){
//			if it's visible, then let's hide it...
			$(this.args[0]).style.display="none";
		}

 		var count_args = this.args.length, count = 0;

//		iterate object arguments, starting at 2nd element,
//		because the 1st element args[0] stores
//		our dummy div preloader
		for (var i = 1; i < count_args; i++){
			var img_pre = this.args[i];
			if (_is_array(img_pre.images)) {
				count = img_pre.images.length;
//				iterate images array and load them
				for (var j = 0; j < count; j++) {
					_load(img_pre.folder, img_pre.images[j], this.args[0]);
				}
			}else{
				_load(img_pre.folder, img_pre.images, this.args[0]);
			}
		}		// end iterate object arguments
	}			// end method Preload

 

/**
	* Private Method
	*
	* Create a new DOM Image and load it
	*
	* @param String Folder Name
	* @param String Image Name
	* @param String Div where images will be preloaded
*/

	var _load = function(folder, img, div){
		if(!img || !div) return;
		var _dummy_img=new Image();
		_dummy_img.src=_folder(folder) + escape(img);
		$(div).appendChild(_dummy_img);
	} 			//end private method _load

 

/**
	* Private Method
	*
	* Finds if the given argument is an array
	*
	* @param Object
	* @return Bool
*/

	var _is_array = function(obj){return (obj instanceof Array);}

 

/**
	* Private Method
	*
	* Check if we have a valid folder, this is,
	* with a slash "/" at the end
	*
	* @param String Folder
	* @return String
*/

	var _folder = function(folder){
		if (_right(folder, 1) != "/") {folder = folder + "/";}
		return folder;
	} //end method _folder

 

/**
	* Private Method
	*
	* Extract the rightmost part of a String
	*
	* @param String String to extract chars
	* @param Int Number of chars
*/

	var _right = function right(str, n){
		if(str=="" || n<=0) return "";
		var len = String(str).length;
		return (n>len)?str:String(str).substring(len,len-n);
	} //end method _right


}

 

/**
* Get element reference
*
* @param Object
* @return Object Reference
*/

$ = function(elem){
	if(document.getElementById) return document.getElementById(elem);
}