var LoadingImgGif = '/images/common/loading.gif';
var FormElements = ['p','ul','table','blockquote','h2','h3','div'];

function popUp(URL,w,h,scrollbars,resize) {
	var day = new Date();
	var id = day.getTime();
	var sc = scrollbars ? 1 : 0;
	var rs = resize ? 1 : 0;
	
	myleft=(screen.width)?(screen.width-w)/2:100;
	mytop=(screen.height)?(screen.height-h)/2:100;
	
	return eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars="+sc+",location=0,statusbar=0,menubar=0,resizable="+rs+",width="+w+",height="+h+",top="+mytop+",left="+myleft+"')");
}

function setCheckedCheckboxes (form) {
	if (form) {
		var Inputs = form.getElementsByTagName("input");
		for (i=0;i<Inputs.length;i++) {
			if (Inputs[i].name!='checker')
			Inputs[i].checked = !Inputs[i].checked;
		}
	}	
}

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()
	{
	var 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,handler)
	{
	var show_form = arguments[2];
	var reset_form = arguments[3];
	
	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 ((show_form==1)||(errors))
			toggleChildNodes(form,1,FormElements);
			
		if ((reset_form==1)&&(!errors))
			{
			form.reset();
			}
		}
	new Ajax.Request (handler, {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('|');
	var 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');

		if (tmp[2])
			eval(tmp[2]);
		return false;
		}
}
	
formError = function (id,forNames,msg) {
	var 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'});
	}
	}

function getUrl (url) {
	document.location.href=url;	
}