	/** 
	** ============ AJAX ENGINE TO SEND/RECEIVE REQUEST  ==============
	**		The script creates the XMLHTTP to send and receive the AJAX
	**      request. It has been treated as controller scripts which determines
	**      that which function should call from "process_user.js 
	** ================================================================
	**/

	// define global variables.
	var xmlHttp		= RequestObject();
	var LIST = 'PENDING';
	// define global variables
	var HOST = "login_process.php"; // the php script which will fetch and return data

	// create xmlHTTP request for different browsers. 
	function RequestObject()
	{
		var xmlHttp;
				
		if(window.ActiveXObject)
		{
			var tryPossibleVersions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
			
			for(i=0;i<tryPossibleVersions.length;i++) {
				try
				{
					xmlHttp = new ActiveXObject(tryPossibleVersions[i]);
					break;
				}
				catch (e)
				{
				xmlHttp = false;
				}
			}
		}
		else
		{
			try
			{
			xmlHttp = new XMLHttpRequest();
			}
			catch (e)
			{
			xmlHttp = false;
			}
		}
		if (!xmlHttp)
		alert("Error creating the XMLHttpRequest object.");
		else
		return xmlHttp;
	}
	
	/**
	** common script to send the request on server.
	** @param : The php script name which will process the request, query string
	**/
	function send_request(server_script, query_string)
	{
				
		try
		{
			
			if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) 
			{

			xmlHttp.open("POST", server_script, true);
			xmlHttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = get_response;
			xmlHttp.send(query_string);
			}
		}
		catch (e)
		{
			alert(e.toString());
		}
		

	}
	/**
	** common script to get request from server
	** It will be further used by another function to parse the result and update the
	** browser.
	**/

	function get_response()
	{
		
		
		try
		{
			if (xmlHttp.readyState == 4)
			{
				if (xmlHttp.status == 200)
				{
					xmlResponse = xmlHttp.responseText;
					/** call function to hadle the response and update browser**/
					response_handler(xmlResponse);
					
				}
				else
				{
				alert("There was a problem accessing the server: try again - " +
				xmlHttp.statusText);
				}
			}
		}
		catch (e)
		{
			alert("Error in server response pls try after some time"+e.toString());
		}
	}
			

	/*###################################################################################*/

	/** function to show busy image at the top of form. This function will execute each time
	** when a request take place.
	**/

	function show_processing_image() 
	{
		var o_proc_image_div = document.getElementById('waiting_image');
		o_proc_image_div.style.display="inline";
	}

	/** This function will execute each time when a response will occure.
	**  hide the processing image showen by "show_processing_image" function.
	**/

	function hide_processing_image() 
	{
		var o_proc_image_div = document.getElementById('waiting_image');
		o_proc_image_div.style.display="none";
	}
	
	
	/** Function to handle all responses returned by controller php script **/
	function response_handler(xmlResponse)
	{
		// if error show it
		error_handler(xmlResponse);		
		var parm = xmlResponse.split('*');
		if(parm.length<0) {
			alert('error');
			return;
		}

		switch (parm[0])
		{
			case 'LoginResponse':
				response_user_login(parm[1]);
				break;
			case 'ForgotPassword':
				response_load_page(parm[1]);
				break;
			case 'PasswordReset':
				response_load_page(parm[1]);
				break;
			case 'ResponseRegOne':
				response_reg_one(parm[1]);
				break;
			case 'ResponseRegTwo':
				response_reg_two(parm[1]);
				break;
			case 'StatusUpdated':
				response_update_message_status(parm[1]);
				break;
			case 'UserDetails':
				response_user_details(parm[1]);
				break;
			case 'ResposneDeleteMessage':
				response_delete_message(parm[1]);
				break;
			case 'ResposneFavorites':
				response_add_favorites(parm[1]);
				break;
			case 'ResposneAcceptMember':
				// since both have same behaviour so i have called the above function here.
				response_add_favorites(parm[1]);
				break;
			case 'ResposneBlockMember':
				// since both have same behaviour so i have called the above function here.
				response_add_favorites(parm[1]);
				break;
			case 'ResposnReportMessage':
				response_report_message(parm[1]);
				break;
			case 'ResposneDeleteUser':
				response_delete_contact_user(parm[1]);
				break;
//Shree start
			case 'EditProfileBasic':
				response_EditProfile_Basic(parm[1]);
				break;
			case 'EditProfileAboutMe':
				response_EditProfile_AboutMe(parm[1]);
				break;
			case 'EditProfileLifeStyle':
				response_EditProfile_LifeStyle(parm[1]);
				break;
			case 'EditProfileBackgroundValue':
				response_EditProfile_Background(parm[1]);
				break;
			case 'EditProfileEducation':
				response_EditProfile_Education(parm[1]);
				break;
			case 'EditProfileInterest':
				response_EditProfile_Interest(parm[1]);
				break;
			case 'SearchCustomSave':
				response_Search_CustomSave(parm[1]);
				break;
			case 'SearchCustomProfile':
				response_Search_Custom_Profile(parm[1]);
				break;
			case 'ShowSearchCustomEdit':
				response_Show_Search_Custom_Edit(parm[1]);
				break;
			case 'SearchEditSaved':
				response_Search_Edit_Saved(parm[1]);
				break;
			case 'SearchEditRemove':
				response_Search_Edit_Remove(parm[1]);
				break;
			case 'Tell_A_Friend':
				response_tell_a_friend(parm[1]);
				break;
			case 'Conatc_Us':
				response_contact_us(parm[1]);
				break;
			case 'Help':
				response_help(parm[1]);
				break;
//shree end
			case 'RemoveFavorites':
				responce_remove_favorites(parm[1]);
				break;
			case 'UpdateMainImage':
				responce_update_main_image(parm[1]);
				break;
			case 'RemoveImages':
				responce_delete_image(parm[1]);
				break;
			case 'DateSetting':
				responce_date_setting(parm[1]);
				break;
			case 'AccountSetting':
				responce_account_setting(parm[1]);
				break;
			case 'AccountPasswordSetting':
				responce_password_setting(parm[1]);
				break;
			case 'AccountHideProfileSetting':
				responce_hide_profile(parm[1]);
				break;
			case 'AccountDeleteProfileSetting':
				responce_delete_profile(parm[1]);
				break;
			case 'AddToFavorites':
				responce_add_to_favorites(parm[1]);
				break;
			case 'BlockFromContact':
				responce_block_from_contact(parm[1]);
				break;
			case 'BlockFromSearch':
				responce_block_from_search(parm[1]);
				break;
			case 'IntroduceYourSelf':
				responce_introduce_your_self(parm[1]);
				break;
			case 'ReportConcern':
				responce_report_concern(parm[1]);
				break;
			case 'CheckUserExist':
				responc_check_user_exist(parm[1]);
				break;
			case 'ResposneUsernameBlockMember':
				responce_user_name_block(parm[1]);
				break;
			case "Login_Issue":
				response_login_issue(parm[1]);
				break;
			case 'reponceshow_state_city':
				responce_fetch_us_state_city(parm[1]);
				break;
			case 'SearchCustomSave_ar':
				response_Search_CustomSave_ar(parm[1]);
				break;
			case 'dating_constraint':
				response_dating_constraint(parm[1]);
				break;
			default:
				alert('No Response defined');
				break;
			
		}
	}
	
	
	
	/**
	**	Called when user press enter in password text box of login page
	**  @Param : key event
	**  @Return type : void ( call the login_request method for further processing
	**  of page submit.
	**/
	function submit_request(e)
	{
		var key;

		if(window.event)
		{
			  key = window.event.keyCode;     //IE
		}
		else
		{
			  key = e.which;     //firefox
		}

		if(key == 13)
		{
			login_process();
		}
				
	}
	
	/**
	** Transfer the control to login.php when session has ended
	** @Param - String
	**/
	
	function response_error_handling(response_text)
	{
		if(response_text == 'SESSION_ERROR')
		{
			window.location.href='index.php';
		}
	}
	/* removes leading and trailing spaces from the string */
	function trim(s)
	{
		return s.replace(/(^\s+)|(\s+$)/g, "")
	}
	// Display the error message
	function error_handler(xmlResponse)
	{
		hide_processing_image();
		var array_error = new Array();
		var flag = 0;
		array_error[0] = 'fatal error';
		array_error[1] = 'warning';
		array_error[2] = 'notice';

		xmlResponse = xmlResponse.toLowerCase();
		for(i=0;i<array_error.length;i++)
		{
			var matchPos1 = xmlResponse.search(array_error[i]);
			
			if(matchPos1 != -1)
			{
				alert(xmlResponse);
				flag = 1;
				break;
			}
		}
		if(flag == 1)
		{
			return false; 
		}
	}

	// Reload the page to change the language
	function change_language(language)
	{
		window.location.href='index.php?lang='+language;
	}

	function login_request()
	{
		show_processing_image();
		var user_name = document.getElementById("id_Username").value;
		var password = document.getElementById("id_Password").value;
		var query_string = "action=login_request&user_name="+escape(user_name)+"&password="+escape(password);
		var script_name = "login_process.php";
		send_request(script_name, query_string);
	}

	function response_login(response_text)
	{
		var str_response = response_text.split("~");
		if(str_response[0] == "Error")
		{
			alert(str_response[1]);
		}
		else
		{
			window.location.href = "admin_home.php";
		}
	}	