/*
* Select all a code
*/
function selectCode(a)
{
	// Get ID of code block
	var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];

	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			var r = document.createRange();
			r.selectNodeContents(e);
			s.removeAllRanges();
			s.addRange(r);
		}
	}
	// Some older browsers
	else if (document.getSelection)
	{
		var s = document.getSelection();
		var r = document.createRange();
		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}
	// IE
	else if (document.selection)
	{
		var r = document.body.createTextRange();
		r.moveToElementText(e);
		r.select();
	}
}

/*
* Check all checkbox fields
*/ 
function checkedAll(id, checked) 
{
	var e = document.getElementById(id);
	
	for (var i = 0; i < e.elements.length; i++) 
	{
		e.elements[i].checked = checked;
	}
}

/*
* Show or hide an selected element
*/
function toggle(id) 
{ 
	var object = document.getElementById(id);

	if (object.style.display == 'block') 
	{ 
		object.style.display = 'none'; 
	} 
	else 
	{ 
		object.style.display = 'block'; 
	} 
}

/*
 * Copy value from one element to another while there is writing
 */
function insertValue(id, value) 
{
	var object = document.getElementById(id);
	
	object.value = value;
}

function attach_text(fieldId, text) {
	var myField = document.getElementById(fieldId);

	//IE support
	if (document.selection) 
	{
		myField.focus();
		sel = document.selection.createRange();
		sel.text = text;
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') 
	{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;

		myField.value = myField.value.substring(0, startPos) + text + myField.value.substring(endPos, myField.value.length);
	} 
	else 
	{
		myField.value += text;
	}
	
	myField.focus();
}

function sizeHandler(id, newheight)
{
	if (document.getElementById(id).style.maxHeight != '100%')
	{
		document.getElementById(id).style.maxHeight = '100%';
	}
	else
	{
		document.getElementById(id).style.maxHeight = newheight;
	}
}

function GetXmlHttpObject() 
{
	var xmlHttp=null;
	try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	} catch (e) {
	// Internet Explorer
	try {
	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e){
	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	}
	return xmlHttp;
}
 
function stateChanged() {
	if (xmlHttp.readyState==4) {
	if (xmlHttp.responseText)
	{
	document.getElementById("response").style.display = 'block';
	document.getElementById("response").innerHTML=xmlHttp.responseText;
	 }
	 else
	 {
	 document.getElementById("response").style.display = 'none';
	 }
	}
}
 
function showHint(mode, params) 
{
	if (params.length==0) 
	{
		document.getElementById("response").innerHTML = '';
		document.getElementById("response").style.display = 'none';
		return;
	}
	 
	xmlHttp=GetXmlHttpObject();
	if ( xmlHttp==null ) 
	{
		alert ('Your browser does not support AJAX!');
		return;
	}
	 
	var url="/ajax/" + mode + "/?" + params;
	url = url + "&r=" + Math.random();
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open( "GET", url, true );
	xmlHttp.send( null );
}

function ajax_input_insert(field_id, value)
{
	document.getElementById(field_id).value = value;
	document.getElementById('response').style.display = 'none';
}
