// *****************************
// ***       KHARMATYPE      ***
// *****************************
// *** Javascript Collection ***
// ***      VERSION 3.0      ***
// *** Copyright Kharma 2009 ***
// *****************************
// ***  NEED PROTOTYPE  1.6  ***
// *****************************
var chronofadein;
var chronofadeout;
var chronoend;
var chronoCur;
// *******************
// *** TRADUCTIONS ***
// *******************
var trads = new Array();
trads['fr'] = new Array();
//trads['fr']['needconfig'] = 'Pour pouvoir vous connecter, votre navigateur doit accepter les cookies et certaines fonctionnalités JavaScript !\n\nVoulez-vous en savoir plus sur la façon de paramétrer votre navigateur ?';
//trads['fr']['urlconfig'] = 'http://www.inoki-piercing.fr/aide-et-conseils-100-connexion-et-panier.html';
trads['fr']['bademail'] = 'Cette adresse email est invalide !';
trads['fr']['badpwd'] = 'Ce mot de passe est invalide !';
trads['fr']['ajaxconerror'] = 'Nous sommes désolés...<br /><br />Notre base de données semble indisponible !<br /><br />Merci de recommencer';
//trads['fr']['noaccount'] = 'Il n\'y a pas d\'inscrit avec cette adresse email !\n\nVoulez-vous créer un compte maintenant ?';
trads['fr']['wrongpwd'] = 'Mot de passe incorrect !<br /><br />Voulez-vous récupérer votre mot de passe par email ?';
trads['fr']['desactived'] = 'Votre compte est désactivé !<br /><br />Merci de nous contacter pour plus de détails';
trads['fr']['needtoconfirm'] = 'Vous devez confirmer votre inscription en cliquant sur le lien contenu dans l\'email automatique qui vous a été envoyé.<br /><br />Si vous n\'avez rien reçu, merci de nous contacter.';
trads['fr']['needvalidation'] = 'Votre compte n\'est pas encore activé !<br /><br />Vous recevrez un email de confirmation de validation après vérification par nos services.<br /><br />Si vous n\'avez rien reçu dans un délai 48h après votre inscription, merci de nous contacter.';
trads['fr']['ask2delmess'] = 'Voulez-vous vraiment supprimer ce message ?';
trads['fr']['a2bok'] = 'Ces articles ont bien été ajoutés à votre panier.<br />Pour visualiser votre panier et valider votre commande,<br />cliquez sur <b>&laquo; Mon panier &raquo;</b><br /><small>(en haut à gauche de la fenêtre)</small>';
trads['fr']['curconvert'] = '';
/*
trads['fr'][''] = '';
trads['fr'][''] = '';
trads['fr'][''] = '';
*/

