// JavaScript Document



function doClock(){ // By Paul Davis - www.kaosweaver.com

  var t=new Date(),a=doClock.arguments,str="",i,a1,lang="1";

  var month=new Array('January','Jan', 'February','Feb', 'March','Mar', 'April','Apr', 'May','May', 'June','Jun', 'July','Jul', 'August','Aug', 'September','Sep', 'October','Oct', 'November','Nov', 'December','Dec');

  var tday= new Array('Sunday','Sun','Monday','Mon', 'Tuesday','Tue', 'Wednesday','Wed','Thursday','Thr','Friday','Fri','Saturday','Sat');

  for(i=0;i<a.length;i++) {a1=a[i].charAt(1);switch (a[i].charAt(0)) {

  case "M":if  ((Number(a1)==3) && ((t.getMonth()+1)<10)) str+="0";

  str+=(Number(a1)>1)?t.getMonth()+1:month[t.getMonth()*2+Number(a1)];break;

  case "D": if ((Number(a1)==1) && (t.getDate()<10)) str+="0";str+=t.getDate();break;

  case "Y": str+=(a1=='0')?t.getFullYear():t.getFullYear().toString().substring(2);break;

  case "W":str+=tday[t.getDay()*2+Number(a1)];break; default: str+=unescape(a[i]);}}return str;

}



<!-- hiding

image01 = "images/pageahead.gif"  

image02 = "images/spacer.gif"

function imgover(imgname){

     imgname.src = image01

}

function imgout(imgname){

     imgname.src = image02

}

//-->



<!--

function MM_findObj(n, d) { //v4.01

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

}



function MM_validateForm() { //v4.0

  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;

  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);

    if (val) { nm=val.name; if ((val=val.value)!="") {

      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');

        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';

      } else if (test!='R') { num = parseFloat(val);

        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';

        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');

          min=test.substring(8,p); max=test.substring(p+1);

          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';

    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }

  } if (errors) alert('The following error(s) occurred:\n'+errors);

  else{

  		document.getElementById('infoTbl').style.display='none';	

   	document.getElementById('payTbl').style.display='';

	}

  document.MM_returnValue = (errors == '');

}

<!-- Original:  Simon Tneoh (tneohcb@pc.jaring.my) -->



<!-- This script and many more are available free online at -->

<!-- The JavaScript Source!! http://javascript.internet.com -->



<!-- 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;

if (form.cc_number.value == "") {

alert("Please enter a Valid Card Number.");

form.cc_number.focus();

return false;

}

if (form.cc_expires_year.value.length == 0) {

alert("Please enter the Expiration Year.");

form.cc_expires_year.focus();

return;

}

if (form.cc_expires_year.value > 96)

tmpyear = "19" + form.cc_expires_year.value;

else if (form.cc_expires_year.value < 21)

tmpyear = "20" + form.cc_expires_year.value;

else {

alert("The Expiration Year is not valid.");

return;

}

tmpmonth = form.cc_expires_month.options[form.cc_expires_month.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.cc_type.options[form.cc_type.selectedIndex].value;

var retval = eval(card + ".checkCardNumber(\"" + form.cc_number.value +

"\", " + tmpyear + ", " + tmpmonth + ");");

cardname = "";

if (retval){

return true;





// comment this out if used on an order form

//alert("This card number appears to be valid.");

//form.submit();

}

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.cc_number.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 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;

}

//-->