/**************************************************************************
*                                                                         *
*   This application is developed and owned by Thomas Idea Co.,Ltd.       *
*   DAIMLERCHRYSLER (THAILAND) LTD. is granted  license from Thomas Idea  *
*   for its internal use only. Usage on any parts of the program without  *
*   a permission from Thomas Idea Co.,Ltd. is illegal and prohibited.     *
*   This application is protected by the International Right Law.         *
*                       -  All rights reserved.                           *
*                                                                         *
**************************************************************************/
var fieldDate;
var specialCharList = "!@#$%^&*()+={}[]\\/\"><'?:;ß~,.|";

/*LTrim - Trims whitespace from left of a string*/
function LTrim(str)
{	var whitespace = new String(" \t\n\r");
	var s = new String(str);	
	if (whitespace.indexOf(s.charAt(0)) != -1)
 	{	
		var j=0, i = s.length;
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
		{		
			j++;
		}
		s = s.substring(j, i);
	}	return s;
}

/*RTrim - Trims whitespace from right of a string*/
function RTrim(str)
{	
	var whitespace = new String(" \t\n\r");	
	var s = new String(str);
	if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
 	{		
		var i = s.length - 1;       // Get length of string		
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)		
		i--;		
		s = s.substring(0, i+1);	
	}	
	return s;
}

function openRsrvWindow(theURL,winName) { 
	window.open(theURL,winName,'height='+screen.height+',width='+screen.width+',left=0,top=0,resizable=yes,scrollbars=yes,menubar=no');
}

function genCalendar(field) {
	
	fieldDate = field
	win = window.open("../js/clndr.htm", "Calendar", "width=180, height=180")
	if ( win.opener == null )
		win.opener = self
	win.focus()
}

function genCalendar2(field) {
	//alert(fieldDate);
	fieldDate = field
	win = window.open("../js/clndrfrnt.htm", "Calendar", "width=180, height=180")
	//win = window.open("../js/clndrfrnt.htm", "Calendar", "width=300, height=480,scrollbars=yes,resizable=yes,status=yes")
	if ( win.opener == null )
		win.opener = self
	win.focus()
}
function getLongDateFormat(dateValue) { //dd/mm/yyyy to Mon dd, yyyy
	var longMonthName = new Array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	dd = eval(dateValue.substring(0,dateValue.indexOf('/')));
	mm = eval(dateValue.substring(dateValue.indexOf('/') + 1,dateValue.lastIndexOf('/')));
	yy = eval(dateValue.substring(dateValue.lastIndexOf('/') + 1,dateValue.length));
	longDate = longMonthName[mm] + " " + dd + ", " + yy;
	longDate = new Date(longDate);
	return longDate
}

function replaceAll(strValue, oldStr, newStr) {
	var index;
	var i = 0, start = 0, end = 0;
	tempStr = "";
	while (strValue.indexOf(oldStr, start) != -1) {
		end = strValue.indexOf(oldStr, start);
		tempStr = tempStr + strValue.substring(start, end) + newStr;
		start = end + oldStr.length;
	}
	tempStr = tempStr + strValue.substring(start, strValue.length);
	return tempStr;
}

function getSelectValue(drpdwn) {
	str = drpdwn.options[drpdwn.selectedIndex].value;
	return str;
}

function getRadioValue(radioObj) {
	var i;
	for(i=0; i<radioObj.length; i++) {
		if(radioObj[i].checked == true)
			return radioObj[i].value;
	}
	return "";
}

function getFileType(fileSource) {
	return fileSource.substring(fileSource.lastIndexOf('.') + 1,fileSource.length);
}

function getFileName(fileSource) {
	return fileSource.substring(fileSource.lastIndexOf('\\') + 1,fileSource.lastIndexOf('.'));
}

function getCurrentDate() {
	tdy = new Date();
	tdyDay = tdy.getDate();
	tdyMonth = tdy.getMonth() + 1;
	tdyYear = tdy.getYear();
	if (tdyDay < 10)
		tdyDay = "0" + tdyDay;
	if (tdyMonth < 10)
		tdyMonth = "0" + tdyMonth;
	return tdyDay + "/" + tdyMonth + "/" + tdyYear;
}

