function pageWidth()
{
	var pw = window.innerWidth != null ? window.innerWidth: document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth:document.body != null? document.body.clientWidth:null;
	return pw;
} 

function pageHeight()
{
	var ph = window.innerHeight != null? window.innerHeight: document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight:document.body != null? document.body.clientHeight:null;
	return ph;
} 

function myjs_toggle(elemId, showdisp)
{
	if (showdisp==null)
		showdisp = 'block';		// can be inline
	var	elem = document.getElementById(elemId);
	if (elem.style.display == 'none')
		elem.style.display = showdisp;
	else
		elem.style.display = 'none';
}

//-------- Validation -------------
function myjs_validNumber(strString)
{
	if (strString == "-")
		return false;
		
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;

	if (strString.length == 0) return false;

	//  test strString consists of valid characters listed above
	var	strlen = strString.length;
	for (i = 0; i < strlen && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	
return blnResult;
}

//------- private for dates
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
//-------

function myjs_validDate(sDate)
{
	var minYear=1900;
	var maxYear=2100;
	var daysInMonth = DaysArray(12);

	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
	var	res = false;
	
	sDate = sDate.replace("-", "/").replace("-", "/");
	if (re.test(sDate))
	{
		var	temp;
		var	dArr = sDate.split("/");
		if (dArr.length == 1)
			dArr = sDate.split("-");

		var d = new Date(dArr[2], dArr[1]-1, dArr[0], 0, 0, 0, 0);	// year, month, day, hours, minutes, seconds, milliseconds
		var	day = d.getDate();
		var	month = d.getMonth();
		var	year = d.getFullYear();
		// check if javascript can create a valid object equal to mine
		res = (month+1) == dArr[1] && day == dArr[0] && year == dArr[2];			
		// more checks
		if (res)
		{
			var	dayStr = dArr[1];
			var	monthStr = dArr[0];	// 0 based
			var	yearStr = dArr[2];
			month++;
			
			if (monthStr.length<1 || month<1 || month>12)
			{
				res = false;
			}
			if (dayStr.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
			{
				res = false;
			}
			if (yearStr.length != 4 || year==0 || year<minYear || year>maxYear)
			{
				res = false;
			}
		}
	}
	return res;
}

function myjs_validEmail(email)
{
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	return emailPattern.test(email);  
}

function myjs_validTime(sTime)
{
	var	elems = sTime.split(":");
	var	res = false;
	if (elems.length == 1 || elems.length == 2)
	{
		var	hour = elems[0];
		var	min = elems[1];
		if (hour >= 0 && hour <= 23)
		{
			if (elems.length == 1 || (min >= 0 && min <= 59))
				res = true;
		}
	}
	return res;
}

function myjs_trim(str)
{
	return str.replace(/^\s+|\s+$/g,"");
}
