/*
	NAME			: functions.js
	DESCRIPTION		: general purpose javascript functions library
	OSDATE-VERSION	: osDate 2.x (LGPL)
	MODIFICATIONS	: source code formatting
					  some minor modifications of the function internals, but no change in the functionality
	LICENSE			: GPL
	AUTHOR			: Darren Gates, Vijay Nair for original script
	AUTHOR			: Ralf Strehle for this version (ralf dot strehle at yahoo dot de) (osDate forum user name: exotic)
	COPYRIGHT		: 2008, by author
	SUPPORT			: by author
	
	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.
	
	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

if (use_popups == undefined)
{
	var use_popups = true;
}

var alphabeticChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numericChars = "0123456789";

//var popUpWin = null;	// not needed now. was used to close open popup windows when a new window was opened.

/* Create the htprequest opbect and process the readystate contents */

function createRequestObject()
{
	if (window.XMLHttpRequest && !(window.ActiveXObject)) {
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		// return new ActiveXObject('Microsoft.XMLHTTP');
		try {
			return new ActiveXObject('MSXML2.XMLHTTP');
		}
		catch (e) {
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
}

//--------------------
// should be used only for synchronous http requests
//
// need to do more research on asynchronous http requests.
// * can there be collisions between different requests?
// * or is it only necessary that all requests use the same callback function to handle the response?
// * can async and sync requests use the same request object if all requests use the same callback function?
//
// until these questions are answered, every async request uses its own request object and callback function
//
// if we stay with discrete request objects, we can optimize the callback function and php backend
//--------------------
var http = createRequestObject();

function handleResponse()
{
	if (http.readyState == 4) {
		var response = http.responseText;
		if (response != 'undefined' && response != '') {
			var update = new Array();
			var up2 = new Array();
			if (response.indexOf('|||') != -1) {
				update = response.split('|||');
				for (var i = 1; i<update.length; i++) {
					up2 = update[i].split("|:|");
					if (up2[0] != 'undefined' && up2[0] != '' && document.getElementById(up2[0])) {
						document.getElementById(up2[0]).innerHTML = up2[1];
					}
				}
			}
		}
	}
}

//--------------------
// update online time on page reload
//--------------------
//
// THIS IS DONE IN INIT.PHP
// THERE WAS A TIMEOUT IN ORIGINAL SCRIPT THAT CAUSES THE SESSION NEVER TO TIME OUT
/*
var http_online_time = createRequestObject();

function updateOnlineTime()
{
	http_online_time.open('get', doc_root + 'updateonlinetime.php', true);
	http_online_time.send(null);
}
*/

//--------------------
// update online count every 60 seconds
//--------------------
var http_online_count = createRequestObject();

function updateOnlineCount()
{
	http_online_count.open('get', doc_root + 'updateonlinecount.php', true);
	http_online_count.onreadystatechange = handleResponse_online_count;
	http_online_count.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_online_count.send(null);
	setTimeout('updateOnlineCount()', 60 * 1000);
}

function handleResponse_online_count()
{
	if (http_online_count.readyState == 4) {
		var response = http_online_count.responseText;
		if (response != 'undefined' && response != '') {
			var update = new Array();
			var up2 = new Array();
			if (response.indexOf('|||') != -1) {
				update = response.split('|||');
				for (var i = 1; i<update.length; i++) {
					up2 = update[i].split("|:|");
					if (up2[0] != 'undefined' && up2[0] != '' && document.getElementById(up2[0])) {
						document.getElementById(up2[0]).innerHTML = up2[1];
					}
				}
			}
		}
	}
}


function isValidEmail(fieldValue)
{
	if ( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,7})+$/.test(fieldValue)) {
		return true;
	}
	
	return false;
}


