// JavaScript Document


// return vars	1) status = Sucess / Failed
//				2) redirect = String
//				3) msg		= String of error or sucess
//				4) responseText = string
// 				5) postFunction  = function

function piAjax()
{
	this.post 					= new Object;
	this.formName				= '';
	this.param					= '';
	this.phpPage 				= '';
	this.redirectURL			= '';
	this.redirectDelay			= 3000; // 0 seconds default delault in redirection
	this.processIndicator 		= '<div style="width:100%" align="center"><br><br>Processing.. Please Wait </div>';
	this.container				= '';
	this.postAction				= '';
	this.responseTextContainer 	= '';
	this.submitButton			='';
	this.ajaxStart 				= ajaxStart;
	
}



function ajaxStart()
{
		
		if(this.submitButton) document.getElementById(this.submitButton).style.display ="none"; // hides the submit button
		
		if(this.formName != '') this.post = document.getElementById(this.formName);
		
		document.getElementById(this.container).innerHTML = "";
		
		var request = new JsHttpRequest();
		request.onreadystatechange = function()
									 {
										
										
										if(request.readyState == 4)
										{
											
											document.getElementById(this.container).innerHTML = "";
											
											// all response text shown in container
											
											if(request.responseText.trim()) 
											{
												if(request.responseTextContainer) 
												document.getElementById(request.responseTextContainer).innerHTML =request.responseText;
												else 
												alert(request.responseText);
											}
											
											if(request.responseJS)
											{	
												
													
													// all msgs going in container again
													if((typeof request.responseJS.msg) == "string" && !request.responseTextContainer) 
													{
														document.getElementById(this.container).innerHTML = request.responseJS.msg ;
													}
													
													// making redirect URL
													if(request.responseJS.redirectURL) var redirectURL = request.responseJS.redirectURL;
													else var redirectURL = this.redirectURL;
														
													if(redirectURL) redirectNow(redirectURL,this.redirectDelay);
														
													
													if(request.responseJS.param && document.getElementById('param')) 
													document.getElementById('param').value = request.responseJS.param;
													
													
													
													if(request.responseJS.status == true)
													{
															this.postAction = setTimeout(this.postAction, 0);
															
															
														
													}// end if status true
													else
													{
															if(request.responseJS.errors)
															{
																	if((typeof request.responseJS.errors) == "object")
																	{
																		// if there is no error divs then fill all errors in container
																		if(request.responseJS.errorDivs) var errorDivs = request.responseJS.errorDivs;
																		else var errorDivs = this.container;
																		
																															
																		fillErrors(request.responseJS.errors,errorDivs )	
																	}
																	else // if it is string then fill it in container
																	{
																		document.getElementById(this.container).innerHTML  = request.responseJS.errors;	
																	}
															}
														
													}
													
													
													
													
											} // end if(request.responseJS)
											
													if(this.submitButton && document.getElementById(this.submitButton).style.display =="none") 
													document.getElementById(this.submitButton).style.display ="";
										}
										else
										{ 
										
											document.getElementById(this.container).innerHTML = this.processIndicator;
				
										}
									 }
		
	
		request.container 			= this.container;
		request.processIndicator 	= this.processIndicator;
		request.redirectDelay 		= this.redirectDelay;
		request.redirectURL			= this.redirectURL;
		request.postAction			= this.postAction;
		request.responseTextContainer = this.responseTextContainer;
		request.submitButton		= this.submitButton;
	
		request.open(null, this.phpPage , true);
		
		request.send( this.post );
		
}



function redirectNow(url, delay)
{
	setTimeout('location.replace("'+url+'")' , delay);
}


function fillErrors(errors, errorDivs)
{

		if((typeof errorDivs)== "object")
		{
			// first empty all divs
			for(var v=0; v<errorDivs.length; v++)
			{
				document.getElementById(errorDivs[v]).innerHTML = "";
			}
			
			// now fill errors
			for(var v=0; v<errorDivs.length; v++)
			{
				document.getElementById(errorDivs[v]).style.display = "";
				document.getElementById(errorDivs[v]).innerHTML += errors[v];
			}
			
		}
		else
		{
			for(var v=0; v<errors.length; v++)
			{
				document.getElementById(errorDivs).innerHTML += errors[v]+"<br>";
			}
			
		}
	
}