function markSelectValue(drpdwn, data) {	
	for (i=0; i<drpdwn.length; i++) {
		if (drpdwn.options[i].value == data)
			drpdwn.selectedIndex = i;
	}
}

function markRadioValue(radioObj, data) {
	for (i=0; i<radioObj.length; i++) {
		if (data == radioObj[i].value)
			radioObj[i].checked = true;
	}
}

function showMessage(txt, obj) {
	alert(txt);
	obj.focus();
	return false;
}


function openWin(pages, winName, detail) {
	w = open (pages, winName, detail);
	if (w.opener == null)
		w.opener = self;
	w.focus();
}

function openerReload(formStr) {
	openerForm = eval("opener.document." + formStr);
	if (!isOpenerClose() && openerForm != null)
		openerForm.submit();
}

function isOpenerClose() {
	if (opener.closed)
		return true;
	else
		return false;
}

function isElement(formStr, elementStr) {
	if (!isOpenerClose()) {
		openerForm = eval("opener.document." + formStr);
		openerObject = eval("opener.document." + formStr + "." + elementStr);
		if ((openerForm == null) && (openerObject == null))
			return false;
		else
			return true;
	} else
		return false;
}

function isEmpty(str) {
	if (str == null || str == "")
		return true;
	else
		return false;
}

function isSpace(str) {
	var index;
	for (index = 0; index < str.length; index++) {
		if(str.charAt(index) != " ")
			return false;
	}
	return true;
}

function isNumber(numStr) {
	field = "", tmp = "";
	/*for (i = 0; i < str.length; i++)
	{
		tmp = str.substring(i, i+1);
		field = field + parseFloat(tmp);
	}
	if (field == str)
		return true;
	else
		return false;*/
	
	allowNumber = "0123456789.";
	for (i = 0; i < numStr.length; i++) {
		if (allowNumber.indexOf(numStr.charAt(i)) < 0)
			return false;
	}
	return true;
}

function isDouble(numStr) {
	field = "", tmp = "";	
	allowDouble = "0123456789.";

	if (numStr.indexOf(".") != numStr.lastIndexOf(".")) {
		return false;
	}
	
	for (i = 0; i < numStr.length; i++) {
		if (allowDouble.indexOf(numStr.charAt(i)) < 0)
			return false;
	}
	return true;
}

function isEmail(str) {
	notAllowEmail = "#$%&*()=+/!{}[]?\\\"':;,<>^|";
	
	for (i = 0; i < str.length; i++) {
		if (notAllowEmail.indexOf(str.charAt(i)) >= 0)
			return false;
	}
	
	emailLength = str.length;
	posAt = str.indexOf('@');
	posAt1 = str.lastIndexOf('@');
	posAt2 = str.indexOf('@.');
	posAt3 = str.indexOf('.@');
	posDotFirst = str.indexOf('.');
	posDotDouble = str.indexOf('..');
	posDotLast = str.lastIndexOf('.');
	posSpace = str.lastIndexOf(' ');
	if (posAt <= 0 || posDotFirst <= 0 || posAt == emailLength - 1 || posDotLast - posAt < 2 || posDotLast == emailLength - 1 || posAt != posAt1 || posSpace > 0 || posAt2 >= 0 || posAt3 >= 0 || posDotDouble >=0 )
		return false;
	else
		return true;
}

function isSelectDropDown(drpdwn) {
	str = drpdwn.options[drpdwn.selectedIndex].value;
	if ( str == null || str == "" || str.toUpperCase() == "-NONE-" || str=="ALL" || str=="DASH")
		return false;
	else
		return true;
}

function isClickCheckBox(frm, start, num, skip) {
	var result, isChecked;
	end = num * skip;
	for (i = start; i < end; i+=skip) {
		if (frm.elements[i].checked) {
			isChecked = true;
			i = end++;
		}
		else
		isChecked = false;
	}
	return isChecked;
}

