	
	
	var pipe = /^\|+$/;
	var reEmail = /^.+\@.+\..+$/;
	var alphabet = /^[a-zA-Z|\s]+$/;
	var alphanumeric = /^[(0-9)|(a-zA-Z)|\s]+$/;
	var phoneFormat = /^\+?[0-9]+/;		
	var cvv = /^(1[012])|(0[1-9])\/\d{2}/;	
	
	function isPhone(tmpInput) {
		return phoneFormat.test(tmpInput);
	}	
	
	function hasPipe(tmpInput) {
		return pipe.test(tmpInput);
	}
	
	function isValidEmail(tmpInput) {		
       	return reEmail.test(tmpInput);
	}
	
	function isCVV(tmpInput) {
		return cvv.test(tmpInput);
	}
		
	function showDiv(divID) { //alert('show ' + divID);
		document.getElementById(divID).style.display = '';
	}  		
	
	function hideDiv(divID) { //alert('hide ' + divID);
		document.getElementById(divID).style.display = 'none';	
	}	
	
	function showOrHideDiv(objID,divID) {//alert(divID);
		if(document.getElementById(objID).checked) {
			showDiv(divID);
		} else {
			hideDiv(divID);
		}
	}			
	
	/*
	 * Alphabet, spaces are allowed
	 */    
    function isAlphabet(tmpInput) {   
		return alphabet.test(tmpInput);
    }	
	
	/*
	 * Alphanumric, spaces are allowed
	 */    
    function isAlphanumeric(tmpInput) {   
		return alphanumeric.test(alphanumeric);
    }			
	
	/*
	 * Use for postcode, phone number, CVV code
	 */
	function isNumber(tmpInput) {
		if(isNaN(tmpInput)) {
			return false;
		}
		return true;
	}
	
	/*
	 * LUHN Formula for validation of credit card numbers.
	 */
	function mod10( cardNumber ) {
	
		var ar = new Array( cardNumber.length );
		var i = 0,sum = 0;

    	for( i = 0; i < cardNumber.length; ++i ) {
    		ar[i] = parseInt(cardNumber.charAt(i));
    	}
    	
    	for( i = ar.length -2; i >= 0; i-=2 ) {	// you have to start from the right, and work back.
    		ar[i] *= 2;							// every second digit starting with the right most (check digit)
    		if( ar[i] > 9 ) ar[i]-=9;			// will be doubled, and summed with the skipped digits.
    	}										// if the double digit is > 9, ADD those individual digits together

       	for( i = 0; i < ar.length; ++i ) {
       		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
       	}
       	
       	return (((sum%10)==0)?true:false);
    }
		
    function validateCard(cardNumber,cardType) {

      	var retVal = true;

		//most of these checks are self explanitory
      	if( cardNumber.length == 0 ) {						
       		alert("Please enter a valid card number.");
       		retVal =  false;
       	}
    
    	//make sure the number is all digits.. (by design)
       	for( var i = 0; i < cardNumber.length; ++i ) {
       		var c = cardNumber.charAt(i);

				//Do not use spaces or hyphens
           		if( c < '0' || c > '9' ) {
           			alert("Please enter a valid card number. Use only digits.");
           			retVal =  false;
           			break;
           		}
       	}
  
		//perform card specific length and prefix tests
       	var length = cardNumber.length;

        switch( cardType ) {
        
        	case 'ae':        	
        	if( length != 15 ) {
        		alert("Please enter a valid American Express Card number.");
        		retVal = false;
           		break;
           	}
			
			var prefix = parseInt( cardNumber.substring(0,2));

			if( prefix != 34 && prefix != 37 ) {
				alert("Please enter a valid American Express Card number.");
				retVal = false;
			}
			break;

			case 'di':			
			if( length != 16 ) {
				alert("Please enter a valid Discover Card number.");
				retVal =  false;
				break;
			}
               			
			var prefix = parseInt( cardNumber.substring(0,4));

			if( prefix != 6011 ) {
				alert("Please enter a valid Discover Card number.");
					retVal =  false;
			}
			break;
                        
			case 'CA':
			if( length != 16 ) {
				alert("Please enter a valid MasterCard number.");
				retVal =  false;
				break;
			}

			var prefix = parseInt( cardNumber.substring(0,2));

			if( prefix < 51 || prefix > 55) {
				alert("Please enter a valid MasterCard Card number.");
				retVal =  false;
			}
			break;
                                        		
            case 'VI':                    
			if( length != 16 && length != 13 ) {
				alert("Please enter a valid Visa Card number.");
				retVal =  false;
				break;
			}
					
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix != 4 ) {
				alert("Please enter a valid Visa Card number.");
				retVal =  false;;
			}
			break;
		}

		if(retVal){
			//run the check digit algorithm
			if( !mod10( cardNumber ) ) {
				alert("Please enter a valid credit card number.");
	            retVal =  false;
			}
		}
		
		//at this point card has not been proven to be invalid
		return retVal; 
	}
	
	function getInputArray(tmpObj,type,refId) {
	
		var temp = tmpObj.getElementsByTagName('INPUT');
	
		var inputObj = new Array();
		var inputObjIndex = 0;
					
		for(var i=0;i<temp.length;i++) {
		
			if(temp[i].getAttribute('TYPE') == type.toLowerCase() 
				&& temp[i].getAttribute('ID') == refId ) {
				
				inputObj[inputObjIndex] = temp[i];
				inputObjIndex++;
			}
		}	
		
		return inputObj;
	}
	
	function isMinimumCheckFor(checBoxArray) {
	
		var isMininumChecked = false;
		var size = checBoxArray.length;
		for(var i=0;i<size;i++) {
			if(checBoxArray[i].checked) {
				isMininumChecked = true;
				break;
			}
		}
			
		return isMininumChecked;
	}		
	
	function getCheckedValue(checBoxArray) {
	
		var checkedValue = '0';
		var size = checBoxArray.length;
		for(var i=0;i<size;i++) {
			if(checBoxArray[i].checked) {
				checkedValue = checBoxArray[i].value;
				break;
			}
		}	
		
		return checkedValue;	
	}	