
	// QM_STD.JS version 7.1 -- CC Validation 
	// *********************************************
	// *  Copyright 2005 - Quantum Mechanic, Inc.  *
	// *  All Rights Reserved                      *
	// *********************************************


function pophelp() {
var poppy=window.open('/documents/reg_help2.htm','','scrollbars=yes,resizable=yes,toolbar=no,menubar=no,location=no,width=300,height=300');
}

var crlf="\n";



// EXTRACT ONLY NUMBERS FROM A MIXED STRING
function justNo(string) {
    var nums='';
    var temp='';
    var valid = '0123456789';
    for (var i=0; i<string.length; i++) {
	temp = "" + string.substring(i, i+1);
	if (valid.indexOf(temp) != "-1") {
	     nums=nums+string.substring(i,i+1)
	}
    }
    return nums;
}



// (ON-BLUR) PHONE NUMBER VALIDATOR
function isPhone(tempField, minlength) {
  var strError = ''
  if (minlength == null) {var minlength = 0;}
	xraw = eval("document.form1." + tempField + ".value"); 
	xtemp = justNo(xraw);
   	eval("form1." + tempField +".value='" + xtemp + "';");

   if (minlength > 0) {
       if (xtemp.length < minlength) {
          strError = "Incomplete telephone number detected.   \nPlease use all 10 digits. (e.g.2025551234)    \n";
 		}
 	}

	/// only interrogate if there is a value ///
	if (xtemp.length>0) {
	eval("thetarget = /([0-9]{" + (1) + ",})/g;");
  	var thefullStr = xtemp + " ";
  	var thecutStr = thefullStr.replace(thetarget,"");
  	if (thecutStr.length > 1) {
 		strError = strError + "The non-numeric values (" + thecutStr + ") are not allowed.      \n";
 	}
 	
 	if (strError.length > 0) {
  		alert(strError);
		eval("document.form1." + tempField+ ".focus()"); 
  		eval("document.form1." + tempField + ".select()"); 
		return true;
	} else {
		return true;
	}
	}
}



// (ON BLUR) CHECK PASSWORDS (new)
function passwordCheck(tempField, minlength) {
  	var strError = '';
  	xtemp = eval("document.form1."+tempField+".value"); 

  	if (minlength == null) { var minlength = 0; }

  	if ((xtemp.length < minlength) && (xtemp.length>0)) { 
		strError = "Passwords must be at least " + minlength + " characters!    \n"; 
  	}

	var docompare=0;
	var p1=eval("document.form1.PASSWORD.value");
	var p2=eval("document.form1.PASSWORD2.value");

	if (p1.length>0) { docompare=docompare+1; }
	
	if (p2.length>0) { docompare=docompare+1; }

	
	if (docompare>1){
		if (p1!=p2) {
	 	   strError = strError + "Passwords not matched.      \n";
		}
	}

 	if (strError.length > 0) {
  		alert(strError);
		document.form1.PASSWORD.value="";
		document.form1.PASSWORD2.value="";
		eval("document.form1.PASSWORD.focus()"); 
  		eval("document.form1.PASSWORD.select()"); 
		return true;
	} else {
		return true;
	}


}



// (ON BLUR) VERIFY DATE
function checkDate(objName) {
var datefield = objName;

	if (objName.value.length>0) {
		if (objName.value.length<6) {
			datefield.value='';
			datefield.select();
			alert("That date is invalid.  Please try again.");
			datefield.focus();
			return false;
		}	
	}
	
	//--- LONGHAND DATE VARIANT FIX ---
	var tmpDateStr = objName.value.toUpperCase();
	tmpDateStr = tmpDateStr.replace("JANUARY ","JAN ");
	tmpDateStr = tmpDateStr.replace("FEBRUARY ","FEB ");
	tmpDateStr = tmpDateStr.replace("MARCH ","MAR ");
	tmpDateStr = tmpDateStr.replace("APRIL ","APR ");
	tmpDateStr = tmpDateStr.replace("JUNE ","JUN ");
	tmpDateStr = tmpDateStr.replace("JULY ","JUL ");
	tmpDateStr = tmpDateStr.replace("AUGUST ","AUG ");
	tmpDateStr = tmpDateStr.replace("SEPTEMBER ","SEP ");
	tmpDateStr = tmpDateStr.replace("SEPT ","SEP ");
	tmpDateStr = tmpDateStr.replace("OCTOBER ","OCT ");
	tmpDateStr = tmpDateStr.replace("NOVEMBER ","NOV ");
	tmpDateStr = tmpDateStr.replace("DECEMBER ","DEC ");
	objName.value = tmpDateStr;
	
	if (chkdate(objName) == false) {
		datefield.value='';
		datefield.select();
		alert("That date is invalid.  Please try again.");
		datefield.focus();
		return false;
	}else{
		return true;
   	}
}