function isClickCheckBox1(frm, num) {
	var result, isChecked;
	for(i = 0; i < num; i++){//chkExt
	if(frm.elements[i].name.toUpperCase() != "CHECKALL" && !frm.elements[i].disabled&&frm.elements[i].type.toUpperCase() == "CHECKBOX")
	{
			//alert(frm.elements[i].name)
			if (frm.elements[i].checked) {
				isChecked = true;
				break;
			}
			else
			isChecked = false;
	}//if
	}//for
	return isChecked;
}

function isClickRadio(radioObj) {
	var i;
	for(i = 0; i < radioObj.length; i++) {
		if (radioObj[i].checked == true)
			return true;
	}
	return false;
}

var imageFile = "Please select a correct file (gif, jpg, png, jpeg).";
function isImage(str) {
	ext = getFileType(str);
	if (ext != "gif" && ext != "jpg" && ext != "png" && ext != "jpeg") {
		return false
	}
	else
		return true;
}

function isImage2(str) {
	ext = getFileType(str);
	if (ext != "gif" && ext != "jpg" && ext != "jpeg") {
		return false
	}
	else
		return true;
}


var allowFile = "Please select a correct file (gif, jpg, png, jpeg, pdf, doc, xls, ppt).";
function isAllowFile(str) {
	ext = getFileType(str);
	if (ext != "gif" && ext != "jpg" && ext != "png" && ext != "jpeg" && ext != "pdf" && ext != "doc" && ext != "xls" && ext != "ppt") {
		return false
	}
	else
		return true;
}

var allowFilePdf = "Please select a correct file (pdf).";
function isAllowFilePdf(str) {
	ext = getFileType(str);
	if (ext != "pdf") {
		return false
	}
	else
		return true;
}

function isCorrectDuration(fromField, toField) {
	startDate = getLongDateFormat(fromField);
	endDate = getLongDateFormat(toField);
	if (endDate < startDate)
		return false;
	else
		return true;
}

function isCorrectDate(fromDateObj, toDateObj, strValue) {
	result = true;
	strValue1 = strValue.substring(0, 1).toUpperCase() + strValue.substring(1, strValue.length);
	if (isSpace(fromDateObj.value) && !isSpace(toDateObj.value))
		result = showMessage("Please input " + strValue + " (Start).", fromDateObj);
	else if (!isSpace(fromDateObj.value) && isSpace(toDateObj.value))
		result = showMessage("Please input " + strValue + " (End).", toDateObj);
	else if (!isSpace(fromDateObj.value) && !isSpace(toDateObj.value)) {
		if (!isCorrectDuration(fromDateObj.value, toDateObj.value))
			return showMessage(strValue1 + " (Start) should be later than " + strValue + " (End).", toDateObj);
	}
	return result;
}

function isCorrectDate2(fromDateObj, toDateObj, strValue,DateObj) {
	result = true;
	strValue1 = strValue.substring(0, 1).toUpperCase() + strValue.substring(1, strValue.length);
	if (isSpace(fromDateObj.value) && !isSpace(toDateObj.value))
		result = showMessage("Please input " + strValue + " (Check in).", fromDateObj);
	else if (!isSpace(fromDateObj.value) && isSpace(toDateObj.value))
		result = showMessage("Please input " + strValue + " (Check out).", toDateObj);
	else if (!isSpace(fromDateObj.value) && !isSpace(toDateObj.value)) {
		if (!isCorrectDuration(fromDateObj.value, toDateObj.value))
			return showMessage(strValue1 + " (Check in) should be later than " + strValue + " (Check out).", DateObj);
	}
	return result;
}

function hidestatus() {
	window.status = " ";
	return true;
}
if (document.layers)
	document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);

document.onmouseover = hidestatus;
document.onmouseout = hidestatus;

