
function $(id){
	return document.getElementById(id);
}	

function checkQuest(_faqName, _faqQuestion){
	if(_faqName == '' || _faqName == 'Твое имя' || _faqQuestion=='' || _faqName == 'Вопрос'){
		return false;
	}else{
		return true;}	
}

function showFAQMessage(status, message) {
	if (status == 'ok') {
		$('idPopup7Title').innerHTML = 'Спасибо за вопрос!';
		$('idPopup7Message').innerHTML = 'В ближайшее время мы постараемся ответить на него. Ответ будет опубликован на нашем сайте в разделе Вопросы и ответы.';
	} else {
		$('idPopup7Title').innerHTML = 'Ошибка';
		$('idPopup7Message').innerHTML = message;
	}
	popup.show({id:'idPopup7', t:100, o:'no'});
}

function submitQuestion(_name, _question) {
	var a = new Ajax('/', {
		data: Object.toQueryString({
			action: 'faq',
			name: _name,
			question: _question
		}),
		method: 'post',
		onSuccess: function () {
			showFAQMessage('ok');
		},
		onFailure: function(answer) {
			alert('Произошла досадная ошибка. Приносим свои извинения за неудобство.');
		}
	});
	a.request();
}

function getContestData(data, type, strdate) {
	/* Текстовый конкурс */
	if (type == 1) {
		/* Спросим Название работы */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "entryname"}), method: 'post', onComplete: function(answer){setContestParam('entryname', answer, strdate);}}).request();
		/* Спросим СОДЕРЖАНИЕ */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "description"}), method: 'post', onComplete: function(answer){setContestParam('description', answer, strdate);}}).request();	
		/* Спросим User Data */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "userdata"}), method: 'post', onComplete: function(answer){setContestParam('userdata', answer, strdate); }}).request();
				
		$("text_unified_id").value = data;
		return true;
	}
	/* Графический конкурс */
	if (type == 0) {
		/* Спросим Название работы */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "entryname"}), method: 'post', onComplete: function(answer){setContestParam('graph_entryname', answer, strdate);}}).request();
		setContestParam('graph_image', '', strdate);
		/* Спросим СОДЕРЖАНИЕ */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "description"}), method: 'post', onComplete: function(answer){setContestParam('graph_image', answer, strdate);}}).request();	
		/* Спросим User Data */
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: type, structure: "userdata"}), method: 'post', onComplete: function(answer){setContestParam('graph_userdata', answer, strdate); }}).request();
				
		$("graph_unified_id").value = data;
		return false;
	}

}

function setContestParam(type, responce, strdate) {

	if (type == 'description') {
		$('contest_desc').innerHTML = responce;
	}
	if (type == 'userdata') {
		$('contest_author').innerHTML = responce;
	}	
	if (type == 'entryname') {
		$('text_entryname').innerHTML = responce;
	}
	if (strdate != '') {
		$('text_workdate').innerHTML = strdate;
	}	
	
	if (type == 'graph_image') {
		$('graph_image').src = responce;
		$('graph_image_href').href = responce;
	}
	if (type == 'graph_userdata') {
		$('graph_contest_author').innerHTML = responce;
	}	
	if (type == 'graph_entryname') {
		$('graph_entryname').innerHTML = responce;
	}
	if (strdate != '') {
		$('graph_workdate').innerHTML = strdate;
	}	
}

function setTotalVote (unified_id, vote){
	$('allStars_'+unified_id).className = 's'+vote; 
}

function saveTextVoteResult(res) {
	
	if (res >= 1 && res <=10 && $("text_unified_id").value != "") {
		/* Спросим User Data */
		data = $("text_unified_id").value;
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: "10", structure: res}), method: 'post', onComplete: function(answer){setTotalVote(data, answer);}}).request();
		
	}
}


function saveGraphVoteResult(res) {
	
	if (res >= 1 && res <=10 && $("graph_unified_id").value != "") {
		/* Спросим User Data */
		data = $("graph_unified_id").value;
		new Ajax('/plugins/contest_ajax.php?rand='+Math.random(), {data: Object.toQueryString({unified_id: data, contest_type: "10", structure: res}), method: 'post', onComplete: function(answer){setTotalVote(data, answer);}}).request();
		
	}
}

