var iframe_window;
var object_updating = null;
var carrier = '';

var menus = new Array(6,34,20,33,9,26,313);

var categories = new Array();
categories[6] =new Array(21,62,71,84,97,102);
categories[34] =new Array(11,131,138,273,24);
categories[20] =new Array(145,156,31,29,185,196);
categories[33] =new Array(212,216,230,264,268);
categories[9] =new Array(40,45,48,49);
categories[26] =new Array(10,35,27);


var colors = new Array();
colors[6]='#f9d2b3';
colors[34]='#dadfe6';
colors[20]='#ffb5b5';
colors[33]='#efdecd';
colors[9]='#e5c7fa';
colors[26]='#f9dfe8';

function init(){
	if(document.URL.indexOf('admin') == -1)
	{
	/*	var img_dir_theme = '/themes/juillet2009/img/';
		for (id in menus){
			var temp = new load(img_dir_theme+"menu_top/picto"+menus[id]+"_over.png", img_dir_theme+"menu_top/layer_submenu"+menus[id]+".png")
	//		console.log(img_dir_theme+"menu_top/picto"+menus[id]+"_over.png", img_dir_theme+"menu_top/layer_submenu"+menus[id]+".png");
			for (id_head in categories[id]){
				var tmp=new load(img_dir_theme+"menu_left/label_category"+categories[id][id_head]+"_over.gif");
		//		console.log(img_dir_theme+"menu_left/label_category"+categories[id][id_head]+"_over.gif");
			}
		}*/
	}
}

function load() {
	if (document.images) {
		this.length=load.arguments.length;
		for (var i=0;i<this.length;i++) {
			this[i+1]=new Image();
			this[i+1].src=load.arguments[i];
		}
	}
}

function setpng(img) {
	if(img){
		imgName=img.src.toUpperCase();
		if(imgName.substring(imgName.length-3,imgName.length)=="PNG") img.outerHTML=
			"<span "+(img.id?"id='"+img.id+"' ":"")+(img.className?"class='"+img.className+"' ":"")+(img.title?"title=\""+img.title+"\" ":"")
			+"style=\"width:"+img.width+"px;height:"+img.height+"px;"+(img.align=="left"?"float:left;":(img.align=="right"?"float:right;":""))
			+(img.parentElement.href?"cursor:hand;":"")+"display:inline-block;"+img.style.cssText+";"
			+"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"',sizingMethod='scale');\"></span>";
	}
}

function initPNG(){
	if(document.all && (IEver=parseFloat(navigator.appVersion.split("MSIE")[1])) && (IEver>=5.5) && (IEver<7) && document.body.filters) {
		var imgs = document.getElementsByTagName('img');
	
		for(var i=0; i<imgs.length; i++){
			setpng(imgs[i]);
		}
	}
}

function newShopCustomer(token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitShopCustomer=1&token='+token+'#customer';
}

function canChooseDeliveryAddress(){
	var elt = document.getElementById('delivery_select_address');
	if(document.getElementById('same_delivery_addr').checked){
		var id_address = document.getElementById('invoice_select_address').value;
		elt.value= id_address;
		updateTextAddress('delivery_address', id_address);
	}
	openCloseLayer('div_delivery_address', 0);
}

function updateTextAddress(elt_name, id_address){
	var elts = document.getElementsByName(elt_name);
	for(i=0; i<elts.length; ++i){
		var name= elts[i].id.split('_');
		var text='';
		for(j=1; j<name.length; ++j){
			text += addresses[id_address][address_fields[name[j]]]+' ';
		}
		elts[i].innerHTML = text;
	}
}

function updateAddress(select, type){
	var id_address = select.value;  
	if(id_address > 0){
		updateTextAddress(type+'_address', id_address);
		if((type == 'invoice') && (document.getElementById('same_delivery_addr').checked)){
			updateTextAddress('delivery_address', id_address);
			document.getElementById('delivery_select_address').value=id_address;
		}
	}
}

function emptyCart(token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitEmptyCart=1&token='+token;
}

function deleteCartCustomer(token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCustomer=1&delete=1&token='+token+'#customer';
}

function deleteCartProduct(id_product, id_product_attribute, qty, token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCart=1&delete=1&qty='+qty+'&id_product='+id_product+'&id_product_attribute='+id_product_attribute+'&token='+token;
}

function deleteCartProductCustom(id_cart_product_custom, token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCart=1&qty=0&id_cart_product_custom='+id_cart_product_custom+'&token='+token;
}

function formatPrice(price)
{
	var fixedToSix = (Math.round(price * 1000000) / 1000000);
	return (Math.round(fixedToSix) == fixedToSix + 0.000001 ? fixedToSix + 0.000001 : fixedToSix);
}

function updateCustomShipping(token){
	var name = document.getElementById('custom_carrier_name').value;
	var price = document.getElementById('custom_carrier_price').value;
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitCustomShipping=1&price='+price+'&name='+name+'&token='+token+'#addresses';
}

function updatePrice(shipping_price){
	document.getElementById('price_total').innerHTML = formatPrice(parseFloat(document.getElementById('products_price').value) + parseFloat(shipping_price)).toFixed(2); 
}

function deleteCartAdresses(token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitAddresses=1&delete=1&token='+token+'#addresses';
}

function deleteCartCarrier(token){
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitShipping=1&delete=1&token='+token+'#shipping';
}

