//----------------------------------------
function pausecomp(millis)
{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); }
	while(curDate-date < millis);
} 

//----------------------------------------
function popupWindow (URL, w, h)
{
	var day = new Date();
	var id = day.getTime();
    
	var str = "page" + id + '=window.open("' + URL + '","' + id + '","' +
	'toolbar=0,scrollbars=auto,location=0,statusbar=0,menubar=0,resizable=0,left=20,top=20,' + 
	'width=' + w + ',' +
	'height=' + h + '");';
	
	eval (str);
}


//----------------------------------------
function openFull(URL)
{
  newwin = window.open(URL, '', 'toolbar=0,location=0,scrollbars=1,statusbar=0,menubar=1');
  newwin.moveTo(0,0);
  newwin.resizeTo(screen.availWidth,screen.availHeight);
}



//----------------------------------------
function confirm_delete (alert_str, form_name)
{
	if (form_name)
		the_form = document.forms[form_name];
	else
		the_form = document.forms[0];

//	var selectObject = document.forms[0].elements['action'];
	var selectObject = the_form.elements['action'];
	var selectValue  = selectObject.value;
	var is_confirmed = true;
	
	if (selectValue == 'delete')
		is_confirmed = confirm (alert_str);

	return is_confirmed;
}


//----------------------------------------
function confirm_ask (alert_str)
{
	is_confirmed = confirm (alert_str);
	return is_confirmed;
}

//----------------------------------------
function validate_email_field (field_name)
{
	var re = /([^\@\.\-_A-Za-z0-9])/g;
	
	el = document.getElementById(field_name);

	var arg = el.value;
	var t = arg.replace(re,"");
//	if (t.length > 40)
//		t = t.substring(0,39);

	el.value = t;
}

// -----------------------------------------------------
function validateEmailv2(email)
{
    if(email.length <= 0)
		return false;

    var splitted = email.match("^(.+)@(.+)$");
    
    if(splitted == null)
    	return false;

    if(splitted[1] != null )
    {
		var regexp_user = new RegExp("^[A-Za-z0-9\-\._]*$");
		
		if (splitted[1].match (regexp_user) == null) 
			return false;
    }
 
 	if(splitted[2] != null)
    {
		var regexp_domain = new RegExp("^[A-Za-z0-9\-\.]*\.[A-Za-z]{2,4}$");
		
		if(splitted[2].match(regexp_domain) == null) 
		{
			var regexp_ip = new RegExp("^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$");

			if(splitted[2].match(regexp_ip) == null) 
				return false;
		}
		return true;
	}
	return false;
}
// -----------------------------------------------------
function numbersonly (myfield, e)
{
	var key;
	var keychar;

	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;

	keychar = String.fromCharCode(key);
	// control keys
	if ((key==null)	||
		(key==0) 	||
		(key==8) 	|| 
		(key==9) 	||
		(key==13)	||
		(key==27) )
		return true;
	
	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
		return true;

	// decimal point jump
	else
		return false;
}

// -----------------------------------------------------
function validate_tx (field, field_v, valid)
{
	el = 	document.getElementById(field);
	el_v = 	document.getElementById(field_v);
	
	if (el && el_v)
	{
		if (el.value != '')
			el_v.className = 'valid';
		else
		{
			valid = 0;
			el_v.className = 'invalid';
		}
	}

	return (valid);
}
	
// -----------------------------------------------------
function validate_tx_len (field, field_v, min_l, valid)
{
	el = 	document.getElementById(field);
	el_v = 	document.getElementById(field_v);

	if (el && el_v)
	{	
		if (el.value != '' && el.value.length >= min_l)
		{
			el_v.className = 'valid';
		}
		else
		{
			valid = 0;
			el_v.className = 'invalid';
		}
	}
	
	return (valid);
}
	
// -----------------------------------------------------
function validate_pass	(field_1, field_2, field_v, min_l, valid)
{
	el_1 = 	document.getElementById(field_1);
	el_2 = 	document.getElementById(field_2);
	el_v = 	document.getElementById(field_v);
	
	if (el_1 && el_2 && el_v)
	{
		if (el_1.value != '' && el_2.value != '' && 
			el_1.value == el_2.value &&
			el_1.value.length >= min_l)
		{
			el_v.className = 'valid';
		}
		else
		{
			valid = 0;
			el_v.className = 'invalid';
		}
	}
	return (valid);
}


