/**
 *
 *	@package	Zoki Directory
 *	@author		Zoki Soft
 *	@copyright	Copyright (c) 2007, Zoki Soft <info@zokisoft.com>.
 *	@link		http://www.zokisoft.com/
 *	@since		Version 1.0 RC
 *	@license	GNU General Public License
 *
 */

/* autocheck/uncheck all checkboxes in given form */
	function setCheckbox( container, checked )
	{
		var oContainer = document.getElementById(container);
		var aElement  = oContainer.getElementsByTagName('input');
		for( var i = 0; i < aElement.length; i++ )
		{
			if( 'checkbox' == aElement[i].type )
			{
				aElement[i].checked = checked;
			}
	    }

		return true;
	}



	function hideBlock(id)
	{
		var el = document.getElementById(id);

		if(el.style.display == 'none')
		{
			el.style.display = 'block';
		}
		else
		{
			el.style.display = 'none';
		}
	}


// clone an simple object ( without any other objects inside )
	function simplecloneObject( obj )
	{
    	for (i in obj)
		{
           	this[i] = obj[i];
	    }
	}


// clone the object and all the objects contains in it
	function cloneObject( obj )
	{
    	for (i in obj)
		{
        	if ( 'object' == typeof obj[i] )
        	{
            	this[i] = new cloneObject( obj[i]);
            }
        	else
            	this[i] = obj[i];
	    }
	}


// asinc serwer query. Gets responce text and pass it to callback function
	function serverQuery( callback_function, url, responseType )
	{//alert('cb-> ' + callback_function + ' \r\n url-> ' + url);
		var XMLHttpRequestObject = false;
	    if( window.XMLHttpRequest )
	    {
			XMLHttpRequestObject = new XMLHttpRequest();
		}
		else if( window.ActiveXObject )
		{
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}

		if( XMLHttpRequestObject )
	    {
			XMLHttpRequestObject.open( "GET", url );
			//XMLHttpRequestObject.open( "POST", url );
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if ( XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200 )
		    	{
					if ( 'xml' == responseType )
						var answer = XMLHttpRequestObject.responseXML;
					else
						var answer = XMLHttpRequestObject.responseText;
					delete XMLHttpRequestObject;
					XMLHttpRequestObject = null;
					callback_function(answer);
				}
		    }
			XMLHttpRequestObject.send( null );
		}

		return true;
	}

	function getAsyncHelp( event, url )
	{

		container = document.getElementById('asynchelp_container');

		container.style.display='block';

		var scroll_x = 0, scroll_y = 0;
		if ( document.body && ( document.body.scrollTop || document.body.scrollLeft ) && !( window.debug || navigator.vendor == 'KDE' ) )
		{
			scroll_x = document.body.scrollLeft; scroll_y = document.body.scrollTop;
		}
		else if ( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) && !( window.debug || navigator.vendor == 'KDE' ) )
		{
			scroll_x = document.documentElement.scrollLeft; scroll_y = document.documentElement.scrollTop;
		}

		container.style.left = event.clientX + scroll_x - container.parentNode.offsetLeft - container.offsetWidth/2 + 'px';
		container.style.top = event.clientY + scroll_y - container.parentNode.offsetTop + 20 + 'px';

		container.innerHTML = 'loading ...';

		serverQuery( setAsyncHelp, url );

	}

	function setAsyncHelp( sText )
	{
		container = document.getElementById('asynchelp_container');
		container.innerHTML = sText;
	}

	function hideAsyncHelp()
	{
		container = document.getElementById('asynchelp_container');
		container.style.display = 'none';
	}


	function initAsyncHelp( event, url )
	{

		if ( !event )
			event = window.event;

 		getAsyncHelp( event, url)

		return true;

	}
