//Trims the string on both sides
function strTrim(tmpStr)
{
	tmpStr = tmpStr.replace(/^\s+/,"");//remove leading spaces
	tmpStr = tmpStr.replace(/\s+$/,"");//remove trailing spaces
	return tmpStr;
}
//Iteratively trims all text fields
function trimFields()
{
	var typePat = /^(text|textarea|password)$/;
	for(var i=0; i < obj.elements.length; i++)
	{
		if(typePat.test(obj.elements[i].type))
		{
			obj.elements[i].value = strTrim(obj.elements[i].value);
		}
	}
}

//Checks username against pattern
function chkUserName(tmpStr)
{
	var uname_pat = /^[a-z0-9]+$/i;
	return(uname_pat.test(tmpStr));
}

//Checks FirstName/LastName against pattern
function chkPersonName(tmpStr)
{
	var pname_pat = /^[a-z\.']+$/i;
	return(pname_pat.test(tmpStr));
}

//Checks email against pattern
function chkEmail(tmpStr)
{
	var email_pat = /^[a-z0-9][a-z0-9_\.\-']*[a-z0-9]@[a-z0-9]+[a-z0-9\.\-_]*\.[a-z]+$/i;
	return(email_pat.test(tmpStr));
}

//Checks validity of date fields
function chkDate(tmpStr)
{
	var dt_pat = /^\d{2,2}\/\d{2,2}\/\d{4,4}$/;
	if(!dt_pat.test(tmpStr))
	{
		return false;
	}
	var dtGiven = new Date(tmpStr);
	var arrDt = tmpStr.split("/");
	var dtMon = parseInt(arrDt[0],10);//force decimal or else 08,09 will return 0
	var dtDay = parseInt(arrDt[1],10); //force decimal or else 08,09 will return 0
	var dtYear = parseInt(arrDt[2],10); //force decimal or else 08,09 will return 0
	if((dtGiven.getMonth() != dtMon - 1) || (dtGiven.getDate() != dtDay) || (dtGiven.getFullYear() != dtYear))
	{
		return false;
	}
	return true;
}

//Checks URL against pattern
function chkURL(tmpStr)
{
	var url_pat = /^(http|https|ftp):\/\/([\w-]+\.)+[\w-]+(\/[\w-\.\/?%&amp;,=#@\/:]*)?/;
	return(url_pat.test(tmpStr));
}

//Checks phone number by pattern
function chkPhone(tmpStr)
{
	var ph_pat = /^(\d{3})[-\.](\d{3})[-\.](\d{4})$/;
	return(ph_pat.test(tmpStr));
}

//Checks zipcode by pattern
function chkZip(tmpStr)
{
	var zip_pat = /^(\d{5})$/;
	return(zip_pat.test(tmpStr));
}

//Checks CC Number by pattern
function chkCCNum(tmpStr)
{
	var cc_pat = /^(\d{14,16})$/
	return(cc_pat.test(tmpStr));
}

//Open a popup window at center of screen
function popWin(page, win_width, win_height)
{
	var scr_width = screen.width;
	var scr_height = screen.height;
	var coord_left = Math.floor((scr_width - win_width) / 2);
	var coord_top = Math.floor((scr_height - win_height) / 2);
	window.open(page, 'popwin', "width="+win_width+",height="+win_height+",toolbar=0,menubar=0,toolbar=0,menubar=0,location=0,left="+coord_left+",top="+coord_top+",scrollbars=1");
}

//Confirms a cancel action
function confirmCancel(cancelUrl)
{
	if(confirm("Are you sure you want to cancel this operation?"))
	{
		self.location = cancelUrl;
	}
}

//Function to preview article in a new window
function previewHelp(faq_id)
{
	window.open("preview_help_faq.php?id="+faq_id, '', "width=620,height=530,toolbar=0,menubar=0,location=0,left=25,top=25,scrollbars=1");
}

//Function to preview article in a new window
function previewArticle(article_id)
{
	window.open("preview_article.php?id="+article_id, '', "width=620,height=530,toolbar=0,menubar=0,location=0,left=25,top=25,scrollbars=1");
}

//Open an image in a pop up
function viewImage(imgURL)
{
	newWindow = window.open("","newWindow","titlebar=no,width=50,height=50,left=25,top=25,scrollbars=1");
	var doc = newWindow.document;
	doc.open();
	doc.write('<html>\n');
	doc.write('<head>\n');
	doc.write('<title>View Image</title>\n');
	doc.write('<meta http-equiv="imagetoolbar" content="no">\n');
	doc.write('</head>\n');
	doc.write('<body leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" ondblclick="self.close();"  onblur="self.close();" onload="javascript:window.resizeTo(document.getElementById(\'theImage\').width + 10, document.getElementById(\'theImage\').height + 50)">\n');
	doc.write('<img src=\"'+imgURL+'\" alt=\"File: '+imgURL+'\n(Double Click to Close)\" border="0" name="theImage" id="theImage" />\n');
	doc.write('</body>\n');
	doc.write('</html>\n');
	newWindow.focus();
	doc.close();
}
