function getXML(content,name){
	var cstart = content.indexOf('<'+name+'>');
	
	var cstop = content.indexOf('</'+name+'>');
	if(cstart == -1 || cstop == -1 || cstart > (cstop - 2*name.length)){
		return null;
	}
	cstop =  cstop - cstart - name.length - 2;
	cstart += name.length + 2;
	var tmp  = content.substr(cstart,cstop);
	if(tmp.substr(0,9) =='<![CDATA[' && tmp.substr(tmp.length - 3) ==']]>'){
		return tmp.substr(9,(tmp.length - 12));
	}
	return tmp;
}
function getD(block_id,action_url,additional_confirm){
	if(additional_confirm){
		if(confirm(additional_confirm) == false){
			return null;
		}
	}
	d('Pobranie obiektu z adresu: ' + action_url);
	action_url = action_url.replace('index.php','ajax.php');
	action_url += 'ajax_block_id/' + block_id + '/';
	advAJAX.get({
		url : action_url,
		onInitialization : function (obj){
			$(block_id).innerHTML = ajax_msg('Pobieranie danych ... ','progress');
		},
		onSuccess : function(obj) {
			parseAnswer(obj.responseText,block_id);
			//getElementsByClassName(block_id.classNames());
		},
		onRetry : function() {
			$(block_id).innerHTML = ajax_msg('Powtarzanie procesu pobierania danych ... ','progress');
		},	
	    onError : function(obj) {
	    	alert('External error: I can\'t connect to server');
	    }
	});
}
function form_push(fid){
	fid = $(fid);
	action = fid.action.replace(/^\s+|\s+$/, '').replace(/\/$/, '');
	new Ajax.Request(action+'/_layout/json',
	{
	    method:'post',
	    parameters: fid.serialize(true),
	    onSuccess: function(res){
			if(res.responseText.isJSON()){
		      	var j = res.responseText.evalJSON(true);
				j.each(function(item){
					switch(item.method){
						case 'set':
							$(item.id).innerHTML = item.content;
							break;
						case 'add':
							$(item.id).innerHTML = $(item.id).innerHTML + item.content; 
							break
						case 'before':
							$(item.id).innerHTML = item.content + $(item.id).innerHTML;
							break;
					}
					if(item.cmd){
						item.cmd.each(function(code){
							eval(code);
						});
					}
				});
			}else{
				d('Blad przeslania danych do formularza');
				var t = new Element('div',{
					'id' : 'errorWindow',
					'class' : 'errorWindow'
				});
				t.innerHTML = '<div style="border: 2px solid red; padding: 4px; width: 40px; height: 20px; font-size: 20px;" onclick="$(\'errorWindow\').remove();">X</div> ' + res.responseText + '<div class="break"></div>';
				t.style.zIndex = 100;
				with(t.style){
					width = '90%';
					height = '100%';
					background = '#FFFFFF';
					border = '1px solid red';
					position = 'absolute';
					left = '0px';
					top = '0px';
				}	
				document.body.appendChild(t);
		    }
	    },
	    onFailure: function(){ 
	    	alert('Something went wrong...') 
	    }
	});
	return false;
}
function ajaxShowException(text){
	d('Blad przeslania danych do formularza');
	var t = new Element('div',{
		'id' : 'errorWindow',
		'class' : 'errorWindow'
	});
	
	t.innerHTML = '<div style="border: 2px solid red; padding: 4px; width: 40px; height: 20px; font-size: 20px;" onclick="$(\'errorWindow\').remove();">X</div> '
			+ text + '<div class="break"></div>';
	t.style.zIndex = 95;
	with(t.style){
		width = '90%';
		height = '100%';
		background = '#FFFFFF';
		border = '1px solid red';
		position = 'absolute';
		left = '0px';
		top = '0px';
	}	
	document.body.appendChild(t);
}
function run(action_url){
	action = action_url.replace(/^\s+|\s+$/, '').replace(/\/$/, '');
	new Ajax.Request(action+'/_layout/json',{
		method:'get',
	    //parameters: fid.serialize(true),
	    onSuccess: function(res){
			if(res.responseText.isJSON()){
		      	var j = res.responseText.evalJSON(true);
				j.each(function(item){
					if(item.id){
						switch(item.method){
							case 'set':
								$(item.id).innerHTML = item.content;
								break;
							case 'add':
								$(item.id).innerHTML = $(item.id).innerHTML + item.content; 
								break
							case 'before':
								$(item.id).innerHTML = item.content + $(item.id).innerHTML;
								break;
						}
					}
					if(item.cmd){
						item.cmd.each(function(code){
							eval(code);
						});
					}
				});
			}else{
				ajaxShowException(res.responseText);
		    }
	 
	    },
	    onLoading: function(){
	    	//daj znac przezroczystoscia ze nie jest dostepna strona przez chwile.
			document.body.setOpacity(0.5);
	    	
	    },
	    onLoaded: function(){
			document.body.setOpacity(1);
	    },
	    onFailure: function(){ 
	    	alert('Something went wrong...') 
	    }
	});
	return true;
}
function submitD(form_id,block_id,action_url,additional_confirm){
	if(additional_confirm){
		if(confirm(additional_confirm) == false){
			return null;
		}
	}
	form = $(form_id);
	if(!form){
		alert('Nie ma formularza o takim ID, prosze sprawdzić kod');
		return false;
	}
	if(!block_id){
		//block_id = $('comments_add');//form.parent.id;
		return false;
	}	
	action_url = action_url.replace('index.php','ajax.php');
	action_url += 'ajax_block_id/' + block_id + '/';
	advAJAX.submit(form,{
		url : action_url,
		parameters : {
			submit : form_id
		},
		onInitialization : function (obj){
			$(block_id).innerHTML = ajax_msg('Pobieranie danych ... ','progress');
			moveToCenter(block_id);
		},
		onSuccess : function(obj) {
				d('Operacje submitD zakonczona, parsowanie danych');
				$(block_id).innerHTML = obj.responseText;
				parseAnswer(obj.responseText,block_id);
		},
		onRetryDelay : function() {
			$(block_id).innerHTML = ajax_msg('Powtarzanie procesu wysyłania danych ... ','progress');
			moveToCenter(block_id);
		},		
		onRetry : function() {
			$(block_id).innerHTML = ajax_msg('Powtarzanie procesu wysyłania danych ... ','progress');
			moveToCenter(block_id);
		},		
	    onError : function(obj) {
			$(block_id).innerHTML = ajax_msg('Błąd odpowiedzi serwera','error');
	    }
	});
}
function parseAnswer(content,block_id){
	showObject(block_id);
	if(content.indexOf('<code>ERROR</code>') != -1){
		//nastapil wyjątek.
		//analiza zwroconego bledu.
		var css_type = getXML(content,'css_type');
		css_type = (css_type)? css_type + '_exception' : 'exception';
		d('Uzywam CSS: '+css_type);
		var outmsg =  '<div class="'+css_type+'"><u>' + getXML(content,'code_type') + '</u><br />';
		if(getXML(content,'info')){
			outmsg += '<b>' + getXML(content,'info') + '</b><br />';
		}
		if(getXML(content,'backtrace')){
			outmsg += getXML(content,'backtrace') + '<br />';
		}
		var close_button = '<input type="submit"  onmousedown="javascript:hideObject(\''+block_id+'\')" value="Close It" class="submit_button" />';
		$(block_id).innerHTML = outmsg + close_button + '</div>';
		moveToCenter(block_id);
		return false;
	}else{
		d('Sukces operacji submitD');
		$(block_id).innerHTML  = content;
		var cmd = getXML(content,'onsuccess')
		if(cmd){
			eval(cmd);
		}
	}
}
function ajax_msg(text,css_type){
	return '<div class="ajax_'+css_type+'">' +text + '<div class="loading">&nbsp;</div></div>';
}
function aAction(action_url,additional_confirm){
	d('ajax::Action');
	if(additional_confirm){
		if(confirm(additional_confirm) == false){
			return null;
		}
	}
	action_url = action_url.replace('index.php5','ajax.php5');
	advAJAX.get({
		url : action_url,
		onSuccess : function(obj) {
			if(getXML(obj.responseText,'code')=='OK'){
				if($('notify')){
					showObject('notify');
					moveToCenter('notify');
					$('notify').innerHTML = obj.responseText;
					var cmd = getXML(obj.responseText,'onsuccess')
					if(cmd){
						eval(cmd);
					}
					return true
				}
				alert('brak obiektu notify');
				return false;
			}else{
				if($('notify')){
					var block_id = 'notify';
					var content = obj.responseText;
					alert(obj.responseText);
					//analiza zwroconego bledu.
					var css_type = getXML(content,'css_type');
					css_type = (css_type)? css_type + '_exception' : 'exception';
					d('Uzywam CSS: '+css_type);
					var outmsg =  '<div class="'+css_type+'"><u>' + getXML(content,'code_type') + '</u><br />';
					if(getXML(content,'info')){
						outmsg += '<b>' + getXML(content,'info') + '</b><br />';
					}
					if(getXML(content,'backtrace')){
						outmsg += getXML(content,'backtrace') + '<br />';
					}
					var close_button = '<input type="submit"  onmousedown="javascript:hideObject(\''+block_id+'\')" value="Close It" class="submit_button" />';
					$(block_id).innerHTML = outmsg + close_button + content +'</div>';
					showObject('notify');
					moveToCenter('notify');
					//setTimeout('hideObject(\'notify\')',4000);
				}else{
					alert('brak obiektu notify');
				}
				return false;
			}
		},
	    onError : function(obj) {
	    	error.show('Internal error: I can\'t connect to server and save modification');
	    }
	});
}
function replaceImage(id,photo_url, alt_text){
	//d('Wymiana fotki na obszarze ' + id + ' src: '+ photo_url);
	if(!$(id)){
		//alert('clientAPI:JS:Error - there is no object using this ID: ' + id);  
		return false;
	}
	$(id).src= photo_url;	
	if(alt_text){
		$(id).alt = alt_text;
	}
	return true;
}
function replaceContent(id,content){
	if(! $(id)) return false;
	$(id).innerHTML = content;
	return true;
}