//----------------------------------------------------------------
// © 2007 On-Line Services 2000, S.L. http://www.ols.es
//----------------------------------------------------------------

// Support for older js

if (location.replace == null)
   location.replace = location.assign

//----------------------------------------------------------------
// Forms

function selected_items(action)
{
var i, ok = false, frm = document.getElementById("selection_list");

for (i =0; i < frm.elements.length; i++) 
	if (frm.elements[i].checked) { ok = true; break; }

if (!ok) form_checkAll(true);
frm.action = "/"+action;
frm.submit();
return true;
}

//----------------------------------------------------------------

function form_checkAll(check)
{
var i, frm = document.getElementById("selection_list");

for (i =0; i < frm.elements.length; i++) 
	 frm.elements[i].checked = check;

return false;
}

//----------------------------------------------------------------
/*
function form_disable(frm,b)
{
var i;

for (i=0; i<frm.elements.length; i++)
	frm.elements[i].disabled = b;
}
*/
//----------------------------------------------------------------

function setDisabled(ele,b)
{
ele.disabled = b;
var i,nodes = ele.getElementsByTagName('*');
if (nodes) for (i=0; i<nodes.length; i++) setDisabled(nodes[i],b);
}

//----------------------------------------------------------------

function form_get(obj)
{
var i, ele, getstr = '';

for (i=0; i<obj.elements.length; i++)
	{	
	ele = obj.elements[i];
	
    if (ele.tagName == "INPUT")
		{		
        if (ele.type == "text" || ele.type == "hidden")
			{
			getstr += "&" + ele.name + "=" + encodeURI(ele.value);
            }
        if (ele.type == "checkbox")
			{
            if (ele.checked)
				{
                getstr += "&" + ele.name + "=" + encodeURI(ele.value);
				}
            }
		if (ele.type == "radio")
			{
            if (ele.checked)
				{
                getstr += "&" + ele.name + "=" + encodeURI(ele.value);
				}
            }
         continue;
		}   
	if (ele.tagName == "SELECT")
		{
		if (ele.selectedIndex >= 0) 
			getstr += "&" + ele.name + "=" + encodeURI(ele.options[ele.selectedIndex].value);
        continue;
		}
	if (ele.tagName == "TEXTAREA")
		{
        getstr += "&" + ele.name + "=" + encodeURI(ele.value);
        continue;
		}
	}

return getstr;
}

//----------------------------------------------------------------
// Tables

function subtleRow(s,c)
{
var n=s.className, p=n.indexOf('_'),
    e=(c)?'_on':'_off', base=n.substring(0,p)+e;

s.className=base;
}

//----------------------------------------------------------------
// Email obfuscation

function site_sndml(lnk,strCipher,subj)
{
var i, c, p, strPlain = "";

for (i = 0; i < strCipher.length; i++)
	{ 
	c = strCipher.charAt(i);
	p = sndml.indexOf(c,0);
	if (p<0)
		strPlain = strPlain + c;
	else
		strPlain = strPlain + sndml.charAt(27-p);
	}
		
lnk.href='mai'+'lto:'+strPlain;
if (subj) lnk.href = lnk.href + '?' + subj;
return true;
}

//----------------------------------------------------------------
// Utils

function getParent(el, pTagName)
{
if (el == null) return null;

if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
	return el;
else
	return getParent(el.parentNode, pTagName);
}

//----------------------------------------------------------------

function getposOffset(what, offsettype)
{
return (what.offsetParent)? what[offsettype]+this.getposOffset(what.offsetParent, offsettype) : what[offsettype]
}

//----------------------------------------------------------------

function seteleClass(id,cls)
{
var inp = document.getElementById(id);
if (inp) inp.className = cls;
}

//----------------------------------------------------------------

function getElementsByClass(className)
{
var all = document.all ? document.all : document.getElementsByTagName('*'),
    e, elements = new Array();

for (e = 0; e < all.length; e++)
	if (all[e].className == className) elements[elements.length] = all[e];

return elements;
}

//----------------------------------------------------------------

function add_arg2url(url,arg)
{
if (url.indexOf('?')>0)
	return url+'&'+arg;
else
	return url+'?'+arg;
}

//----------------------------------------------------------------

function add_args(args,arg)
{
if (args == '')
	return arg;
else
	return args+'&'+arg;
}

//----------------------------------------------------------------
// deprecated

