﻿

			//Declare the DOM object.
			var oXMLHTTP;

			//Response content.
			var responseContent			= null;
			var responseMethod			= null;
			var responseTimeout			= 0;
			var getResponseXML			= null;

			//Create Exceptions.
			var errorObjectNotSupported	= 'The DOM object not supported by current browser.\n';
			var errorServerStatusCode	= 'The server status code indicates that [somthing is wrong].\n';
			var errorInitialezdDom		= 'The DOM XMLHTTP object failed to load.\n';

			//Initialize the DOM object.
			function InitializeXMLHTTP()
			{
				try
				{
					oXMLHTTP = new ActiveXObject('Msxml2.XMLHTTP');
				}
				catch(ex)
				{
					try
					{
						oXMLHTTP= new ActiveXObject('Microsoft.XMLHTTP');
					}
					catch(ex)
					{
					
						try
						{
							oXMLHTTP = new XMLHttpRequest();
						}
						catch (ex)
						{
							oXMLHTTP = null;
							throw new Error(100, errorObjectNotSupported + 'Base Exception: ' + ex);
						}
					}
				}
			}

			//Proccess the content response from server.
			function processResponse()
			{
				if (oXMLHTTP.readyState == 4)
				{
					if (oXMLHTTP.status == 200)
					{
						//Assign the response content from server as XML.
						if (getResponseXML)
							responseContent = oXMLHTTP.responseXML;

						//Assign the response content from server as clear text.
						else
							responseContent = oXMLHTTP.responseText;

						//Call to the given Method after given Timeout (MiliSeconds).
						setTimeout('responseMethod(responseContent)', 0);
					}
					else
					{
						throw new Error(101, errorServerStatusCode + ' Status Code Text: ' + oXMLHTTP.statusText + '\nStatus Code: ' + oXMLHTTP.status);
					}
				}
			}

			//Responsible for sending the request to server.
			function sendRequest(sourceUrl, handler) {
				try
				{
					InitializeXMLHTTP();

					if (oXMLHTTP != null) {
						responseMethod = handler;
						responseTimeout = 0;
						oXMLHTTP.onreadystatechange = processResponse;
						oXMLHTTP.open('GET', sourceUrl, true);
						oXMLHTTP.send(null);
					}
				}
				catch (ex)
				{
					throw new Error(102, errorInitialezdDom + 'Base Exception: ' + ex);
				}
			}
			function GetDeliveryPrice(target_code, getResponseXML)
			{
				if (getResponseXML) getResponseXML = true;
				else getResponseXML = null;
				nameSpace = 'Scepia.Templates.Productview.Productview';
				methodName = 'GetDeliveryPrice';
				methodParams = target_code;
				sendRequest(getHostAddress() + '/Templates/Ajax/AjaxCallback.aspx?N=' + nameSpace + '&M=' + methodName + '&P=' + methodParams , GetDeliveryPrice_Callback);
			}
			
			function GetCities(filterLetter, inDeliveryDest, inLang, getResponseXML)
			{
				if (getResponseXML) getResponseXML = true;
				else getResponseXML = null;
				nameSpace = 'Scepia.Templates.Productview.Productview';
				methodName = 'GetCities';
				methodParams = filterLetter + '@' +  inDeliveryDest + '@' +  inLang;
				sendRequest(getHostAddress() + '/Templates/Ajax/AjaxCallback.aspx?N=' + nameSpace + '&M=' + methodName + '&P=' + methodParams , GetCities_Callback);
			}
			
			function GetStreets(code_target, filterLetter, inLang, getResponseXML)
			{
				if (getResponseXML) getResponseXML = true;
				else getResponseXML = null;
				nameSpace = 'Scepia.Templates.Productview.Productview';
				methodName = 'GetStreets';
				methodParams = code_target + '@' +  filterLetter + '@' + inLang;
				sendRequest(getHostAddress() + '/Templates/Ajax/AjaxCallback.aspx?N=' + nameSpace + '&M=' + methodName + '&P=' + methodParams , GetStreets_Callback);
			}
