/* dependencies: object.js event.js */

function textareapp_createView(ta, vw) {
	ta = checkForId(ta);
	var s = ta.value;
	s = s.replace(/\r/ig, "");
	s = s.replace(/\n/ig, "<br/>"); 
	s = s.replace(/\[c\]([\W\w]*?)\[\/c\]/ig, "</p><div class=\"cn\">$1</div><p>");
	s = s.replace(/\[h\]([\W\w]*?)\[\/h\]/ig, "<h4>$1</h4>");
	s = s.replace(/\[b\]([\W\w]*?)\[\/b\]/ig, "<b>$1</b>");
	s = s.replace(/\[quote\]([\W\w]*?)\[\/quote\]/ig, "<span class=\"it\">$1</span>");
	s = s.replace(/\[url\]([\W\w]*?)\[\/url\]/ig, "<a href=\"$1\" target=\"_blank\">$1</a>");
	s = s.replace(/\[url[\:=]\W?([\w\W]*?)\W?\]([\W\w]*?)\[\/url\]/ig, "<a href=\"$2\" title=\"$1\" target=\"_blank\">$1</a>");
	s = s.replace(/\[img.*\]([\W\w]*?)\[\/img\]/ig, "</p><div class=\"cn\"><a href=\"$1\" target=\"_blank\"><img src=\"$1\" width=\"200\" height=\"150\" border=\"1\" alt=\"Kattintson a képre a megnyitáshoz!\"> </a></div><p>");
	s = s.replace(/\[dimg[\:=]\W?([\w\W]*?)\W?\]([\W\w]*?)\[\/dimg\]/ig, "</p><div class=\"cn\"><img src=\"$2\" border=\"0\" alt=\"$1\" title=\"$1\"> </a></div><p>");
	vw = checkForId(vw);
	vw.innerHTML = '<p>'+s+'</p>';
	return true;
}

function textareapp_prompt(tag, t) {
	var txt = (t) ? t : window.prompt('Szöveg', '');
	return ((txt) ? txt : '');
}

function textareapp_prompt2(tag, c, u) {
	var url = (u) ? u : window.prompt('URL', 'http://');
	if (!url) {
		var reta = new Array(((c) ? '['+tag+']'+c+'[/'+tag+']' : ''), ((c)?'['+tag+']':''));
		return reta;
	}
	var cap = (c) ? c : window.prompt('Felirat', '');
	if (!cap) {
		var reta = new Array('['+tag+']'+url+'[/'+tag+']', '['+tag+']');
		return reta;
	}
	var reta = new Array(('['+tag+((cap) ? ':"'+cap+'"' : '')+']'+url+'[/'+tag+']'), '['+tag+':"');
	return reta;
}

function textareapp_selText(obj) {
	var obj = checkForId(obj);
	var ret = '';
	if (document.selection) {
		if (document.selection.createRange) {
			ret = '';
		}
	} else {
		ret = obj.value.substr(obj.selectionStart, obj.selectionEnd - obj.selectionStart);
	}
	return ret;
}

function textareapp_setSelText(obj, txt, taglen) {
	var obj = checkForId(obj);
	if (document.selection) {
		obj.value += txt;
	} else {
		var st = obj.selectionStart;
		var en = obj.selectionEnd; 
		obj.value = obj.value.substr(0, st) + txt + obj.value.substr(en, obj.value.length);
		obj.selectionStart = st + taglen;
		obj.selectionEnd = en + taglen;
	}
	obj.focus();
}

function textareapp_addtag(e) {
	if (!e) e = event;
	var src = (e.srcElement) ? e.srcElement : this;
	var tag = src.id.substring(src.id.lastIndexOf('_')+1, src.id.length);
	var ta_id = src.id.substr(0, src.id.lastIndexOf('_'));
	var selT = textareapp_selText(ta_id);
	if ((tag=='img') || (tag=='url')) {
		if (selT) {
			textareapp_setSelText(ta_id, '['+tag+']'+selT+'[/'+tag+']', tag.length + 2);
		} else {
			var ins = textareapp_prompt2(tag, selT, '');
			if (ins) textareapp_setSelText(ta_id, ins[0], ins[1].length);
		}
	} else {
		if (!selT) prmt = textareapp_prompt(tag, selT);
		if ((selT) || (prmt)) textareapp_setSelText(ta_id, '['+tag+']'+((selT) ? selT : prmt)+'[/'+tag+']', tag.length + 2);
	}
	if (ta_id = checkForId(ta_id)) {
		if (ta_id.focus) ta_id.focus();
	}
}

function textareapp_counter_update(obj) {
	var obj = checkForId(obj);
	var maxlen = checkForId(obj.id + '_maxlength').value;
	var counter = checkForId(obj.id + '_counter');
	if (maxlen>0) {
		obj.value = obj.value.substr(0, maxlen);
		counter.innerHTML = maxlen - obj.value.length;
	} else {
		counter.innerHTML = obj.value.length;
	}
}

function textareapp_change(e) {
	if (!e) e = event;
	var src = (e.srcElement) ? e.srcElement : this;
	textareapp_counter_update(src.id);
	return true;
}

function textareapp_init(id) {
	var maxlen = checkForId(id + '_maxlength').value;
	var counter = checkForId(id + '_counter');
	if (maxlen) {
		counter.innerHTML = maxlen;
	} else {
		counter.innerHTML = '';
	}
	addClickEvent(id + '_b', textareapp_addtag);
	addClickEvent(id + '_quote', textareapp_addtag);
	addClickEvent(id + '_c', textareapp_addtag);
	addClickEvent(id + '_h', textareapp_addtag);
	addClickEvent(id + '_url', textareapp_addtag);
	addClickEvent(id + '_img', textareapp_addtag);
	addChangeEvent(id, textareapp_change);
	textareapp_counter_update(id);
}