function selectAllCheckbox(frm) {
	for(i = 0; i < frm.length; i++) {
		if (frm.elements[i].name.toUpperCase() != "CHECKALL" && !frm.elements[i].disabled) {
				frm.elements[i].checked = frm.checkAll.checked;
		}
	}
}

function checkCheckAll(frm,me){
	var check;
	if (me.checked == false){
		frm.checkAll.checked = false;
	}
	else{
		for(i = 0; i < frm.length; i++){
		if(frm.elements[i].name.toUpperCase() != "CHECKALL" && !frm.elements[i].disabled&&frm.elements[i].type.toUpperCase() == "CHECKBOX")
			if(frm.elements[i].checked == true){
				check=true;
			}
			else{
				check=false;
				break;
			}
		}
		if(check){
			frm.checkAll.checked = true;
		}
	}
}

function goToPage(colIndex, currentPage) {
	document.frmSearch.elements[colIndex].value = currentPage;
	document.frmSearch.submit();
}

function goToPage2(colIndex, currentPage, id) {
	document.frmSearch.elements[colIndex].value = currentPage;
	frmSearch.hidID.value = id;
	document.frmSearch.submit();
}

function goToAction(page) {
	document.frmAction.action = page;
	document.frmAction.submit();
}

function refreshDropDown(firstDrop, secondDrop, arr, remain) {
	var dataID = getSelectValue(firstDrop);
	secondDrop.length = remain;
	var indx = secondDrop.length;
	var count = arr[0].length;
	if (isSelectDropDown(firstDrop)) {
		for (var i=0; i<=count - 1; i++) {
			if (arr[0][i] == dataID) {
				secondDrop.options[indx] = new Option(arr[2][i], arr[1][i], false, false)
				indx++;
			}
		}
	}
	secondDrop.selectedIndex = 0;
}

n = (document.layers) ? 1 : 0; 
ie = (document.all) ? 1 : 0; 
var check = false; 

function checkPN() { 
        check = false; 
        document.onkeypress = keyPress; 
        document.onkeydown = keyDown; 
        document.onkeyup = keyUp; 
        event.keyCode=0; 
        event.returnValue=false; 
        event.cancelBubble=true; 
        if (n) { 
                document.captureEvents(Event.keydown | Event.keyup | Event.keypress); 
        } 
//        event.keyCode=0; 
//        event.returnValue=false; 
//        event.cancelBubble=true; 
} 

function disableRightClick(e) 
{ 
  var message = "Right click disabled"; 
  
  if(!document.rightClickDisabled) // initialize 
  { 
    if(document.layers) 
    { 
      document.captureEvents(Event.MOUSEDOWN); 
      document.onmousedown = disableRightClick; 
    } 
    else document.oncontextmenu = disableRightClick; 
    return document.rightClickDisabled = true; 
  } 
  if(document.layers || (document.getElementById && !document.all)) 
  { 
    if (e.which==2||e.which==3) 
    { 
//      alert(message); 
      return false; 
    } 
  } 
  else 
  { 
//    alert(message); 
    return false; 
  } 
} 

function keyPress(e) { 
        if (n) { 
                var nKey = e.which; 
                var ieKey = 0; 
        } 
        if (ie) { 
                var ieKey = event.keyCode; 
                var nKey = 0; 
        } 
//ctrlKey 
        if ((nKey == 110 || ieKey == 17||ieKey == 78||ieKey == 80) && event.ctrlKey && !check) {   
                event.keyCode=0; 
                check=true; 
                press(); 
        event.keyCode=0; 
        event.returnValue=false; 
        event.cancelBubble=true; 
        } 
} 

function keyDown(e) { 
        if (n) { 
                var nKey = e.which; 
                var ieKey = 0; 
        } 
        if (ie) { 
                var ieKey = event.keyCode; 
                var nKey = 0; 
        } 
//ctrlKey 
        if ((nKey == 110 || ieKey == 17||ieKey == 78||ieKey == 80) && event.ctrlKey && !check) {   
                event.keyCode=0; 
                check=true; 
                press(); 
        event.keyCode=0; 
        event.returnValue=false; 
        event.cancelBubble=true;
        } 
//        event.keyCode=0; 
//        event.returnValue=false; 
//        event.cancelBubble=true;
} 

