function dc_init_object() {
	var A;
	try {
		A=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			A=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			A=null;
		}
	}
	if(!A && typeof XMLHttpRequest != "undefined")
		A = new XMLHttpRequest();
	return A;
}

function dc_set_content( data )
{
	var i;
	var se = 0;
	var si = 0;

	while( si >= 0 && se >=0 )
	{
		if( se ) si = data.indexOf( '<dc:' , se+1 );
			else si = data.indexOf( '<dc:' );

		if( si>=0 )
		{
			si += 4;
			id = data.substring( si , data.indexOf( '>' , si ) );
			il = id.length;
			si += il+1;
			se=data.indexOf( '</dc>' , si );

			d = document.getElementById(id);
			d.innerHTML = unescape(data.substring( si , se ));

			se=se+4;
		}
	};
}

function dc_execute_scripts( data )
{
	var i;
	var se = 0;
	var si = 0;

	while( si >= 0 && se >=0 )
	{
		if( se ) si = data.indexOf( '<exec>' , se+1 );
			else si = data.indexOf( '<exec>' );

		if( si>=0 )
		{
			si += 6;
			se=data.indexOf( '</exec>' , si );
			eval( unescape(data.substring( si , se )) );
			se=se+6;
		}
	};
}

function dc_execute_callback( func , data )
{
	if( func )
	{
		si = data.indexOf( '<return>' );

		se = data.indexOf( '</return>' );

		if( si>=0 && se>=0 ) func(unescape(data.substring(si+8,se))); 
	};
}


function dc_rpc_call( url , func_name , args , form )
{
	var uri = url;
	var post_data;
	var method;
	method = "POST";
	
	x = dc_init_object(); 

	if( ! x ) return true;

	post_data = "rsrnd=" + new Date().getTime();

	if( func_name )
	{
		post_data = post_data + "&rpc=" + escape(func_name);
		for (i = 0; i < args.length-1; i++)
		{
			post_data = post_data + "&rsargs[]=" + escape(args[i]);		
		};
	};

	if( form )
	{
		if( form == 'this' || form == 'self' ) form = args[0];

		f = document.getElementById(form);

		if( ! f ) return true;
		var i;

		for(i=0; i<f.elements.length; i++)
		{
			if( f.elements[i].type == 'checkbox' || f.elements[i].type =='radio' )
			{
				if( f.elements[i].checked )			
				post_data = post_data + '&' + escape(f.elements[i].name) + '=' + escape(f.elements[i].value);
			}
			else post_data = post_data + '&' + escape(f.elements[i].name) + '=' + escape(f.elements[i].value);
		};
	}

	if( method == "GET"	) 
	{
		uri = uri + "?" + post_data;

		x.open('GET', uri, true);
	
		post_data = null;
	}
	else
	{
		try {
			x.open("POST", uri , true );

			x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
			x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		}
		catch(e)
		{
			method = "GET";

			uri = uri + "?" + post_data;

			x.open('GET', uri, true);
		
			post_data = null;
		}
	};

	x.onreadystatechange = function() {

		if (x.readyState != 4) return;
	
		var data;
		data = String(x.responseText);

		dc_set_content( data );
		dc_execute_scripts( data );
		dc_execute_callback( args[args.length-1] , data );
	}

	x.send(post_data);

	return false;
}

function dc_refresh( url )
{
	dc_rpc_call( url , false , false , false );
}



function submit_form( f , button )
{
	var sbmtfrm;
	sbmtfrm = document.getElementById(f);
	if( button ) sbmtfrm.action=sbmtfrm.action+'?'+button+'=1';
	sbmtfrm.submit();
}

function scroll_pos()
{
	var pos;

	if (window.innerHeight)
	{
		pos = window.pageYOffset
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{
		pos = document.documentElement.scrollTop
	}
	else if (document.body)
	{
		pos = document.body.scrollTop
	};

	return pos;
};

function f_interval_scroll()
{
	var pos = scroll_pos();

	if( document.interval_scroll_start > document.interval_scroll_to )
	{
		if( pos < document.interval_scroll_to && document.interval_scroll )
		{
			window.scrollTo( 0 , document.interval_scroll_to );
			clearInterval( document.interval_scroll );
			document.interval_scroll = false;
		}
		else
		{
			window.scrollTo( 0 ,  pos - document.interval_scroll_speed );
		};
	};
}

function ScrollBack( item , offset , smoot )
{		
	var i = document.getElementById(item);

	if( i )
	{
		var t = 0;
		
		while( i )
		{
			if( i.offsetTop ) t = t + i.offsetTop;
			i = i.offsetParent;
		};

		if( offset ) t = t + offset;

		if( smoot )
		{
			document.interval_scroll_to = t;
			document.interval_scroll_speed = 20;
			document.interval_scroll_start = scroll_pos();
			document.interval_scroll_center = ( document.interval_scroll_to + document.interval_scroll_start ) / 2;


			if( ! document.interval_scroll ) document.interval_scroll = setInterval( 'f_interval_scroll()' , 20 );

			f_interval_scroll();
		}
		else window.scrollTo( 0 , t );
	};
}