
/*
Функция создания запроса в зависимости от того что умеет данный браузер
*/
function CreateRequest(){
	var Request = false;

	if (window.XMLHttpRequest){
		//Gecko-совместимые браузеры, Safari, Konqueror
		Request = new XMLHttpRequest();
	}else if (window.ActiveXObject){
		//Internet explorer
		try{
			Request = new ActiveXObject("Microsoft.XMLHTTP");
		}catch (CatchException){
			Request = new ActiveXObject("Msxml2.XMLHTTP");
		}
	}

	if (!Request){
		alert("Невозможно создать XMLHttpRequest");
	}

	return Request;
}


/*
Функция посылки запроса к файлу на сервере
r_method - тип запроса: GET или POST
r_path - путь к файлу
r_args - аргументы вида a=1&b=2&c=3...
r_handler - функция-обработчик ответа от сервера
r_load - функция вызываемая во время загрузки
*/
function SendRequest(r_method, r_path, r_args, r_handler, r_load){
	//Создаём запрос
	var Request = CreateRequest();

	//Проверяем существование запроса еще раз
	if (!Request) return;

	//Назначаем пользовательский обработчик
	Request.onreadystatechange = function(){
		//Если обмен данными завершен
		if (Request.readyState == 4){
			if (Request.status == 200){
				//Передаем управление обработчику пользователя
				r_handler(Request);
			}else if (Request.status == 404){
				alert("Request URL does not exist");
			}else{
				 alert("Error: status code is " + Request.status);
			}
		}else{
			//Оповещаем пользователя о загрузке
			r_load();
		}
	}

	//Проверяем, если требуется сделать GET-запрос
	if (r_method.toLowerCase() == "get"){
		var r_rand = Math.floor(Math.random() * 10000000);
		r_path+="?r_rand="+r_rand+"&"+r_args;
	}
	//Инициализируем соединение
	Request.open(r_method, r_path, true);

	if (r_method.toLowerCase() == "post"){
		//Если это POST-запрос

		//Устанавливаем заголовок
		Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=windows-1251");
		//Посылаем запрос
		Request.send(r_args);
	}else{
		//Если это GET-запрос

		//Посылаем нуль-запрос
		Request.send(null);
	}
}

/*
Чтение файла по указанному адресу и передача его в контейнер (например DIV)
filename - путь к файлу
container - id контейнера на странице, куда будет помещен загружанный файл. Например <div>
*/
function ReadFile(filename, container){
	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		//document.getElementById(container).innerHTML = 'Loading...';
	}


	//Отправляем запрос
	SendRequest("GET",filename,"",Handler,Loading);
}



/*
Добавление товара в корзину (кнопка)
Goods_ID - номер товара
*/
function AddToBasket(Goods_ID){
	// div куда отправить ответ
	var container='ButtonAddToBasket_'+Goods_ID;

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
		// Обновим данные о корзине
		UpdateBasketInformer();
		yaCounter49803.reachGoal('AddToBasket');
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		//document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> обработка...';
	}

	// Передадим аргументы
	var r_args='ajax=1&action=add&goods_id='+Goods_ID;

	//Отправляем запрос
	SendRequest("GET",'/basket.php',r_args,Handler,Loading);
}

/*
Добавление товара в корзину (ссылка)
Goods_ID - номер товара
*/
function AddToBasket_Link(Goods_ID,Type_Link){
	// div куда отправить ответ
	var container='LinkAddToBasket_'+Goods_ID;

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
		// Обновим данные о корзине
		UpdateBasketInformer();
		yaCounter49803.reachGoal('AddToBasket');
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		//document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> обработка...';
	}

	// Передадим аргументы
	var r_args='ajax=1&type='+Type_Link+'&action=add&goods_id='+Goods_ID;

	//Отправляем запрос
	SendRequest("GET",'/basket.php',r_args,Handler,Loading);
}


/*
Обновление данных о корзине
*/
function UpdateBasketInformer(){
	// div куда отправить ответ
	var container='BasketInformer';

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		//document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> обработка...';
	}

	// Передадим аргументы
	var r_args='ajax=1&action=get_informer';

	//Отправляем запрос
	SendRequest("GET",'/basket.php',r_args,Handler,Loading);
}



/*
Голосование за отзыв (понравился, не понравился)
rID - номер отзыва
rVoice - yes - нравится, no - не нравится
*/
function ResponseVoice(rID, rVoice){
	// div куда отправить ответ
	var container='DIV_Response_'+rID;

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> обработка...';
	}

	// Передадим аргументы
	var r_args='ajax=1&rid='+rID+'&rvoice='+rVoice;

	//Отправляем запрос
	SendRequest("GET",'',r_args,Handler,Loading);
}


/*
Оценка товара
Voice - кол-во звезд от 1 до 5
*/
function ResponseGoods(Voice){
	// div куда отправить ответ
	var container='DIV_VoiceGoods';

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> обработка...';
	}

	// Передадим аргументы
	var r_args='ajax=1&voice='+Voice;

	//Отправляем запрос
	SendRequest("GET",'',r_args,Handler,Loading);
}


/*
Вывод формы добавления отзыва к товару
*/
function LoadResponseForm(){
	// div куда отправить ответ
	var container='DIV_Response_Form';

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> идет загрузка...';
	}

	// Передадим аргументы
	var r_args='resp_form_ajax=1';

	//Отправляем запрос
	SendRequest("GET",'',r_args,Handler,Loading);

}

/*
Добавить товар в список "Мои товары"
Goods_ID - номер товара

*/
function AddToMyGoods(Goods_ID){
	// div куда отправить ответ
	var container='DIV_AddToMyGoods';

	//Создаем функцию обработчик
	var Handler = function(Request){
		document.getElementById(container).innerHTML = Request.responseText;
	}

	//Создаем функцию информирования клиета, что загрузка идет...
	var Loading = function(){
		document.getElementById(container).innerHTML = '<IMG SRC="/i/loading.gif" WIDTH="20" HEIGHT="20"> идет добавление...';
	}

	// Передадим аргументы
	var r_args='ajax=1&a=add&goods_id='+Goods_ID;

	//Отправляем запрос
	SendRequest("GET",'/my_goods.html',r_args,Handler,Loading);

}