trads['en'] = new Array();
var addthis_config = {
     ui_offset_top: -25,
     ui_offset_left: 194
}
// **************
// *** COOKIE *** OK
// **************
var Cookie = {
	set: function(name, value, validity, scale) {
		var unities = new Array();
		unities['minutes'] = 60;
		unities["hours"] = 3600;
		unities["days"] = 86400;
		var validity = validity || 1;
		var scale = scale || 'days';
		var d = new Date();
		d.setTime(d.getTime() + (1000 * unities[scale] * Number(validity)));
		//var expire = /*'; expires=' + d.toGMTString()*/;
		//var domain = /*'; domain=www.inoki-piercing.fr; path=/'*/;
		//return (document.cookie = escape(name) + '=' + escape(value || '') + expire + domain);
		return (document.cookie = escape(name) + '=' + escape(value || ''));
	},
	get: function(name) {
		var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
		return (cookie ? unescape(cookie[2]) : null);
	},
	erase: function(name) {
		var cookie = Cookie.get(name) || true;
		Cookie.set(name, '', -1);
		return cookie;
	},
	accept: function() {
		if (typeof navigator.cookieEnabled == 'boolean') {
			return navigator.cookieEnabled;
		}
		Cookie.set('_test', '1');
		return (Cookie.erase('_test') === '1');
	}
};
// ***************
// *** BROWSER *** OK
// ***************
var Browser = {
	type: function() {
		if (Prototype.Browser.IE) { return 'IE'; }
		if (Prototype.Browser.Opera) { return 'Opera'; }
		if (Prototype.Browser.WebKit) { return 'Safari' ; }
		if (Prototype.Browser.Gecko) { return 'Mozilla' ; }
		if (Prototype.Browser.MobileSafari) { return 'MobileSafari'; }
	},
	version: function() {
		var stra = $w(navigator.appVersion);
		switch(Browser.type()){
			case 'IE':
		 	case 'Mozilla':
		 	case 'Opera':
				return stra[0];
				break;
			case 'Safari':
				stra.each(function(s, index) {
					if (s.toLowerCase().startsWith('version')) { version = s.toLowerCase().gsub('version/',''); }
				});
				return version;
				break;
		}
	},
	ajax: function() {
		if (!Ajax.getTransport()) { return false; } else { return true; }
	}
};
// ***************************
// *** DOWNLOAD DE FICHIER *** OK
// ***************************
downLoad = function(chemin,filename){ location.href = 'upload.php?chemin=' + chemin + '&filename=' + filename; }
// *******************************
// *** ENTERKEY ON CONNECTFORM ***
// *******************************
chk4etcon = function(event) {
	if (event.keyCode == Event.KEY_RETURN) {
		if (!$('login').present()) {
			$('login').focus();
		}
		else if (!$('password').present()) {
			$('password').focus();
		}
		else {
			try2connekt();
		}
	}
}
// **********************************************
// *** INITIALISATION DE LA CELLULE CONNEXION *** OK
// **********************************************
conInit = function() {
	if ($('login')) {
		reinitConform();
	}
}
// *************************************
// *** AFFICHAGE CONVERSION MONNAIES *** MODALBOX
// *************************************
currencyConvert = function(price){
	if (price == 0) { return false; }
	Modalbox.show('ajax/ajax_convert_currency.php', {title: '<big>&euro;</big>uro Convertisseur', autoFocusing: false, params:{price: price}, width: 196});
	return false;
}
// *******************************
// *** CONNEXION / DECONNEXION ***
// *******************************
try2connekt = function(){
	// *****************
	// *** CONNEXION ***
	// *****************
	if ($F('conaction') == 'login') {
		// vérification des champs
		if (!$('login').present()) {
			$('login').activate();
			return false;
		}
		else if ($F('password') == '') {
			$('password').activate();
			return false;
		}
		// Cookie enabled & Ajax ?
		else if ((!Cookie.accept()) || (!Browser.ajax())) {
			Modalbox.confirm('Pour pouvoir vous connecter,<br />votre navigateur <b>DOIT</b> accepter<br />les cookies et JavaScript !<br /><br />Voulez-vous en savoir plus sur la façon<br />de paramétrer votre navigateur ?','location.href=\'aide-et-conseils-100-connexion-et-panier.html\';');
		}
		// Email incorect
		else if (!isEmail($('login').value)) {
			Modalbox.info('<big><b>Cette adresse email est invalide !</b></big>');
		}
		// Mot de passe incorrect
		else if (!isPass($('password').value)) {
			Modalbox.info('<big><b>Ce mot de passe est invalide !</b></big>');
		}
		// Formats OK
		else {
			// désactivation des champs
			$('login').disable();
			$('password').disable();
			// requete au serveur pour savoir si ce client existe
			new Ajax.Request('ajax/ajax_connect.php', {
					method: 'post',
					encoding: 'iso-8859-15',
					parameters: $H ({
						'action': 'login',
						'login': $F('login'),
						'password': $F('password')
					}).toQueryString(),
					// script trouvé
					onSuccess: function(requester) {
						reponse = requester.responseText;
						// format incorrect
						if ('hack' == reponse) {
							reinitConform();
						}
						// utilisateur inconnu
						else if ('err1' == reponse) {
							reinitConform();
							// vidage des champs + focus
							$('login').focus();
							// message
							var content = '<div class="center"><br /><img src="graphs/png/warning32.png" width="32" height="32" /><br /><br />Il n\'y a pas d\'inscrit avec cette adresse email !<br /><br />Voulez-vous créer un compte maintenant ?<br /><br />';
							content += '<input type="button" class="butt" value=" Oui " onclick="Modalbox.hide(); location.href=\'inscription.html\';" >&nbsp;&nbsp;&nbsp;';
							content += '<input type="button" class="butt" value=" Non " onclick="Modalbox.hide();" /></div>';
							Modalbox.show(content, {title: 'Alerte !', width: 420});
						}
						// erreur mot de passe
						else if ('err2' == reponse) {
							reinitConform();
							// vidage champs password + focus
							$('password').value = '';
							$('password').focus();
							// affichage message
							Modalbox.confirm(trads[$F('lang')]['wrongpwd'],'asklostpwd($F(\'login\'))','Modalbox.hide()',false);
						}
						// compte suspendu
						else if ('err3' == reponse) {
							reinitConform();
							alert(trads[$F('lang')]['desactived']);
						}
						// inscrit non confirmé (pro)
						else if ('regonly' == reponse) {
							reinitConform();
							alert(trads[$F('lang')]['needtoconfirm']);
						}
						// inscrit confirmé
						else if ('confonly' == reponse) {
							reinitConform();
							alert(trads[$F('lang')]['needvalidation']);
						}
						// tout est ok
						else {
							eval(reponse);
							// on écrit les cookies
							Cookie.set('I_id', recdatas['id']);
							Cookie.set('I_status', 'O');
							Cookie.set('I_md5', recdatas['md5']);
							Cookie.set('I_type', recdatas['type']);
							Cookie.set('I_email', $F('login'), 1000, 'days');
							// on affiche
							$('cellconnekt').update(recdatas['aff']);
							// articles en panier provisoire
							if (Cookie.get('I_basket')) {
								add2basket(Cookie.get('I_basket'));
								Cookie.erase('I_basket');
							}
							if (recdatas['type'] == 'pro') {
								document.location.reload();
							}
						}
					},
					// Réponse 404
					onFailure: function plouf(){
						$('login').enable();
						$('password').enable();
						//$('conektbut').enable();
						Modalbox.info(trads[$F('lang')]['ajaxconerror']);
						//alert(trads[$F('lang')]['ajaxconerror']);
						return false;
					}
				}
			);
		}
	}
	// *******************
	// *** DECONNEXION ***
	// *******************
	else if ($F('conaction') == 'logout') {
		// le cookie
		Cookie.erase('I_status');
		var type = Cookie.get('I_type');
		Cookie.erase('I_type');
		// on recharge le formulaire
		new Ajax.Request('ajax/ajax_connect.php', {
				method: 'post',
				encoding: 'iso-8859-15',
				parameters: $H({
					action: 'logout'
				}).toQueryString(),
				// script trouvé
				onSuccess: function(requester) {
					var reponse = requester.responseText;
					$('cellconnekt').update(reponse);
					if (type == 'pro') {
						window.location.reload();
					}
				},
				// Réponse 404
				onFailure: function (){
					window.location.reload();
				}
			}
		);
	}
}
// ***************************************************
// *** REINITIALISATION DU FORMULAIRE DE CONNEXION *** OK
// ***************************************************
reinitConform = function(){
	$('login').enable();
	$('password').enable();
	$('login').focus();
}
// ************************************************
// *** VERIFICATION DE VALIDITE D'ADRESSE EMAIL *** OK
// ************************************************
isEmail = function(emailStr) {
	if (emailStr.toLowerCase().startsWith('www.')) { return false; }
	var checkTLD = 1;
	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|fr)$/;
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + specialChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) { return false; }
	var user = matchArray[1];
	var domain = matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i) > 127) { return false; }
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i) > 127) { return false; }
	}
	if (user.match(userPat) == null) { return false; }
	var IPArray=domain.match(ipDomainPat);
	if (IPArray != null) {
		for (var i=1; i<=4; i++) {
			if (IPArray[i] > 255) { return false; }
		}
		return true;
	}
	var atomPat = new RegExp("^" + atom + "$");
	var domArr = domain.split(".");
	var len = domArr.length;
	for (i=0; i<len; i++) {
		if (domArr[i].search(atomPat) == -1) { return false; }
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) { return false; }
	if (len < 2) { return false; }
	return true;
}
// ************************************************
// *** VERIFICATION DE VALIDITE DE MOT DE PASSE *** OK
// ************************************************
isPass = function(chaine) {
	// on transforme pour déterminer les caractères interdits
	var authorized = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_+=';
	vpass = wpass = chaine;
	for (h=0; h<10; h++) {
		for (i=0; i<(authorized.length); i++) {
			joker = authorized.charAt(i);
			wpass = wpass.replace(joker,"¤");
		}
	}
	var match = "¤"; // pattern to match.
	var counter = 0; // count
	for (var i=0;i<wpass.length;i++) {
	  if (match == wpass.substr(i,match.length))
	    counter++;
	}
	if ((vpass.length < 5) || (vpass.length > 20) || (vpass.length > counter)) {
		return false;
	}
	else {
		return true;
	}
}
// *****************************
// *** OUVERTURE URL EXTERNE *** OK
// *****************************
popURL = function(dest) { window.open(dest,''); }
// ***********************
// *** AJOUT EN PANIER ***
// ***********************
add2basket = function(orderstring,qte) {
	var qte = parseInt(qte) || 2;
	if ((!Cookie.get('I_id')) || (!Cookie.get('I_type')) || (Cookie.get('I_status') != 'O')) {
		return false;
	}
	new Ajax.Request('ajax/ajax_add2basket.php', {
		method: 'post',
		encoding: 'iso-8859-15',
		parameters: $H({
			lang: $F('lang'),
			clientid: Cookie.get('I_id'),
			orderstring: orderstring
		}).toQueryString(),
		onFailure: function() {
			Modalbox.alert(trads[$F('lang')]['ajaxconerror']);
			return false;
		},
		onSuccess: function(requester) {
			var reponse = requester.responseText;
			if (reponse == 'err') {
				Modalbox.alert(trads[$F('lang')]['ajaxconerror']);
			}
			else {
				$('cartaff').update(reponse+' art.');
				if (qte < 2) {
					var phrase = 'Cet article a bien été ajouté à votre panier...';
				}
				else {
					var phrase = 'Ces ' + qte + ' articles ont bien été ajoutés à votre panier...';
				}
				chronomod = setTimeout('Modalbox.hide();',10000);
				Modalbox.show('<div class="center"><br />' + phrase + '<br /><br /><a href="javascript:dn();" onclick="Modalbox.hide();clearTimeout(chronomod);"><img src="graphs/png/btncontinue.png" width="100" height="36" alt="Continuer" /></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:dn();" onclick="location.href=\'mon-panier.html\';"><img src="graphs/png/btnshowbasket.png" width="100" height="36" alt="Panier" /></a><br /><br /><small>Vous pouvez visualiser votre panier à tout moment<br />en cliquant sur <cite><b>&laquo; Mon panier &raquo;</b></cite>, en haut à gauche de la fenêtre.</small></div>',{title:'Ajout au panier...', width:400});
			}
		}
	});
}
getOffsets = function(obj) {
    var offsetTop = obj.offsetTop;
    var offsetLeft = obj.offsetLeft;
    while ((obj = obj.offsetParent ) != null) {
        offsetTop += obj.offsetTop;
        offsetLeft += obj.offsetLeft;
    }
    return [offsetLeft, offsetTop];
}
// ***************
// *** SHOWTIP ***
// ***************
showTip = function(item, content) {
	overlib(DONOTHING);
	$('overDiv').show();
	nd();
	overlib('<div id="cttp" onclick="endTip();">'+content+'</div>', FOLLOWMOUSE, BGCLASS, 'bgtooltip', FGCLASS, 'fgtooltip', TEXTFONTCLASS, 'txtooltip', WIDTH, 200, HEIGHT, 80, BORDER, 0 , ANCHOR, item, ANCHORY, 20, ANCHORX, 10, DELAY, 250);
	//chronofadein = setTimeout('new Effect.Fade("overDiv", {from: 0, to: 1});');
	//chronofadeout = setTimeout('new Effect.Fade("overDiv");', 10000);
	chronoend = setTimeout('nd();', 12000);
}
endTip = function (){
	//clearTimeout(chronofadein);
	//clearTimeout(chronofadeout);
	clearTimeout(chronoend);
	nd();
}
// ***********************************
// *** FORMATAGE CHIFFRE A VIRGULE *** OK
// ***********************************
// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
numberFormat = function(valeur,decimal,separateur) {
	var decimal = decimal||2;
	var separateur = separateur||',';
	var deci=Math.round(Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format = val + '';
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) {
		var decim="";
		for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	return val_format;
}
// *********************
// *** FONCTION VIDE *** OK
// *********************
dn = function() {}
// **************************
// *** MOT DE PASSE PERDU ***
// **************************
asklostpwd = function(lemail) {
	lemail = lemail || '';
	Modalbox.show('ajax/ajax_lostpassword.php?action=loading&lemail=' + lemail, {title: 'Mot de passe perdu...', overlayClose: false, autoFocusing: true, width: 500});
}
// Lancement d'initialisation
document.observe('dom:loaded',conInit);