

function tellerror(msg, url, linenumber){
alert('Error message= '+msg+' URL= '+url+' Line Number= '+linenumber);
return true;
}
window.onerror=tellerror;



var marked_row = new Array;

function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
	if(navigator.appName == "Microsoft Internet Explorer"){
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //        row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
            || typeof(theRow.style) == 'undefined') {
            return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
            theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
            theCells = theRow.cells;
    }
    else {
            return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect        = null;
    var currentColor = null;
    var newColor         = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //                 valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
            && typeof(theCells[0].getAttribute) != 'undefined') {
            currentColor = theCells[0].getAttribute('bgcolor');
            domDetect        = true;
    }
    // 3.2 ... with other browsers
    else {
            currentColor = theCells[0].style.backgroundColor;
            domDetect        = false;
    } // end 3

    // 4. Defines the new color
    // 4.1 Current color is the default one
	
    if (currentColor == ''
            || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
            if (theAction == 'over' && thePointerColor != '') {
                    newColor                          = thePointerColor;
            }
            else if (theAction == 'click' && theMarkColor != '') {
                    newColor                          = theMarkColor;
            }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
                     && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
            if (theAction == 'out') {
                    newColor                          = theDefaultColor;
            }
            else if (theAction == 'click' && theMarkColor != '') {
                    newColor                          = theMarkColor;
                    marked_row[theRowNum] = true;
            }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
            if (theAction == 'click') {
                    newColor                          = (thePointerColor != '')
                                                              ? thePointerColor
                                                              : theDefaultColor;
                    marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                                              ? true
                                                              : null;
            }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
            var c = null;
            // 5.1 ... with DOM compatible browsers except Opera
            if (domDetect) {
                    for (c = 0; c < rowCellsCnt; c++) {
                            theCells[c].setAttribute('bgcolor', newColor, 0);
                    } // end for
            }
            // 5.2 ... with other browsers
            else {
                    for (c = 0; c < rowCellsCnt; c++) {
                            theCells[c].style.backgroundColor = newColor;
                    }
            }
    } // end 5

    return true;
}
}

/*
USAGE
onmousedown="setPointer(this, 0, 'click', '#FFFFFF', '#FFEFF8', '#EEC6DC');"
onmouseover="setPointer(this, 0, 'over', '#FFFFFF', '#FFEFF8', '#EEC6DC');"
onmouseout="setPointer(this, 0, 'out', '#FFFFFF', '#FFEFF8', '#EEC6DC');"
*/

function mota(x)

{var follow=x
if(navigator.appName == "Microsoft Internet Explorer"){

if (document.all){

	curscroll.style.visibility="visible"
	curscroll.innerHTML='<table ID=\"sample\" border=0 cellspacing=1 bgcolor=black><tr><td width=100% bgcolor=#EAF2FF>' + x + '</td></tr></table>'
	//IF YOU WANT TO ADD FADING EFFECT FOR TOOLTIPS, PLEASE REMOVE '//'. HAVE FUN
	//document.all.sample.style.filter = 'alpha(opacity=80);'
}
curscroll.style.left=document.body.scrollLeft+event.clientX-20
curscroll.style.top=document.body.scrollTop+event.clientY+20
}
}

function tatmota(){
	curscroll.style.visibility="hidden"
}

function openTarget (form, features, windowName) {
  if (!windowName)
    windowName = 'formTarget' + (new Date().getTime());
  form.target = windowName;
  open ('', windowName, features);
}

function pop(url,w,h,scroll){
  if(scroll==1) bars='yes';
	else bars='no';
  popwindow= open(url, "popwin","width=" + w + "px,height==" + h + "px,top=0,left=0;fullscreen=no,scrollbars==" + bars + ",location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes");
}
function run(url) {
    setTimeout("top.location.href='" + url + "'",1500);
}






