var Preloader = {
    createPreloadScreen:function (screenConfig) {    
        var ground = Element.create('DIV');
		try{
            for(key in screenConfig.attrib) {
                Element.attrib(ground,key,screenConfig.attrib[key]);
            }
                    
            for(key in screenConfig.subObj){
                var obj = Element.create(key);
                
                with(screenConfig.subObj[key]) {
                    for(val in attrib) {
                        Element.attrib(obj,val,attrib[val]);
                    }
                }            
                Element.bind(obj,ground);
            }   
		}catch(e){}
        
        return ground;
    },
    addPreload:function (loaderObject,preloadScreen,callback,rp) {
        var preloadContainer = Preloader.createPreloadScreen(preloadScreen);
        Element.bind(preloadContainer,preloadScreen.addTo);
        
        if(preloadScreen.position == 'center') {
            Element.attrib(preloadScreen.addTo,'style',{position:'relative'});
            
            var pCW = parseInt(Element.cssValue(preloadContainer,'width'));
            var pCH = parseInt(Element.cssValue(preloadContainer,'height'));

            var dCW = Element.getCoords(preloadScreen.addTo,'width');
            var dCH = Element.getCoords(preloadScreen.addTo,'height');
            
            Element.attrib(preloadContainer,'style',{
                                                    position:'absolute',
                                                    top:(dCH.h/2-pCH/2)+'px',
                                                    left:(dCW.w/2-pCW/2)+'px',
                                                    display:'block'
                                                    });
        } else if (preloadScreen.position == 'appendbefore') {
            var container = Element.get(preloadScreen.addTo);
            container.parentNode.insertBefore(preloadContainer,container);
        }     
        			
        var loader = loaderObject;
            loader.initLoad(preloadContainer,Preloader.onReadyState,{cb:callback,rP:rp});
            
        this.cancelPreload = function () {
            loader.cancelRequest();
            loader = null;
        }
    },
    onReadyState:function (returnValue,returnObject) {
		try {
			returnObject.cb.call(returnObject.cb,returnValue,returnObject.rP);
		}catch (e) {
            alert(e);
        }
    }
}