function updateCartQuantity(id_product, id_product_attribute, token){
	var input = document.getElementById('qty_'+id_product_attribute);
	var qty = parseInt(input.value) - parseInt(input.getAttribute('old_value'));
	
	if(qty == 0)
		return;
	
	var action = ((qty < 1)?'delete':'add');
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCart=1&'+action+'=1&qty='+Math.abs(qty)+'&id_product='+id_product+'&id_product_attribute='+id_product_attribute+'&token='+token;
}

function updateCartQuantityCustom(id_cart_product_custom, token){
	var input = document.getElementById('qty_cpc_'+id_cart_product_custom);
	var qty = parseInt(input.value);
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCart=1&qty='+Math.abs(qty)+'&id_cart_product_custom='+id_cart_product_custom+'&token='+token;
}

function updateWholesalePrice(id_product, id_product_attribute, token){
	var input = document.getElementById('wholesale_price_'+id_product_attribute);
	var value = parseFloat(input.value);
	
	if(value < 0)
		return;
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateWholesalePrice=1&value='+value+'&id_product='+id_product+'&id_product_attribute='+id_product_attribute+'&token='+token;
}

function updateWholesalePriceCustom(id_cart_product_custom, token){
	var input = document.getElementById('wholesale_price_cpc_'+id_cart_product_custom);
	var value = parseFloat(input.value);
	
	if(value < 0)
		return;
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateWholesalePrice=1&value='+value+'&id_cart_product_custom='+id_cart_product_custom+'&token='+token;
}

function updatePriceTI(id_product, id_product_attribute, token){
	var input = document.getElementById('price_wt_'+id_product_attribute);
	var value = parseFloat(input.value);
	
	if(value < 0)
		return;
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdatePrice=1&value='+value+'&id_product='+id_product+'&id_product_attribute='+id_product_attribute+'&token='+token;
}

function updatePriceTICustom(id_cart_product_custom, token){
	var input = document.getElementById('price_wt_cpc_'+id_cart_product_custom);
	var value = parseFloat(input.value);
	
	if(value < 0)
		return;
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdatePrice=1&value='+value+'&id_cart_product_custom='+id_cart_product_custom+'&token='+token;
}

function afterTextInsertedHomeProduct (event, data, formatted) {	
	if (data == null){
		return false;
	}
	var id= data[1];
	var name = data[0];

	document.location.href= 'index.php?tab=AdminModules&configure=editorial&submitProductName=1&id_product='+id+"&token="+document.getElementById('token_ajax').value;
	
	return true;
}

function afterTextInsertedProduct (event, data, formatted) {	
	if (data == null){
		return false;
	}
	var id= data[1];
	var name = data[0];

	document.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCart=1&add=1&qty=1&id_product='+id+"&token="+document.getElementById('token_ajax').value;
	
	return true;
}

function afterTextInsertedCustomer (event, data, formatted) {	
	
	if (data == null){
		return false;
	}
	var id = data[1];
	var name = data[0];
	document.getElementById('divtest').innerHTML=name + " -> " + id;
	
	window.location.href= 'index.php?tab=AdminCaptureOrder&submitUpdateCustomer=1&id_customer='+id+'&token='+document.getElementById('token_ajax').value+'#customer';
	return true;
}


function completion(){
	if(document.getElementById('product_autocomplete_input') != null){		
		$('#product_autocomplete_input')
			.autocomplete('ajax_products_list.php', {
				minChars: 1,
				autoFill: true,
				max:20,
				matchContains: true,
				mustMatch:true,
				scroll:false
			})
			.result(afterTextInsertedProduct);
	}
	if(document.getElementById('customer_autocomplete_input') != null){
		$('#customer_autocomplete_input')
			.autocomplete('ajax_customers_list.php', {
				minChars: 1,
				autoFill: true,
				max:20,
				matchContains: true,
				mustMatch:true,
				scroll:false
			})
			.result(afterTextInsertedCustomer);
	}
	if(document.getElementById('home_product_autocomplete_input') != null){
		$('#home_product_autocomplete_input')
			.autocomplete('ajax_products_list.php', {
				minChars: 1,
				autoFill: true,
				max:20,
				matchContains: true,
				mustMatch:true,
				scroll:false
			})
			.result(afterTextInsertedHomeProduct);
	}
}

function showHideInfosOS(os_refund, os_reappro){
	select = document.getElementById('id_order_state');
	div_payment_refund = document.getElementById('payment_refund');
	
	if(select.value == os_refund){
		var select_payments = document.getElementById('payments');
		for(var i=0; i < select_payments.options.length; ++i){
			if(select_payments.options[i].value == document.getElementById('payment_type').value){
				select_payments.options[i].selected = 'selected';
				select_payments.selected_index = i;
			}
		}
		div_payment_refund.style.visibility = 'visible';
		div_payment_refund.style.display = 'block';
	}
	else{
		div_payment_refund.style.visibility = 'hidden';
		div_payment_refund.style.display = 'none';
	}
	
	div_reappro_delay = document.getElementById('reappro_delay');
	
	if(select.value == os_reappro){
		div_reappro_delay.style.visibility = 'visible';
		div_reappro_delay.style.display = 'block';
	}
	else{
		div_reappro_delay.style.visibility = 'hidden';
		div_reappro_delay.style.display = 'none';
	}
}

function changeFlag(){
	flag = document.getElementById('visibility_shipping');
	if(flag.value == "1")
		flag.value = "0";
	else flag.value = "1";
}

