var is_ie = !(navigator.appName.indexOf("Netscape") != -1);

function includeJS(src) {
	if(document.getElementsByTagName && document.createElement) {
		var head = document.getElementsByTagName('head')[0];

		var script = document.createElement('script');
		script.type = 'text/javascript';
		script.src = src;
		script.charset = "utf-8";

		head.appendChild(script);

		return true;
	} else {
		return false;
	}
}

function getCurrSelection() {
	if(document.selection)
		return document.selection;
	else
		return window.getSelection();
}

function getRange(sel) {
	if(!sel)
		sel = getSelection();

	if(typeof sel != "undefined") {
		return sel.getRangeAt(0);
	} else {
		return window.document.createRange();
	}
}

function hasParent(obj, par_id) {
	if(!obj) {
		return false;
	}

	if(obj.id == par_id) {
//		alert(obj.id);
		return true;
	} else {
		if(obj.parentNode) {
			return hasParent(obj.parentNode, par_id);
		} else {
			return false;
		}
	}
}

function trim(str) {
	var res = str.replace(/^\s+/, '');
	return res.replace(/\s+$/, '');

}

function lLib () {
	return this;
}

lLib.instance = null;

lLib.getInstance = function () {
	if(! lLib.instance) {
		lLib.instance = new lLib();
	}

	return lLib.instance;
};


lLib.includeJS = includeJS;

lLib.prototype.is_loaded = false;
lLib.prototype.onLoadEvents = new Array();
lLib.prototype.requestStack = new Array();





lLib.prototype.makeRequest = function (url, handler) {
	var requestId = this.requestStack.length;
	this.requestStack[requestId] = handler;
	
	var s_delim = "?";
	if (url.indexOf('?') !== -1) s_delim = '&';

	url += s_delim + "requestId=" + requestId + "&rnd=" + Math.random();
	lLib.includeJS(url);

	return requestId;
};


lLib.prototype.makeResponse = function (response) {
	if(typeof response != "object") {
		return false;
	}

	var requestHandler;
	var requestId = response.id;

	if(typeof this.requestStack[requestId] == "undefined") {
		return false;
	} else {
		requestHandler = this.requestStack[requestId];
		requestHandler(response);
		this.requestStack[requestId] = undefined;
		return true;
	}
};



function lLibResponse(requestId) {
	this.id = requestId;
}

lLibResponse.prototype.id = null;

function is_safari() {
	return (navigator.userAgent.indexOf("Safari") != -1);
}


var Mozilla = (navigator.appName.indexOf("Netscape") != -1);

function forum_check_reg_form() {
	forum_login = document.getElementById('forum_login');
	forum_password = document.getElementById('forum_password');
	forum_password_check = document.getElementById('forum_password_check');
	forum_email = document.getElementById('forum_email');

	if(!forum_login || !forum_password || !forum_password_check || !forum_email) {
		alert("Неправильно сформирована форма.");
		return false;
	}

	if(forum_login.value == "") {
		alert("Необходимо заполнить поле \"Логин\"");
		return false;
	}

	if(forum_password.value == "") {
		alert("Необходимо заполнить поле \"Пароль\"");
		return false;
	}

	if(forum_password.value != forum_password_check.value) {
		alert("Пароли не совпадают.");
		return false;
	}

	if(forum_email.value == "") {
		alert("Необходимо заполнить поле \"E-mail\"");
		return false;
	}

	return true;
}


function forum_check_form(obj) {
	if(!obj)
		return false;


	if(obj.captcha) {
		if(md5(obj.captcha.value) != getCookie("captcha1")) {
			alert("Неправильный код.");
			return false;
		}
	}


	if(obj.nickname)
		vlogin = obj.nickname.value;
	else
		vlogin = "";

	if(obj.title)
		vtitle = obj.title.value;
	else
		vtitle = "";

	if(obj.body)
		vbody = obj.body.value;
	else
		vbody = "";

	if(vlogin.length == 0) {
		alert("Введите имя.");
		return false;
	}



	if(vtitle.length == 0) {
		alert("Введите заголовок.");
		return false;
	}

	bd = vbody.replace(/[ \t\r\n]*/g, "");

	if(bd.length == 0) { 
		alert("Введите текст сообщения");
		return false;
	}
	return true;
}