function isValidURL(url)
{
	if (url == null) {
		return false;
	}
	
	/* space extr */
	var reg='^ *';
	/* protocol */
	reg = reg+'(?:([Hh][Tt][Tt][Pp](?:[Ss]?))(?:\:\\/\\/))?';
	/* usrpwd */
	reg = reg+'(?:(\\w+\\:\\w+)(?:\\@))?';
	/* domain */
	reg = reg+'([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|localhost|([Ww][Ww][Ww].|[a-zA-Z0-9].)[a-zA-Z0-9\\-\\.]+\\.[a-zA-Z]{2,6})';
	/* port */
	reg = reg+'(\\:\\d+)?';
	/* path */
	reg = reg+'((?:\\/.*)*\\/?)?';
	/* filename */
	reg = reg+'(.*?\\.(\\w{2,4}))?';
	/* qrystr */
	reg = reg+'(\\?(?:[^\\#\\?]+)*)?';
	/* bkmrk */
	reg = reg+'(\\#.*)?';
	/* space extr */
	reg = reg+' *$';
	
	return url.match(reg);
}

// returns true if checkStr contains only characters specified in checkOK
//probably can be replaced with a more efficient regular expression 

function isValidString(checkStr, checkOK)
{
	if (!checkOK) {
		var checkOK = '';
	}
	
	var allValid = true;
	
	for (i = 0; i < checkStr.length; i++) {
		ch = checkStr.charAt(i);
		
		for (j = 0; j < checkOK.length; j++) {
			if (ch == checkOK.charAt(j)) {
				break;
			}
		}
			
		if (j == checkOK.length) {
			allValid = false;
			break;
		}
	}
	
	return allValid;
}

function isNumeric(fieldValue)
{
	if (/[0-9]/.test(fieldValue)) {
		return true;
	}
	
	return false;
}

function isNumeric(val, addChars)
{
	return isValidString(val, numericChars + addChars);
}

function isAlphabetic(val)
{
	if (/[A-Za-z]/.test(val)) {
		return true;
	}
	
	return false;
}

function isAlphabetic(val, addChars)
{
	return isValidString(val, alphabeticChars + addChars);
}

function isAlphaNumeric(val)
{
	if (/\w/.test(val)) {
		return true;
	}
	
	return false;
}

function isAlphaNumeric(val, addChars)
{
	return isValidString(val, alphabeticChars + numericChars + addChars);
}

function DispDispHide ( disp1, disp2, hide )
{
	if (hide) hide.style.display = 'none';
	if (disp1) disp1.style.display = 'inline';
	if (disp2) disp2.style.display = 'inline';
}

function DispHideHide ( disp, hide1, hide2 )
{
	if (hide1) hide1.style.display = 'none';
	if (hide2) hide2.style.display = 'none';
	if (disp) disp.style.display = 'inline';
}

function showHide( paramA, paramB)
{
	if (paramA.value == 'US') {
		paramB.rows['row_usstates'].style.display ='inline';
	} else {
		paramB.rows['row_usstates'].style.display = 'none';
	}
	
	if (paramA.value == 'CA') {
		paramB.rows['row_castates'].style.display ='inline';
	} else {
		paramB.rows['row_castates'].style.display = 'none';
	}
	
	if (paramA.value == 'AU') {
		paramB.rows['row_austates'].style.display ='inline';
	} else {
		paramB.rows['row_austates'].style.display = 'none';
	}
	
	if (paramA.value == 'GB') {
		paramB.rows['row_gbstates'].style.display ='inline';
	} else {
		paramB.rows['row_gbstates'].style.display = 'none';
	}
}

function showHide( paramA)
{
	if (paramA == 'US') {
		document.getElementById('row_usstates').style.display ='inline';
	} else {
		document.getElementById('row_usstates').style.display = 'none';
	}
	
	if (paramA == 'CA') {
		document.getElementById('row_castates').style.display ='inline';
	} else {
		document.getElementById('row_castates').style.display = 'none';
	}
	
	if (paramA == 'AU') {
		document.getElementById('row_austates').style.display ='inline';
	} else {
		document.getElementById('row_austates').style.display = 'none';
	}
	
	if (paramA == 'GB') {
		document.getElementById('row_gbstates').style.display ='inline';
	} else {
		document.getElementById('row_gbstates').style.display = 'none';
	}
}

