/**
 * Common javascript funtionality
 */
 

/* -------------------------------------------- */
/* -- Browser information --------------------- */
/* -------------------------------------------- */
Browser = new Object();
Browser.agt     = navigator.userAgent.toLowerCase();
Browser.is_ie	= ((Browser.agt.indexOf("msie") != -1) && (Browser.agt.indexOf("opera") == -1));


/* -------------------------------------------- */
/* -- page loader ----------------------------- */
/* -------------------------------------------- */
document.addLoadEvent = function(func) 
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function') 
	{
		window.onload = func;
	} 
	else 
	{
		window.onload = function() 
		{	
			if (oldonload) 
			{
				oldonload();
			}
			
			func();
		}
	}
}

/* -------------------------------------------- */
/* -- get form -------------------------------- */
/* -------------------------------------------- */
function getForm( formid )
{
	var formobj = document.getElementById(formid);
	var fields = new Array();
	var form_len = formobj.elements.length;
	
	for (var x = 0; x < form_len; x++) 
	{
		switch(formobj.elements[x].type) 
		{
		   	case 'select-one':		
				fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[formobj.elements[x].selectedIndex].value));
			break;
			
			case 'select-multiple':
				var obj = formobj.elements[x];
				
				for(var y=0; y < formobj.elements[x].options.length; y++) 
				{
				   if(formobj.elements[x].options[y].selected) 
				   {
							if(formobj.elements[x].options[y].value == '')
							{
								fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[y].text));
							} 
							else 
							{
								fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[y].value));
							}
				   }
				}
			break;
			
			case 'radio':
				if(formobj.elements[x].checked) 
				{
					fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
				}
			break;
			
			case 'checkbox':
				if(formobj.elements[x].checked) 
				{
					fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
				}
			break;
			
			default:
			// text, password, textarea, etc
				fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
			break;
		}
	}
	
	var new_qstring = '&' + fields.join('&');
	return new_qstring;
}

/* -------------------------------------------- */
/* -- http request ---------------------------- */
/* -------------------------------------------- */
var http_request = false;

function makeHttpRequest()
{
	http_request = false;
	
	if (window.XMLHttpRequest) // Mozilla, Safari,... 
	{
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			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) 
	{
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	
	return true;
}

function getHttpResult()
{
	if( http_request.readyState!=4 )
	{
		return false;
	}	
	else
	{
		if( http_request.status!=200 ) 
		{
			alert('There was a problem with the request.');
			return false;
		}
	}
	
	result = http_request.responseText;
	return result;
}

/* gap is in millisecs */
function delay(gap) 
{ 	
	var then,now; then=new Date().getTime();
	now=then;
	while((now-then)<gap)
	{
		now=new Date().getTime();
	}
}

/**
* Toggles the check state of a group of boxes
*
* Checkboxes must have an id attribute in the form cb0, cb1...
* @param The number of box to 'check'
* @param An alternative field name
*/
function checkAll( n, fldName ) 
{
	if (!fldName) 
	{
	 fldName = 'cb';
	}
	var f = document.manageForm;
	var c = f.toggle.checked;
	var n2 = 0;
	for (i=0; i < n; i++) 
	{
		cb = eval( 'f.' + fldName + '' + i );
		if (cb) {
			cb.checked = c;
			n2++;
		}
	}
	
	if (c) 
	{
		document.siteForm.boxchecked.value = n2;
	} 
	else 
	{
		document.siteForm.boxchecked.value = 0;
	}
}

function isChecked(isitchecked)
{
	if (isitchecked == true)
	{
		document.siteForm.boxchecked.value++;
	}
	else 
	{
		document.siteForm.boxchecked.value--;
	}
}

function listItemTask( id, task ) 
{
    var f = document.siteForm;
    cb = eval( 'f.' + id );
    if (cb) 
	{
        for (i = 0; true; i++) 
		{
            cbx = eval('f.cb'+i);
            if (!cbx) break;
            cbx.checked = false;
        } // for
        cb.checked = true;
        f.boxchecked.value = 1;
        submitbutton(task);
    }
    return false;
}

// needed for Table Column ordering
function tableOrdering( order, dir, task ) 
{
	var form = document.siteForm;

	form.filter_order.value 	= order;
	form.filter_order_Dir.value	= dir;
	submitForm( task );
}

/**
* Default function.  Usually would be overriden by the component
*/
function submitButton(pressbutton) 
{
	submitForm(pressbutton);
}

/**
* Submit the admin form
*/
function submitForm(pressbutton)
{
	if ( pressbutton ) 
	{
		document.siteForm.task.value = pressbutton;
	}
	try 
	{
		document.siteForm.onsubmit();
	}	
	catch(e){}
	
	document.siteForm.submit();
}