function forum_quote(mess_id) {
    var author = "";
	mess_obj = document.getElementById('mess_' + mess_id);
	if(!mess_obj)
		return false;

	body_obj = document.getElementById('message');

	if(!body_obj)
		return false;


	if(is_ie) {
		sel = getCurrSelection();
		range = sel.createRange();
		sel_str = range.text;
	} else {
		sel = getCurrSelection();
		if (sel.rangeCount) {
			range = getRange(sel);
			sel_str = range;
		} else {
			sel_str = "";
		}
	}

	if(!is_ie)
		qmess = mess_obj.textContent;
	else
		qmess = mess_obj.outerText;

	if(sel_str && typeof sel_str != "undefined" && qmess) {
		parentObj = range.commonAncestorContainer;

		if(is_ie) {
			if(qmess.replace(sel_str, "") != qmess) {
				qmess = sel_str;
			}
		} else {
			parentObj = range.commonAncestorContainer;

			if(hasParent(parentObj, 'mess_' + mess_id)) {
				qmess = range;
			}
		}
	}

	res = "";

	real_id = mess_obj.id.substr(5, mess_obj.id.length - 5);
	author_obj = document.getElementById('author_' + real_id);
	if(author_obj) {
		author = (!Mozilla) ? author_obj.innerText : author_obj.textContent;
		author = "[b]" + trim(author) + "[/b]\r\n";
	} else {
		author = "";
	}

	if(qmess) {
		if(body_obj.value.length == 0)
			body_obj.value += "[QUOTE]" + author + qmess + "[/QUOTE]\r\n";
		else
			body_obj.value += "\r\n[QUOTE]" + author + qmess + "[/QUOTE]\r\n";
	}
	document.getElementById('message').focus();
	return false;
}


function forum_toAuthor(obj) {
	if(is_ie)
		res = obj.innerText;
	else
		res = obj.textContent;

	res = trim(res);

	res = "[b]" + res + "[/b]\r\n";

	document.getElementById('message').value += res;
	window.location = "#add";

	document.getElementById('message').focus();

	return false;
}



function forum_insert_smile(obj, element_name) {
	if(!obj) return;
	var obj = obj.firstChild;
	if(!obj) return;

	var alt = obj.alt;
	if(!alt) return false;

	var obj = $('message');
	if(!obj) obj = $('forum_body');
	if(!obj) obj = $(element_name);
	if(!obj) return false;

	obj.value += "[smile:" + alt + "] ";
	obj.focus();

	return true;
}

var last_src = "";


function cms_vote_postDo(formName, inputName, nstext) {
	var fObjColl = document.getElementsByName(formName);

	var fObj = '';
	if (fObjColl) {
		fObj = fObjColl[fObjColl.length-1];
	}

	if(typeof(fObj) !== "object") return false;
	
	iObj = fObj.elements[inputName];
	
	if(typeof(iObj) === "undefined") return false;

	res = false;
	for(i = 0; i < iObj.length; i++)
		if(iObj[i].checked)
			res = iObj[i].value;


	if(res) {
		sc = document.createElement("script");
		sc.src = "/vote/post/" + res + "/?m=" + new Date().getTime();
		oTemplate = fObj.elements['system_template'];
		if((oTemplate instanceof Object) && (oTemplate.value.length)) {		
			sc.src = sc.src + "&template="+oTemplate.value;			
		}

		fObj.appendChild(sc);
	} else {
		if(nstext) {
			alert(nstext);
		}
	}
}

