
<!--


function ymPreload()
{
	var args = ymPreload.arguments;
	document.imageArray = new Array(args.length);
	for(var i=0; i<args.length; i++) {
		document.imageArray[i] = new Image;
		document.imageArray[i].src = args[i];
	}
}



function confirm_delete_comment(article, id, theme) {

	var answer = confirm ("Its okay to delete this comment?")
	if (answer)
		window.location="?id="+article+"&action=delete&comment_id="+id+"&theme="+theme+"";
}

function confirm_forum_delete_comment(forumid, postid, parentpostid) {

	var answer = confirm ("Its okay to delete this post?")
	if (answer)
		window.location="forum.php?forum_id="+forumid+"&post_id="+postid+"&parent_post_id="+parentpostid+"&action=delete_thread";
}



function validate_form_add_comment(thisform) {

	if(validateNotEmpty( thisform.comment_text.value )==0) {
		alert('Comment Text should not be blank. ');
		return false;
	} else 	if(validateNotEmpty( thisform.user_code.value )==0) {
		alert('Please enter the three character code from\nthe captcha image which helps us prevent spam. ');
		return false;
	} else {
		return true;
	}
}



function  submit_handler_form_add_new_thread_form(thisform) {

	if(validateNotEmpty( thisform.subject.value )==0) {
		alert('Subject should not be blank. ');
		return false;
	} else if(validateNotEmpty( thisform.content.value )==0) {
		alert('Message should not be blank. ');
		return false;
	} else {
		return true;
	}
}











// ************************************************************************************************************
// ************************************************************************************************************
// form validation...
// generic functions sourced from http://www.rgagnon.com/jsdetails/js-0063.html
// ************************************************************************************************************
// ************************************************************************************************************


function validateEmail( strValue) {
/************************************************
DESCRIPTION: Validates that a string contains a
  valid email pattern.

 PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS: Accounts for email with country appended
  does not validate that email contains valid URL
  type (.com, .gov, etc.) or valid country suffix.
*************************************************/
var objRegExp  =
 /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{2,3})(\.[a-z]{2})*$)/i;

  //check for valid email
  return objRegExp.test(strValue);
}




function  validateNumeric( strValue ) {
/******************************************************************************
DESCRIPTION: Validates that a string contains only valid numbers.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
******************************************************************************/
  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;

  //check for numeric characters
  return objRegExp.test(strValue);
}

function validateInteger( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only
	valid integer number.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
******************************************************************************/
  var objRegExp  = /(^-?\d\d*$)/;

  //check for integer characters
  return objRegExp.test(strValue);
}

function validateNotEmpty( strValue ) {
/************************************************
DESCRIPTION: Validates that a string is not all
  blank (whitespace) characters.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
*************************************************/
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length > 0){
	 return true;
   }
   return false;
}



function validateUKDate( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only
	valid dates with 2 digit month, 2 digit day,
	4 digit year. Date separator must be /.
	Uses combination of regular expressions and
	string parsing to validate date.
	Ex. dd/mm/yyyy or dd-mm-yyyy or dd.mm.yyyy

	created my Matthew McNicol (Nov 2003) based on
	validateUSDate, from
	http://www.rgagnon.com/jsdetails/js-0063.html

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS:
   Avoids some of the limitations of the Date.parse()
   method such as the date separator character.
*************************************************/
  var objRegExp = /^\d{1,2}(\/)\d{1,2}\1\d{4}$/

  //check to see if in correct format
  if(!objRegExp.test(strValue))
	return false; //doesn't match pattern, bad date
  else{
	var strSeparator = strValue.substring(2,3) //find date separator
	var arrayDate = strValue.split(strSeparator); //split date into month, day, year
	//create a lookup for months not equal to Feb.
	var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
						'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
	var intDay = parseInt(arrayDate[0],10);
	var intMonth = parseInt(arrayDate[1],10);
	var intYear = parseInt(arrayDate[2],10);





	//alert(intDay+' '+intMonth+' '+intYear);



	//check if month value and day value agree
	if(arrayLookup[intMonth] != null) {
	  if(intDay <= arrayLookup[intMonth] && intDay != 0 && intMonth != 0 && intMonth < 13)
		return true; //found in lookup table, good date
	}

	//check for February

	if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0 && intMonth != 0 && intMonth < 13)
	  return true; //Feb. had valid number of days

  }
  return false; //any other values, bad date
}


function validateUSDate( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only
	valid dates with 2 digit month, 2 digit day,
	4 digit year. Date separator can be ., -, or /.
	Uses combination of regular expressions and
	string parsing to validate date.
	Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS:
   Avoids some of the limitations of the Date.parse()
   method such as the date separator character.
*************************************************/
  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

  //check to see if in correct format
  if(!objRegExp.test(strValue))
	return false; //doesn't match pattern, bad date
  else{
	var strSeparator = strValue.substring(2,3) //find date separator
	var arrayDate = strValue.split(strSeparator); //split date into month, day, year
	//create a lookup for months not equal to Feb.
	var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
						'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
	var intDay = parseInt(arrayDate[1]);

	//check if month value and day value agree
	if(arrayLookup[arrayDate[0]] != null) {
	  if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
		return true; //found in lookup table, good date
	}

	//check for February
	var intYear = parseInt(arrayDate[2]);
	var intMonth = parseInt(arrayDate[0]);
	if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
	  return true; //Feb. had valid number of days
  }
  return false; //any other values, bad date
}