function showHidePref(paramA, paramB)
{
	if (paramA.value == 'US') {
		paramB.rows['row_lookusstates'].style.display ='inline';
	} else {
		paramB.rows['row_lookusstates'].style.display = 'none';
	}
	
	if (paramA.value == 'CA') {
		paramB.rows['row_lookcastates'].style.display ='inline';
	} else {
		paramB.rows['row_lookcastates'].style.display = 'none';
	}
	
	if (paramA.value == 'AU') {
		paramB.rows['row_lookaustates'].style.display ='inline';
	} else {
		paramB.rows['row_lookaustates'].style.display = 'none';
	}
	
	if (paramA.value == 'GB') {
		paramB.rows['row_lookgbstates'].style.display ='inline';
	} else {
		paramB.rows['row_lookgbstates'].style.display = 'none';
	}
}

function showHidePref(paramA)
{
	if (paramA == 'US') {
		document.getElementById('row_lookusstates').style.display = 'inline';
	} else {
		document.getElementById('row_lookusstates').style.display = 'none';
	}
	
	if (paramA == 'CA') {
		document.getElementById('row_lookcastates').style.display = 'inline';
	} else {
		document.getElementById('row_lookcastates').style.display = 'none';
	}
	
	if (paramA == 'AU') {
		document.getElementById('row_lookaustates').style.display = 'inline';
	} else {
		document.getElementById('row_lookaustates').style.display = 'none';
	}
	
	if (paramA == 'GB') {
		document.getElementById('row_lookgbstates').style.display = 'inline';
	} else {
		document.getElementById('row_lookgbstates').style.display = 'none';
	}
}


function launchTellFriend()
{
	if (use_popups == false) {
		window.location.href = 'tellafriend.php';
		return;
	}
	
	var left = (screen.width/2) - 400/2;
	var top = (screen.height/2) - 400/2;
	var win = "width=300,height=250,left=" + left + ",top=" + top + ",copyhistory=no,directories=no,menubar=no,location=no,resizable=yes,scrollbars=no";
	
	window.open('tellafriend.php', 'tellfriend', win);
}


function launchTellFriendProfile(sID)
{
	if (use_popups == false) {
		window.location.href = 'tellafriend.php?ID=' + sID;
		return;
	}
	
	var left = (screen.width/2) - 280/2;
	var top = (screen.height/2) - 280/2;
	var win = "width=280,height=300,left=" + left + ",top=" + top + ",copyhistory=no,directories=no,menubar=no,location=no,resizable=yes,scrollbars=yes";
	
	window.open('tellfriend.php?ID=' + sID, 'tellfriendprofile', win);
}


