_PageLoader = {};
_PageLoader.Elements = new Array();
_PageLoader.ClientWidth = null;
_PageLoader.ClientHeight = null;
_PageLoader.ExecutionTimeDelay = 100;// time in miliseconds

function PageLoader(){
   this.OnExecutionComplete = null;
//	if(window.innerHeight){
//		_PageLoader.ClientWidth = window.innerWidth;
//		_PageLoader.ClientHeight = window.innerHeight;
//	}else{
//		_PageLoader.ClientWidth = document.documentElement.clientWidth;
//		_PageLoader.ClientHeight = document.documentElement.clientHeight;
//	}
	_PageLoader.ClientWidth = document.documentElement.clientWidth;
	_PageLoader.ClientHeight = document.documentElement.clientHeight;

	this.GetHeight = function(){
		return _PageLoader.ClientHeight;
	}

	this.GetWidth = function(){
		return _PageLoader.ClientWidth;
	}

	this.AddElement = function(){
		if(typeof(window._Instances["OnBodyLoadEvent"]["PageLoader"]) == 'undefined'){
			window._Instances["OnBodyLoadEvent"]["PageLoader"] = new Array();
		}
		_PageLoader.Elements[_PageLoader.Elements.length] = this;
		window._Instances["OnBodyLoadEvent"]["PageLoader"].push(this.Render());
		this._Destruct();
	}
   
}

function _PageLoaderElement(arProperties){
    
    this.arProperties = arProperties;
    this.FileGroup = null;
    this.Path = null;
    this.FileName = null;
    this.MethodName = null;
    this.AppliedElementID = null;
    
    this._Construct = function(){
        if(typeof(this.arProperties) != 'undefined'){
            this.FileGroup = this.arProperties[0];
            this.Path = this.arProperties[1];
            this.FileName = this.arProperties[2];
            this.MethodName = this.arProperties[3];
            this.AppliedElementID = this.arProperties[4];
        }
    }
    
    this._Construct();
    
    this.Render = function(){
        return new Array(this.FileGroup, this.Path, this.FileName, this.MethodName, this.AppliedElementID);
    }
   
    this._Destruct = function(){
        this.FileGroup = null;
        this.Path = null;
        this.FileName = null;
        this.MethodName = null;
        this.AppliedElementID = null;
    }
}

PageLoader.prototype = new _PageLoaderElement();
PageLoader.prototype.constructor = PageLoader;
PageLoader.prototype._sentRequestCount = 0;
PageLoader.prototype._returnedRequestCount = 0;
PageLoader.IsHomePage = true	;

PageLoader.Execute = function(){
    if(typeof(window._Instances["OnBodyLoadEvent"]["PageLoader"]) == 'undefined'){
        return false;
    }else{
		this._sentRequestCount = 0; 
		this._returnedRequestCount = 0;
        var CurrentElement = null;
        for(var z = 0; z < window._Instances["OnBodyLoadEvent"]["PageLoader"].length; z++){
			this._sentRequestCount++;
            window.setTimeout('PageLoader.Request(new _PageLoaderElement(window._Instances["OnBodyLoadEvent"]["PageLoader"]['+ z + ']));', _PageLoader.ExecutionTimeDelay)
        }
    }
}

PageLoader.Request = function(CurrentElement){
	
    this._returnedRequestCount++;
    var HttpRequest = new CHttpRequest();
    HttpRequest.QueryString = "AjaxType=HTML&RequestFile="+ CurrentElement.FileGroup +"."+ CurrentElement.FileName +"&MethodName=" + CurrentElement.MethodName;
    HttpRequest.AssyncCall = true;
    HttpRequest.AddProperty("Arguments[ClientWidth]", _PageLoader.ClientWidth);
    HttpRequest.AddProperty("Arguments[ClientHeight]", _PageLoader.ClientHeight);
    HttpRequest.Additional = document.getElementById(CurrentElement.AppliedElementID);
	
    HttpRequest.OnResponse = Controls.Delegates.CreateDelegate(this, this.OnRequestReturn);
    var Response = HttpRequest.Send();
    
    return Response;
}

PageLoader.OnRequestReturn = function(httpRequest, Additional){
//	Additional.innerHTML = httpRequest.responseText;
	
//	var AxaxExec = new Ajax();
//	AxaxExec.Element = Additional;
//	AxaxExec.Execute();
	
	Ajax.LoadContent(Additional, httpRequest.responseText);
	if(this._sentRequestCount == this._returnedRequestCount && !PageLoader.IsHomePage){
		SearchResults.ResizeToFreeSpace();
	}
}
