{"content":"\r\n\r\n
Voir la fiche produit<\/a><\/p>\n <\/div>\n<\/div>\t\t\t\t<\/div>\r\n <\/div>\r\n \r\n \r\n \r\n \r\n Overview<\/a><\/li>\r\n Description<\/a><\/li>\r\n <\/ul>\r\n <\/div>\r\n \r\n \r\n Bracelet de Gravure & Ange Gardien Charm 925\/- argent poli<\/strong><\/a>\r\n \r\n \n\n \n \n \n 99,00\u00a0\u20ac<\/span>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/br>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tincl. TVA\t\t\t\t\t\t19%\t\t\t\t\t\t<\/br>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tincl. frais de port<\/a>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/br>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t <\/span>\n \n <\/div>\n\n \n on sale!<\/span>\r\n <\/div>\r\n \r\n \r\n \r\n 5 Commentaire(s)<\/a>\r\n |<\/span>\r\n Add a Review<\/a>\r\n <\/p>\r\n <\/div>\r\n <\/div>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \n \n\n \n \n Gravure bracel\u00e9 d\u2019enfant grav\u00e9<\/label>\n +10,00\u00a0\u20ac<\/span><\/span><\/dt>\n\n \n \n Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n Gravure bracel\u00e9 - enfant grav\u00e9 - Face arri\u00e8re<\/label>\n +10,00\u00a0\u20ac<\/span><\/span><\/dt>\n\n \n \n Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n <\/dl>\n\n\n <\/div>\n\n\r\n\r\n \n \t\tQuantit\u00e9<\/label>\n \n \t<\/div>\n Ajouter au panier<\/span><\/span><\/button>\n <\/div>\r\n<\/div>\r\n\r\n <\/fieldset>\r\n <\/form>\r\n \r\n <\/div>\r\n \r\n \r\n Les amulettes sont un grand th\u00e8me dans l\u2019air du temps pour les bijoux. Pour r\u00e9pondre \u00e0 cette demande, Tarnoki a dispos\u00e9 une amulette ange gardien d\u2019une taille de 12 millim\u00e8tres. Cette amulette est le cadeau id\u00e9al pour un souvenir durable du bon temps pass\u00e9 ensemble.\r\n\r\nElle peut s\u2019int\u00e9grer facilement dans un bracelet grav\u00e9 gr\u00e2ce \u00e0 un crochet \u00e0 mousqueton ou bien dans un autre syst\u00e8me d\u2019amulette.\r\n\r\nSp\u00e9cialement con\u00e7u pour s\u2019adapter \u00e0 nos amulettes ange gardien, nous vous proposons un bracelet d\u2019enfant grav\u00e9 en argent 925 avec crochet \u00e0 mousqueton. On peut graver sur le bracelet un nom ou une d\u00e9dicace. Ce bijou rev\u00eat ainsi un aspect compl\u00e8tement personnel.\r\n\r\nLe label de qualit\u00e9 \u201eSwiss Made\u201c garantit une confection de la meilleure qualit\u00e9. <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n<\/div>\r\n\r\n\r\n\r\n","scripts":["\r\n var optionsPrice = new Product.OptionsPrice({\"productId\":\"91\",\"priceFormat\":{\"pattern\":\"%s\\u00a0\\u20ac\",\"precision\":2,\"requiredPrecision\":2,\"decimalSymbol\":\",\",\"groupSymbol\":\"\\u00a0\",\"groupLength\":3,\"integerRequired\":1},\"includeTax\":\"true\",\"showIncludeTax\":true,\"showBothPrices\":false,\"productPrice\":99,\"productOldPrice\":99,\"priceInclTax\":99,\"priceExclTax\":99,\"skipCalculate\":1,\"defaultTax\":19,\"currentTax\":19,\"idSuffix\":\"_clone\",\"oldPlusDisposition\":0,\"plusDisposition\":0,\"plusDispositionTax\":0,\"oldMinusDisposition\":0,\"minusDisposition\":0,\"tierPrices\":[],\"tierPricesInclTax\":[]});\r\n","\n\nvar DateOption = Class.create({\n\n getDaysInMonth: function(month, year)\n {\n var curDate = new Date();\n if (!month) {\n month = curDate.getMonth();\n }\n if (2 == month && !year) { \/\/ leap year assumption for unknown year\n return 29;\n }\n if (!year) {\n year = curDate.getFullYear();\n }\n return 32 - new Date(year, month - 1, 32).getDate();\n },\n\n reloadMonth: function(event)\n {\n var selectEl = event.findElement();\n var idParts = selectEl.id.split(\"_\");\n if (idParts.length != 3) {\n return false;\n }\n var optionIdPrefix = idParts[0] + \"_\" + idParts[1];\n var month = parseInt($(optionIdPrefix + \"_month\").value);\n var year = parseInt($(optionIdPrefix + \"_year\").value);\n var dayEl = $(optionIdPrefix + \"_day\");\n\n var days = this.getDaysInMonth(month, year);\n\n \/\/remove days\n for (var i = dayEl.options.length - 1; i >= 0; i--) {\n if (dayEl.options[i].value > days) {\n dayEl.remove(dayEl.options[i].index);\n }\n }\n\n \/\/ add days\n var lastDay = parseInt(dayEl.options[dayEl.options.length-1].value);\n for (i = lastDay + 1; i <= days; i++) {\n this.addOption(dayEl, i, i);\n }\n },\n\n addOption: function(select, text, value)\n {\n var option = document.createElement('OPTION');\n option.value = value;\n option.text = text;\n\n if (select.options.add) {\n select.options.add(option);\n } else {\n select.appendChild(option);\n }\n }\n});\ndateOption = new DateOption();\n\n","\n \n var optionFileUpload = {\n productForm : $('product_addtocart_form'),\n formAction : '',\n formElements : {},\n upload : function(element){\n this.formElements = this.productForm.select('input', 'select', 'textarea', 'button');\n this.removeRequire(element.readAttribute('id').sub('option_', ''));\n\n template = '<\\\/iframe>';\n\n Element.insert($('option_'+element.readAttribute('id').sub('option_', '')+'_uploaded_file'), {after: template});\n\n this.formAction = this.productForm.action;\n\n var baseUrl = 'https:\/\/www.tarnoki.com\/eu_fr\/catalog\/product\/upload\/';\n var urlExt = 'option_id\/'+element.readAttribute('id').sub('option_', '');\n\n this.productForm.action = parseSidUrl(baseUrl, urlExt);\n this.productForm.target = 'upload_target';\n this.productForm.submit();\n this.productForm.target = '';\n this.productForm.action = this.formAction;\n },\n removeRequire : function(skipElementId){\n for(var i=0; i<\\\/a>Remove file<\\\/a>';\n\n Element.insert($('option_'+data.optionId+'_uploaded_file'), {after: template});\n }\n },\n removeFile : function(optionId)\n {\n $('option_'+optionId+'_uploaded_file').value= '';\n $('option_'+optionId+'_file').show();\n $('option_'+optionId+'').show();\n\n $('option_'+optionId+'_file_box').remove();\n }\n }\n var optionTextCounter = {\n count : function(field,cntfield,maxlimit){\n if (field.value.length > maxlimit){\n field.value = field.value.substring(0, maxlimit);\n } else {\n cntfield.innerHTML = maxlimit - field.value.length;\n }\n }\n }\n\n Product.Options = Class.create();\n Product.Options.prototype = {\n initialize : function(config) {\n this.config = config;\n this.reloadPrice();\n document.observe(\"dom:loaded\", this.reloadPrice.bind(this));\n },\n reloadPrice : function() {\n var config = this.config;\n var skipIds = [];\n $$('body .product-custom-option').each(function(element){\n var optionId = 0;\n element.name.sub(\/[0-9]+\/, function(match){\n optionId = parseInt(match[0], 10);\n });\n if (config[optionId]) {\n var configOptions = config[optionId];\n var curConfig = {price: 0};\n if (element.type == 'checkbox' || element.type == 'radio') {\n if (element.checked) {\n if (typeof configOptions[element.getValue()] != 'undefined') {\n curConfig = configOptions[element.getValue()];\n }\n }\n } else if(element.hasClassName('datetime-picker') && !skipIds.include(optionId)) {\n dateSelected = true;\n $$('.product-custom-option[id^=\"options_' + optionId + '\"]').each(function(dt){\n if (dt.getValue() == '') {\n dateSelected = false;\n }\n });\n if (dateSelected) {\n curConfig = configOptions;\n skipIds[optionId] = optionId;\n }\n } else if(element.type == 'select-one' || element.type == 'select-multiple') {\n if ('options' in element) {\n $A(element.options).each(function(selectOption){\n if ('selected' in selectOption && selectOption.selected) {\n if (typeof(configOptions[selectOption.value]) != 'undefined') {\n curConfig = configOptions[selectOption.value];\n }\n }\n });\n }\n } else {\n if (element.getValue().strip() != '') {\n curConfig = configOptions;\n }\n }\n if(element.type == 'select-multiple' && ('options' in element)) {\n $A(element.options).each(function(selectOption) {\n if (('selected' in selectOption) && typeof(configOptions[selectOption.value]) != 'undefined') {\n if (selectOption.selected) {\n curConfig = configOptions[selectOption.value];\n } else {\n curConfig = {price: 0};\n }\n optionsPrice.addCustomPrices(optionId + '-' + selectOption.value, curConfig);\n optionsPrice.reload();\n }\n });\n } else {\n optionsPrice.addCustomPrices(element.id || optionId, curConfig);\n optionsPrice.reload();\n }\n }\n });\n }\n }\n function validateOptionsCallback(elmId, result) {\n var container = $(elmId).up('ul.options-list');\n if (result == 'failed') {\n container.removeClassName('validation-passed');\n container.addClassName('validation-failed');\n } else {\n container.removeClassName('validation-failed');\n container.addClassName('validation-passed');\n }\n }\n var opConfig = new Product.Options({\"81\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10},\"80\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10}});\n \n ","\n\nenUS = {\"m\":{\"wide\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"abbr\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}}; \/\/ en_US locale reference\nCalendar._DN = [\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"]; \/\/ full day names\nCalendar._SDN = [\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"]; \/\/ short day names\nCalendar._FD = 1; \/\/ First day of the week. \"0\" means display Sunday first, \"1\" means display Monday first, etc.\nCalendar._MN = [\"janvier\",\"f\\u00e9vrier\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"ao\\u00fbt\",\"septembre\",\"octobre\",\"novembre\",\"d\\u00e9cembre\"]; \/\/ full month names\nCalendar._SMN = [\"janv.\",\"f\\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\\u00e9c.\"]; \/\/ short month names\nCalendar._am = \"AM\"; \/\/ am\/pm\nCalendar._pm = \"PM\";\n\n\/\/ tooltips\nCalendar._TT = {};\nCalendar._TT[\"INFO\"] = \"\u00c0 propos du calendrier\";\n\nCalendar._TT[\"ABOUT\"] =\n\"S\u00e9lecteur de date\/heure DHTML\\n\" +\n\"(c) dynarch.com 2002-2005 \/ Author: Mihai Bazon\\n\" +\n\"Pour la visite de la derni\u00e8re version : http:\/\/www.dynarch.com\/projects\/calendar\/\\n\" +\n\"Distribu\u00e9 sous licence GNU LGPL. Voir http:\/\/gnu.org\/licenses\/lgpl.html pour plus de d\u00e9tails.\" +\n\"\\n\\n\" +\n\"S\u00e9lection de date :\\n\" +\n\"- Utilisez les boutons \\xab, \\xbb pour s\u00e9lectionner l\\'ann\u00e9e\\n\" +\n\"- Utilisez les boutons \" + String.fromCharCode(0x2039) + \", \" + String.fromCharCode(0x203a) + \" pour s\u00e9lectionner le mois\\n\" +\n\"- Maintenez le bouton de la souris sur n\\'importe quel bouton ci-dessus pour une s\u00e9lection rapide\";\nCalendar._TT[\"ABOUT_TIME\"] = \"\\n\\n\" +\n\"S\u00e9lection de l\\'heure :\\n\" +\n\"- Cliquez sur n\\'importe quelle partie de l\\'heure pour l\\'augmenter\\n\" +\n\"- ou cliquez en maintenant la touche shift enfonc\u00e9e pour l\\'augmenter\\n\" +\n\"- ou cliquez et glissez pour une s\u00e9lection plus rapide\";\n\nCalendar._TT[\"PREV_YEAR\"] = \"Ann\u00e9e pr\u00e9c\u00e9dente (maintenez pour le menu)\";\nCalendar._TT[\"PREV_MONTH\"] = \"Mois pr\u00e9c\u00e9dent (maintenez pour le menu)\";\nCalendar._TT[\"GO_TODAY\"] = \"Aller \u00e0 aujourd\\'hui\";\nCalendar._TT[\"NEXT_MONTH\"] = \"Mois suivant (maintenez pour le menu)\";\nCalendar._TT[\"NEXT_YEAR\"] = \"Ann\u00e9e prochaine (maintenez pour le menu)\";\nCalendar._TT[\"SEL_DATE\"] = \"S\u00e9lectionner la date\";\nCalendar._TT[\"DRAG_TO_MOVE\"] = \"Glisser pour d\u00e9placer\";\nCalendar._TT[\"PART_TODAY\"] = ' (' + \"aujourd\\u2019hui\" + ')';\n\n\/\/ the following is to inform that \"%s\" is to be the first day of week\nCalendar._TT[\"DAY_FIRST\"] = \"Afficher d\\'abord %s\";\n\n\/\/ This may be locale-dependent. It specifies the week-end days, as an array\n\/\/ of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1\n\/\/ means Monday, etc.\nCalendar._TT[\"WEEKEND\"] = \"0,6\";\n\nCalendar._TT[\"CLOSE\"] = \"Fermer\";\nCalendar._TT[\"TODAY\"] = \"aujourd\\u2019hui\";\nCalendar._TT[\"TIME_PART\"] = \"Pour modifier la valeur, cliquez en maintenant la touche shift enfonc\u00e9e ou glissez\";\n\n\/\/ date formats\nCalendar._TT[\"DEF_DATE_FORMAT\"] = \"%e %b %Y\";\nCalendar._TT[\"TT_DATE_FORMAT\"] = \"%e %B %Y\";\n\nCalendar._TT[\"WK\"] = \"semaine\";\nCalendar._TT[\"TIME\"] = \"Heure :\";\n\n","decorateGeneric($$('#product-options-wrapper dl'), ['last']);","\r\n\r\n var productAddToCartForm = new VarienForm('product_addtocart_form');\r\n productAddToCartForm.submit = function(button, url) {\r\n if (this.validator.validate()) {\r\n var form = this.form;\r\n var oldUrl = form.action;\r\n\r\n if (url) {\r\n form.action = url;\r\n }\r\n var e = null;\r\n try {\r\n \t\tvar ajaxForm = $('product_addtocart_form');\r\n \t\tajaxForm.action += '?layovercart=true';\r\n \t\tjQuery.fancybox.showActivity();\r\n ajaxForm.request({\r\n onComplete: function(response) {\r\n if (response.responseText.indexOf(' li:last').replaceWith(jQuery(response.responseText));\r\n \tinitCartDrop();\r\n \tjQuery('#header ul.menu > li:last a.my-cart').trigger('mouseenter');\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n }\r\n this.form.action = oldUrl;\r\n if (e) {\r\n throw e;\r\n }\r\n\r\n if (button && button != 'undefined') {\r\n button.disabled = true;\r\n }\r\n\r\n return false;\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n productAddToCartForm.submitLight = function(button, url){\r\n if(this.validator) {\r\n var nv = Validation.methods;\r\n delete Validation.methods['required-entry'];\r\n delete Validation.methods['validate-one-required'];\r\n delete Validation.methods['validate-one-required-by-name'];\r\n if (this.validator.validate()) {\r\n if (url) {\r\n this.form.action = url;\r\n }\r\n this.form.submit();\r\n }\r\n Object.extend(Validation.methods, nv);\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n"],"facebookMeta":""}
\r\n 5 Commentaire(s)<\/a>\r\n |<\/span>\r\n Add a Review<\/a>\r\n <\/p>\r\n <\/div>\r\n <\/div>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \n \n\n \n \n Gravure bracel\u00e9 d\u2019enfant grav\u00e9<\/label>\n +10,00\u00a0\u20ac<\/span><\/span><\/dt>\n\n \n \n Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n Gravure bracel\u00e9 - enfant grav\u00e9 - Face arri\u00e8re<\/label>\n +10,00\u00a0\u20ac<\/span><\/span><\/dt>\n\n \n \n Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n <\/dl>\n\n\n <\/div>\n\n\r\n\r\n \n \t\tQuantit\u00e9<\/label>\n \n \t<\/div>\n Ajouter au panier<\/span><\/span><\/button>\n <\/div>\r\n<\/div>\r\n\r\n <\/fieldset>\r\n <\/form>\r\n \r\n <\/div>\r\n \r\n \r\n Les amulettes sont un grand th\u00e8me dans l\u2019air du temps pour les bijoux. Pour r\u00e9pondre \u00e0 cette demande, Tarnoki a dispos\u00e9 une amulette ange gardien d\u2019une taille de 12 millim\u00e8tres. Cette amulette est le cadeau id\u00e9al pour un souvenir durable du bon temps pass\u00e9 ensemble.\r\n\r\nElle peut s\u2019int\u00e9grer facilement dans un bracelet grav\u00e9 gr\u00e2ce \u00e0 un crochet \u00e0 mousqueton ou bien dans un autre syst\u00e8me d\u2019amulette.\r\n\r\nSp\u00e9cialement con\u00e7u pour s\u2019adapter \u00e0 nos amulettes ange gardien, nous vous proposons un bracelet d\u2019enfant grav\u00e9 en argent 925 avec crochet \u00e0 mousqueton. On peut graver sur le bracelet un nom ou une d\u00e9dicace. Ce bijou rev\u00eat ainsi un aspect compl\u00e8tement personnel.\r\n\r\nLe label de qualit\u00e9 \u201eSwiss Made\u201c garantit une confection de la meilleure qualit\u00e9. <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n<\/div>\r\n\r\n\r\n\r\n","scripts":["\r\n var optionsPrice = new Product.OptionsPrice({\"productId\":\"91\",\"priceFormat\":{\"pattern\":\"%s\\u00a0\\u20ac\",\"precision\":2,\"requiredPrecision\":2,\"decimalSymbol\":\",\",\"groupSymbol\":\"\\u00a0\",\"groupLength\":3,\"integerRequired\":1},\"includeTax\":\"true\",\"showIncludeTax\":true,\"showBothPrices\":false,\"productPrice\":99,\"productOldPrice\":99,\"priceInclTax\":99,\"priceExclTax\":99,\"skipCalculate\":1,\"defaultTax\":19,\"currentTax\":19,\"idSuffix\":\"_clone\",\"oldPlusDisposition\":0,\"plusDisposition\":0,\"plusDispositionTax\":0,\"oldMinusDisposition\":0,\"minusDisposition\":0,\"tierPrices\":[],\"tierPricesInclTax\":[]});\r\n","\n\nvar DateOption = Class.create({\n\n getDaysInMonth: function(month, year)\n {\n var curDate = new Date();\n if (!month) {\n month = curDate.getMonth();\n }\n if (2 == month && !year) { \/\/ leap year assumption for unknown year\n return 29;\n }\n if (!year) {\n year = curDate.getFullYear();\n }\n return 32 - new Date(year, month - 1, 32).getDate();\n },\n\n reloadMonth: function(event)\n {\n var selectEl = event.findElement();\n var idParts = selectEl.id.split(\"_\");\n if (idParts.length != 3) {\n return false;\n }\n var optionIdPrefix = idParts[0] + \"_\" + idParts[1];\n var month = parseInt($(optionIdPrefix + \"_month\").value);\n var year = parseInt($(optionIdPrefix + \"_year\").value);\n var dayEl = $(optionIdPrefix + \"_day\");\n\n var days = this.getDaysInMonth(month, year);\n\n \/\/remove days\n for (var i = dayEl.options.length - 1; i >= 0; i--) {\n if (dayEl.options[i].value > days) {\n dayEl.remove(dayEl.options[i].index);\n }\n }\n\n \/\/ add days\n var lastDay = parseInt(dayEl.options[dayEl.options.length-1].value);\n for (i = lastDay + 1; i <= days; i++) {\n this.addOption(dayEl, i, i);\n }\n },\n\n addOption: function(select, text, value)\n {\n var option = document.createElement('OPTION');\n option.value = value;\n option.text = text;\n\n if (select.options.add) {\n select.options.add(option);\n } else {\n select.appendChild(option);\n }\n }\n});\ndateOption = new DateOption();\n\n","\n \n var optionFileUpload = {\n productForm : $('product_addtocart_form'),\n formAction : '',\n formElements : {},\n upload : function(element){\n this.formElements = this.productForm.select('input', 'select', 'textarea', 'button');\n this.removeRequire(element.readAttribute('id').sub('option_', ''));\n\n template = '<\\\/iframe>';\n\n Element.insert($('option_'+element.readAttribute('id').sub('option_', '')+'_uploaded_file'), {after: template});\n\n this.formAction = this.productForm.action;\n\n var baseUrl = 'https:\/\/www.tarnoki.com\/eu_fr\/catalog\/product\/upload\/';\n var urlExt = 'option_id\/'+element.readAttribute('id').sub('option_', '');\n\n this.productForm.action = parseSidUrl(baseUrl, urlExt);\n this.productForm.target = 'upload_target';\n this.productForm.submit();\n this.productForm.target = '';\n this.productForm.action = this.formAction;\n },\n removeRequire : function(skipElementId){\n for(var i=0; i<\\\/a>Remove file<\\\/a>';\n\n Element.insert($('option_'+data.optionId+'_uploaded_file'), {after: template});\n }\n },\n removeFile : function(optionId)\n {\n $('option_'+optionId+'_uploaded_file').value= '';\n $('option_'+optionId+'_file').show();\n $('option_'+optionId+'').show();\n\n $('option_'+optionId+'_file_box').remove();\n }\n }\n var optionTextCounter = {\n count : function(field,cntfield,maxlimit){\n if (field.value.length > maxlimit){\n field.value = field.value.substring(0, maxlimit);\n } else {\n cntfield.innerHTML = maxlimit - field.value.length;\n }\n }\n }\n\n Product.Options = Class.create();\n Product.Options.prototype = {\n initialize : function(config) {\n this.config = config;\n this.reloadPrice();\n document.observe(\"dom:loaded\", this.reloadPrice.bind(this));\n },\n reloadPrice : function() {\n var config = this.config;\n var skipIds = [];\n $$('body .product-custom-option').each(function(element){\n var optionId = 0;\n element.name.sub(\/[0-9]+\/, function(match){\n optionId = parseInt(match[0], 10);\n });\n if (config[optionId]) {\n var configOptions = config[optionId];\n var curConfig = {price: 0};\n if (element.type == 'checkbox' || element.type == 'radio') {\n if (element.checked) {\n if (typeof configOptions[element.getValue()] != 'undefined') {\n curConfig = configOptions[element.getValue()];\n }\n }\n } else if(element.hasClassName('datetime-picker') && !skipIds.include(optionId)) {\n dateSelected = true;\n $$('.product-custom-option[id^=\"options_' + optionId + '\"]').each(function(dt){\n if (dt.getValue() == '') {\n dateSelected = false;\n }\n });\n if (dateSelected) {\n curConfig = configOptions;\n skipIds[optionId] = optionId;\n }\n } else if(element.type == 'select-one' || element.type == 'select-multiple') {\n if ('options' in element) {\n $A(element.options).each(function(selectOption){\n if ('selected' in selectOption && selectOption.selected) {\n if (typeof(configOptions[selectOption.value]) != 'undefined') {\n curConfig = configOptions[selectOption.value];\n }\n }\n });\n }\n } else {\n if (element.getValue().strip() != '') {\n curConfig = configOptions;\n }\n }\n if(element.type == 'select-multiple' && ('options' in element)) {\n $A(element.options).each(function(selectOption) {\n if (('selected' in selectOption) && typeof(configOptions[selectOption.value]) != 'undefined') {\n if (selectOption.selected) {\n curConfig = configOptions[selectOption.value];\n } else {\n curConfig = {price: 0};\n }\n optionsPrice.addCustomPrices(optionId + '-' + selectOption.value, curConfig);\n optionsPrice.reload();\n }\n });\n } else {\n optionsPrice.addCustomPrices(element.id || optionId, curConfig);\n optionsPrice.reload();\n }\n }\n });\n }\n }\n function validateOptionsCallback(elmId, result) {\n var container = $(elmId).up('ul.options-list');\n if (result == 'failed') {\n container.removeClassName('validation-passed');\n container.addClassName('validation-failed');\n } else {\n container.removeClassName('validation-failed');\n container.addClassName('validation-passed');\n }\n }\n var opConfig = new Product.Options({\"81\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10},\"80\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10}});\n \n ","\n\nenUS = {\"m\":{\"wide\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"abbr\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}}; \/\/ en_US locale reference\nCalendar._DN = [\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"]; \/\/ full day names\nCalendar._SDN = [\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"]; \/\/ short day names\nCalendar._FD = 1; \/\/ First day of the week. \"0\" means display Sunday first, \"1\" means display Monday first, etc.\nCalendar._MN = [\"janvier\",\"f\\u00e9vrier\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"ao\\u00fbt\",\"septembre\",\"octobre\",\"novembre\",\"d\\u00e9cembre\"]; \/\/ full month names\nCalendar._SMN = [\"janv.\",\"f\\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\\u00e9c.\"]; \/\/ short month names\nCalendar._am = \"AM\"; \/\/ am\/pm\nCalendar._pm = \"PM\";\n\n\/\/ tooltips\nCalendar._TT = {};\nCalendar._TT[\"INFO\"] = \"\u00c0 propos du calendrier\";\n\nCalendar._TT[\"ABOUT\"] =\n\"S\u00e9lecteur de date\/heure DHTML\\n\" +\n\"(c) dynarch.com 2002-2005 \/ Author: Mihai Bazon\\n\" +\n\"Pour la visite de la derni\u00e8re version : http:\/\/www.dynarch.com\/projects\/calendar\/\\n\" +\n\"Distribu\u00e9 sous licence GNU LGPL. Voir http:\/\/gnu.org\/licenses\/lgpl.html pour plus de d\u00e9tails.\" +\n\"\\n\\n\" +\n\"S\u00e9lection de date :\\n\" +\n\"- Utilisez les boutons \\xab, \\xbb pour s\u00e9lectionner l\\'ann\u00e9e\\n\" +\n\"- Utilisez les boutons \" + String.fromCharCode(0x2039) + \", \" + String.fromCharCode(0x203a) + \" pour s\u00e9lectionner le mois\\n\" +\n\"- Maintenez le bouton de la souris sur n\\'importe quel bouton ci-dessus pour une s\u00e9lection rapide\";\nCalendar._TT[\"ABOUT_TIME\"] = \"\\n\\n\" +\n\"S\u00e9lection de l\\'heure :\\n\" +\n\"- Cliquez sur n\\'importe quelle partie de l\\'heure pour l\\'augmenter\\n\" +\n\"- ou cliquez en maintenant la touche shift enfonc\u00e9e pour l\\'augmenter\\n\" +\n\"- ou cliquez et glissez pour une s\u00e9lection plus rapide\";\n\nCalendar._TT[\"PREV_YEAR\"] = \"Ann\u00e9e pr\u00e9c\u00e9dente (maintenez pour le menu)\";\nCalendar._TT[\"PREV_MONTH\"] = \"Mois pr\u00e9c\u00e9dent (maintenez pour le menu)\";\nCalendar._TT[\"GO_TODAY\"] = \"Aller \u00e0 aujourd\\'hui\";\nCalendar._TT[\"NEXT_MONTH\"] = \"Mois suivant (maintenez pour le menu)\";\nCalendar._TT[\"NEXT_YEAR\"] = \"Ann\u00e9e prochaine (maintenez pour le menu)\";\nCalendar._TT[\"SEL_DATE\"] = \"S\u00e9lectionner la date\";\nCalendar._TT[\"DRAG_TO_MOVE\"] = \"Glisser pour d\u00e9placer\";\nCalendar._TT[\"PART_TODAY\"] = ' (' + \"aujourd\\u2019hui\" + ')';\n\n\/\/ the following is to inform that \"%s\" is to be the first day of week\nCalendar._TT[\"DAY_FIRST\"] = \"Afficher d\\'abord %s\";\n\n\/\/ This may be locale-dependent. It specifies the week-end days, as an array\n\/\/ of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1\n\/\/ means Monday, etc.\nCalendar._TT[\"WEEKEND\"] = \"0,6\";\n\nCalendar._TT[\"CLOSE\"] = \"Fermer\";\nCalendar._TT[\"TODAY\"] = \"aujourd\\u2019hui\";\nCalendar._TT[\"TIME_PART\"] = \"Pour modifier la valeur, cliquez en maintenant la touche shift enfonc\u00e9e ou glissez\";\n\n\/\/ date formats\nCalendar._TT[\"DEF_DATE_FORMAT\"] = \"%e %b %Y\";\nCalendar._TT[\"TT_DATE_FORMAT\"] = \"%e %B %Y\";\n\nCalendar._TT[\"WK\"] = \"semaine\";\nCalendar._TT[\"TIME\"] = \"Heure :\";\n\n","decorateGeneric($$('#product-options-wrapper dl'), ['last']);","\r\n\r\n var productAddToCartForm = new VarienForm('product_addtocart_form');\r\n productAddToCartForm.submit = function(button, url) {\r\n if (this.validator.validate()) {\r\n var form = this.form;\r\n var oldUrl = form.action;\r\n\r\n if (url) {\r\n form.action = url;\r\n }\r\n var e = null;\r\n try {\r\n \t\tvar ajaxForm = $('product_addtocart_form');\r\n \t\tajaxForm.action += '?layovercart=true';\r\n \t\tjQuery.fancybox.showActivity();\r\n ajaxForm.request({\r\n onComplete: function(response) {\r\n if (response.responseText.indexOf(' li:last').replaceWith(jQuery(response.responseText));\r\n \tinitCartDrop();\r\n \tjQuery('#header ul.menu > li:last a.my-cart').trigger('mouseenter');\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n }\r\n this.form.action = oldUrl;\r\n if (e) {\r\n throw e;\r\n }\r\n\r\n if (button && button != 'undefined') {\r\n button.disabled = true;\r\n }\r\n\r\n return false;\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n productAddToCartForm.submitLight = function(button, url){\r\n if(this.validator) {\r\n var nv = Validation.methods;\r\n delete Validation.methods['required-entry'];\r\n delete Validation.methods['validate-one-required'];\r\n delete Validation.methods['validate-one-required-by-name'];\r\n if (this.validator.validate()) {\r\n if (url) {\r\n this.form.action = url;\r\n }\r\n this.form.submit();\r\n }\r\n Object.extend(Validation.methods, nv);\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n"],"facebookMeta":""}
Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n Gravure bracel\u00e9 - enfant grav\u00e9 - Face arri\u00e8re<\/label>\n +10,00\u00a0\u20ac<\/span><\/span><\/dt>\n\n \n \n Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n <\/dl>\n\n\n <\/div>\n\n\r\n\r\n \n \t\tQuantit\u00e9<\/label>\n \n \t<\/div>\n Ajouter au panier<\/span><\/span><\/button>\n <\/div>\r\n<\/div>\r\n\r\n <\/fieldset>\r\n <\/form>\r\n \r\n <\/div>\r\n \r\n \r\n Les amulettes sont un grand th\u00e8me dans l\u2019air du temps pour les bijoux. Pour r\u00e9pondre \u00e0 cette demande, Tarnoki a dispos\u00e9 une amulette ange gardien d\u2019une taille de 12 millim\u00e8tres. Cette amulette est le cadeau id\u00e9al pour un souvenir durable du bon temps pass\u00e9 ensemble.\r\n\r\nElle peut s\u2019int\u00e9grer facilement dans un bracelet grav\u00e9 gr\u00e2ce \u00e0 un crochet \u00e0 mousqueton ou bien dans un autre syst\u00e8me d\u2019amulette.\r\n\r\nSp\u00e9cialement con\u00e7u pour s\u2019adapter \u00e0 nos amulettes ange gardien, nous vous proposons un bracelet d\u2019enfant grav\u00e9 en argent 925 avec crochet \u00e0 mousqueton. On peut graver sur le bracelet un nom ou une d\u00e9dicace. Ce bijou rev\u00eat ainsi un aspect compl\u00e8tement personnel.\r\n\r\nLe label de qualit\u00e9 \u201eSwiss Made\u201c garantit une confection de la meilleure qualit\u00e9. <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n<\/div>\r\n\r\n\r\n\r\n","scripts":["\r\n var optionsPrice = new Product.OptionsPrice({\"productId\":\"91\",\"priceFormat\":{\"pattern\":\"%s\\u00a0\\u20ac\",\"precision\":2,\"requiredPrecision\":2,\"decimalSymbol\":\",\",\"groupSymbol\":\"\\u00a0\",\"groupLength\":3,\"integerRequired\":1},\"includeTax\":\"true\",\"showIncludeTax\":true,\"showBothPrices\":false,\"productPrice\":99,\"productOldPrice\":99,\"priceInclTax\":99,\"priceExclTax\":99,\"skipCalculate\":1,\"defaultTax\":19,\"currentTax\":19,\"idSuffix\":\"_clone\",\"oldPlusDisposition\":0,\"plusDisposition\":0,\"plusDispositionTax\":0,\"oldMinusDisposition\":0,\"minusDisposition\":0,\"tierPrices\":[],\"tierPricesInclTax\":[]});\r\n","\n\nvar DateOption = Class.create({\n\n getDaysInMonth: function(month, year)\n {\n var curDate = new Date();\n if (!month) {\n month = curDate.getMonth();\n }\n if (2 == month && !year) { \/\/ leap year assumption for unknown year\n return 29;\n }\n if (!year) {\n year = curDate.getFullYear();\n }\n return 32 - new Date(year, month - 1, 32).getDate();\n },\n\n reloadMonth: function(event)\n {\n var selectEl = event.findElement();\n var idParts = selectEl.id.split(\"_\");\n if (idParts.length != 3) {\n return false;\n }\n var optionIdPrefix = idParts[0] + \"_\" + idParts[1];\n var month = parseInt($(optionIdPrefix + \"_month\").value);\n var year = parseInt($(optionIdPrefix + \"_year\").value);\n var dayEl = $(optionIdPrefix + \"_day\");\n\n var days = this.getDaysInMonth(month, year);\n\n \/\/remove days\n for (var i = dayEl.options.length - 1; i >= 0; i--) {\n if (dayEl.options[i].value > days) {\n dayEl.remove(dayEl.options[i].index);\n }\n }\n\n \/\/ add days\n var lastDay = parseInt(dayEl.options[dayEl.options.length-1].value);\n for (i = lastDay + 1; i <= days; i++) {\n this.addOption(dayEl, i, i);\n }\n },\n\n addOption: function(select, text, value)\n {\n var option = document.createElement('OPTION');\n option.value = value;\n option.text = text;\n\n if (select.options.add) {\n select.options.add(option);\n } else {\n select.appendChild(option);\n }\n }\n});\ndateOption = new DateOption();\n\n","\n \n var optionFileUpload = {\n productForm : $('product_addtocart_form'),\n formAction : '',\n formElements : {},\n upload : function(element){\n this.formElements = this.productForm.select('input', 'select', 'textarea', 'button');\n this.removeRequire(element.readAttribute('id').sub('option_', ''));\n\n template = '<\\\/iframe>';\n\n Element.insert($('option_'+element.readAttribute('id').sub('option_', '')+'_uploaded_file'), {after: template});\n\n this.formAction = this.productForm.action;\n\n var baseUrl = 'https:\/\/www.tarnoki.com\/eu_fr\/catalog\/product\/upload\/';\n var urlExt = 'option_id\/'+element.readAttribute('id').sub('option_', '');\n\n this.productForm.action = parseSidUrl(baseUrl, urlExt);\n this.productForm.target = 'upload_target';\n this.productForm.submit();\n this.productForm.target = '';\n this.productForm.action = this.formAction;\n },\n removeRequire : function(skipElementId){\n for(var i=0; i<\\\/a>Remove file<\\\/a>';\n\n Element.insert($('option_'+data.optionId+'_uploaded_file'), {after: template});\n }\n },\n removeFile : function(optionId)\n {\n $('option_'+optionId+'_uploaded_file').value= '';\n $('option_'+optionId+'_file').show();\n $('option_'+optionId+'').show();\n\n $('option_'+optionId+'_file_box').remove();\n }\n }\n var optionTextCounter = {\n count : function(field,cntfield,maxlimit){\n if (field.value.length > maxlimit){\n field.value = field.value.substring(0, maxlimit);\n } else {\n cntfield.innerHTML = maxlimit - field.value.length;\n }\n }\n }\n\n Product.Options = Class.create();\n Product.Options.prototype = {\n initialize : function(config) {\n this.config = config;\n this.reloadPrice();\n document.observe(\"dom:loaded\", this.reloadPrice.bind(this));\n },\n reloadPrice : function() {\n var config = this.config;\n var skipIds = [];\n $$('body .product-custom-option').each(function(element){\n var optionId = 0;\n element.name.sub(\/[0-9]+\/, function(match){\n optionId = parseInt(match[0], 10);\n });\n if (config[optionId]) {\n var configOptions = config[optionId];\n var curConfig = {price: 0};\n if (element.type == 'checkbox' || element.type == 'radio') {\n if (element.checked) {\n if (typeof configOptions[element.getValue()] != 'undefined') {\n curConfig = configOptions[element.getValue()];\n }\n }\n } else if(element.hasClassName('datetime-picker') && !skipIds.include(optionId)) {\n dateSelected = true;\n $$('.product-custom-option[id^=\"options_' + optionId + '\"]').each(function(dt){\n if (dt.getValue() == '') {\n dateSelected = false;\n }\n });\n if (dateSelected) {\n curConfig = configOptions;\n skipIds[optionId] = optionId;\n }\n } else if(element.type == 'select-one' || element.type == 'select-multiple') {\n if ('options' in element) {\n $A(element.options).each(function(selectOption){\n if ('selected' in selectOption && selectOption.selected) {\n if (typeof(configOptions[selectOption.value]) != 'undefined') {\n curConfig = configOptions[selectOption.value];\n }\n }\n });\n }\n } else {\n if (element.getValue().strip() != '') {\n curConfig = configOptions;\n }\n }\n if(element.type == 'select-multiple' && ('options' in element)) {\n $A(element.options).each(function(selectOption) {\n if (('selected' in selectOption) && typeof(configOptions[selectOption.value]) != 'undefined') {\n if (selectOption.selected) {\n curConfig = configOptions[selectOption.value];\n } else {\n curConfig = {price: 0};\n }\n optionsPrice.addCustomPrices(optionId + '-' + selectOption.value, curConfig);\n optionsPrice.reload();\n }\n });\n } else {\n optionsPrice.addCustomPrices(element.id || optionId, curConfig);\n optionsPrice.reload();\n }\n }\n });\n }\n }\n function validateOptionsCallback(elmId, result) {\n var container = $(elmId).up('ul.options-list');\n if (result == 'failed') {\n container.removeClassName('validation-passed');\n container.addClassName('validation-failed');\n } else {\n container.removeClassName('validation-failed');\n container.addClassName('validation-passed');\n }\n }\n var opConfig = new Product.Options({\"81\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10},\"80\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10}});\n \n ","\n\nenUS = {\"m\":{\"wide\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"abbr\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}}; \/\/ en_US locale reference\nCalendar._DN = [\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"]; \/\/ full day names\nCalendar._SDN = [\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"]; \/\/ short day names\nCalendar._FD = 1; \/\/ First day of the week. \"0\" means display Sunday first, \"1\" means display Monday first, etc.\nCalendar._MN = [\"janvier\",\"f\\u00e9vrier\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"ao\\u00fbt\",\"septembre\",\"octobre\",\"novembre\",\"d\\u00e9cembre\"]; \/\/ full month names\nCalendar._SMN = [\"janv.\",\"f\\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\\u00e9c.\"]; \/\/ short month names\nCalendar._am = \"AM\"; \/\/ am\/pm\nCalendar._pm = \"PM\";\n\n\/\/ tooltips\nCalendar._TT = {};\nCalendar._TT[\"INFO\"] = \"\u00c0 propos du calendrier\";\n\nCalendar._TT[\"ABOUT\"] =\n\"S\u00e9lecteur de date\/heure DHTML\\n\" +\n\"(c) dynarch.com 2002-2005 \/ Author: Mihai Bazon\\n\" +\n\"Pour la visite de la derni\u00e8re version : http:\/\/www.dynarch.com\/projects\/calendar\/\\n\" +\n\"Distribu\u00e9 sous licence GNU LGPL. Voir http:\/\/gnu.org\/licenses\/lgpl.html pour plus de d\u00e9tails.\" +\n\"\\n\\n\" +\n\"S\u00e9lection de date :\\n\" +\n\"- Utilisez les boutons \\xab, \\xbb pour s\u00e9lectionner l\\'ann\u00e9e\\n\" +\n\"- Utilisez les boutons \" + String.fromCharCode(0x2039) + \", \" + String.fromCharCode(0x203a) + \" pour s\u00e9lectionner le mois\\n\" +\n\"- Maintenez le bouton de la souris sur n\\'importe quel bouton ci-dessus pour une s\u00e9lection rapide\";\nCalendar._TT[\"ABOUT_TIME\"] = \"\\n\\n\" +\n\"S\u00e9lection de l\\'heure :\\n\" +\n\"- Cliquez sur n\\'importe quelle partie de l\\'heure pour l\\'augmenter\\n\" +\n\"- ou cliquez en maintenant la touche shift enfonc\u00e9e pour l\\'augmenter\\n\" +\n\"- ou cliquez et glissez pour une s\u00e9lection plus rapide\";\n\nCalendar._TT[\"PREV_YEAR\"] = \"Ann\u00e9e pr\u00e9c\u00e9dente (maintenez pour le menu)\";\nCalendar._TT[\"PREV_MONTH\"] = \"Mois pr\u00e9c\u00e9dent (maintenez pour le menu)\";\nCalendar._TT[\"GO_TODAY\"] = \"Aller \u00e0 aujourd\\'hui\";\nCalendar._TT[\"NEXT_MONTH\"] = \"Mois suivant (maintenez pour le menu)\";\nCalendar._TT[\"NEXT_YEAR\"] = \"Ann\u00e9e prochaine (maintenez pour le menu)\";\nCalendar._TT[\"SEL_DATE\"] = \"S\u00e9lectionner la date\";\nCalendar._TT[\"DRAG_TO_MOVE\"] = \"Glisser pour d\u00e9placer\";\nCalendar._TT[\"PART_TODAY\"] = ' (' + \"aujourd\\u2019hui\" + ')';\n\n\/\/ the following is to inform that \"%s\" is to be the first day of week\nCalendar._TT[\"DAY_FIRST\"] = \"Afficher d\\'abord %s\";\n\n\/\/ This may be locale-dependent. It specifies the week-end days, as an array\n\/\/ of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1\n\/\/ means Monday, etc.\nCalendar._TT[\"WEEKEND\"] = \"0,6\";\n\nCalendar._TT[\"CLOSE\"] = \"Fermer\";\nCalendar._TT[\"TODAY\"] = \"aujourd\\u2019hui\";\nCalendar._TT[\"TIME_PART\"] = \"Pour modifier la valeur, cliquez en maintenant la touche shift enfonc\u00e9e ou glissez\";\n\n\/\/ date formats\nCalendar._TT[\"DEF_DATE_FORMAT\"] = \"%e %b %Y\";\nCalendar._TT[\"TT_DATE_FORMAT\"] = \"%e %B %Y\";\n\nCalendar._TT[\"WK\"] = \"semaine\";\nCalendar._TT[\"TIME\"] = \"Heure :\";\n\n","decorateGeneric($$('#product-options-wrapper dl'), ['last']);","\r\n\r\n var productAddToCartForm = new VarienForm('product_addtocart_form');\r\n productAddToCartForm.submit = function(button, url) {\r\n if (this.validator.validate()) {\r\n var form = this.form;\r\n var oldUrl = form.action;\r\n\r\n if (url) {\r\n form.action = url;\r\n }\r\n var e = null;\r\n try {\r\n \t\tvar ajaxForm = $('product_addtocart_form');\r\n \t\tajaxForm.action += '?layovercart=true';\r\n \t\tjQuery.fancybox.showActivity();\r\n ajaxForm.request({\r\n onComplete: function(response) {\r\n if (response.responseText.indexOf(' li:last').replaceWith(jQuery(response.responseText));\r\n \tinitCartDrop();\r\n \tjQuery('#header ul.menu > li:last a.my-cart').trigger('mouseenter');\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n }\r\n this.form.action = oldUrl;\r\n if (e) {\r\n throw e;\r\n }\r\n\r\n if (button && button != 'undefined') {\r\n button.disabled = true;\r\n }\r\n\r\n return false;\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n productAddToCartForm.submitLight = function(button, url){\r\n if(this.validator) {\r\n var nv = Validation.methods;\r\n delete Validation.methods['required-entry'];\r\n delete Validation.methods['validate-one-required'];\r\n delete Validation.methods['validate-one-required-by-name'];\r\n if (this.validator.validate()) {\r\n if (url) {\r\n this.form.action = url;\r\n }\r\n this.form.submit();\r\n }\r\n Object.extend(Validation.methods, nv);\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n"],"facebookMeta":""}
Nombre maxi de caract\u00e8res : 15<\/strong><\/p>\n <\/div>\n<\/dd>\n <\/dl>\n\n\n <\/div>\n\n\r\n\r\n \n \t\tQuantit\u00e9<\/label>\n \n \t<\/div>\n Ajouter au panier<\/span><\/span><\/button>\n <\/div>\r\n<\/div>\r\n\r\n <\/fieldset>\r\n <\/form>\r\n \r\n <\/div>\r\n \r\n \r\n Les amulettes sont un grand th\u00e8me dans l\u2019air du temps pour les bijoux. Pour r\u00e9pondre \u00e0 cette demande, Tarnoki a dispos\u00e9 une amulette ange gardien d\u2019une taille de 12 millim\u00e8tres. Cette amulette est le cadeau id\u00e9al pour un souvenir durable du bon temps pass\u00e9 ensemble.\r\n\r\nElle peut s\u2019int\u00e9grer facilement dans un bracelet grav\u00e9 gr\u00e2ce \u00e0 un crochet \u00e0 mousqueton ou bien dans un autre syst\u00e8me d\u2019amulette.\r\n\r\nSp\u00e9cialement con\u00e7u pour s\u2019adapter \u00e0 nos amulettes ange gardien, nous vous proposons un bracelet d\u2019enfant grav\u00e9 en argent 925 avec crochet \u00e0 mousqueton. On peut graver sur le bracelet un nom ou une d\u00e9dicace. Ce bijou rev\u00eat ainsi un aspect compl\u00e8tement personnel.\r\n\r\nLe label de qualit\u00e9 \u201eSwiss Made\u201c garantit une confection de la meilleure qualit\u00e9. <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n <\/div>\r\n<\/div>\r\n\r\n\r\n\r\n","scripts":["\r\n var optionsPrice = new Product.OptionsPrice({\"productId\":\"91\",\"priceFormat\":{\"pattern\":\"%s\\u00a0\\u20ac\",\"precision\":2,\"requiredPrecision\":2,\"decimalSymbol\":\",\",\"groupSymbol\":\"\\u00a0\",\"groupLength\":3,\"integerRequired\":1},\"includeTax\":\"true\",\"showIncludeTax\":true,\"showBothPrices\":false,\"productPrice\":99,\"productOldPrice\":99,\"priceInclTax\":99,\"priceExclTax\":99,\"skipCalculate\":1,\"defaultTax\":19,\"currentTax\":19,\"idSuffix\":\"_clone\",\"oldPlusDisposition\":0,\"plusDisposition\":0,\"plusDispositionTax\":0,\"oldMinusDisposition\":0,\"minusDisposition\":0,\"tierPrices\":[],\"tierPricesInclTax\":[]});\r\n","\n\nvar DateOption = Class.create({\n\n getDaysInMonth: function(month, year)\n {\n var curDate = new Date();\n if (!month) {\n month = curDate.getMonth();\n }\n if (2 == month && !year) { \/\/ leap year assumption for unknown year\n return 29;\n }\n if (!year) {\n year = curDate.getFullYear();\n }\n return 32 - new Date(year, month - 1, 32).getDate();\n },\n\n reloadMonth: function(event)\n {\n var selectEl = event.findElement();\n var idParts = selectEl.id.split(\"_\");\n if (idParts.length != 3) {\n return false;\n }\n var optionIdPrefix = idParts[0] + \"_\" + idParts[1];\n var month = parseInt($(optionIdPrefix + \"_month\").value);\n var year = parseInt($(optionIdPrefix + \"_year\").value);\n var dayEl = $(optionIdPrefix + \"_day\");\n\n var days = this.getDaysInMonth(month, year);\n\n \/\/remove days\n for (var i = dayEl.options.length - 1; i >= 0; i--) {\n if (dayEl.options[i].value > days) {\n dayEl.remove(dayEl.options[i].index);\n }\n }\n\n \/\/ add days\n var lastDay = parseInt(dayEl.options[dayEl.options.length-1].value);\n for (i = lastDay + 1; i <= days; i++) {\n this.addOption(dayEl, i, i);\n }\n },\n\n addOption: function(select, text, value)\n {\n var option = document.createElement('OPTION');\n option.value = value;\n option.text = text;\n\n if (select.options.add) {\n select.options.add(option);\n } else {\n select.appendChild(option);\n }\n }\n});\ndateOption = new DateOption();\n\n","\n \n var optionFileUpload = {\n productForm : $('product_addtocart_form'),\n formAction : '',\n formElements : {},\n upload : function(element){\n this.formElements = this.productForm.select('input', 'select', 'textarea', 'button');\n this.removeRequire(element.readAttribute('id').sub('option_', ''));\n\n template = '<\\\/iframe>';\n\n Element.insert($('option_'+element.readAttribute('id').sub('option_', '')+'_uploaded_file'), {after: template});\n\n this.formAction = this.productForm.action;\n\n var baseUrl = 'https:\/\/www.tarnoki.com\/eu_fr\/catalog\/product\/upload\/';\n var urlExt = 'option_id\/'+element.readAttribute('id').sub('option_', '');\n\n this.productForm.action = parseSidUrl(baseUrl, urlExt);\n this.productForm.target = 'upload_target';\n this.productForm.submit();\n this.productForm.target = '';\n this.productForm.action = this.formAction;\n },\n removeRequire : function(skipElementId){\n for(var i=0; i<\\\/a>Remove file<\\\/a>';\n\n Element.insert($('option_'+data.optionId+'_uploaded_file'), {after: template});\n }\n },\n removeFile : function(optionId)\n {\n $('option_'+optionId+'_uploaded_file').value= '';\n $('option_'+optionId+'_file').show();\n $('option_'+optionId+'').show();\n\n $('option_'+optionId+'_file_box').remove();\n }\n }\n var optionTextCounter = {\n count : function(field,cntfield,maxlimit){\n if (field.value.length > maxlimit){\n field.value = field.value.substring(0, maxlimit);\n } else {\n cntfield.innerHTML = maxlimit - field.value.length;\n }\n }\n }\n\n Product.Options = Class.create();\n Product.Options.prototype = {\n initialize : function(config) {\n this.config = config;\n this.reloadPrice();\n document.observe(\"dom:loaded\", this.reloadPrice.bind(this));\n },\n reloadPrice : function() {\n var config = this.config;\n var skipIds = [];\n $$('body .product-custom-option').each(function(element){\n var optionId = 0;\n element.name.sub(\/[0-9]+\/, function(match){\n optionId = parseInt(match[0], 10);\n });\n if (config[optionId]) {\n var configOptions = config[optionId];\n var curConfig = {price: 0};\n if (element.type == 'checkbox' || element.type == 'radio') {\n if (element.checked) {\n if (typeof configOptions[element.getValue()] != 'undefined') {\n curConfig = configOptions[element.getValue()];\n }\n }\n } else if(element.hasClassName('datetime-picker') && !skipIds.include(optionId)) {\n dateSelected = true;\n $$('.product-custom-option[id^=\"options_' + optionId + '\"]').each(function(dt){\n if (dt.getValue() == '') {\n dateSelected = false;\n }\n });\n if (dateSelected) {\n curConfig = configOptions;\n skipIds[optionId] = optionId;\n }\n } else if(element.type == 'select-one' || element.type == 'select-multiple') {\n if ('options' in element) {\n $A(element.options).each(function(selectOption){\n if ('selected' in selectOption && selectOption.selected) {\n if (typeof(configOptions[selectOption.value]) != 'undefined') {\n curConfig = configOptions[selectOption.value];\n }\n }\n });\n }\n } else {\n if (element.getValue().strip() != '') {\n curConfig = configOptions;\n }\n }\n if(element.type == 'select-multiple' && ('options' in element)) {\n $A(element.options).each(function(selectOption) {\n if (('selected' in selectOption) && typeof(configOptions[selectOption.value]) != 'undefined') {\n if (selectOption.selected) {\n curConfig = configOptions[selectOption.value];\n } else {\n curConfig = {price: 0};\n }\n optionsPrice.addCustomPrices(optionId + '-' + selectOption.value, curConfig);\n optionsPrice.reload();\n }\n });\n } else {\n optionsPrice.addCustomPrices(element.id || optionId, curConfig);\n optionsPrice.reload();\n }\n }\n });\n }\n }\n function validateOptionsCallback(elmId, result) {\n var container = $(elmId).up('ul.options-list');\n if (result == 'failed') {\n container.removeClassName('validation-passed');\n container.addClassName('validation-failed');\n } else {\n container.removeClassName('validation-failed');\n container.addClassName('validation-passed');\n }\n }\n var opConfig = new Product.Options({\"81\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10},\"80\":{\"price\":10,\"oldPrice\":10,\"priceValue\":\"10.0000\",\"type\":\"fixed\",\"excludeTax\":8.4,\"includeTax\":10}});\n \n ","\n\nenUS = {\"m\":{\"wide\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"abbr\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}}; \/\/ en_US locale reference\nCalendar._DN = [\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"]; \/\/ full day names\nCalendar._SDN = [\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"]; \/\/ short day names\nCalendar._FD = 1; \/\/ First day of the week. \"0\" means display Sunday first, \"1\" means display Monday first, etc.\nCalendar._MN = [\"janvier\",\"f\\u00e9vrier\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"ao\\u00fbt\",\"septembre\",\"octobre\",\"novembre\",\"d\\u00e9cembre\"]; \/\/ full month names\nCalendar._SMN = [\"janv.\",\"f\\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\\u00e9c.\"]; \/\/ short month names\nCalendar._am = \"AM\"; \/\/ am\/pm\nCalendar._pm = \"PM\";\n\n\/\/ tooltips\nCalendar._TT = {};\nCalendar._TT[\"INFO\"] = \"\u00c0 propos du calendrier\";\n\nCalendar._TT[\"ABOUT\"] =\n\"S\u00e9lecteur de date\/heure DHTML\\n\" +\n\"(c) dynarch.com 2002-2005 \/ Author: Mihai Bazon\\n\" +\n\"Pour la visite de la derni\u00e8re version : http:\/\/www.dynarch.com\/projects\/calendar\/\\n\" +\n\"Distribu\u00e9 sous licence GNU LGPL. Voir http:\/\/gnu.org\/licenses\/lgpl.html pour plus de d\u00e9tails.\" +\n\"\\n\\n\" +\n\"S\u00e9lection de date :\\n\" +\n\"- Utilisez les boutons \\xab, \\xbb pour s\u00e9lectionner l\\'ann\u00e9e\\n\" +\n\"- Utilisez les boutons \" + String.fromCharCode(0x2039) + \", \" + String.fromCharCode(0x203a) + \" pour s\u00e9lectionner le mois\\n\" +\n\"- Maintenez le bouton de la souris sur n\\'importe quel bouton ci-dessus pour une s\u00e9lection rapide\";\nCalendar._TT[\"ABOUT_TIME\"] = \"\\n\\n\" +\n\"S\u00e9lection de l\\'heure :\\n\" +\n\"- Cliquez sur n\\'importe quelle partie de l\\'heure pour l\\'augmenter\\n\" +\n\"- ou cliquez en maintenant la touche shift enfonc\u00e9e pour l\\'augmenter\\n\" +\n\"- ou cliquez et glissez pour une s\u00e9lection plus rapide\";\n\nCalendar._TT[\"PREV_YEAR\"] = \"Ann\u00e9e pr\u00e9c\u00e9dente (maintenez pour le menu)\";\nCalendar._TT[\"PREV_MONTH\"] = \"Mois pr\u00e9c\u00e9dent (maintenez pour le menu)\";\nCalendar._TT[\"GO_TODAY\"] = \"Aller \u00e0 aujourd\\'hui\";\nCalendar._TT[\"NEXT_MONTH\"] = \"Mois suivant (maintenez pour le menu)\";\nCalendar._TT[\"NEXT_YEAR\"] = \"Ann\u00e9e prochaine (maintenez pour le menu)\";\nCalendar._TT[\"SEL_DATE\"] = \"S\u00e9lectionner la date\";\nCalendar._TT[\"DRAG_TO_MOVE\"] = \"Glisser pour d\u00e9placer\";\nCalendar._TT[\"PART_TODAY\"] = ' (' + \"aujourd\\u2019hui\" + ')';\n\n\/\/ the following is to inform that \"%s\" is to be the first day of week\nCalendar._TT[\"DAY_FIRST\"] = \"Afficher d\\'abord %s\";\n\n\/\/ This may be locale-dependent. It specifies the week-end days, as an array\n\/\/ of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1\n\/\/ means Monday, etc.\nCalendar._TT[\"WEEKEND\"] = \"0,6\";\n\nCalendar._TT[\"CLOSE\"] = \"Fermer\";\nCalendar._TT[\"TODAY\"] = \"aujourd\\u2019hui\";\nCalendar._TT[\"TIME_PART\"] = \"Pour modifier la valeur, cliquez en maintenant la touche shift enfonc\u00e9e ou glissez\";\n\n\/\/ date formats\nCalendar._TT[\"DEF_DATE_FORMAT\"] = \"%e %b %Y\";\nCalendar._TT[\"TT_DATE_FORMAT\"] = \"%e %B %Y\";\n\nCalendar._TT[\"WK\"] = \"semaine\";\nCalendar._TT[\"TIME\"] = \"Heure :\";\n\n","decorateGeneric($$('#product-options-wrapper dl'), ['last']);","\r\n\r\n var productAddToCartForm = new VarienForm('product_addtocart_form');\r\n productAddToCartForm.submit = function(button, url) {\r\n if (this.validator.validate()) {\r\n var form = this.form;\r\n var oldUrl = form.action;\r\n\r\n if (url) {\r\n form.action = url;\r\n }\r\n var e = null;\r\n try {\r\n \t\tvar ajaxForm = $('product_addtocart_form');\r\n \t\tajaxForm.action += '?layovercart=true';\r\n \t\tjQuery.fancybox.showActivity();\r\n ajaxForm.request({\r\n onComplete: function(response) {\r\n if (response.responseText.indexOf(' li:last').replaceWith(jQuery(response.responseText));\r\n \tinitCartDrop();\r\n \tjQuery('#header ul.menu > li:last a.my-cart').trigger('mouseenter');\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n }\r\n this.form.action = oldUrl;\r\n if (e) {\r\n throw e;\r\n }\r\n\r\n if (button && button != 'undefined') {\r\n button.disabled = true;\r\n }\r\n\r\n return false;\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n productAddToCartForm.submitLight = function(button, url){\r\n if(this.validator) {\r\n var nv = Validation.methods;\r\n delete Validation.methods['required-entry'];\r\n delete Validation.methods['validate-one-required'];\r\n delete Validation.methods['validate-one-required-by-name'];\r\n if (this.validator.validate()) {\r\n if (url) {\r\n this.form.action = url;\r\n }\r\n this.form.submit();\r\n }\r\n Object.extend(Validation.methods, nv);\r\n }\r\n }.bind(productAddToCartForm);\r\n\r\n"],"facebookMeta":""}