﻿var LoadingImgGif = '/img/common/loading.gif';
var FormElements = ['p','ul','table','blockquote','h2','h3','div'];
var HandlerPath = '/xml/';

function SelectAll (form)
	{
	if (form)
		{
		var Inputs = form.getElementsByTagName("input");
		for (i=0;i<Inputs.length;i++)
			Inputs[i].checked = !Inputs[i].checked;
		}
	}
	
function DeleteMessages (form)
	{
	var Inputs = form.getElementsByTagName("input");
	var str = '';
	var c = 0;
	
	for (i=0;i<Inputs.length;i++)
		{
		if (Inputs[i].getAttribute("name") == 'msg_chk')
			{
			if (Inputs[i].checked)
				{
				str = str +  (Inputs[i].checked == true?Inputs[i].value:0)+'|';
				c++;
				}
			}
		}
	if (c>0)
		{
		str = str.substr(0,(str.length-1));
		$('del_msg').value = str;
		$('task').value='delete';
		form.submit();
		}
	}
	
function WriteMessage (recipient,title,user)
	{
	recipient = parseInt (recipient);
	Element.setStyle ($('message-form'),{display:'block'});
	new Ajax.Updater ('message-form','/xml/getMessage.php',{method:'post',postBody:'task=write&recipient='+recipient+'&title='+title+'&user='+user});
	}
					   
function ToggleMessage (unhide,msgid,read)
	{
	msgid=parseInt (msgid);
	unhide = parseInt (unhide);
	read=parseInt (read);
	jQuery('#msg-'+msgid).toggle('fast',function(){;});	
	
	if (read==1)
		{
		postStr = 'task=msg-mark-read&msgid='+msgid;
		block = $('class-'+msgid);
		Element.removeClassName(block,'unread');
		new Ajax.Request (HandlerPath+'handleProfile.php', {parameters:postStr, onFailure:AjaxErrFunc});
		}
	}
	
function DeleteProfilePhoto()
	{
	new Ajax.Request (HandlerPath+'handleProfile.php',{parameters:'task=del_photo', onFailure:AjaxErrFunc});
	$('profile-pic').src='/img/icons/nousr.jpg';
	Element.remove($('del-photo'));
	}
		
		
getMsgContId = function(form)
	{
	obj=$A(Form.getInputs (form,'','msgBox'));
	if(obj[0])
		{
		val=obj[0].value;
		obj=false;
		return val;
	 	}
	}

removeChildNodes = function(node)
	{
	while (node.hasChildNodes())
		{
		node.removeChild(node.firstChild);
		}
	}

resetMsgContainer = function(container_id)
	{
	errCont=$(container_id);
	if (errCont)
		{
		Element.hide (errCont);
		removeChildNodes(errCont);
		}
	}

toggleChildNodes = function (obj,unhide,tags) 
	{
	$A(obj.childNodes).each(function(node)
		{
		if (tags.indexOf(node.nodeName.toLowerCase())!=-1)
			{
			var st = (node.nodeName.toLowerCase()=='table'?'table':'block');
			Element.setStyle(node,{display:(unhide?st:'none')});
			}
		}
	);
}

createLoad = function()
	{
	sm = arguments[0];
	img=document.createElement("img");
	img.src=LoadingImgGif;
	img.id=arguments[1]+'_loading-img';
	Element.addClassName(img,'loading-img');
	return img;
	}

Submit = function(form)
	{
	resetMsgContainer (getMsgContId(form));
	toggleChildNodes(form,0,FormElements);
	form.appendChild (createLoad (0,form.id));
	formid=form.id.replace('-box','');
	postStr=Form.serialize(form)+'&task='+formid;

	var handlerFunc = function (t) 
		{
		form.removeChild($(form.id+'_loading-img'));
		errors = parseResponse(t.responseText,formid);

		if (((formid != 'register')&&(formid != 'forum-topic-add'))||errors)
			toggleChildNodes(form,1,FormElements);
		}
	switch (formid)
		{
		default: FormHandler = 'handleProfile.php'; 
		}
		
	new Ajax.Request (HandlerPath+FormHandler, {parameters:postStr, onSuccess:handlerFunc, onFailure:AjaxErrFunc});
	}


var AjaxErrFunc = function (t)
	{
	alert('Error ' + t.status + ' -- ' + t.statusText);
	}

parseResponse = function (txt,formid)
	{
	var tmp = '';
	tmp=txt.split('|');
	status=tmp[0];
	if (status != 'OK')
		{
		fields=tmp[1].split(',');
		formError(formid,fields,tmp[2])
		return true;
		}
	else
		{
		resetFormSuccess(formid,tmp[1]);
		var f=$(formid+'-box');
		f.reset();
		if (tmp[2])
			{
			eval(tmp[2]);
		  	}
		return false;
		}
	}
	
formError = function (id,forNames,msg)
	{
	form = $(id+'-box');
	if (msg)
		{
		container_id=getMsgContId(form);
		errCont=$(container_id);
		Element.update (errCont,'');
		resetMsgContainer (errCont);
		new Insertion.Top(errCont, msg);
		Element.removeClassName (errCont,'msg-ok');
		Element.addClassName(errCont,'msg-er');
		Element.setStyle(errCont,{display:'block'});
		if(forNames.length==0){
			Element.addClassName(errCont,'msg-ok');
		}
	}

	var nodes = $A(form.getElementsByTagName('label'));
	nodes.each(function(node)
		{
		attrValue=node.getAttribute('htmlFor');
		if (!attrValue)
			attrValue=node.getAttribute('for');
	  	Element.removeClassName(node,'error');
  		
		if(forNames.length>0)
			{
  			if(forNames.indexOf(attrValue)!=-1)	
				{
	  			Element.addClassName(node,'error');
				}
		 	}
		 }
	);
}

resetFormSuccess = function (id,msg)
	{
	if(msg)
		{
		form=$(id+'-box');
		var nodes = $A(form.getElementsByTagName('label'));
		nodes.each(function(node)
			{
			Element.removeClassName(node,'error');
			}
		);
 	container_id=getMsgContId(form);
	errCont=$(container_id);
	resetMsgContainer (errCont);
	new Insertion.Top(errCont, msg);
	Element.removeClassName (errCont,'msg-er');
	Element.addClassName(errCont,'msg-ok');
	Element.setStyle(errCont,{display:'block'});
	}
	}