function showHideShipping(){
	divs = document.getElementsByName('showShipping');
	button = document.getElementById('submitShowCarriers');
	flag = document.getElementById('visibility_shipping');
	
	if(flag.value == "1"){
		visibility='visible';
		display='block';
		button.value= button.getAttribute('valueHide');
	}
	else{
		visibility='hidden';
		display='none';
		button.value= button.getAttribute('valueShow');
	}
	
	for(i=0; i<divs.length; ++i){
		divs[i].style.visibility=visibility;
		divs[i].style.display=display;

		tmp = divs[i].parentNode.id.split("-");
		if((typeof tmp != "undefined") && (tmp != "") && (tmp[1] == "id_carrier_selected")){
			date = document.getElementById("showShippingDate_"+tmp[2]);
	
			if(document.getElementById('id_carrier_selected_'+tmp[2]).value == 8){//Benito
				date.style.visibility = 'visible';
				date.style.display='block';
			}
			else{
				date.style.visibility = 'hidden';
				date.style.display='none';
			}
		}
		tmp="";
	}
	
	resize_container();
}

function alertOutOfStock(date, status){
	document.getElementById("orderFilter_oh!date_add[1]").value=date;
	obj_state = document.getElementById("orderFilter_os!id_order_state");
	obj_state.value=status;
	document.getElementById("filter_link").value="outOfStock";
	obj_state.form.submit();
}

function viewOrdersToShip(id_carrier){
	obj_carrier = document.getElementById("orderFilter_a!id_carrier_selected");
	obj_carrier.value=id_carrier;
	document.getElementById("filter_link").value="readyToShip";
	obj_carrier.form.submit();
}

function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
	return true;
}

