// 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
													{
														//alert(request.responseJS.errors);
														
															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].trim()).innerHTML = "";
								
							}
							
							// now fill errors
							for(var v=0; v<errorDivs.length; v++)
							{
								document.getElementById(errorDivs[v].trim()).style.display = "";
								document.getElementById(errorDivs[v].trim()).innerHTML += errors[v];
								
							}
							
						}
						else
						{
							for(var v=0; v<errors.length; v++)
							{
								document.getElementById(errorDivs.trim()).innerHTML += errors[v]+"<br>";
							}
							
						}
	
}