function chkdate(objName) {
var strDatestyle = "US"; //United States date style
//var strDatestyle = "EU";  //European date style

var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
strDate = datefield.value;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
}
if (strYear.length == 2) {
   var testYr=parseInt(strYear);
   if (testYr>20) {
	strYear = '19' + strYear;
   } else {
	strYear = '20' + strYear;
   }
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDatestyle == "US") {
  if (intday<10) {
	datefield.value = strMonthArray[intMonth-1] + " 0" + intday+" " + strYear;
  }else{
	datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
  }
}
else {
datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
function doDateCheck(from, to) {
if (Date.parse(from.value) <= Date.parse(to.value)) {
alert("The dates are valid.");
}
else {
if (from.value == "" || to.value == "") 
alert("Both dates must be entered.");
else 
alert("To date must occur after the from date.");
   }
}






// (ON BLUR) UPPER-CASE AND CLEANSER
function cleanUp(thisOne, JustLetters) {
	isNow = eval("document.form1." + thisOne + ".value.toUpperCase()"); 
   	eval("form1." + thisOne +".value='" + isNow + "';");
	var a_valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZ- ";
	var a_msg = "Only Letters are accepted";
	var b_valid = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-/.,# ";
	var b_msg = "Only Letters and Numbers are accepted";

	if (JustLetters == true) {
		var valid = a_valid
		var msg = a_msg
	} else {
		var valid = b_valid
		var msg = b_msg
	}	

	if (isNow.length>0) {
		var ok = "yes";
		var temp;
	
		for (var i=0; i<isNow.length; i++) {
			temp = "" + isNow.substring(i, i+1);
			if (valid.indexOf(temp) == "-1") {var ok = "no";}
		}
		if (ok == "no") {
			alert("Invalid entry!   \n" + msg + "           \n");
  			eval("document.form1." + thisOne + ".focus()"); 
  			eval("document.form1." + thisOne + ".select()"); 
		} 
		if (ok != "no") {
			return true;
		}
	}		
}





// (ON-BLUR) NUMBER VALIDATOR
function isNumeric(tempField, minlength) {
   NextPlace=tempField
  var strError = ''
  if (minlength == null) {var minlength = 0;}
	xtemp = eval("document.form1." + tempField+ ".value"); 
   if (minlength > 0) {
       if (xtemp.length < minlength) {
          strError = "Field too short!    \n";
 		}
 	}

	/// only interrogate if there is a value ///
	if (xtemp.length>0) {
	eval("thetarget = /([0-9]{" + (1) + ",})/g;");
  	var thefullStr = xtemp + " ";
  	var thecutStr = thefullStr.replace(thetarget,"");
  	if (thecutStr.length > 1) {
 		strError = strError + "non-numeric values (" + thecutStr + ") are not allowed.      \n";
 	}
 	
 	if (strError.length > 0) {
  		alert(strError);
		eval("document.form1." + tempField+ ".focus()"); 
  		eval("document.form1." + tempField + ".select()"); 
		return true;
	} else {
		return true;
	}
	}
}










// (ON-BLUR) E-MAIL VALIDATOR - NEW 2004 ****
function emailCheck (tempField) {
var emailStr = eval("document.form1." + tempField+ ".value"); 

if (emailStr.length > 0) {

var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
var matchArray=emailStr.match(emailPat)

if (matchArray==null) {
	alert("Email address seems incorrect (check @ and .'s)")
	eval("document.form1." + tempField+ ".focus()"); 
	eval("document.form1." + tempField + ".select()"); 
	return false
}

var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
   alert("The username doesn't seem to be valid.")
	eval("document.form1." + tempField+ ".focus()"); 
	eval("document.form1." + tempField + ".select()"); 
   return false
}

var IPArray=domain.match(ipDomainPat)

if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
		eval("document.form1." + tempField+ ".focus()"); 
  		eval("document.form1." + tempField + ".select()"); 
		return false
	    }
    }
    return true
}

var domainArray=domain.match(domainPat)

if (domainArray==null) {
	alert("The domain name doesn't seem to be valid.")
	eval("document.form1." + tempField+ ".focus()"); 
	eval("document.form1." + tempField + ".select()"); 
    return false
}

var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;

if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>4) {
   alert("The address must end in a three or four-letter domain, or two letter country.")
	eval("document.form1." + tempField+ ".focus()"); 
	eval("document.form1." + tempField + ".select()"); 
   return false
}

if (len<2) {
   var errStr="This address is missing a hostname!"
   alert(errStr)
	eval("document.form1." + tempField+ ".focus()"); 
	eval("document.form1." + tempField + ".select()"); 
   return false
}

return true;
}
}