function htmlentities(texte) {
	texte = texte.replace(/"/g,'&quot;'); // 34 22
	texte = texte.replace(/&/g,'&amp;'); // 38 26
	texte = texte.replace(/\'/g,'&#39;'); // 39 27
	texte = texte.replace(/</g,'&lt;'); // 60 3C
	texte = texte.replace(/>/g,'&gt;'); // 62 3E
	texte = texte.replace(/\^/g,'&circ;'); // 94 5E
	texte = texte.replace(/‘/g,'&lsquo;'); // 145 91
	texte = texte.replace(/’/g,'&rsquo;'); // 146 92
	texte = texte.replace(/“/g,'&ldquo;'); // 147 93
	texte = texte.replace(/”/g,'&rdquo;'); // 148 94
	texte = texte.replace(/•/g,'&bull;'); // 149 95
	texte = texte.replace(/–/g,'&ndash;'); // 150 96
	texte = texte.replace(/—/g,'&mdash;'); // 151 97
	texte = texte.replace(/˜/g,'&tilde;'); // 152 98
	texte = texte.replace(/™/g,'&trade;'); // 153 99
	texte = texte.replace(/š/g,'&scaron;'); // 154 9A
	texte = texte.replace(/›/g,'&rsaquo;'); // 155 9B
	texte = texte.replace(/œ/g,'&oelig;'); // 156 9C
	texte = texte.replace(//g,'&#357;'); // 157 9D
	texte = texte.replace(/ž/g,'&#382;'); // 158 9E
	texte = texte.replace(/Ÿ/g,'&Yuml;'); // 159 9F
	texte = texte.replace(/ /g,'&nbsp;'); // 160 A0
	texte = texte.replace(/¡/g,'&iexcl;'); // 161 A1
	texte = texte.replace(/¢/g,'&cent;'); // 162 A2
	texte = texte.replace(/£/g,'&pound;'); // 163 A3
	texte = texte.replace(/ /g,'&curren;'); // 164 A4
	texte = texte.replace(/¥/g,'&yen;'); // 165 A5
	texte = texte.replace(/¦/g,'&brvbar;'); // 166 A6
	texte = texte.replace(/§/g,'&sect;'); // 167 A7
	texte = texte.replace(/¨/g,'&uml;'); // 168 A8
	texte = texte.replace(/©/g,'&copy;'); // 169 A9
	texte = texte.replace(/ª/g,'&ordf;'); // 170 AA
	texte = texte.replace(/«/g,'&laquo;'); // 171 AB
	texte = texte.replace(/¬/g,'&not;'); // 172 AC
	texte = texte.replace(/­/g,'&shy;'); // 173 AD
	texte = texte.replace(/®/g,'&reg;'); // 174 AE
	texte = texte.replace(/¯/g,'&macr;'); // 175 AF
	texte = texte.replace(/°/g,'&deg;'); // 176 B0
	texte = texte.replace(/±/g,'&plusmn;'); // 177 B1
	texte = texte.replace(/²/g,'&sup2;'); // 178 B2
	texte = texte.replace(/³/g,'&sup3;'); // 179 B3
	texte = texte.replace(/´/g,'&acute;'); // 180 B4
	texte = texte.replace(/µ/g,'&micro;'); // 181 B5
	texte = texte.replace(/¶/g,'&para'); // 182 B6
	texte = texte.replace(/·/g,'&middot;'); // 183 B7
	texte = texte.replace(/¸/g,'&cedil;'); // 184 B8
	texte = texte.replace(/¹/g,'&sup1;'); // 185 B9
	texte = texte.replace(/º/g,'&ordm;'); // 186 BA
	texte = texte.replace(/»/g,'&raquo;'); // 187 BB
	texte = texte.replace(/¼/g,'&frac14;'); // 188 BC
	texte = texte.replace(/½/g,'&frac12;'); // 189 BD
	texte = texte.replace(/¾/g,'&frac34;'); // 190 BE
	texte = texte.replace(/¿/g,'&iquest;'); // 191 BF
	texte = texte.replace(/À/g,'&Agrave;'); // 192 C0
	texte = texte.replace(/Á/g,'&Aacute;'); // 193 C1
	texte = texte.replace(/Â/g,'&Acirc;'); // 194 C2
	texte = texte.replace(/Ã/g,'&Atilde;'); // 195 C3
	texte = texte.replace(/Ä/g,'&Auml;'); // 196 C4
	texte = texte.replace(/Å/g,'&Aring;'); // 197 C5
	texte = texte.replace(/Æ/g,'&AElig;'); // 198 C6
	texte = texte.replace(/Ç/g,'&Ccedil;'); // 199 C7
	texte = texte.replace(/È/g,'&Egrave;'); // 200 C8
	texte = texte.replace(/É/g,'&Eacute;'); // 201 C9
	texte = texte.replace(/Ê/g,'&Ecirc;'); // 202 CA
	texte = texte.replace(/Ë/g,'&Euml;'); // 203 CB
	texte = texte.replace(/Ì/g,'&Igrave;'); // 204 CC
	texte = texte.replace(/Í/g,'&Iacute;'); // 205 CD
	texte = texte.replace(/Î/g,'&Icirc;'); // 206 CE
	texte = texte.replace(/Ï/g,'&Iuml;'); // 207 CF
	texte = texte.replace(/Ð/g,'&ETH;'); // 208 D0
	texte = texte.replace(/Ñ/g,'&Ntilde;'); // 209 D1
	texte = texte.replace(/Ò/g,'&Ograve;'); // 210 D2
	texte = texte.replace(/Ó/g,'&Oacute;'); // 211 D3
	texte = texte.replace(/Ô/g,'&Ocirc;'); // 212 D4
	texte = texte.replace(/Õ/g,'&Otilde;'); // 213 D5
	texte = texte.replace(/Ö/g,'&Ouml;'); // 214 D6
	texte = texte.replace(/×/g,'&times;'); // 215 D7
	texte = texte.replace(/Ø/g,'&Oslash;'); // 216 D8
	texte = texte.replace(/Ù/g,'&Ugrave;'); // 217 D9
	texte = texte.replace(/Ú/g,'&Uacute;'); // 218 DA
	texte = texte.replace(/Û/g,'&Ucirc;'); // 219 DB
	texte = texte.replace(/Ü/g,'&Uuml;'); // 220 DC
	texte = texte.replace(/Ý/g,'&Yacute;'); // 221 DD
	texte = texte.replace(/Þ/g,'&THORN;'); // 222 DE
	texte = texte.replace(/ß/g,'&szlig;'); // 223 DF
	texte = texte.replace(/à/g,'&agrave;'); // 224 E0
	texte = texte.replace(/á/g,'&aacute;'); // 225 E1
	texte = texte.replace(/â/g,'&acirc;'); // 226 E2
	texte = texte.replace(/ã/g,'&atilde;'); // 227 E3
	texte = texte.replace(/ä/g,'&auml;'); // 228 E4
	texte = texte.replace(/å/g,'&aring;'); // 229 E5
	texte = texte.replace(/æ/g,'&aelig;'); // 230 E6
	texte = texte.replace(/ç/g,'&ccedil;'); // 231 E7
	texte = texte.replace(/è/g,'&egrave;'); // 232 E8
	texte = texte.replace(/é/g,'&eacute;'); // 233 E9
	texte = texte.replace(/ê/g,'&ecirc;'); // 234 EA
	texte = texte.replace(/ë/g,'&euml;'); // 235 EB
	texte = texte.replace(/ì/g,'&igrave;'); // 236 EC
	texte = texte.replace(/í/g,'&iacute;'); // 237 ED
	texte = texte.replace(/î/g,'&icirc;'); // 238 EE
	texte = texte.replace(/ï/g,'&iuml;'); // 239 EF
	texte = texte.replace(/ð/g,'&eth;'); // 240 F0
	texte = texte.replace(/ñ/g,'&ntilde;'); // 241 F1
	texte = texte.replace(/ò/g,'&ograve;'); // 242 F2
	texte = texte.replace(/ó/g,'&oacute;'); // 243 F3
	texte = texte.replace(/ô/g,'&ocirc;'); // 244 F4
	texte = texte.replace(/õ/g,'&otilde;'); // 245 F5
	texte = texte.replace(/ö/g,'&ouml;'); // 246 F6
	texte = texte.replace(/÷/g,'&divide;'); // 247 F7
	texte = texte.replace(/ø/g,'&oslash;'); // 248 F8
	texte = texte.replace(/ù/g,'&ugrave;'); // 249 F9
	texte = texte.replace(/ú/g,'&uacute;'); // 250 FA
	texte = texte.replace(/û/g,'&ucirc;'); // 251 FB
	texte = texte.replace(/ü/g,'&uuml;'); // 252 FC
	texte = texte.replace(/ý/g,'&yacute;'); // 253 FD
	texte = texte.replace(/þ/g,'&thorn;'); // 254 FE
	texte = texte.replace(/ÿ/g,'&yuml;'); // 255 FF
	return texte;
}
//Décode une chaîne
function html_entity_decode(texte) {
	texte = texte.replace(/&quot;/g,'"'); // 34 22
	texte = texte.replace(/&amp;/g,'&'); // 38 26	
	texte = texte.replace(/&#39;/g,"'"); // 39 27
	texte = texte.replace(/&lt;/g,'<'); // 60 3C
	texte = texte.replace(/&gt;/g,'>'); // 62 3E
	texte = texte.replace(/&circ;/g,'^'); // 94 5E
	texte = texte.replace(/&lsquo;/g,'‘'); // 145 91
	texte = texte.replace(/&rsquo;/g,'’'); // 146 92
	texte = texte.replace(/&ldquo;/g,'“'); // 147 93
	texte = texte.replace(/&rdquo;/g,'”'); // 148 94
	texte = texte.replace(/&bull;/g,'•'); // 149 95
	texte = texte.replace(/&ndash;/g,'–'); // 150 96
	texte = texte.replace(/&mdash;/g,'—'); // 151 97
	texte = texte.replace(/&tilde;/g,'˜'); // 152 98
	texte = texte.replace(/&trade;/g,'™'); // 153 99
	texte = texte.replace(/&scaron;/g,'š'); // 154 9A
	texte = texte.replace(/&rsaquo;/g,'›'); // 155 9B
	texte = texte.replace(/&oelig;/g,'œ'); // 156 9C
	texte = texte.replace(/&#357;/g,''); // 157 9D
	texte = texte.replace(/&#382;/g,'ž'); // 158 9E
	texte = texte.replace(/&Yuml;/g,'Ÿ'); // 159 9F
	texte = texte.replace(/&nbsp;/g,' '); // 160 A0
	texte = texte.replace(/&iexcl;/g,'¡'); // 161 A1
	texte = texte.replace(/&cent;/g,'¢'); // 162 A2
	texte = texte.replace(/&pound;/g,'£'); // 163 A3
	texte = texte.replace(/&curren;/g,' '); // 164 A4
	texte = texte.replace(/&yen;/g,'¥'); // 165 A5
	texte = texte.replace(/&brvbar;/g,'¦'); // 166 A6
	texte = texte.replace(/&sect;/g,'§'); // 167 A7
	texte = texte.replace(/&uml;/g,'¨'); // 168 A8
	texte = texte.replace(/&copy;/g,'©'); // 169 A9
	texte = texte.replace(/&ordf;/g,'ª'); // 170 AA
	texte = texte.replace(/&laquo;/g,'«'); // 171 AB
	texte = texte.replace(/&not;/g,'¬'); // 172 AC
	texte = texte.replace(/&shy;/g,'­'); // 173 AD
	texte = texte.replace(/&reg;/g,'®'); // 174 AE
	texte = texte.replace(/&macr;/g,'¯'); // 175 AF
	texte = texte.replace(/&deg;/g,'°'); // 176 B0
	texte = texte.replace(/&plusmn;/g,'±'); // 177 B1
	texte = texte.replace(/&sup2;/g,'²'); // 178 B2
	texte = texte.replace(/&sup3;/g,'³'); // 179 B3
	texte = texte.replace(/&acute;/g,'´'); // 180 B4
	texte = texte.replace(/&micro;/g,'µ'); // 181 B5
	texte = texte.replace(/&para/g,'¶'); // 182 B6
	texte = texte.replace(/&middot;/g,'·'); // 183 B7
	texte = texte.replace(/&cedil;/g,'¸'); // 184 B8
	texte = texte.replace(/&sup1;/g,'¹'); // 185 B9
	texte = texte.replace(/&ordm;/g,'º'); // 186 BA
	texte = texte.replace(/&raquo;/g,'»'); // 187 BB
	texte = texte.replace(/&frac14;/g,'¼'); // 188 BC
	texte = texte.replace(/&frac12;/g,'½'); // 189 BD
	texte = texte.replace(/&frac34;/g,'¾'); // 190 BE
	texte = texte.replace(/&iquest;/g,'¿'); // 191 BF
	texte = texte.replace(/&Agrave;/g,'À'); // 192 C0
	texte = texte.replace(/&Aacute;/g,'Á'); // 193 C1
	texte = texte.replace(/&Acirc;/g,'Â'); // 194 C2
	texte = texte.replace(/&Atilde;/g,'Ã'); // 195 C3
	texte = texte.replace(/&Auml;/g,'Ä'); // 196 C4
	texte = texte.replace(/&Aring;/g,'Å'); // 197 C5
	texte = texte.replace(/&AElig;/g,'Æ'); // 198 C6
	texte = texte.replace(/&Ccedil;/g,'Ç'); // 199 C7
	texte = texte.replace(/&Egrave;/g,'È'); // 200 C8
	texte = texte.replace(/&Eacute;/g,'É'); // 201 C9
	texte = texte.replace(/&Ecirc;/g,'Ê'); // 202 CA
	texte = texte.replace(/&Euml;/g,'Ë'); // 203 CB
	texte = texte.replace(/&Igrave;/g,'Ì'); // 204 CC
	texte = texte.replace(/&Iacute;/g,'Í'); // 205 CD
	texte = texte.replace(/&Icirc;/g,'Î'); // 206 CE
	texte = texte.replace(/&Iuml;/g,'Ï'); // 207 CF
	texte = texte.replace(/&ETH;/g,'Ð'); // 208 D0
	texte = texte.replace(/&Ntilde;/g,'Ñ'); // 209 D1
	texte = texte.replace(/&Ograve;/g,'Ò'); // 210 D2
	texte = texte.replace(/&Oacute;/g,'Ó'); // 211 D3
	texte = texte.replace(/&Ocirc;/g,'Ô'); // 212 D4
	texte = texte.replace(/&Otilde;/g,'Õ'); // 213 D5
	texte = texte.replace(/&Ouml;/g,'Ö'); // 214 D6
	texte = texte.replace(/&times;/g,'×'); // 215 D7
	texte = texte.replace(/&Oslash;/g,'Ø'); // 216 D8
	texte = texte.replace(/&Ugrave;/g,'Ù'); // 217 D9
	texte = texte.replace(/&Uacute;/g,'Ú'); // 218 DA
	texte = texte.replace(/&Ucirc;/g,'Û'); // 219 DB
	texte = texte.replace(/&Uuml;/g,'Ü'); // 220 DC
	texte = texte.replace(/&Yacute;/g,'Ý'); // 221 DD
	texte = texte.replace(/&THORN;/g,'Þ'); // 222 DE
	texte = texte.replace(/&szlig;/g,'ß'); // 223 DF
	texte = texte.replace(/&agrave;/g,'à'); // 224 E0
	texte = texte.replace(/&aacute;/g,'á'); // 225 E1
	texte = texte.replace(/&acirc;/g,'â'); // 226 E2
	texte = texte.replace(/&atilde;/g,'ã'); // 227 E3
	texte = texte.replace(/&auml;/g,'ä'); // 228 E4
	texte = texte.replace(/&aring;/g,'å'); // 229 E5
	texte = texte.replace(/&aelig;/g,'æ'); // 230 E6
	texte = texte.replace(/&ccedil;/g,'ç'); // 231 E7
	texte = texte.replace(/&egrave;/g,'è'); // 232 E8
	texte = texte.replace(/&eacute;/g,'é'); // 233 E9
	texte = texte.replace(/&ecirc;/g,'ê'); // 234 EA
	texte = texte.replace(/&euml;/g,'ë'); // 235 EB
	texte = texte.replace(/&igrave;/g,'ì'); // 236 EC
	texte = texte.replace(/&iacute;/g,'í'); // 237 ED
	texte = texte.replace(/&icirc;/g,'î'); // 238 EE
	texte = texte.replace(/&iuml;/g,'ï'); // 239 EF
	texte = texte.replace(/&eth;/g,'ð'); // 240 F0
	texte = texte.replace(/&ntilde;/g,'ñ'); // 241 F1
	texte = texte.replace(/&ograve;/g,'ò'); // 242 F2
	texte = texte.replace(/&oacute;/g,'ó'); // 243 F3
	texte = texte.replace(/&ocirc;/g,'ô'); // 244 F4
	texte = texte.replace(/&otilde;/g,'õ'); // 245 F5
	texte = texte.replace(/&ouml;/g,'ö'); // 246 F6
	texte = texte.replace(/&divide;/g,'÷'); // 247 F7
	texte = texte.replace(/&oslash;/g,'ø'); // 248 F8
	texte = texte.replace(/&ugrave;/g,'ù'); // 249 F9
	texte = texte.replace(/&uacute;/g,'ú'); // 250 FA
	texte = texte.replace(/&ucirc;/g,'û'); // 251 FB
	texte = texte.replace(/&uuml;/g,'ü'); // 252 FC
	texte = texte.replace(/&yacute;/g,'ý'); // 253 FD
	texte = texte.replace(/&thorn;/g,'þ'); // 254 FE
	texte = texte.replace(/&yuml;/g,'ÿ'); // 255 FF
	return texte;
}


function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

function resize_container()
{
	table = document.getElementById("table_tab_order");
	if(table == null){
		table = document.getElementById("table_tab_category");
	}
	if(table == null){
		table = document.getElementById("table_tab_product");
	}
	if((table != null) && (table.clientWidth > 960)){
		document.getElementById("container").style.width=(table.clientWidth+40)+"px";
	}
}

function openPopup(url, title, width, height, top, left)
{
	var options;
	var sizes;
	var win;

	options = 'toolbar=0, location=0, directories=0, statfr=no, menubar=0, scrollbars=yes, resizable=yes';
	sizes = 'width='+width+', height='+height+', top='+top+', left='+left+'';
	win = window.open(url, title, options+', '+sizes);
	//win.focus();
}


/********* AJAX *******************/

function updateCarrierSelected(object){
	tmp = object.parentNode.parentNode.id.split("-");
	date = document.getElementById("showShippingDate_"+tmp[2])
	if(object.value == 8){//Benito
		date.style.visibility = 'visible';
		date.style.display='block';
	}
	else{
		date.style.visibility = 'hidden';
		date.style.display='none';
	}
	ajax_power_order('submitAddorder', 'id_order', tmp[1], object.value, tmp[2], document.getElementById("token_ajax").value);
}

function updateOrderProduct(object, other)
{
	tmp = new Array();
	if(typeof other != "undefined")
	{
		tmp = object.id.split("-");
		object_tmp = document.getElementById("td-"+other+"-"+tmp[2]);
		
		flag = true;
		for(i = 0; (i < object_tmp.childNodes.length) && flag; ++i)
		{
			flag = !(object_tmp.childNodes[i].id.indexOf(other) === 0);
		}
		
		object = object_tmp.childNodes[i-1];
		ajax_power_order('submitAddorder_detail', 'id_order_detail', other, object.value, tmp[2], document.getElementById("token_ajax").value);
	}
	else
	{
		tmp = object.parentNode.id.split("-");
		ajax_power_order('submitAddorder_detail', 'id_order_detail', tmp[1], object.value, tmp[2], document.getElementById("token_ajax").value);
	}
}

function updateQuantityToShip(object, other)
{
	tmp = object.id.split("-");
	object_td = document.getElementById("td-"+other+"-"+tmp[2]);
	
	var flag = null;
	for(i = 0; (i < object_td.childNodes.length) && (flag == null); ++i)
	{
		if(object_td.childNodes[i].id.indexOf(other) === 0)
			flag = object_td.childNodes[i];
		else{
			object_div = object_td.childNodes[i];
			for(j = 0; (j < object_div.childNodes.length) && (flag== null); ++i)
			{
				if(object_div.childNodes[j].id.indexOf(other) === 0)
					flag = object_div.childNodes[j];
			}
		}
	}
	
	ajax_power_order('submitAddorder_detail', 'id_order_detail', other, flag.value, tmp[2], document.getElementById("token_ajax").value);

}

function updateDateShipping(div){
	tmp = div.id.split("_");
	date = document.getElementById("shippingDate_"+tmp[1]).value;
	ajax_power_order_with_colors('submitAddorder', 'id_order', 'shippingDate', date, tmp[1], document.getElementById("token_ajax").value, 'td-id_carrier_selected-'+tmp[1]);
}

function request_successCustom() {
	if(object_updating != null){
		object_updating.style.backgroundColor = "forestgreen";
		setTimeout(function() {
				object_updating.style.backgroundColor = "";
				object_updating = null;
			}, 1000);
	}
	document.getElementById('ajax_confirmation').innerHTML = '<span class="green bold">'+lang[0]+'</span>';
}

function request_successShipping() {
	document.getElementById("ajax_activity_shipping").innerHTML = '<td colspan="4" style="height: 25px;"><span class="green bold">'+lang[5]+'</span></td>';
//	window.location.href="download.php?id_carrier="+parseInt(carrier);
	document.getElementById("carrier_refresh").value=parseInt(carrier);
	document.forms["refresh"].submit();
	carrier='';
}

function request_successAccountCreate() {
	document.getElementById("ajax_activity").innerHTML = '<span style="color:green;">'+lang[2]+'</span>';
}

function request_successLinkedCategory() {
	alert("Mise à jour effectuée");
	//document.getElementById("ajax_activity").innerHTML = '<span style="color:green;">'+lang[2]+'</span>';
}

function request_successManufacturerCode() {
	alert("Mise à jour effectuée");
	//document.getElementById("ajax_activity").innerHTML = '<span style="color:green;">'+lang[2]+'</span>';
}

function request_failedCustomText(text) {
	if(object_updating != null){
		object_updating.style.backgroundColor = "#FF0000";
		object_updating = null;
	}
	document.getElementById('ajax_confirmation').innerHTML = '<span class="red bold">'+text+'</span>';
	alert(html_entity_decode(text));
}

function request_failedCustom() {
	request_failedCustomText(lang[1]);
}

function request_failedShippingText(text) {
	carrier= '';
	document.getElementById("ajax_activity_shipping").innerHTML = '<td colspan="4" style="height: 25px;"><span class="red bold">'+text+'</span></td>';
	alert(html_entity_decode(text));
}

function request_failedShipping() {
	request_failedShippingText(lang[1]);
}

function request_failedAccountCreate() {
	document.getElementById("ajax_activity").innerHTML = '<span style="color:red;">'+lang[1]+'</span>';
}

function request_failedAccountCreate(text) {
	document.getElementById("ajax_activity").innerHTML = '<span style="color:red;">'+text+'</span>';
}

function request_failedLinkedCategory() {
	alert("Une erreur est survenue lors de la mise à jour");
	//document.getElementById("ajax_activity").innerHTML = '<span style="color:red;">'+lang[1]+'</span>';
}

function request_failedManufacturerCode(){
	alert("Une erreur est survenue lors de la mise à jour");
	//document.getElementById("ajax_activity").innerHTML = '<span style="color:red;">'+lang[1]+'</span>';
}

function request_failedManufacturerCode(text){
	alert("Une erreur est survenue lors de la mise à jour : "+ text);
	//document.getElementById("ajax_activity").innerHTML = '<span style="color:red;">'+lang[1]+'</span>';
}

function onQueryChangeOrdersToShip(funcSuccess, funcFailed, funcFailedText) {
 	if (query.readyState == 4 && query.status == 200)
 	{
 		//alert(query.responseText);
 		tmp = query.responseText.split("_");
 		if(tmp[0].valueOf() == 0){
 			if(typeof tmp[1] != 'undefined'){
 				funcFailedText.call(undefined,tmp[1]);
 			}
 			else funcFailed.call();
 		}
 		else if(tmp[0].valueOf() == 1){
 			if(typeof tmp[1] != 'undefined'){
 				tmp = tmp[1].split("|");
 				if((tmp.length >0) && (tmp != '')){
	 				for (i=0; i< tmp.length; ++i){
	 					values = tmp[i].split("=");
	 					document.getElementById('view_nb_to_ship_'+values[0]).innerHTML = values[1];
	 					button = document.getElementById('submitOrdersToShip_'+values[0]);
	 					if(parseInt(values[1]) == 0){
	 						button.setAttribute("class","button disabled");
	 						button.setAttribute("disabled","disabled");
	 					}
	 					else{
	 						button.setAttribute("class","button");
	 						button.removeAttribute("disabled");
	 					}
	 				}
 				}
 			}
 			funcSuccess.call();
 		}
 		else funcFailed.call();
 	}
}

function onQueryChangeCustom(){
	onQueryChangeOrdersToShip(request_successCustom, request_failedCustom, request_failedCustomText);
}

function onQueryChangeShipping(){
	onQueryChangeOrdersToShip(request_successShipping, request_failedShipping, request_failedShippingText);
}


function onQueryChangeAccountCreate() {
	if (query.readyState == 4 && query.status == 200)
 	{
		tmp = query.responseText.split("_");
 		if(tmp[0].valueOf() == 0){
 			if(typeof tmp[1] != 'undefined'){
 				request_failedAccountCreate(tmp[1]);
 			}
 			else request_failedAccountCreate();
 		}
 		else if(tmp[0].valueOf() == 1){
 			request_successAccountCreate();
 		}
 		else request_failedAccountCreate();
 	}
}

function onQueryChangeLinkedCategory() {
	if (query.readyState == 4 && query.status == 200)
 	{
 		if(query.responseText.valueOf() == 0){
 			request_failedLinkedCategory();
 		}
 		else{
 			request_successLinkedCategory();
 		}
 	}
}

function onQueryChangeManufacturerCode() {
	if (query.readyState == 4 && query.status == 200)
 	{
		tmp = query.responseText.split("_");
		if(tmp[0].valueOf() == 0){
			if(typeof tmp[1] != undefined){
				request_failedManufacturerCode(tmp[1]);
			}
			else request_failedManufacturerCode();
		}
		else if(tmp[0].valueOf() == 1){
			request_successManufacturerCode();
		}
		else request_failedManufacturerCode();
 	}
}

function showActivityCustom() {
 	if(object_updating != null){
		object_updating.style.backgroundColor = "#DADADA";
	}
 	document.getElementById('ajax_confirmation').innerHTML = '<span class="bold">'+lang[2]+'</span>';
}

function showActivityShipping(){
	document.getElementById("ajax_activity_shipping").innerHTML = '<td colspan="4" style="height: 25px;"><span class="bold">'+lang[4]+'</span></td>';
}

function showActivityAccountCreate(){
	document.getElementById("ajax_activity").innerHTML = '<span style="color:black;">'+lang[0]+'</span>';
}


function showActivityLinkedCategory(){
//	document.getElementById("ajax_activity").innerHTML = '<span style="color:black;">'+lang[0]+'</span>';
}

function showActivityManufacturerCode(){
//	document.getElementById("ajax_activity").innerHTML = '<span style="color:black;">'+lang[0]+'</span>';
}


function ajax_powerCustom(file, item, funcChange, funcActivity, funcFailed)
{
	query = getQuery();
	if (query != null) {
	 	try {
		 	query.open('POST', file, true);
		 	query.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		 	query.onreadystatechange = funcChange;
		 	query.send(item);
		 	funcActivity.call();
		}
		catch(exc) {
			funcFailed.call();
		}
	}
	else
		alert(html_entity_decode(lang[3]));
}

function ajax_power_validate_shipping(id_carrier, token){
	carrier= id_carrier;
	ajax_powerCustom('index.php?tab=AdminOrdersExtended',
					'submitOrdersToShip=1&id_carrier='+parseInt(id_carrier)+'&token='+token,
					onQueryChangeShipping, 
					showActivityShipping,
					request_failedShipping);
}

function ajax_power_order(form_name,id_name,type, value, id_order, token){
	ajax_power_order_with_colors(form_name,id_name,type, value, id_order, token, 'td-'+type+'-'+id_order);
}

function ajax_power_order_with_colors(form_name,id_name,type, value, id_order, token, td_name){
	object_updating = document.getElementById(td_name);
	ajax_powerCustom('index.php?tab=AdminOrdersExtended',
			form_name+'=1&'+type+'='+value+'&'+id_name+'='+parseInt(id_order)+'&token='+token,
			onQueryChangeCustom,
			showActivityCustom,
			request_failedCustom);
}


function ajax_power_validate_email(email){
	if(email != ''){
		ajax_powerCustom('authentication.php',
			'SubmitCreate=1&email='+email,
			onQueryChangeAccountCreate, 
			showActivityAccountCreate,
			request_failedAccountCreate);
	}
}

function ajax_power_delete_linked_category(current_categ, linked_categ, token){
	ajax_powerCustom('index.php?tab=AdminCatalog',
			'id_category='+current_categ+'&SubmitLinkedcategories=1&id_current_categ='+current_categ+'&id_delete_category='+linked_categ+'&token='+token,
			onQueryChangeLinkedCategory, 
			showActivityLinkedCategory,
			request_failedLinkedCategory);
}

function ajax_power_add_linked_category(current_categ, linked_categ, token){
	ajax_powerCustom('index.php?tab=AdminCatalog',
			'id_category='+current_categ+'&SubmitLinkedcategories=1&id_current_categ='+current_categ+'&id_add_category='+linked_categ+'&token='+token,
			onQueryChangeLinkedCategory, 
			showActivityLinkedCategory,
			request_failedLinkedCategory);
}


function ajax_power_delete_manufacturer_code(id_manufacturer, code, token){
	ajax_powerCustom('index.php?tab=AdminManufacturersExtended',
			'id_manufacturer='+id_manufacturer+'&SubmitDeleteCode=1&code='+code+'&token='+token,
			onQueryChangeManufacturerCode, 
			showActivityManufacturerCode,
			request_failedManufacturerCode);
}

function ajax_power_add_manufacturer_code(id_manufacturer, code, token){
	ajax_powerCustom('index.php?tab=AdminManufacturersExtended',
			'id_manufacturer='+id_manufacturer+'&SubmitAddCode=1&code='+code+'&token='+token,
			onQueryChangeManufacturerCode, 
			showActivityManufacturerCode,
			request_failedManufacturerCode);
}

window.onload=function(){
	init(); 
	if(document.URL.indexOf('admin') != -1)
	{
		xtooltip.init(); 
		resize_container();
		completion(); 
	} 
};  // 
