Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0-final/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0-final/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0-final/header.pt	(revision 1028)
@@ -33,4 +33,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.1/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.1/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.1/header.pt	(revision 1028)
@@ -37,4 +37,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.2/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.2/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.2/header.pt	(revision 1028)
@@ -38,4 +38,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.3/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.3/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.3/header.pt	(revision 1028)
@@ -39,4 +39,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.4/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.4/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.4/header.pt	(revision 1028)
@@ -39,4 +39,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.5/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.5/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.0.5/header.pt	(revision 1028)
@@ -39,4 +39,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <link rel="Stylesheet" type="text/css" href="" tal:attributes="href string:$portal_url/ploneNS4.css" />
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.1/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.1/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.1/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">SSS
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.2/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.2/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.2/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">SSS
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.3/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.3/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.3/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.4/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.4/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1.4/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.1/header.pt	(revision 1028)
@@ -40,4 +40,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.1/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.1/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.1/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.2/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.2/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.2/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.3-final/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.3-final/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5.3-final/header.pt	(revision 1028)
@@ -44,4 +44,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5/header.pt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5/header.pt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/2.5/header.pt	(revision 1028)
@@ -41,4 +41,8 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+
+    <tal:ecma_script define="ecmascript here/qSEO_ECMA_Script|nothing" condition="ecmascript">
+        <tal:script replace="structure ecmascript" />
+    </tal:ecma_script>
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qSEO_ECMA_Script.py
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qSEO_ECMA_Script.py	(revision 1028)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qSEO_ECMA_Script.py	(revision 1028)
@@ -0,0 +1,17 @@
+## Script (Python) "qSEO_ECMA_Script"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=Generate ECMA Script from SEO properties
+##
+
+prop_name = 'qSEO_ecma_script'
+
+if context.hasProperty(prop_name):
+    return context.getProperty(prop_name)
+
+# No ecma script by default
+return ''
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit.cpy
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit.cpy	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit.cpy	(revision 1028)
@@ -7,5 +7,5 @@
 ##bind subpath=traverse_subpath
 ##title=Update SEO Properties
-##parameters=title=None,description=None,keywords=None,html_comment=None,robots=None,distribution=None,title_override=0,description_override=0,keywords_override=0,html_comment_override=0,robots_override=0,distribution_override=0
+##parameters=title=None,description=None,keywords=None,html_comment=None,robots=None,distribution=None,ecma_script=None,title_override=0,description_override=0,keywords_override=0,html_comment_override=0,robots_override=0,distribution_override=0,ecma_override=0
 
 def setProperty(context, property, value, type='string'):
@@ -21,4 +21,6 @@
 setProperty(context, 'qSEO_robots', robots)
 setProperty(context, 'qSEO_distribution', distribution)
+setProperty(context, 'qSEO_ecma_script', ecma_script)
+
 
 delete_list = []
@@ -29,4 +31,5 @@
 if not robots_override:       delete_list.append('qSEO_robots')
 if not distribution_override: delete_list.append('qSEO_distribution')
+if not ecma_override:         delete_list.append('qSEO_ecma_script')
 
 if delete_list: context.manage_delProperties(delete_list)
Index: /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit_form.cpt
===================================================================
--- /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit_form.cpt	(revision 1027)
+++ /qSEOptimizer/branches/p21_ecma/skins/qSEOptimizer/qseo_properties_edit_form.cpt	(revision 1028)
@@ -248,4 +248,36 @@
           </div>
 
+          <div class="field">
+            <label i18n:translate="label_ecma_script" for="ecma_script">
+              ECMA Script
+            </label>
+
+            <div class="formHelp" i18n:translate="help_seo_ecma_script">
+              ECMA script embedded into HTML header.
+            </div>
+
+            <input type="checkbox"
+                   id="ecma_override"
+                   name="ecma_override"
+                   tabindex=""
+                   tal:attributes="checked python:test(here.hasProperty('qSEO_ecma_script'), 'on', None);
+                                   tabindex tabindex/next;"
+                   />
+
+            <label i18n:translate="label_override" for="ecma_override">
+              Override
+            </label>
+
+            <textarea 
+                      id="seo_ecma_script"
+                      name="ecma_script"
+                      rows="5"
+                      cols="15"
+                      tabindex=""
+                      tal:attributes="tabindex tabindex/next;"
+                      tal:content="request/ecma_script | here/qSEO_ECMA_Script"
+                      ></textarea>
+          </div>
+
           <div class="formControls"
                tal:define="process_creation request/process_creation|nothing;"
