function YT_CheckForm(form) {
        var i,el,name,val,checking,check,descr,empty_fields='',errors='',first,range=false;
        var pas_minlen = 4;
        if (form.check__fields) {
                checking = form.check__fields.value.split(',');
                for (i=0; i<(checking.length); i+=2) {
                        name = checking[i];
                        check = checking[i+1];
                        el = getElement(form,name);
                        if (el) {
                                val = el.value;
                        if (el.title) {descr = el.title}
                        else {descr = el.name}
                        if ((check.charAt(0) == '#') && (val == '')) {
                                empty_fields += descr + ', ';
                        }
                        if (val != '') {
                            if (check.indexOf('Check')!=-1) {
                                            if (!el.checked) {
                                                    alert(val);
                                                    return false;
                                            }
                            }
                            if (check.indexOf('Link')!=-1) {
                                            if (!val.match(/(http:\/\/[a-z]|^[a-z])([a-z_0-9\_\-]+\.{1}){1,}[a-z_0-9\_]{2,3}(\/|((\/{1}[a-z_0-9\_\.]+\/{0,1}){0,}))$/i)) {
                                                    errors += '* The value of field "'+descr+'" contains invalid URL.\n';
                                            }
                            }
                            if (check.indexOf('Email')!=-1) {
                                            if (!val.match(/^[\s,'-_.a-z_0-9\.]+@([\s,'-_.a-z_0-9]+\.)+[a-z]{2,3}$/i)) {
                                                    errors += '* Field "'+descr+'" must contain an valid e-mail address.\n';
                                            }
                            }
                            if (check.indexOf('ConfirmEmail')!=-1) {
                                        email2 = getElement(form,"re_" + name);
                                        if (val != email2.value) {
                                                errors += "* "+descr+" addresses you've entered does not match.\n";
                                        }
                            }
                            if (check.indexOf('Pass')!=-1) {
                                                pass2 = getElement(form,"re_" + name);
                                        if (val.length < pas_minlen) {
                                                errors += '* '+descr+' is too short. It must consist of minimum '+pas_minlen+' symbols.\n';
                                        } else {
                                                if (val != pass2.value) {
                                                        errors += "* Passwords you have entered does not match.\n";
                                                }
                                        }
                            }
                            if (check.indexOf('Number')!=-1) {
                                       num = parseInt(val);
                                    if (isNaN(num)) {
                                            errors+='* Field "'+descr+'" must contain a integer number.\n';
                                    } else {
                                            el.value = num;
                                            range = true;
                                                }
                            }
			    if (check.indexOf('CC')!=-1){
                            	if (!Mod10(val)) {
                                	errors += '* You did not enter a valid credit card number.\n';
				}
			    }
                            if (check.indexOf('Float')!=-1) {
                                    num = parseFloat(val);
                                    if (isNaN(num)) {
                                            errors+='* Field "'+descr+'" must contain a floating point number.\n';
                                    } else {
                                            range = true;
                                                }
                            }
                                        if (range&&((p1=check.indexOf('[')) != -1)) {
                                                p2=check.indexOf(':');
                                                p3=check.indexOf(']');
                                                min=check.substring(p1+1,p2);
                                                max=check.substring(p2+1,p3);
                                    if (num<min || num>max) errors+='* Field "'+descr+'" must contain a number between '+min+' and '+max+'.\n';
                                    range=false;
                                        }
                                }
                        }
                        if ((empty_fields||errors) && (!first)) {first = el}
                }
                if (form.Card_Number && ! Mod10(form.Card_Number.value)){
                	errors += "You have entered an invalid Credit Card Number. Please recheck.";
		} 
	}
    if (empty_fields) {
        empty_fields = empty_fields.substring(0,(empty_fields.length - 2));
        alert('Please complete required field(s):\n' + empty_fields + '.');
        GoToElement(first);
        return false;
    }
        if (errors) {
                alert('The following error(s) occurred:\n\n'+errors);
                GoToElement(first);
        }
        return (errors == '');
}


<!--
// Wirtten by David Leppek of Pay By Touch Merchant Services as a free easy method of validating a credit card
function Mod10(ccNumb) { //v2.0
var valid 	= "0123456789"
var len 	= ccNumb.length;
var bNum 	= true;
var iCCN 	= ccNumb;
var sCCN 	= ccNumb.toString();
var iCCN;
var iTotal 	= 0;
var bResult = false;
var digit;
var temp;
iCCN = sCCN.replace (/[^0-9]/g,'');	// strip spaces
    //alert(iCCN);
for (var j=0; j<len; j++) {
temp = "" + iCCN.substring(j, j+1);
if (valid.indexOf(temp) == "-1") bNum = false;
}
    iCCN = parseInt(iCCN);
	
if(len == 0){ /* nothing, field is blank */ 
	bResult = true;
}else{
	if(len >= 15){		//15 or 16 for Amex or V/MC
		for(var i=len;i>0;i--){
		digit = "digit" + i;
		//alert(digit);
		
			calc = parseInt(iCCN) % 10;	//right most digit
			calc = parseInt(calc);
			//alert(calc);
			iTotal += calc;		//parseInt(cardnum.charAt(count))i:\t" + calc.toString() + " x 2 = " + (calc *2) +" : " + calc2 + "\n";
			// commented out below which wrote NONALTERED digit to page for demo only.
			//document.form1.textfield.value += "" + i + ":\t" + calc.toString() + " x 1 = " + calc + "\n";
			
			i--;
		digit = "digit" + i;
		//alert(digit);
		
			iCCN = iCCN / 10; 	// subtracts right most digit from ccNum
			calc = parseInt(iCCN) % 10 ;	// step 1 double every other digit
			 //alert( iCCN + " " + calc);
			 calc2 = calc *2;
			
			switch(calc2){
				case 10: calc2 = 1; break;	//5*2=10 & 1+0 = 1
				case 12: calc2 = 3; break;	//6*2=12 & 1+2 = 3
				case 14: calc2 = 5; break;	//7*2=14 & 1+4 = 5
				case 16: calc2 = 7; break;	//8*2=16 & 1+6 = 7
				case 18: calc2 = 9; break;	//9*2=18 & 1+8 = 9
				default: calc2 = calc2; 		//4*2= 8 &   8 = 8  -same for all lower numbers
			}
			iCCN = iCCN / 10; 	// subtracts right most digit from ccNum
			iTotal += calc2;
			// commented out below which wrote MULTIPLIED digit to page for demo only
			//document.form1.textfield.value += "" + i +":\t" + calc.toString() + " x 2 = " + (calc *2) +" : " + calc2 + "\n";
		}
			// commeneted out SUM below for demo only
			//document.form1.textfield.value += "\t\tSum: " + iTotal + "\n";
		if ((iTotal%10)==0){
			//document.calculator.results.value = "Yes"; 
			bResult = true;
 		}else{
			//document.calculator.results.value = "No"; 
			bResult = false;
		}
	}
}
  return bResult;
}


function getElement(form,name) {
  var el;
  eval("if (form." + name + ") el = form." + name);
  return el;
}

function GoToElement(element) { 
  if (element && element.type && !element.type=="hidden") { 
    element.focus(); 
    if (element.type != 'select-one') element.select();
                //if (element.scrollIntoView) element.scrollIntoView(true);
        }
}
