// javascript functions

function putLoremIpsum(id)
{
	document.getElementById(id).innerHTML = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla ut tortor et urna tristique iaculis. Ut et eros. Quisque non purus feugiat est tristique facilisis. Maecenas eros turpis, aliquet ac, accumsan vitae, nonummy at, risus. In neque orci, blandit a, hendrerit quis, vestibulum hendrerit, arcu. Fusce tortor odio, vehicula et, tincidunt ut, semper sed, pede. Sed placerat sapien sit amet pede sollicitudin sagittis. Praesent gravida faucibus tortor. Phasellus dictum gravida quam. Proin sollicitudin scelerisque tellus. Mauris sit amet quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam non eros non velit elementum feugiat. Proin nonummy. Praesent non leo ac felis luctus aliquet. Nam urna.';
}

function htmlencode(str)
{
	str = '' + str;
	var re = /\&/gi;
	str = str.replace(re, '&amp;');
	re = /"/gi;
	str = str.replace(re, '&quot;');
	re = /</gi;
	str = str.replace(re, '&lt;');
	re = />/gi;
	str = str.replace(re, '&gt;');
	return str;
}

function trim(str)
{
	str = '' + str;
	var re = /^ */;
	var res = str.replace(re, '');
	re = / *$/;
	return(res.replace(re, ''));
}

function ShowAlert(sAlertString, hForm, FormElement)
{
	alert(sAlertString);
	if ( (!hForm.elements[FormElement].disabled) && (!hForm.elements[FormElement].length) )
	{
		if (hForm.elements[FormElement].type != 'hidden')
		{
			hForm.elements[FormElement].focus();
			if (!hForm.elements[FormElement].options) // select
				hForm.elements[FormElement].select();
		}
	}
	return false;
}

function parse_int(str)
{
	str = '' + str;
	var re = /^0*/;
	var res = str.replace(re, '');
	return parseInt(res);
}

function GetValue(el)
{
	if ( (el.length) && (!el.options) )
	{
		for (var i=0; i<el.length; i++)
			if (el[i].checked)
				return el[i].value;
		return '';
	}
	else
		return el.value;
}

function is_leap_year(year)
{
	return ( (year%4 == 0) && !( (year%100 == 0) && (year%400 != 0) ) );
}

function isValidEmail(mailstr)
{
  var re = /^ *([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9-]+\.)+.*$/;
  return (re.test(mailstr.toLowerCase()));
}

function isValidPhone(phonestr) // only for US
{
	var re = /^\(?[0-9]{3}\)?[\-\. ]*[0-9]{3}[\-\. ]*[0-9]{4}$/;
	return re.test(phonestr);
}

function isValidUrlHTTP(url)
{
	var re = /^(http(s)?:\/\/){1}([a-z,0-9]*([-][a-z,0-9]+)*\.)+[a-z]+(:[0-9]+)?(\/.*)?$/i;
	return re.test(url);
}

function isValidNumber(num_str) // valid positive float number
{
	var re = /^[0-9]+(\.?[0-9]+)?$/;
	return re.test(num_str);
}

function isValidDate(str) 
{
	var re = /^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/;
	return re.test(str);
}

function isValidDateTime(str) 
{
	var re = /^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$/;
	return re.test(str);
}

function isValidCC(s)
{
	var re = /[^0123456789]/g;
	s = (''+s).replace(re, '');
	if (s=='') return false;
	var si = '';
	for (var i=s.length-1; i>=0; i--)
		si += s.substr(i, 1);
	var sum = 0;
	var digits = '';
	for (var i=0; i<si.length; i++)
	{
		c = parseInt(si.substr(i, 1), 10);
		digits += '' + ( ( (i%2)!=0 )?(c * 2):(c) );
	}
	for (var i=0; i<digits.length; i++)
		sum += parseInt(digits.substr(i, 1), 10);
	return ((sum % 10 ) == 0);
}

function checkRE(s, re_s)
{
	eval('var re='+re_s+';');
	return re.test(s);
}

function getNumberFromString(s)
{
	s = '' + s;
	if (s == '') return s;
	var re = /^0*/;
	s = parseInt(s.replace(re, ''), 10);
	return s;
}

function testDate(str, check_time){
    var ty = 0; var tm = 0; var td = 0;
	var th = 0; var ti = 0; var ts = 0;    
	var xd = ''; var xt = ''; var xdt = '';
	var xdt = str.split(' '); 
	if (xdt.length>0) {
		var xd = xdt[0].split('-');
		if (xd.length>0) ty = xd[0]; 
		if (xd.length>1) tm = xd[1]; 
		if (xd.length>2) td = xd[2];
	}
    var months = new Array(); 
    months[1] = 31; 
    if (is_leap_year(ty)) months[2] = 29; else months[2] = 28; 
    months[3] = 31; months[4] = 30; months[5] = 31; months[6] = 30; months[7] = 31; months[8] = 31; months[9] = 30; months[10] = 31; months[11] = 30; months[12] = 31;
    
	ty = getNumberFromString(ty);
	tm = getNumberFromString(tm);
	td = getNumberFromString(td);
	
    if ( ty=='' || isNaN(ty) || (ty<1900)) return 'y'; 
    if ( tm=='' || isNaN(tm) || (tm<1) || (tm>12) ) return 'm';
    if ( td=='' || isNaN(td) || (td<1) || (td>months[parseInt(tm)]) ) return 'd';
    
    if (check_time != true) {

	    var re = /^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})$/;
	    if (!re.test(str)) return '_';

    	return '';
    }

	if (xdt.length>1) {
		var xt = xdt[1].split(':');
		if (xt.length>0) th = xt[0]; 
		if (xt.length>1) ti = xt[1]; 
		if (xt.length>2) ts = xt[2];
	}
	
	th = getNumberFromString(th);
	ti = getNumberFromString(ti);
	ts = getNumberFromString(ts);

    if ( th=='' || isNaN(th) || (th<0) || (th>23) ) return 'h';
    if ( ti=='' || isNaN(ti) || (ti<0) || (ti>59) ) return 'i';
    if ( ts=='' || isNaN(ts) || (ts<0) || (ts>59) ) return 's';

	var re = /^([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$/;
	if (!re.test(str)) return '_';

	return '';
}
