function Asynchronous() 
{
	this._xmlhttp = new FactoryXMLHttpRequest();
}

function Asynchronous_call(url, blockname, answertype, ifblank) 
{
	var instance = this;
	
	this._xmlhttp.open('GET', url, true);
	//var requestTimer = setTimeout(function() {instance.abort();}, 5);
	
    this._xmlhttp.onreadystatechange = function() 
    {
	    switch(instance._xmlhttp.readyState) 
	    {
		    case 1:
			    instance.loading(blockname, answertype);
			    break;
		    case 2:
			    instance.loaded(blockname, answertype);
			    break;
		    case 3:
			    instance.interactive(blockname, answertype);
			    break;
		    case 4:
		        //clearTimeout(requestTimer);
			    instance.complete(instance._xmlhttp.status, instance._xmlhttp.statusText, instance._xmlhttp.responseText, instance._xmlhttp.responseXML, blockname, answertype, ifblank);
			    break;
	    }
    }

	this._xmlhttp.send(null);
}

function Asynchronous_loading(blockname, answertype) 
{
    
}

function Asynchronous_loaded(blockname, answertype) 
{
    
}

function Asynchronous_interactive(blockname, answertype) 
{
    
}

function Asynchronous_complete(status, statusText, responseText, responseHTML, blockname, answertype, ifblank) 
{
    if(responseText == '' && ifblank != '')
    {
        document.getElementById(ifblank).style.display = 'none';
    }
    else if(responseText != '')
    {
        if(ifblank != '')
            document.getElementById(ifblank).style.display = '';
            
        if(blockname != '')
        {
            var bname = new Array();
            bname = blockname.split(',');
            
            for(var i=0; i<bname.length; i++)
            {
                if(answertype == '0')
                    document.getElementById(bname[i]).innerHTML = responseText;
                else
                    document.getElementById(bname[i]).innerHTML = document.getElementById(bname[i]).innerHTML + responseText;
            }
        }
        else
        {
            if(answertype == '9')
                alert(responseText);
        }
    }
    else
    {
        if(blockname != '')
        {
            var bname = new Array();
            bname = blockname.split(',');
            
            for(var i=0; i<bname.length; i++)
            {
                document.getElementById(bname[i]).innerHTML = '';
            }
        }
    }

    //Patron Block    
    if(blockname=='tdmemexp' || blockname == 'tdSugesition' || blockname == 'tdReservation')
    {
        var visible = true;
        var found = false;
        
        if(found == false && (!document.getElementById('tdmemexp') || document.getElementById('tdmemexp').innerHTML == ''))
            visible = false;
        else
        {
            visible = true;
            found = true;
        }
        
        if(found == false && (!document.getElementById('tdSugesition') || document.getElementById('tdSugesition').innerHTML == ''))
            visible = false;
        else
        {
            visible = true;
            found = true;
        }
        
        if(found == false && (!document.getElementById('tdReservation') || document.getElementById('tdReservation').innerHTML == ''))
            visible = false;
        else
        {
            visible = true;
            found = true;
        }
        
        if(found == false)
            document.getElementById('trMemberDue').style.display = 'none';
        else
            document.getElementById('trMemberDue').style.display = '';
    }
    
    if(blockname == 'tdMissingJournal' || blockname == 'tdNotArrived')
    {
        var visible = true;
        var found = false;
        
        if(!document.getElementById('tdMissingJournal') || document.getElementById('tdMissingJournal').innerHTML == '')
            visible = false;
        else
        {
            visible = true;
            found = true;
        }
            
        if(!document.getElementById('tdNotArrived') || document.getElementById('tdNotArrived').innerHTML == '')
            visible = false;
        else
        {
            visible = true;
            found = true;
        }
            
        if(found == false)
            document.getElementById('trPeriodical').style.display = 'none';
        else
            document.getElementById('trPeriodical').style.display = '';
    }
    
    if(blockname == 'tdAlerts' && responseText != '')
    {
        if(document.getElementById('divProcess') && document.getElementById('tbAll') && document.getElementById('divAlerts'))
        {
            document.getElementById('divProcess').style.display='';
            document.getElementById('tbAll').style.display='';
            document.getElementById('divAlerts').style.display='';
            
            setRunningProcess();
        }
    }
}

Asynchronous.prototype.loading = Asynchronous_loading;
Asynchronous.prototype.loaded = Asynchronous_loaded;
Asynchronous.prototype.interactive = Asynchronous_interactive;
Asynchronous.prototype.complete = Asynchronous_complete;
Asynchronous.prototype.call = Asynchronous_call;