function keyUp(e) { 
        if (n) { 
                var nKey = e.which; 
                var ieKey = 0; 
        } 
        if (ie) { 
                var ieKey = event.keyCode; 
                var nKey = 0; 
        } 
        if ((nKey == 110 || ieKey == 17 || nKey == 112 || ieKey == 78 || ieKey == 80) && event.ctrlKey){ 
                event.keyCode=0; 
                check=false; 
        event.keyCode=0; 
        event.returnValue=false; 
        event.cancelBubble=true; 
        } 
//        event.keyCode=0; 
//        event.returnValue=false; 
//        event.cancelBubble=true; 
} 

function press() { 
        if (check) { 
                alert("Cann't use Ctrl+P and Ctrl+N in this page."); 
                check=false; 
//        event.keyCode=0; 
//        event.returnValue=false; 
//        event.cancelBubble=true; 
   } 
} 



// Card validation code Begin

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();

/*************************************************************************\
CheckCardNumber(form)
function called when users click the "check" button.
\*************************************************************************/
function CheckCardNumber(form) {
var tmpyear;
var crdDes1,crdDes2;
if (form.txtName.value.length == 0) {
alert("Please enter a Card Holder Name.");
form.txtName.focus();
return false;
}
if (form.txtCardNumber.value.length == 0) {
alert("Please enter a Card Number.");
form.txtCardNumber.focus();
return false;
}
tmpyear=form.cboExpYear.options[form.cboExpYear.selectedIndex].value;
tmpmonth = form.cboExpMon.options[form.cboExpMon.selectedIndex].value;

// The following line doesn't work in IE3, you need to change it
// to something like "(new CardType())...".
// if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
alert("This card has already expired.");
return false;
}
card = form.cboCardType.options[form.cboCardType.selectedIndex].value;
var retval = eval(card + ".checkCardNumber(\"" + form.txtCardNumber.value +
"\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";
if (retval){
// comment this out if used on an order form
//alert("This card number appears to be valid.");
}

else {
// The cardnumber has the valid luhn checksum, but we want to know which
// cardtype it belongs to.
for (var n = 0; n < Cards.size; n++) {
if (Cards[n].checkCardNumber(form.txtCardNumber.value, tmpyear, tmpmonth)) {
cardname = Cards[n].getCardType();
break;
   }
}
if (cardname.length > 0) {
switch(cardname)
{
	case("MasterCard"):crdDes1="Master Card";break;
	case("VisaCard"):crdDes1="Visa Card";break;
	case("AmExCard"):crdDes1="American Express Card";break;
	case("DinersClubCard"):crdDes1="Diners Club Card";break;
	case("DiscoverCard"):crdDes1="Discover Card";break;
	case("enRouteCard"):crdDes1="enRoute Card";break;
	case("JCBCard"):crdDes1="JCB Card";break;
}
switch(card)
{
	case("MasterCard"):crdDes2="Master Card";break;
	case("VisaCard"):crdDes2="Visa Card";break;
	case("AmExCard"):crdDes2="American Express Card";break;
	case("DinersClubCard"):crdDes2="Diners Club Card";break;
	case("DiscoverCard"):crdDes2="Discover Card";break;
	case("enRouteCard"):crdDes2="enRoute Card";break;
	case("JCBCard"):crdDes2="JCB Card";break;
	
}
alert("This looks like a " + crdDes1 + " number, not a " + crdDes2 + " number.");
return false;
}
else {
alert("This card number is not valid.");
form.txtCardNumber.focus();
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 the expiry date.
\*************************************************************************/
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;
}


//////////////////////////////////////////////////////

function check_date(field){
var checkstr = "0123456789";
var DateValue = field;
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
     
   err = 0;   
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }
   
   
   if (err == 0)return true;     
   /* Error-message if err != 0 */
   else return false;   
}