var Cards = new makeArray(8);
Cards[0] = new card_type("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new card_type("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new card_type("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new card_type("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new card_type("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new card_type("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new card_type("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new card_type();

/*************************************************************************\
Checkcard_number(form)
function called when users click the "check" button.
\*************************************************************************/
function Checkcard_number() {
var tmpyear;
if (document.dathang.card_number.value.length == 0) {
return;
}
if (document.dathang.card_year.value.length == 0) {
alert("Il manque votre Année d'expiration !");
document.dathang.card_year.focus();
return;
}
if (document.dathang.card_year.value > 99)
tmpyear = "19" + document.dathang.card_year.value;
else if (document.dathang.card_year.value < 17)
tmpyear = "20" + document.dathang.card_year.value;
else {
alert("Votre Année d'expiration est invalide!");
return;
}

tmpmonth = document.dathang.card_month.options[document.dathang.card_month.selectedIndex].value;
if (!(new card_type()).isExpiryDate(tmpyear, tmpmonth)) {
alert("Votre Carte de Crédit a expiré ! ");
return false;
}

card = document.dathang.card_type.options[document.dathang.card_type.selectedIndex].value;
var retval = eval(card + ".checkcard_number(\"" + document.dathang.card_number.value +
"\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";
if (retval) {
return true;
}

else {
// The card_number has the valid luhn checksum, but we want to know which
// card_type it belongs to.
for (var n = 0; n < Cards.size; n++) {
if (Cards[n].checkcard_number(document.dathang.card_number.value, tmpyear, tmpmonth)) {
cardname = Cards[n].getcard_type();
break;
   }
}
if (cardname.length > 0) {
alert("Ceci est un numéro de carte " + cardname + " et non un numéro " + card + " !");
return false;
}
else {
alert("Votre Numéro de Carte de Crédit est invalide !");
return false;
      }
   }
}
/*************************************************************************\
Object card_type([String card_type, String rules, String len, int year, 
                                        int month])
card_type    : type of card, eg: MasterCard, Visa, etc.
rules       : rules of the card_number, eg: "4", "6011", "34,37".
len         : valid length of card_number, eg: "16,19", "13,16".
year        : year of expiry date.
month       : month of expiry date.
eg:
var VisaCard = new card_type("Visa", "4", "16");
var AmExCard = new card_type("AmEx", "34,37", "15");
\*************************************************************************/
function card_type() {
var n;
var argv = card_type.arguments;
var argc = card_type.arguments.length;

this.objname = "object card_type";

var tmpcard_type = (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.setcard_number = setcard_number;  // set card_number method.
this.setcard_type = setcard_type;  // setcard_type method.
this.setLen = setLen;  // setLen method.
this.setRules = setRules;  // setRules method.
this.setExpiryDate = setExpiryDate;  // setExpiryDate method.

this.setcard_type(tmpcard_type);
this.setLen(tmplen);
this.setRules(tmprules);
if (argc > 4)
this.setExpiryDate(argv[3], argv[4]);

this.checkcard_number = checkcard_number;  // checkcard_number method.
this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
this.getcard_type = getcard_type;  // getcard_type method.
this.iscard_number = iscard_number;  // iscard_number method.
this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
this.luhnCheck = luhnCheck;// luhnCheck method.
return this;
}

/*************************************************************************\
boolean checkcard_number([String card_number, int year, int month])
return true if card_number pass the luhncheck and the expiry date is
valid, else return false.
\*************************************************************************/
function checkcard_number() {
var argv = checkcard_number.arguments;
var argc = checkcard_number.arguments.length;
var card_number = (argc > 0) ? argv[0] : this.card_number;
var year = (argc > 1) ? argv[1] : this.year;
var month = (argc > 2) ? argv[2] : this.month;

this.setcard_number(card_number);
this.setExpiryDate(year, month);

if (!this.iscard_number())
return false;
if (!this.isExpiryDate())
return false;

return true;
}
/*************************************************************************\
String getcard_type()
return the card_type.
\*************************************************************************/
function getcard_type() {
return this.card_type;
}
/*************************************************************************\
String getExpiryDate()
return the expiry date.
\*************************************************************************/
function getExpiryDate() {
return this.month + "/" + this.year;
}
/*************************************************************************\
boolean iscard_number([String card_number])
return true if card_number pass the luhncheck and the rules, else return
false.
\*************************************************************************/
function iscard_number() {
var argv = iscard_number.arguments;
var argc = iscard_number.arguments.length;
var card_number = (argc > 0) ? argv[0] : this.card_number;
if (!this.luhnCheck())
return false;

for (var n = 0; n < this.len.size; n++)
if (card_number.toString().length == this.len[n]) {
for (var m = 0; m < this.rules.size; m++) {
var headdigit = card_number.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 card_number])
return true if card_number 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 card_number = argc > 0 ? argv[0] : this.card_number;

if (! isNum(card_number)) {
return false;
  }

var no_digit = card_number.length;
var oddoeven = no_digit & 1;
var sum = 0;

for (var count = 0; count < no_digit; count++) {
var digit = parseInt(card_number.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;
}

/*************************************************************************\
card_type setcard_number(card_number)
return the card_type object.
\*************************************************************************/
function setcard_number(card_number) {
this.card_number = card_number;
return this;
}

/*************************************************************************\
card_type setcard_type(card_type)
return the card_type object.
\*************************************************************************/
function setcard_type(card_type) {
this.card_type = card_type;
return this;
}

/*************************************************************************\
card_type setExpiryDate(year, month)
return the card_type object.
\*************************************************************************/
function setExpiryDate(year, month) {
this.year = year;
this.month = month;
return this;
}

/*************************************************************************\
card_type setLen(len)
return the card_type 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;
}

/*************************************************************************\
card_type setRules()
return the card_type 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 valider() {

	
var form_err = " ";

if ( document.dathang.uemail.value.length < 1) {
form_err = "Email invalide ! "; 
}
var verim = 0;
for (i=1; i<document.dathang.uemail.value.length -4; i++) {
if ( document.dathang.uemail.value.charAt(i) == "@") {
verim = 1;
}} 
if ( verim == 0) {
form_err = "Email invalide ! ";
} 

if ( document.dathang.uname.value.length < 1) {
form_err += "- Il manque votre Nom !"; 
}

if ( document.dathang.uadd_a.value.length < 1) {
form_err += "- Il manque votre adresse !"; 
}

if ( document.dathang.uadd_b.value.length < 1) {
form_err += "- Il manque votre Ville !"; 
}

if ( document.dathang.uadd_d.value.length < 1) {
form_err += "- Il manque votre Code Postal !"; 
}

if ( document.dathang.utel.value.length < 1) {
form_err += "- Il manque votre Numéro de téléphone !"; 
}

if (document.all.bycc.disabled) {}
else{
if ( document.dathang.card_number.value.length < 1) {form_err += "- Il manque votre Numéro de Carte de Crédit !"; }
if ( document.dathang.card_name.value.length < 1) {form_err += "- Il manque le Nom sur votre Carte de Crédit !"; }
if (Checkcard_number()) {}
else {
if ( form_err != " ") {
alert(form_err);
}
return false;}
	}

if ( form_err != " ") {
alert(form_err);
return false;
}
return true 
}
