var divArr = new Array('editable_top', 'editable_left', 'editable_right'); //tablica z nazwami divow


window.onload = function(){
	getData();				//pobranie zawrtosci divowo
	onClikMode();			//przypisanie wlasciwosci on click
}

//rzadanie ajax o dane do divów
function getData(){				
		var ps = new Array();
		for(i=0; i<=(divArr.length-1); i++){
			ps['getdata_' + i] = divArr[i];
		}
		ps['mode'] = 'getdata';
		ps['div_amount'] = i-1;
		sndReq('rpc.php5', 'POST', ps);

}
/**
 * Zarzadznie odpowiedzia
 */
function dispatchResponse(data, responseTxt) {
	if (data[0] == 'error') 		// blad zwrcony przez RPC
		alert('Error: '+data[1]);
	else if (data[0] == 'content'){ 			// odebrana lista
		for(i=2; i<=(eval(data[1])+2); i++){
			dataArray = data[i].split('<');
			insertContent(dataArray[0],dataArray[1]);
		}
	}
	else if (data[0] == 'ok'){
	}
//	else							// nieznana odpowiedz AJAX
//		alert('Unknown AJAX response: ' + responseTxt);
}

function insertContent(id,content){
	//txt = Url.decode(content);
	$(id).innerHTML = nl2br(content); //wstawienie zawrtosci diva
}

function nl2br(str) {
	str = str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<br />");
//	str = str.replace(/(\r\n)|(\n\r)|\r|\n/g,"&lt;br /&gt;");
	return str;
}

function br2nl(str){
	str = str.replace(/<br(\s*\/)?>/g, "\n");
	str = str.replace(/<BR(\s*\/)?>/g, "\n");
	return str;
}

//przypisanie zdazenia ondblclick
function onClikMode(){
	for(i in divArr){
		$(divArr[i]).ondblclick = editMode;
	}
}

//zmiana pola w edytowalne
function editMode(oEvent){
    oEvent = oEvent || window.event;
    var target = oEvent.target || oEvent.srcElement;
    
    $(target.id).ondblclick = '';
    content = $(target.id).innerHTML;
    class_name = $(target.id).className;
    $(target.id).innerHTML = '<textarea id="' + target.id + '_area" class="' + class_name + '" style="padding: 0px;">' + br2nl(content) + '</textarea>';    
	$(target.id + '_area').onblur = function(){saveMode(target.id)};
	$(target.id + '_area').focus();
	if(navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Opera' ){
		text_range = $(target.id + '_area').createTextRange();
  		text_range.moveStart('character', $(target.id + '_area').value.length); 
  		text_range.select();
  	} 
}
//zapisanie do pliku
function saveMode(id){
	var ps = new Array();
	ps['mode'] = 'savedata';
	//ps['content'] = Url.encode($(id + '_area').value);
	ps['content'] = $(id + '_area').value;
	
	ps['file_name'] = id;
	$(id).ondblclick = editMode;
	$(id).innerHTML = nl2br(ajaxtags($(id + '_area').value));
	sndReq('rpc.php5', 'POST', ps);
}

function ajaxtags(str) {
		str = str.replace(/</g, "&lt;");
		str = str.replace(/>/g, "&gt;");
		str = str.replace(/,/g, "&#8218;");
   		return str;
}
/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
*	Na chwile obecną nie używane, wprowadzic w przypadku obsługi tagów html
*

var Url = {

	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}
*/