// -----------------------------------------------------
function validate_email_tx (field, field_v, valid)
{
	el = 	document.getElementById(field);
	el_v = 	document.getElementById(field_v);

	if (el && el_v)
	{
		email = el.value;
		
		email_valid = validateEmailv2(email);
		
		if (email_valid)
		{
			el_v.className = 'valid';
		}
		else
		{
			valid = 0;
			el_v.className = 'invalid';
		}
	}
	return (valid);
}

//----------------------------------------
function close_refresh (delay_time)
{
	my_opener = opener.location;

//	alert (my_opener);

	setTimeout (window.close(), delay_time);
	
	my_opener.reload();
} 


//----------------------------------------
function setCheckboxes ()
{
	var		the_object = event.srcElement;
	var		the_value = the_object.value;
	var		checked = the_object.checked;
    var 	isShiftPressed = event.shiftKey;

	var		elts = (typeof (document.forms[0].elements) != 'undefined')
				  ? document.forms[0].elements
				  : 0;

	var 	elts_cnt  = (typeof (elts.length) != 'undefined')
				  ? elts.length
				  : 0;
	var 	ary;


	if (isShiftPressed)
	{
		if (elts_cnt)
		{
			for (var i = 0; i < elts_cnt; i++)
			{
				var pid = elts[i].parent_id
				
				if (typeof (pid) != 'undefined')
				{
					var ary = pid.split(',');
									
					var cnt = ary.length
					
					for (var j = 0; j < cnt; j++)
					{
						var the_parent_id = ary[j];
						if (the_parent_id == the_value)
							elts[i].checked = checked;
					}
				}
			}
		}
		else
		{
			var pid = elts.parent_id
			if (typeof (pid) != 'undefined')
			{
				var ary = pid.split(',');
				var cnt = ary.length
		
				for (var j = 0; j < cnt; j++)
				{
					var the_parent_id = ary[j];
					if (the_parent_id == the_value)
						elts.checked = checked;
				}
			}
		}
		return true;
	}
	else
		return (false);
}

//----------------------------------------
function check_all (the_form, the_name, do_check)
{
	var		elts = (typeof (document.forms[the_form].elements[the_name]) != 'undefined')
				  ? document.forms[the_form].elements[the_name]
				  : 0;

	var 	elts_cnt  = (typeof (elts.length) != 'undefined')
				  ? elts.length
				  : 0;

	if (elts_cnt)
	{
		for (var i = 0; i < elts_cnt; i++)
		{
			elts[i].checked = do_check;
		}
	}
	else
	{
		elts.checked = do_check;
	}
	
	return (true);
}


//----------------------------------------
function linkToImage (el_name)
{
	var	src = event.srcElement;
	var	path = src.value;
	var	img = document.all (el_name);

	if (img)
	{
		img.src = path;
	}
}


//initiates the XMLHttpRequest object
//as found here: http://www.webpasties.com/xmlHttpRequest
//----------------------------------------
function getHTTPObject()
{
	var xmlhttp;

	/*@cc_on
	@if (@_jscript_version >= 5)
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E)
		{
			xmlhttp = false;
		}
	}
	@else
		xmlhttp = false;
	@end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
		}
		catch (e)
		{
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

//----------------------------------------
function XMLHTTP_request(xmlhttpO, url, handler, method, send)
{
//	alert (url + ", " + handler + ", " + method + ", " + send);
	xmlhttpO.open(method, url, true);
	xmlhttpO.onreadystatechange=handler;
	xmlhttpO.send(send);
}



//----------------------------------------
function callAHAH (url, pageElement, callMessage, errorMessage)
{
	if (callMessage)
		document.getElementById(pageElement).innerHTML = callMessage;

	try 
	{
		req = new XMLHttpRequest(); /* e.g. Firefox */
	}
	catch(e)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");  /* some versions IE */
		}
		catch (e)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");  /* some versions IE */
			}
			catch (E)
			{
				req = false;
			} 
		} 
	}

	req.onreadystatechange = function()
	{
		responseAHAH (pageElement, errorMessage);
	};
	
	req.open ("GET",url,true);
	req.send (null);
}

//----------------------------------------
function responseAHAH (pageElement, errorMessage)
{
	var old_output = document.getElementById(pageElement).innerHTML;
	var output = '';

	if (req.readyState == 4)
	{
		if (req.status == 200)
		{
			output = req.responseText;
			
			if (output != old_output)
			{
				document.getElementById(pageElement).innerHTML = output ;
			}
		}
		else
		{
			document.getElementById(pageElement).innerHTML = errorMessage+"\n"+output;
		}
	}
}