// (ON-BLUR) NUMBER RANGE VALIDATOR
function isRange(tempField, minval, maxval) {
   NextPlace=tempField
  var strError = ''
  if (minval == null) {var minval = 0;}
  if (maxval == null) {var maxval = 0;}
	var xtemp = eval("document.form1." + tempField+ ".value"); 
	var strtemp='';
	if (xtemp.length>0) {
		var ntemp = parseInt(xtemp);
		var c=100;
		var padtemp=c+ntemp;
		var stemp = padtemp + '';
		strtemp = stemp.substring(1,3);
	}

   if (minval > 0) {
       if (xtemp < minval) {
          strError = "value too low!    \n";
 		}
 	}

   if (maxval > 0) {
       if (xtemp > maxval) {
          strError = "value too high!    \n";
 		}
 	}

 	
	/// only interrogate if there is a value ///
	if (xtemp.length>0) {
	eval("thetarget = /([0-9]{" + (1) + ",})/g;");
  	var thefullStr = xtemp + " ";
  	var thecutStr = thefullStr.replace(thetarget,"");
  	if (thecutStr.length > 1) {
 		strError = strError + "non-numeric values (" + thecutStr + ") are not allowed.      \n";
 	}
 	
 	if (strError.length > 0) {
  		alert(strError);
		eval("document.form1." + tempField+ ".focus()"); 
  		eval("document.form1." + tempField + ".select()"); 
		return true;
	} else {
		eval("document.form1." + tempField+ ".value='" + strtemp + "';"); 
		return true;
	}
	}
}










// CC_CHECK.JS version 1.0 
// *********************************************
// *  Copyright 2005 - Quantum Mechanic, Inc.  *
// *  All Rights Reserved                      *
// *********************************************

var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

function CheckCardNumber() {

if (document.form1.CardNumber.value.length == 0) {
alert("Please enter a Card Number.");
document.form1.CardNumber.focus();
return false;
}

var tmpyear = document.form1.ExpYear.options[document.form1.ExpYear.selectedIndex].value;
var tmpmonth = document.form1.ExpMon.options[document.form1.ExpMon.selectedIndex].value;


if (tmpyear > 96)
tmpyear = "19" + document.form1.ExpYear.value;
else if (document.form1.ExpYear.value < 21)
tmpyear = "20" + document.form1.ExpYear.value;
else {
alert("The Expiration Year is not valid.");
return false;
}

if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
alert("This card has already expired.");
return false;
}

card = document.form1.CardType.options[document.form1.CardType.selectedIndex].value;
var retval = eval(card + ".checkCardNumber(\"" + document.form1.CardNumber.value +
"\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";
if (retval) {

// comment this out if used on an order form
return true;


} else {
for (var n = 0; n < Cards.size; n++) {
if (Cards[n].checkCardNumber(document.form1.CardNumber.value, tmpyear, tmpmonth)) {
cardname = Cards[n].getCardType();
break;
   }
}
if (cardname.length > 0) {
alert("This looks like a " + cardname + " number, not a " + card + " number.");
return false;

}
else {
alert("This card number is not valid.");
return false;

      }
   }
}
/*************************************************************************\
Object CardType([String cardtype, String rules, String len, int year, 
                                        int month])
cardtype    : type of card, eg: MasterCard, Visa, etc.
rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
len         : valid length of cardnumber, eg: "16,19", "13,16".
year        : year of expiry date.
month       : month of expiry date.
eg:
var VisaCard = new CardType("Visa", "4", "16");
var AmExCard = new CardType("AmEx", "34,37", "15");
\*************************************************************************/
function CardType() {
var n;
var argv = CardType.arguments;
var argc = CardType.arguments.length;

this.objname = "object CardType";

var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

this.setCardNumber = setCardNumber;  // set CardNumber method.
this.setCardType = setCardType;  // setCardType method.
this.setLen = setLen;  // setLen method.
this.setRules = setRules;  // setRules method.
this.setExpiryDate = setExpiryDate;  // setExpiryDate method.

this.setCardType(tmpcardtype);
this.setLen(tmplen);
this.setRules(tmprules);
if (argc > 4)
this.setExpiryDate(argv[3], argv[4]);

this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
this.getCardType = getCardType;  // getCardType method.
this.isCardNumber = isCardNumber;  // isCardNumber method.
this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
this.luhnCheck = luhnCheck;// luhnCheck method.
return this;
}