function clearTextWorkPopup() {
    var mandatoryFields = new Array('text_lastname','text_firstname','text_age','text_workname','text_work_desc');
    var defaultFields = new Array('Фамилия автора', 'Имя автора', 'Возраст', 'Название работы', 'Работа');
    var formObj=document.formtextwork;
    for (var i=0; i<mandatoryFields.length; i++)
    {
       	formObj[mandatoryFields[i]].style.backgroundColor = "#FFFFFF";
       	formObj[mandatoryFields[i]].value = defaultFields[i];
    }
}

function clearGraphicWorkPopup() {
    var mandatoryFields = new Array('graph_lastname','graph_firstname','graph_age','graph_workname','graph_work_file');
    var defaultFields = new Array('Фамилия автора', 'Имя автора', 'Возраст', 'Название работы', '');
    var formObj=document.formgraphwork;
    for (var i=0; i<mandatoryFields.length; i++)
    {
       	formObj[mandatoryFields[i]].style.backgroundColor = "#FFFFFF";
       	formObj[mandatoryFields[i]].value = defaultFields[i];
    }
}

function checkTextWork(){
        var mandatoryFields = new Array('text_lastname','text_firstname','text_age','text_workname','text_work_desc');
        var defaultFields = new Array('Фамилия автора', 'Имя автора', 'Возраст', 'Название работы', 'Работа');
        var error=0,i;
        var msg="";
        var formObj=document.formtextwork;
        for (i=0;i<mandatoryFields.length;i++)
        {
                if(formObj[mandatoryFields[i]] && formObj[mandatoryFields[i]].name && (!formObj.elements[mandatoryFields[i]].value
				|| formObj.elements[mandatoryFields[i]].value == defaultFields[i]))
                {
                	formObj[mandatoryFields[i]].style.backgroundColor = "#F8BABA";
                    error=1;
                    msg="Заполните все поля";
                } else {
                	formObj[mandatoryFields[i]].style.backgroundColor = "#FFFFFF";
                }
        }
        if (!formObj['text_age'].value.match(/^\d{1,2}$/)) {
        	formObj['text_age'].style.backgroundColor = "#F8BABA";
        	error=1;
            msg = msg || "Введите правильный возраст (число)";
        }
        if(error==1)
        {
        	alert(msg);
            return false;
        }
        else
        {
        	//popup.hide({id:'idPopup10'}); 
        	//popup.show({id:'idPopup12', t:100, o:'no'}); 
        	$('text_work_submit_button').style.visibility = 'hidden'; 
        	formObj.submit();
        	return false;
        }
}


function checkGraphWork(){
        var mandatoryFields = new Array('graph_lastname','graph_firstname','graph_age','graph_workname','graph_work_file');
        var defaultFields = new Array('Фамилия автора', 'Имя автора', 'Возраст', 'Название работы', '');
        var error=0,i;
        var msg="";
        var formObj=document.formgraphwork;
        for (i=0;i<mandatoryFields.length;i++)
        {
                if(formObj[mandatoryFields[i]] && formObj[mandatoryFields[i]].name && !formObj.elements[mandatoryFields[i]].value
				|| formObj.elements[mandatoryFields[i]].value == defaultFields[i])
                {
                	formObj[mandatoryFields[i]].style.backgroundColor = "#F8BABA";
                	error=1;
                    msg="Заполните все поля";
                } else {
                	formObj[mandatoryFields[i]].style.backgroundColor = "#FFFFFF";
                }
        }
        if (!formObj['graph_age'].value.match(/^\d{1,2}$/)) {
        	formObj['graph_age'].style.backgroundColor = "#F8BABA";
        	error=1;
            msg = msg || "Введите правильный возраст (число)";
        }
        if(error==1)
        {
        	alert(msg);
            return false;
        }
        else
        {
        	$('graph_work_submit_button').style.visibility = 'hidden'; 
        	formObj.submit();
            return true;
        }
}

function checkEmail(){
	var error=0
	if(document.getElementById('email').value.length<4 || !document.getElementById('email').value.match(/^[a-zA-Z\d][a-zA-Z_\.\-\d]*@[a-zA-Z_\.\-\d]+\.[a-zA-Z]{2,4}$/))
	{
		document.getElementById('email').style.background = "#F8BABA"
		document.getElementById('mailmsg').innerHTML = "Неправильный формат Email";
		
		return false;
	}else{
		document.getElementById('email').style.background = ""
		document.getElementById('mailmsg').innerHTML = "Email успешно изменен";
	
		return true;
	}
}

function checkRetrieve(){
	
}