function cursor_wait()
{
if (document.body) document.body.style.cursor = 'wait';
}

//----------------------------------------------------------------
// deprecated

function cursor_clear()
{
if (document.body) document.body.style.cursor = 'default';
}

//----------------------------------------------------------------
// Aixo no pirulara be

function site_div_state(szDivID, iState) // 1 visible, 0 hidden
{
var obj = document.getElementById(szDivID).style;

if (obj.display == 'none')
	obj.display = 'block';
else
	obj.display = 'none';
}

//----------------------------------------------------------------

function clear_div(div_id)
{
var result_div = document.getElementById(div_id); 
if (result_div) result_div.innerHTML = '';
}

//----------------------------------------------------------------
// Ajax

function replace_div(d, b)
{
if (b.substr(0,5) == 'AJAX:')
	{
	eval(b.substr(5));
	return;
	}
var i,x,o = document.getElementById(d); 

if (o)
	{
	o.innerHTML = b;
	x = o.getElementsByTagName("script"); 
	for (i=0; i < x.length; i++)  eval(x[i].text);
	}
}

//----------------------------------------------------------------

function confirm_ajax_action(lnk,ask)
{
if (confirm(ask))
	return ajax_action(lnk);
else
	return true;
}

//----------------------------------------------------------------

function ajax_submit_form (t, args, replace)
{
var frm = getParent(t,'FORM'),
    div = getParent(frm,'DIV'),
    url = site_root + '?' + args;
return ajax_form(frm.id,div.id,url,replace);
}

//----------------------------------------------------------------

function ajax_action (lnk, div_id, extra_args)
{
if (!use_ajax)
	{
	location.replace(lnk.href);
	return false;
	}

// Action url

var args, div, parts, q, href = lnk.href;

if (href.indexOf('?')>0)
	{
	parts = href.split('?');
	q = parts[1].split('#');
	args = q[0];
	}
else
	args = '';

if (div_id == null)
	{
	div = getParent(lnk,'DIV');
	div_id = div.id;
	}
	
args = add_args(args,'ajax_id=' + div_id);
	
if (extra_args != null)
	args = add_args(args,extra_args);
	
if (!ajax_setdiv(args,div_id)) return false;

// No AJAX

location.replace(lnk.href);
return false;
}

//----------------------------------------------------------------

function ajax_send(args)
{
return ajax_request('get',site_root,args,null,null);
}

//----------------------------------------------------------------

function ajax_row_action(lnk,modname,ask)
{
if (ask && !confirm(ask)) return true;
var div = getParent(lnk,"TR"),
	args = "action="+modname+"&func=row_action",
	p = lnk.href.indexOf('?');
if (p>0) args += "&"+lnk.href.substring(p+1);

if (ajax_setdiv(args,div.id))
	{
	location.replace(lnk.href);
	return false;
	}
else
	return false;
}

//----------------------------------------------------------------

function ajax_setdiv (args, div_id)
{
if (!use_ajax) return true;

var div = document.getElementById(div_id);

if (div)
	{
	div.className = 'form_disabled';
	div.style.cursor = 'wait';
	setDisabled(div,true);
	}

return !ajax_request('get', site_root, args,
	function(req)
	{
	if (div)
		{
		div.className = '';
		div.style.cursor = 'default';
		div.disabled = false;
		}
	if (req.responseText != 'VOID')
		replace_div(div_id,req.responseText);
	},
	function(req)
	{
	alert('There was a problem with the request.(Code: ' + req.status + ')');
	if (div)
		{
		div.className = '';
		div.style.cursor = 'default';
		setDisabled(div,false);
		}
	});
}

//----------------------------------------------------------------

function ajax_form (form_name, div_id, url, replace )
{
if (!use_ajax) return true;

var args, div, frm = document.getElementById(form_name);

// Avoid using ajax for non supported post encodings

if (frm.method == 'post' && frm.encoding == 'multipart/form-data') return true;

args = form_get(frm);
setDisabled(frm,true);
div = document.getElementById(div_id);

if (div)
	{
	div.className = 'form_disabled';
	div.style.cursor = 'wait';	
	}

if (ajax_request(frm.method, url, args,
                     function(req)
						{
						if (div)
							{
							div.className = '';
							div.style.cursor = 'default';
							div.disabled = false;
							}
						replace_div(div_id,req.responseText);
						},
                      function(req)
						{
						alert('There was a problem with the request.(Code: ' + req.status + ')');
						if (div)
							{
							div.className = '';
							div.style.cursor = 'default';
							}
						setDisabled(frm,false);
						}
                      )) return false;
                      

// No AJAX
if (!replace || frm.method == 'post') return true;
location.replace(frm.action + args);
return false;
}