function popUpWindowMessage(URLStr, align, width, height, msgid)
{
	width = 450;
	height = 450;
	
	if (use_popups == false) {
		window.location.href = URLStr;
		return;
	}
	
	//	if(popUpWin)
	//	{
	//		if(!popUpWin.closed) popUpWin.close();
	//	}
	
	if (align == 'center') {
		var left = (screen.width/2) - width/2;
		var top = (screen.height/2) - height/2;
	} else {
		var left = 0;
		var top = 0;
	}
	
	popUpWin = open(URLStr, 'popUpWin'+msgid, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}


function showIM(msgid)
{
	popUpWindow('showinstantmsg.php?id=' + msgid, 'center', 320, 260, msgid);
}


function popUpWindow(URLStr, align, width, height, msgid)
{
	if (use_popups == false) {
		window.location.href = URLStr;
		return;
	}
	
	if (align == 'center') {
		var left = (screen.width - width) / 2;
		var top = (screen.height - height) / 2;
	} else {
		var left = 0;
		var top = 0;
	}
	
	popUpWin = open(URLStr, 'popUpWin'+msgid, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
	popUpWin.opener.name = 'abc1';
}


function popUpScrollWindow(URLStr, align, width, heightParam, token)
{
	if (use_popups == false) {
		window.location.href = URLStr;
		return;
	}
	
	height = screen.height - 50;
	height = Math.min(height, heightParam);
	
	if (align == 'center') {
		var left = (screen.availWidth - width) / 2;
		var top = (screen.height - height) / 2;
	} else if (align == 'top') {
		var left = (screen.width - width) / 2;
		var top = 0;
	} else {
		var left = 0;
		var top = 0;
	}
	
	popUpWin = open(URLStr, 'popUpWin'+token, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function popUpScrollWindow2(URLStr, align, width, heightParam)
{
	if (use_profilepopups == false) {
		window.location.href = URLStr;
		return;
	}
	
	height = screen.height - 150;
	height = Math.min(height, heightParam);

/*	if(popUpWin){

		if(!popUpWin.closed) { popUpWin.close(); }
	}
*/
	if (align == 'center') {
		var left = (screen.width - width) / 2;
		var top = (screen.height - height) / 2;
	} else if (align == 'top') {
		var left = (screen.width - width) / 2;
		var top = 0;
	} else {
		var left = 0;
		var top = 0;
	}
	
	popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
	popUpWin.opener.name = "abc1";
}

var prevRow = null;

function toggleRow(rwId, num)
{
	if (prevRow != null) {
		prevRow.style.display ='none';
	}
	
	prevRow = obj = document.getElementById(rwId);
	obj.style.display ='inline';
	
	for (i=0; i<document.getElementById('tblSelect').length; i++) {
		if (i == num) {
			document.getElementById('tblSelect')[i].className = "s_table_blue";
		} else {
			document.getElementById('tblSelect')[i].className = "s_table_white";
		}
	}
}

/*************
	POLL
**************/

function votesubmit(id, curtime)
{
	var width = 600;
	var height = 378;
	var left = (screen.width - width) / 2;
	var top = (screen.height - height) / 2;
	
	var nop = document.frmpoll.rdo.length;
	var i;
	var selection = 0;
	
	for (i=0; i<nop; i++) {
		if (document.frmpoll.rdo[i].checked) {
			selection = document.frmpoll.rdo[i].value;
		}
	}
	
	if (selection == 0) {
		alert('Please select one of the options.');
		return;
	}
	
	if (use_popups == false) {
		window.location.href = 'votehere.php?t=' + curtime + '&rdo=' + selection + '&pollid=' + id;
	} else {
		openpopup = window.open('votehere.php?t=' + curtime + '&rdo=' + selection + '&pollid=' + id, '','width='+width+',height='+height+',left='+left+',top='+top+',resizable=yes,scrollbars=yes,status=no');
		openpopup.opener.name = 'abc';
	}
}

function viewresult(id,curtime)
{
	var width = 700;
	var height = 400;
	var left = (screen.width - width) / 2;
	var top = (screen.height - height) / 2;
	
	if (use_popups == false) {
		window.location.href = 'viewresult.php?t=' + curtime + '&pollid=' + id;
	} else {
		openpopup = window.open('viewresult.php?t=' + curtime + '&pollid=' + id, '','width='+width+',height='+height+',left='+left+',top='+top+',resizable=yes,scrollbars=yes,status=no');
		openpopup.opener.name = 'abc';
	}
}

function previousPolls()
{
	if (use_popups == false) {
		window.location.href = 'previouspolls.php';
		return;
	}
	
	var width = 700;
	var height = 400;
	var left = (screen.width - width) / 2;
	var top = (screen.height - height) / 2;
	
	openpopup = window.open('previouspolls.php', 'popupwin', 'width='+width+', height='+height+', left='+left+', top='+top+', resizable=yes, scrollbars=yes, status=no');
	openpopup.opener.name = "abc";
}


// function openWin was used in previouspolls.tpl and has been replaced with function viewresult
function openWin(id)
{
	if (use_popups == false) {
		window.location.href = 'viewresult.php?pollid=' + id;
		return;
	}
	
	var width = 550;
	var height = 378;
	var left = (screen.width/2) - width/2;
	var top = (screen.height/2) - height/2;
	
	openpopup = window.open('viewresult.php?pollid=' + id, '','width='+width+',height='+height+',left='+left+',top='+top+',resizable=yes,scrollbars=yes,status=no');
	openpopup.opener.name = 'abc';
}


/************************
	GENERAL PURPOSE
*************************/

function selectRdo(form,rdo)
{
	for (i=0; i < form.length; i++) {
		if (form.elements[i].type=='radio' && form.elements[i].name=='searchby' && form.elements[i].value == rdo) {
			form.elements[i].checked = true;
		}
	}
}

function checkAll(form,name,val)
{
	for (i=0; i < form.length; i++) {
		if (form.elements[i].type == 'checkbox' && form.elements[i].name == name) {
			form.elements[i].checked = val;
		}
	}
}

function datefromtovalid(sy,sm,sd,ey,em,ed,msg)
{
	month = new Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");
	
	var syear=sy[sy.selectedIndex].value;
	var smonth=sm[sm.selectedIndex].value;
	var sdays=sd[sd.selectedIndex].value;
	var eyear=ey[ey.selectedIndex].value;
	var emonth=em[em.selectedIndex].value;
	var edays=ed[ed.selectedIndex].value;
	
	for (var count=0;count<12;count++) {
		if ((smonth== month[count])) {
			smonth=count;
		}
		if ((emonth== month[count])) {
			emonth=count;
		}
	}
	
	from_date = new Date(syear,smonth,sdays);
	to_date = new Date(eyear,emonth,edays);
	
	if (from_date > to_date) {
		alert(msg);
		return false;
	}
	
	return true;
}


function DateCheck(syr, smt, sdt, msg)
{
	hdt=sdt[sdt.selectedIndex].value;
	hmt=smt[smt.selectedIndex].value;
	hyr=syr[syr.selectedIndex].value;
	
	hms_maxval=31;
	
	if ((hmt=="APR") || (hmt=="JUN") || (hmt=="SEP") || (hmt=="NOV")) {
		hms_maxval=30;
	}
	
	if ((hmt=="FEB") && (hyr%4)==0) {
		hms_maxval=29;
	}
	
	if ((hmt=="FEB") && (hyr%4)!=0) {
		hms_maxval=28;
	}
	
	if (parseInt(hdt) > hms_maxval) {
		alert(msg);
		return false;
	}
	
	return true;
}


// After clicking a link to delete something, pops up a window asking the user to confirm
// If the user clicks ok, it tacks delete=Y to the url. If the user clicks cancel, 
// it returns false which leaves the user on the page. 
// 
// Ex. <a href="bloglist.php?id=2&action=delete" onclick="return confirmLink(this, 'Blog Entry')">Delete</a>
// 
function confirmLink(theLink, theMessage)
{
	var is_confirmed = confirm(theMessage);
	
	if (is_confirmed) {
		theLink.href += '&delete=Y';
	}
	
	return is_confirmed;
}


// After clicking a submit button, pops up a window asking the user to confirm 
// If the user clicks ok, it proceeds. If the user clicks cancel, it cancels submitting
// the form
// 
// ex. <input type="submit" class="formbutton" value="Delete" name="delete" onclick="return confirmButton('Blog Entries')" />
// 
function confirmButton(theMessage)
{
	var is_confirmed = confirm(theMessage);
	
	return is_confirmed;
}

// The next two functions comprise the text counting for a text box.
// 
function countCheck(countLimit)
{
	if (document.frmCmt.comment.value.length > countLimit) {
		alert('Too many characters in the comment box!');
		document.frmCmt.comment.focus();
		return false;
	}
	
	return true;
}


function countText(countLimit)
{
	var old = document.frmCmt.counter.value;
	
	document.frmCmt.counter.value = document.frmCmt.comment.value.length;
	
	if (document.frmCmt.counter.value > countLimit && old <= countLimit) {
		alert('Too many characters in the comment box!');
		if (document.styleSheets) {
			document.frmCmt.counter.style.fontWeight = 'bold';
			document.frmCmt.counter.style.color = '#ff0000';
		}
	}
	else if(document.frmCmt.counter.value <= countLimit && old > countLimit && document.styleSheets) {
		document.frmCmt.counter.style.fontWeight = 'normal';
		document.frmCmt.counter.style.color = '#000000';
	}
}

function openInParentWindow(url)
{
	window.opener.document.location.href=url;
	window.opener.focus();
}

/*********************************
	DATA VALIDATION
**********************************/

function CheckFieldString(type, formField, strMsg)
{
	var checkOK;
	var checkStr = formField.value;
	var namestr, domainstr;
	
	if (type == 'noblank') {
		if (checkStr == '') {
			ErrorCount++;
		 	ErrorMsg[ErrorCount] = strMsg;
			if (ErrorCount == 1) formField.focus();
			return false
		}
	}
	else
	{
		if (type == 'integer') {
			checkOK = "0123456789";
		} else if (type == 'decimal') {
			checkOK = "0123456789.";
		} else if (type == 'text') {
			// checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
			checkOK = text_chars;
		} else if (type == 'alphanumeric') {
			// checkOK = "0123456789.+-_#,/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ()_";
			checkOK = alphanumeric_chars;
		} else if (type == 'full') {
			// checkOK = "0123456789.,[]{}=+-_#,/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ()_:;'\\*^%$@<>?'\"\'";
			checkOK = full_chars;
		} else if (type == 'alphanum') {
			// checkOK = "0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
			checkOK = alphanum_chars;
		} else if (type == 'email') {
			if ( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,7})+$/.test(checkStr) == false) {
				ErrorCount++;
				ErrorMsg[ErrorCount] = strMsg ;
				if (ErrorCount == 1) formField.focus();
				return false
			}
			checkOK = "0123456789_-@.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
		} else if (type == 'phone') {
			checkOK = "0123456789-+";
		} else if (type == 'URL') {
			checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.:/\\";
		} else if (type == 'path') {
			checkOK = "0123456789.+-_#,/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz () \\ ";
		} else {
			ErrorCount++;
			ErrorMsg[ErrorCount] = "Check Validation one of the mentioned validation type is wrong" ;
			return false;
		}
		
		for (i = 0; i < checkStr.length; i++) {
			ch = checkStr.charAt(i);
			valid = false;
			for (j = 0; j < checkOK.length; j++) {
				if (ch == checkOK.charAt(j)) {
					valid = true;
					break;
				}
			}
			if (!valid) {
				ErrorCount++;
				ErrorMsg[ErrorCount] = strMsg;
				if (ErrorCount == 1) formField.focus();
				return false;
			}
		}
		
		if (type == 'decimal') {
			var flagDot = false;
			for (t = 0; t < checkStr.length; t++) {
				ch = checkStr.charAt(t);
				if (ch == '.') {
					if (flagDot == false) {
						flagDot = true;
					} else {
						ErrorCount++;
						ErrorMsg[ErrorCount] = strMsg ;
						if (ErrorCount == 1) formField.focus();
						return false;
					}
				}
			}
		}
	}
}


function validateLogin(form)
{
	ErrorMsg = new Array();
	ErrorMsg[0] = "------------------------- The Following Errors Occured -------------------------" + String.fromCharCode(13);
	
	CheckFieldString("noblank", form.txtusername, "{$lang.signup_js_errors.username_noblank}");
	CheckFieldString("noblank", form.txtpassword, "{$lang.signup_js_errors.password_noblank}");
	
	CheckFieldString("alphanum", form.txtusername, "{$lang.signup_js_errors.username_charset}");
	CheckFieldString("alphanum", form.txtpassword, "{$lang.signup_js_errors.password_charset}");
	
	// concat all error messages into one string
	result = '';
	
	if (ErrorCount > 0) {
		alert(ErrorMsg[1]);
		return false;
	}
	
	return true;
}

/***********************
	CAPTCHA
************************/

function reloadCaptcha()
{
	var now = new Date();
	var capObj = document.getElementById('spam_code_img');
	
	if (capObj) {
		capObj.src = capObj.src + (capObj.src.indexOf('?') > -1 ? '&' : '?') + Math.ceil(Math.random()*(now.getTime()));
	}
}