function checkRegistration(){
	hideregError();
	var mandatoryFields = new Array('userlogin','userpassword','firstName','secondName','city','email');
	var error=0,i;
	var msg="";
	
	if(document.getElementById('firstname').value.length<1)
	{
		error=1;
		showHighLight(document.getElementById('firstname'));
		msg="Укажите  имя";
	}else{
		hideHighLight(document.getElementById('firstname'));
	}

	
	if(document.getElementById('email').value.length<4 || !document.getElementById('email').value.match(/^[A-z\d][A-z\d\_\-\.\&]*@[A-z\d\_\-\&]+\.([A-z\d\_\-\&]+\.)*[A-z]{2,}$/))
	{
		error=1;
		showHighLight(document.getElementById('email'));
		msg="Неправильный формат Email";
	}else{
		hideHighLight(document.getElementById('email'));
	}
	
	if(document.getElementById('password').value.length<4)
	{
		error=1;
		showHighLight(document.getElementById('password'));
		msg="Минимальная допустимая длина пароля 4 символов";
	}else{
		hideHighLight(document.getElementById('password'));
	}
	
	if(error==1)
	{
		regError();
		return false;
	}
	else
	{	
		regOK();
		return true;
	}
}

function showHighLight(id){
	$(id).className="errField";
} 

function hideHighLight(id){
	$(id).className="";
} 

function regError(){
 document.getElementById('errorMsg').style.display="block";
	
}

function regOK(){
 document.getElementById('okMsg').style.display="block";
	
}

function hideregError(){
 document.getElementById('errorMsg').style.display="none";
	
}


function showError(text){
	if (text) {
		document.getElementById('errorMsgText').innerHTML=text;
		document.getElementById('errorMsg').style.display="block";
	}
}

function showResultWindow() {
	popup.show({id:'idPopup12',t:200,w:500,o:'no'});
}

				
function hoverImg(oLink,fileName){
	var regExpFileName = /[^\/]+$/ig;
	var oImg = oLink.getElementsByTagName("IMG")[0]; 
	oImg.src = oImg.src.replace(regExpFileName,fileName);
}


function collapseSection(o){
	var oP = o.parentNode.parentNode;
	oP.className = (oP.className.indexOf('articleSectionOpened') != -1)?"articleSection articleSectionClosed":"articleSection articleSectionOpened";
}

function collapseTree(o){
	var status = (o.className == "plus")? true : false;
	var oNode = o.parentNode.parentNode.parentNode;
	
	o.className = (status)? "minus" : "plus";
	oNode.className = (status)? oNode.className.replace('nodeClosed','nodeOpened') : oNode.className.replace('nodeOpened','nodeClosed');
}


/* toolTip */
var toolTip = {
	oToolTip: null,
	oCurrentOver: null,
	
	init: function (o) {
		if (!this.oToolTip) {
			this.oToolTip = document.createElement('DIV');
			this.oToolTip.className = 'toolTip';
			this.oToolTip.innerHTML = '';
			document.body.appendChild(this.oToolTip);
		}
	}
	,
	
	over: function (o, e) {
		this.init(o);
		
		if(this.oCurrentOver != o){
			this.oCurrentOver = o;
			o.style.cursor = "pointer";
			this.oToolTip.style.display = 'none';
			
			var arrDivs = o.getElementsByTagName("DIV");
			var oTtoolTipInfo = null;
			for(var i=0; i<arrDivs.length; i++){
				if(arrDivs[i].className == "toolTipInfo"){
					oTtoolTipInfo = arrDivs[i];
					break;
				}
			}
			
			if(!oTtoolTipInfo){
				return;
			}
			
			this.oToolTip.innerHTML = '<table class="toolTipWrap"><tr><td>'+oTtoolTipInfo.innerHTML+'</td></tr></table>';
			
			if (!o.onmouseout){ o.onmouseout = function () {toolTip.out(this)}};
			if (!o.onmousemove){ o.onmousemove = function (evt) {toolTip.move(this,evt)}};
		}
		this.setPosition(e);
		this.oToolTip.style.display = 'block';

	}
	,
	
	out: function (o) {
		this.oToolTip.style.display = 'none';
	}
	,
	
	move: function (o, e) {
		this.setPosition(e);
	},
	
	setPosition: function (e) {
		var x, y;
		e = (e) ? e : window.event;
		
		if (e.pageX || e.pageY){
			x = e.pageX;
			y = e.pageY;
		}
		else if (e.clientX || e.clientY){
			x = e.clientX + document.body.scrollLeft;
			y = e.clientY + document.body.scrollTop;
		}		
		
		//this.oToolTip.style.left = x + 0;
		//this.oToolTip.style.top = y + 21;
		this.oToolTip.style.left = x + 'px';
		this.oToolTip.style.top = (y + 21) + 'px';
	}	

}