//----------------------------------------------------------------

function ajax_url(url)
{
// Mark this request as ajax
url = add_arg2url(url,'jsa=1&ourl='+escape(location.href));

// Add session id if need
if (sid != '') url = add_arg2url(url,'PHPSESSID=' + sid);

return url;
}

//----------------------------------------------------------------

function ajax_request(method, url, args, function_ok, function_ko)
{
var http_request;

if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
	http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType)
		http_request.overrideMimeType('text/html');
	}
else if (window.ActiveXObject)
	{ // IE
	try
		{
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
	catch (e)
		{
		try
			{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
		catch (e) {}
	   }
   }

if (!http_request) return false;

http_request.onreadystatechange = function()
	{
	if (http_request.readyState == 4)
		{
		if (http_request.status == 200)
			{			
			if (function_ok && typeof function_ok != "undefined") function_ok(http_request);
			}
		else
			if (function_ko && typeof function_ko != "undefined") function_ko(http_request);
		}
	} 

// Mark this request as ajax
url = ajax_url(url);

if (method == 'post')
	{
	http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //;charset=utf-8
    http_request.setRequestHeader("Content-length", args.length);
	http_request.send(args);
	}
else
	{
	http_request.open('GET', add_arg2url(url,args), true);
	http_request.send(null);
	}
	
return true;
}

//----------------------------------------------------------------
// Slider

function accordion(eid,rel)
{
var l,ele=document.getElementById(eid);

clearInterval(ele.timer);
ele.timer = false;

if (ele.style.visibility == "hidden" || ele.style.visibility == "")
	{
	ele.maxh = ele.offsetHeight;
	ele.w = ele.offsetWidth;
	ele.style.visibility="visible";
	ele.style.display="none";
	}

if (typeof rel != "undefined")
	{
	l = getposOffset(rel,"offsetLeft")
	if (ele.w) l += Math.round(rel.offsetWidth/2 - ele.w/2);
	if (l<10) l = 10;
	ele.style.left = l + "px";
	ele.style.top = getposOffset(rel,"offsetTop") + rel.offsetHeight + "px";
	}

if (ele.style.display == "none" || ele.style.display == "")
	{	
	ele.style.display='block';

	if (ele.maxh)
		{
		ele.style.height='0px';
		ele.ex = ele.offsetHeight;
		ele.d = 1;
		}
	else
		{
		ele.ex = 0;
		return false;
		}
	}
else
	{
	ele.maxh = ele.offsetHeight;
	ele.d = -1;
	}
	
ele.inc = Math.round(ele.maxh/15);
if (ele.inc < 1) ele.inc = 1;
ele.timer = setInterval("accordion_slide('"+eid+"')",10);
return false;
}

//----------------------------------------------------------------

function accordion_hide(eid)
{
var ele=document.getElementById(eid);
if (!ele || ele.style.display!="block") return false;
return accordion(eid);
}

//----------------------------------------------------------------

function accordion_init(eid)
{
var ele=document.getElementById(eid);
if (!ele) return;
ele.maxh = ele.offsetHeight;
ele.w = ele.offsetWidth;
ele.style.height='0px';
ele.ex = ele.offsetHeight;
ele.style.visibility="visible";
ele.style.display="none";
}

//----------------------------------------------------------------

function accordion_slide(i)
{
var c=document.getElementById(i),
	m=c.maxh,
	h=c.offsetHeight+c.inc*c.d;
/*
if (!confirm(m+' '+h+' '+c.ex))
	{
	clearInterval(c.timer);
	return;
	}
*/
if (h >= m && c.d==1)
	{
	clearInterval(c.timer);
	c.style.height='auto';
	c.style.opacity=1;
	c.style.filter='alpha(opacity=100)';	
	return;
	}

c.style.opacity=h/c.maxh;
c.style.filter='alpha(opacity='+(h*100/c.maxh)+')';
h-=c.ex;

if (h<2 && c.d!=1)
	{
	c.style.display='none';
	clearInterval(c.timer);
	return
	}

c.style.height=h+'px';
}