/*************************************************************************\
boolean checkCardNumber([String cardnumber, int year, int month])
return true if cardnumber pass the luhncheck and the expiry date is
valid, else return false.
\*************************************************************************/
function checkCardNumber() {
var argv = checkCardNumber.arguments;
var argc = checkCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
var year = (argc > 1) ? argv[1] : this.year;
var month = (argc > 2) ? argv[2] : this.month;

this.setCardNumber(cardnumber);
this.setExpiryDate(year, month);

if (!this.isCardNumber())
return false;
if (!this.isExpiryDate())
return false;

return true;
}
/*************************************************************************\
String getCardType()
return the cardtype.
\*************************************************************************/
function getCardType() {
return this.cardtype;
}
/*************************************************************************\
String getExpiryDate()
return this.month + "/" + this.year;
\*************************************************************************/
function getExpiryDate() {
return this.month + "/" + this.year;
}
/*************************************************************************\
boolean isCardNumber([String cardnumber])
return true if cardnumber pass the luhncheck and the rules, else return
false.
\*************************************************************************/
function isCardNumber() {
var argv = isCardNumber.arguments;
var argc = isCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
if (!this.luhnCheck())
return false;

for (var n = 0; n < this.len.size; n++)
if (cardnumber.toString().length == this.len[n]) {
for (var m = 0; m < this.rules.size; m++) {
var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
if (headdigit == this.rules[m])
return true;
}
return false;
}
return false;
}

/*************************************************************************\
boolean isExpiryDate([int year, int month])
return true if the date is a valid expiry date,
else return false.
\*************************************************************************/
function isExpiryDate() {
var argv = isExpiryDate.arguments;
var argc = isExpiryDate.arguments.length;

year = argc > 0 ? argv[0] : this.year;
month = argc > 1 ? argv[1] : this.month;

if (!isNum(year+""))
return false;
if (!isNum(month+""))
return false;
today = new Date();
expiry = new Date(year, month);
if (today.getTime() > expiry.getTime())
return false;
else
return true;
}

/*************************************************************************\
boolean isNum(String argvalue)
return true if argvalue contains only numeric characters,
else return false.
\*************************************************************************/
function isNum(argvalue) {
argvalue = argvalue.toString();

if (argvalue.length == 0)
return false;

for (var n = 0; n < argvalue.length; n++)
if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
return false;

return true;
}

/*************************************************************************\
boolean luhnCheck([String CardNumber])
return true if CardNumber pass the luhn check else return false.
Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
\*************************************************************************/
function luhnCheck() {
var argv = luhnCheck.arguments;
var argc = luhnCheck.arguments.length;

var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

if (! isNum(CardNumber)) {
return false;
  }

var no_digit = CardNumber.length;
var oddoeven = no_digit & 1;
var sum = 0;

for (var count = 0; count < no_digit; count++) {
var digit = parseInt(CardNumber.charAt(count));
if (!((count & 1) ^ oddoeven)) {
digit *= 2;
if (digit > 9)
digit -= 9;
}
sum += digit;
}
if (sum % 10 == 0)
return true;
else
return false;
}

/*************************************************************************\
ArrayObject makeArray(int size)
return the array object in the size specified.
\*************************************************************************/
function makeArray(size) {
this.size = size;
return this;
}

/*************************************************************************\
CardType setCardNumber(cardnumber)
return the CardType object.
\*************************************************************************/
function setCardNumber(cardnumber) {
this.cardnumber = cardnumber;
return this;
}

/*************************************************************************\
CardType setCardType(cardtype)
return the CardType object.
\*************************************************************************/
function setCardType(cardtype) {
this.cardtype = cardtype;
return this;
}

/*************************************************************************\
CardType setExpiryDate(year, month)
return the CardType object.
\*************************************************************************/
function setExpiryDate(year, month) {
this.year = year;
this.month = month;
return this;
}

/*************************************************************************\
CardType setLen(len)
return the CardType object.
\*************************************************************************/
function setLen(len) {
// Create the len array.
if (len.length == 0 || len == null)
len = "13,14,15,16,19";

var tmplen = len;
n = 1;
while (tmplen.indexOf(",") != -1) {
tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
n++;
}
this.len = new makeArray(n);
n = 0;
while (len.indexOf(",") != -1) {
var tmpstr = len.substring(0, len.indexOf(","));
this.len[n] = tmpstr;
len = len.substring(len.indexOf(",") + 1, len.length);
n++;
}
this.len[n] = len;
return this;
}

/*************************************************************************\
CardType setRules()
return the CardType object.
\*************************************************************************/
function setRules(rules) {
// Create the rules array.
if (rules.length == 0 || rules == null)
rules = "0,1,2,3,4,5,6,7,8,9";
  
var tmprules = rules;
n = 1;
while (tmprules.indexOf(",") != -1) {
tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
n++;
}
this.rules = new makeArray(n);
n = 0;
while (rules.indexOf(",") != -1) {
var tmpstr = rules.substring(0, rules.indexOf(","));
this.rules[n] = tmpstr;
rules = rules.substring(rules.indexOf(",") + 1, rules.length);
n++;
}
this.rules[n] = rules;
return this;
}





