


/*
 * AJAX FUNCTIONS
*/

/**
 * creates XMLHttpRequest
*/
function createRequest() 
{
  try 
  {
    request = new XMLHttpRequest();
  } 
  catch (trymicrosoft) 
  {
    try 
	{
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
	catch (othermicrosoft) 
	{
      try 
	  {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } 
	  catch (failed) 
	  {
        request = false;
      }
    }
  }

  if (!request)
    alert("Error initializing XMLHttpRequest!");
}

/**
 * creates many XMLHttpRequest
*/
function createRequests() 
{
   try 
  {
      this.req = new XMLHttpRequest();
  } 
  catch (trymicrosoft) 
  {
    try 
	{
      this.req = new ActiveXObject("Msxml2.XMLHTTP");
    } 
	catch (othermicrosoft) 
	{
      try 
	  {
        this.req = new ActiveXObject("Microsoft.XMLHTTP");
      } 
	  catch (failed) 
	  {
        this.req = false;
      }
    }
  }

  if (!this.req)
    alert("Error initializing XMLHttpRequest!");
}

/**
 * executes server function by given url
 * param string url
*/
function SendValues(url)
{
	createRequest();
	var url = url;
	request.open("GET", url, false);
	request.onreadystatechange = null;
	request.send(null);	
}

/**
 * executes server function by given url and reloads the page
 * param string url
*/
function SendValuesWithPageReload(url)
{
	createRequest();
	var url = url;
	request.open("GET", url, true);
	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
	 		if (request.status == 200) 
			{
				window.location.reload();
			}
	}	
	request.send(null);	
}

/**
 * gets data from server and inserts in the tag with the given id
 *
 * param string url url for the server operation
 * param string id of the field to update
*/
function GetAjaxValues(url, id)
{
createRequest();
request.onreadystatechange = function()
{
	if (request.readyState == 4)
		if (request.status == 200) 
		{
			response = request.responseText.split("@");
		    document.getElementById(id).parentNode.innerHTML = response[1];
		
		}
}
request.open("GET", url, true);
request.send(null);
}

/**
 * gets data from server and inserts in the tag with the given id
 *
 * param string url url for the server operation
 * param string id of the field to update
 * param string show_elem_id id of that element we want to reveal
*/
function GetAjaxValuesAndPaste(url, id, show_elem_id)
{
createRequest();
request.onreadystatechange = function()
{
	if (request.readyState == 4)
		if (request.status == 200) 
		{
			response = request.responseText.split("@");
		    document.getElementById(id).parentNode.innerHTML = response[1];
		    document.getElementById(show_elem_id).style.display = '';
		
		}
}
request.open("GET", url, true);
request.send(null);
}

function GetLogs(url)
{
	var tables = document.getElementsByTagName('table');
	var flag = 0;
	
	for (i = 0; i < tables.length; i++)
	{
		if(tables[i].id=='logs_table')
		{
			if (tables[i].style.display == 'none')
			{		
				tables[i].style.display = '';
			}
			else 
			{
				tables[i].style.display = 'none';
			}
			flag++;
		}
	}	
	
	if (flag==0)
	{
		createRequest();
		var url = url;
		request.open("GET", url, true);
		request.onreadystatechange = DisplayLogs;
		request.send(null);
	}
}

function DisplayLogs()
{
	if (request.readyState == 4)
	 	if (request.status == 200) 
		{
			response = request.responseText.split("@");
			document.getElementById("logs").innerHTML = response[1];
		}
}

function GetHtmlElement(url,id,function_name)
{
	
	    var request = new Array()
		request[id] = new createRequests();
		request[id].req.onreadystatechange = function()
		{
		if (request[id].req.readyState == 4)
	 		if (request[id].req.status == 200) 
			{
				response = request[id].req.responseText.split("@");
				
			    document.getElementById(id).parentNode.innerHTML = response[1];
			    if(function_name!=null)
			    eval(function_name);
			}
		}
		request[id].req.open("GET", url, true);
		request[id].req.send(null);
}

function DisplayUserDetails(url)
{
    createRequest();
    request.open("GET", url, true);
    request.onreadystatechange = function()
    {
	if (request.readyState == 4)
 		if (request.status == 200) 
		{
			response = request.responseText.split("@");
		    document.getElementById('loginerror').parentNode.innerHTML = response[1];
		    var new_user_id = document.getElementById("new_user_id");
   			var user_id = document.getElementById("user_id");
  				user_id.value = new_user_id.value;
  				var user_check = document.getElementById("user_check");
  				user_check.value = 1;
  				document.forms['form_agents'].submit();
		}
     }
     request.send(null);
}

function move_to(url,myform)
{
    createRequest();
    request.open("GET", url, true);
    request.onreadystatechange = function()
    {
		if (request.readyState == 4)
	 		if (request.status == 200) 
			{
				document.forms[myform].submit();
			}
    }
    request.send(null);
}


function GetThemePicture(url)
{
	createRequest();
	var url = url;
	request.open("GET", url, true);
	request.onreadystatechange = DisplayThemeImage;
	request.send(null);
}

function DisplayThemeImage()
{
	if (request.readyState == 4)
	 	if (request.status == 200) 
		{
			response = request.responseText.split("@");
			document.getElementById("themetd").innerHTML = response[1];
		}
}



/**
 * fill city-, street- combo boxes house number office number
 * from collected address data
 */
function fillAddressFields(id, countries_id, cities_id, streets_id, house_field_id, office_field_id)
{
	parsed = new Array();
	elem = document.getElementById(id);
	innerText = elem.options[elem.selectedIndex].text;
	ids = parseAddressData(elem.value, 1);
	
	// parse input data
	parsed = parseAddressData(innerText, 0);
	
	city = parsed[0];
	street_id = ids[1];
	region_id = ids[2];
	country_id = ids[3];
	
	house = parsed[2];
	office = parsed[3];
	if(typeof(office) == 'undefined') office = 0;
	//alert(countries_id+'/'+cities_id+'/'+streets_id+'/'+house_field_id+'/'+office_field_id);
	var countries = document.getElementById(countries_id);
	var cities = document.getElementById(cities_id);
	var streets = document.getElementById(streets_id);
	var house_field = document.getElementById(house_field_id);
	var office_field = document.getElementById(office_field_id);
	

	house_field.value = house;
	office_field.value = office;

	// walk through countries
	for(i = 0; i < countries.length; i++)
	{
		if(countries.options[i].value == country_id)
			countries.options[i].selected = true;
	}
	// walk through cities
	for(i = 0; i < cities.length; i++)
	{
		if(cities.options[i].text == city)
		{
			cities.options[i].selected = true;
			city_id = cities.options[i].value;
			break;
		}
	}
	//alert(city_id);
	//alert(cities);
	GetHtmlElement('/main/changecitieswithid/'+country_id+'/cities/street*id/'+city_id, 'cities');
	
	//GetHtmlElement('/contacts/changecities/'+country_id+'/0/'+city_id, 'cities');
	GetHtmlElement('/main/changeregions/'+city_id+'/'+region_id, 'regions' );
	GetHtmlElement('/main/changestreets/'+city_id+'/'+street_id, 'street_id');
	
}

/**
 * needed for prev function 
 * str - string to parse (comma - delimiter)
 * isId - flag indicates if it's a field ID
*/
function parseAddressData(str, isId)
{
	parsedData = new Array();	
	parsedData = str.split(',');
	if(!isId)
	{
		parsedHouse = parsedData[2].split(' ');
		parsedData[2] = parsedHouse[1];
		parsedData[3] = parsedHouse[2];
	}
	return parsedData;
}