function validateValue( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Validates that a string a matches
  a valid regular expression value.

PARAMETERS:
   strValue - String to be tested for validity
   strMatchPattern - String containing a valid
	  regular expression match pattern.

RETURNS:
   True if valid, otherwise false.
*************************************************/
var objRegExp = new RegExp( strMatchPattern);

 //check if string matches pattern
 return objRegExp.test(strValue);
}


function rightTrim( strValue ) {
/************************************************
DESCRIPTION: Trims trailing whitespace chars.

PARAMETERS:
   strValue - String to be trimmed.

RETURNS:
   Source string with right whitespaces removed.
*************************************************/
var objRegExp = /^([\w\W]*)(\b\s*)$/;

	  if(objRegExp.test(strValue)) {
	   //remove trailing a whitespace characters
	   strValue = strValue.replace(objRegExp, '$1');
	}
  return strValue;
}

function leftTrim( strValue ) {
/************************************************
DESCRIPTION: Trims leading whitespace chars.

PARAMETERS:
   strValue - String to be trimmed

RETURNS:
   Source string with left whitespaces removed.
*************************************************/
var objRegExp = /^(\s*)(\b[\w\W]*)$/;

	  if(objRegExp.test(strValue)) {
	   //remove leading a whitespace characters
	   strValue = strValue.replace(objRegExp, '$2');
	}
  return strValue;
}

function trimAll( strValue ) {
/************************************************
DESCRIPTION: Removes leading and trailing spaces.

PARAMETERS: Source string from which spaces will
  be removed;

RETURNS: Source string with whitespaces removed.
*************************************************/
 var objRegExp = /^(\s*)$/;

	//check for all spaces
	if(objRegExp.test(strValue)) {
	   strValue = strValue.replace(objRegExp, '');
	   if( strValue.length == 0)
		  return strValue;
	}

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
	   //remove leading and trailing whitespace characters
	   strValue = strValue.replace(objRegExp, '$2');
	}
  return strValue;
}

function removeCurrency( strValue ) {
/************************************************
DESCRIPTION: Removes currency formatting from
  source string.

PARAMETERS:
  strValue - Source string from which currency formatting
	 will be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /\(/;
  var strMinus = '';

  //check if negative
  if(objRegExp.test(strValue)){
	strMinus = '-';
  }

  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('$') >= 0){
	strValue = strValue.substring(1, strValue.length);
  }
  return strMinus + strValue;
}

function addCurrency( strValue ) {
/************************************************
DESCRIPTION: Formats a number as currency.

PARAMETERS:
  strValue - Source string to be formatted

REMARKS: Assumes number passed is a valid
  numeric value in the rounded to 2 decimal
  places.  If not, returns original value.
*************************************************/
  var objRegExp = /-?[0-9]+\.[0-9]{2}$/;

	if( objRegExp.test(strValue)) {
	  objRegExp.compile('^-');
	  strValue = addCommas(strValue);
	  if (objRegExp.test(strValue)){
		strValue = '(' + strValue.replace(objRegExp,'') + ')';
	  }
	  return '$' + strValue;
	}
	else
	  return strValue;
}

function removeCommas( strValue ) {
/************************************************
DESCRIPTION: Removes commas from source string.

PARAMETERS:
  strValue - Source string from which commas will
	be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /,/g; //search for commas globally

  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

function addCommas( strValue ) {
/************************************************
DESCRIPTION: Inserts commas into numeric string.

PARAMETERS:
  strValue - source string containing commas.

RETURNS: String modified with comma grouping if
  source was all numeric, otherwise source is
  returned.

REMARKS: Used with integers or numbers with
  2 or less decimal places.
*************************************************/
  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');

	//check for match to search criteria
	while(objRegExp.test(strValue)) {
	   //replace original string with first group match,
	   //a comma, then second group match
	   strValue = strValue.replace(objRegExp, '$1,$2');
	}
  return strValue;
}

function removeCharacters( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Removes characters from a source string
  based upon matches of the supplied pattern.

PARAMETERS:
  strValue - source string containing number.

RETURNS: String modified with characters
  matching search pattern removed

USAGE:  strNoSpaces = removeCharacters( ' sfdf  dfd', '\s*')
*************************************************/
 var objRegExp =  new RegExp( strMatchPattern, 'gi' );

 //replace passed pattern matches with blanks
  return strValue.replace(objRegExp,'');
}
















function setCheckboxes(the_form, do_check)
{
    var elts      = document.forms[the_form].elements['products_selected[]'];
    
    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;
        } // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

    return true;
} // end of the 'setCheckboxes()' function

//-->