function changeRateStars(idStarContainer, value) {
	$(idStarContainer).className = 's'+value;
}

/*

params = {id:"popupID", t:100, w:500, o:'no'}
id - popup id
t - top popup margin (px)
w - width of popup (px)
o - opacity shim
*/

var popup = {
	oShim: null,
	
	show: function (params){
		var Dialog = $(params.id);
		params.o = (params.o)? params.o : 'no';
		params.t = (params.t)? params.t : 0;
		
		if(params.o == 'yes' && !this.oShim){
			this.oShim = document.createElement('DIV');
			this.oShim.id = 'popupShimOuter';
			/* this.oShim.innerHTML = '<iframe src="javascript:false" frameBorder="0" scroll="none"></iframe>'; */
			document.body.appendChild(this.oShim);
		}
		
		Dialog.style.marginTop = (params.t - 7 + parseInt(document.body.scrollTop, 10)) + 'px';
		
		if(params.w){
			Dialog.style.width = params.w + 'px';
		}	
		
		if(params.o == 'yes') {
			this.oShim.style.display = 'block';
		}	
		Dialog.style.display = 'block';
	}
	,
	
	hide: function (params){
		var Dialog = $(params.id);
		if(this.oShim) {
			this.oShim.style.display = 'none';
		}	
		Dialog.style.display = 'none';	
	}
}

var place = {
	oCurrent: null,
	oHoverDiv: null,
	oTimer: null,
	
	over: function (o, idHoverDiv){
		this.till();		
		if(this.oCurrent != o){
			if(this.oCurrent) {
				this.doOut();
			}	
			this.oCurrent = o;	
			this.oHoverDiv = $(idHoverDiv);
			if (!o.onmouseout){ o.onmouseout = function () {place.out(this)}};
			if (!this.oHoverDiv.onmouseout){ this.oHoverDiv.onmouseout = function () {place.out(this)}};			
			if (!this.oHoverDiv.onmouseover){ this.oHoverDiv.onmouseover = function () {place.till(this)}};	
			
			var posLnk = {t:this.getPosY(o),l:this.getPosX(o),w:o.offsetWidth,h:o.offsetHeight};
			var posDiv = {t:this.getPosY(this.oHoverDiv),l:this.getPosX(this.oHoverDiv),w:this.oHoverDiv.offsetWidth,h:this.oHoverDiv.offsetHeight};
			
			var typePos = 1;
			
			if(posDiv.w < posLnk.l){
				posDiv.l = posLnk.l + posLnk.w - posDiv.w - ((o.runtimeStyle && posLnk.w%2)? 1 : 0);
			}
			else {
				posDiv.l = posLnk.l;
			}
			
			if(posDiv.h < posLnk.t){
				typePos = 1;			
				posDiv.t = posLnk.t + posLnk.h - posDiv.h - ((o.runtimeStyle && posDiv.h%2)? 4 : 5);
			}
			else {
				posDiv.t = posLnk.t;
				typePos = 2;					
			}			
			
			this.oHoverDiv.style.top = posDiv.t;
			this.oHoverDiv.style.left = posDiv.l;

			this.oHoverDiv.className = this.oHoverDiv.className.replace(/(placeLinkInfoPos)(\d)/ig,'$1' + typePos);
			o.parentNode.parentNode.style.zIndex = 555;
		}	
	}
	,
	
	till: function (){
		if(this.oTimer){
			clearTimeout(this.oTimer);
			oTimer = null;
		}			
	}
	,	
	
	out: function (){
		this.till();		
		this.oTimer = setTimeout(function(){place.doOut()}, 50);
	}
	,
	
	doOut: function (){
		this.oHoverDiv.style.top = '-10000px';	
		this.oHoverDiv = null;
		this.oCurrent.parentNode.parentNode.style.zIndex = 110;		
		this.oCurrent = null;
	}
	,
	
	getPosX: function (o) {
		var x = 0;
			while(o && o.tagName!="BODY"){
				x += o.offsetLeft + (o.clientLeft || 0);
				o = o.offsetParent;		
			}
		return x;		
	}	
	,
	
	getPosY: function(o){
		var y = 0;
			while(o && o.tagName!="BODY"){
				y+= o.offsetTop + (o.clientTop || 0);
				o = o.offsetParent;		
			}
		return y;		
	}	
}
