﻿/*url: путьq: query, тоже что data в $.ajaxtarget: объект для размещения htmlon: тоже что и successtag:	данные для передачи. вызывается посредник onSuccesstarget: ID | element | 			{				obj: id/el, 				img: path/'#..' src - путь к картинке				clear: @false/true  - очищать перед загрузкой			}img: {	obj: id | obj	src: src | '#..'	title: текст title для подмены	off: true/false убрать свойство onclick	hide: true - установить display:none 	show: object | ID - установить display:block	swap: obj | ID. включает hide:true и устанавливает show=obj		conceal: true - установить visibility:hidden	reveal: object | ID  - установить visibility:visible	toggle: obj | ID. включает conceal:true и устанавливает reveal=obj	}type:  //в jQuery 'dataType'	xml, html, script, jsonmethod: //в jQuery 'type'	get, post*/var ajaX_cache = new Array();jQuery.fn.loadX = function(h) {//загрузка с картинкой	if (h.img) this.each(function() { this.innerHTML = "<center><img src='" + jq_ajax_convSrc(h.img) + "'></center>"; });	if (h.q) { h.data = h.q; delete h.q; }	this.load(h.url, h.data, h.on);	h = h.data = h.on = h.img = h.q = null;};jQuery.ajaX = function(h) {	/*============= START ===============*/	//ajaX_clean();	var tmp;	var tag, target, img, isEvSuccess = false, isEvError = false;	//совместимость с моим ajaX	if (h.q) { h.data = h.q; delete h.q; }	if (h.on) { h.success = h.on; delete h.on; }	if (h.type) { h.dataType = h.type; delete h.type; }	if (h.method) { h.type = (h.method.toUpperCase() == 'POST' ? 'POST' : 'GET'); delete h.method; }	/********* TAG ************/	if (h.tag) {		tag = h.tag;		delete h.tag;		isEvSuccess = true; isEvError = true;	}	/**********  TARGET **********/	if (h.target) {		isEvSuccess = true;		target = h.target;		delete h.target;		var target = jq_ajax_convID(target);		if (target.toString() == '[object Object]') {			target.obj = jq_ajax_convID(target.obj);			if (target.img) target.obj.innerHTML = "<center><img src='" + jq_ajax_convSrc(target.img) + "'/></center>";			else if (target.clear) target.obj.innerHTML = '';			target = target.obj;		}	}	/**********  IMG **********/	if (h.img) {		isEvSuccess = true; isEvError = true; //что раньше сработает		img = h.img;		delete h.img;		if (img.obj) img.obj = jq_ajax_convID(img.obj);		if (img.obj)//если не ошиблись, и объект существует		{			if (img.title) { tmp = img.obj.title; img.obj.title = img.title; img.title = tmp; } //подменяем title изображения			if (img.src) { tmp = img.obj.src; img.obj.src = jq_ajax_convSrc(img.src); img.src = tmp; } //подменяем src изображения			else if (img.swap) { img.show = img.swap; img.hide = true; delete img.swap; } //hide & show др. объект			else if (img.toggle) { img.reveal = img.toggle; img.conceal = true; delete (img.toggle); } //conceal & reveal др. объект			if (img.off) { img.ajaX_disabledOnclick = img.onclick; img.onclick = undefined; } //скрываем onclick		}		if (img.hide) jq_ajax_Obj(img.hide, img).style.display = 'none';		if (img.conceal) jq_ajax_Obj(img.conceal, img).style.visibility = 'hidden';		if (img.show) jq_ajax_Obj(img.show, img).style.display = 'block';		if (img.reveal) jq_ajax_Obj(img.reveal, img).style.visibility = 'visible';	} else img = undefined;	var origSuccess, origError;	//вставляем свои события	if (isEvSuccess) { if (h.success) origSuccess = h.success; h.success = ownSuccess; }	if (isEvError) { if (h.error) origError = h.error; h.error = ownError; }	var isEventFired = false;	$.ajax(h);	function getObj(obj) {//определяем что передали в show | hide | reveal | conceal и возвращаем объект		if (obj.constructor == Object) return obj;		if (obj.constructor == String) return document.getElementById(obj);		try{return img.obj;}finally{img=img.obj=null} //это truе или 1	}	function ownError(req, status, err) {		restoreFace();		if (origError) origError(req, status, err, tag); origError = undefined; tag = undefined;		(jQuery.fn.dialog ? ajaxDialogServerErr : ajaxSimpeServerErr)(req, status);		req = err = origError = tag = null;	};	function ownSuccess(data) {		restoreFace();		if (target) { $(target).html(data); data = undefined; }		if (origSuccess) origSuccess(data, tag);		data = target = origSuccess = tag = null;	};	function restoreFace() {		if (isEventFired) return;		isEventFired = true;		if (img) {			if (img.obj) {				if (img.title) img.obj.title = img.title; //возвращаем title 				if (img.src) img.obj.src = img.src; //подменяем src изображения				if (img.off) { img.onclick = img.ajaX_disabledOnclick; img.ajaX_disabledOnclick = undefined; } //возвращаем onclick			}			if (img.hide) jq_ajax_Obj(img.hide, img).style.display = 'block';			if (img.conceal) jq_ajax_Obj(img.conceal, img).style.visibility = 'visible';			if (img.show) jq_ajax_Obj(img.show, img).style.display = 'none';			if (img.reveal) jq_ajax_Obj(img.reveal, img).style.visibility = 'hidden';			img = undefined;		}	}	/*============= END ===============*/};function jq_ajax_convID(obj) { return obj.constructor == String ? document.getElementById(obj) : obj; };//преобразуем путь к картинке '#' в нормальный путьfunction jq_ajax_convSrc(src) { return src.charAt(0)=='#'? jQuery.scriptPath+src.substring(1)+'.gif' : scr;};function jq_ajax_Obj(el,img){//определяем что передали в show/hide/reveal/conceal. это может быть true | ID | obj.  возвращаем объект	if(el.constructor==Object) return el;	if(el.constructor==String) return document.getElementById(el);	return img.obj; //это truе или 1}