/**
 * Created by JetBrains PhpStorm.
 * User: atuzlukov
 * Date: 24.12.10
 * Time: 11:47
 * To change this template use File | Settings | File Templates.
 */

// Выполнение ajax запроса
function ajaxClass () {

	// свойства класса
	this.params = {};
	this.url 	= "";

	// Получить параметры и url из ссылки
	this.get_link = function(href){

						var query_string, pos, arParams, curParam;

						pos = href.indexOf("?");

						// если параметры есть
						if ( pos != -1 ) {

							query_string = href.slice(pos-(-1));//только параметры
							this.url = href.slice(0, pos);//только url

							// если много параметров
							if( query_string.indexOf("&") != -1 ) {
								arParams = query_string.split("&");

								for( var i=0; i<arParams.length; i++ ) {

									curParam = arParams[i].split("="); // разбить на ключ - значение
									this.params[curParam[0]]=curParam[1];
								}
							// если один параметр
							} else {

								curParam = query_string.split("=");
								this.params[curParam[0]]=curParam[1];
							}

						// если параметров нет
						}else{
							this.url = href;
						}
					}

	this.get_form_params = function(form_obj){

								var __in = this;

								//Данные всех текстовых input'ов формы
								form_obj.find("input:text").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Поля с паролями
								form_obj.find("input:password").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Отмеченные чекбоксы и радиобаттоны
								form_obj.find("input:checked").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Отмеченные селекты
								form_obj.find("select").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Textarea
								form_obj.find("textarea").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Все скрытые поля
								form_obj.find("input:hidden").each(function(){
									__in.params[$(this).attr("name")]=$(this).val();
								});

								//Куда отправить данные формы
								this.url=form_obj.attr("action");
							}

	// Изменить какой-либо параметр
	this.change_param = function ( param_name, new_value ) {

							this.params[param_name] = new_value;
						}

	this.clear_params = function () {

							this.params = {};
						}

	// Отправка Ajax запроса

	this.beforeSend = function(request){

						request.setRequestHeader('Accept', 'application/ajax');// отправить заголовок
						AjaxLoadIndicator(true); // показать загрузку
					}

	this.success = function(){

						AjaxLoadIndicator(false);
					}

	this.error = function(ob, data, errorThrown){
						AjaxLoadIndicator(false);
						// document.location.reload();
					}

	this.submit = function(){
					$.ajax({
						url:this.url,
						beforeSend:this.beforeSend,
						dataType: 'html',
						data:this.params,
						type: 'post',
						success:this.success,
						error :this.error
					});
				}

}

var generalAjaxRequest = new ajaxClass();




