Minor dependency updates
[yaffs-website] / vendor / jcalderonzumba / mink-phantomjs-driver / src / Resources / Script / get_value.js.twig
1 {% autoescape 'js' %}
2 (function (xpath) {
3   function getElement(xpath) {
4     var polterAgent = window.__poltergeist;
5     var ids = polterAgent.find("xpath", xpath, document);
6     var polterNode = polterAgent.get(ids[0]);
7     return polterNode.element;
8   }
9
10   function inputRadioGetValue(element){
11     var value = null;
12     var name = element.getAttribute('name');
13     if (!name){
14       return null;
15     }
16     var fields = window.document.getElementsByName(name);
17     var i;
18     var l = fields.length;
19     for (i = 0; i < l; i++) {
20       var field = fields.item(i);
21       if (field.form === element.form && field.checked) {
22         return field.value;
23       }
24     }
25     return null;
26   }
27
28   var node = getElement(xpath);
29   var tagName = node.tagName.toLowerCase();
30   var value = null;
31   if (tagName == "input") {
32     var type = node.type.toLowerCase();
33     if (type == "checkbox") {
34       value = node.checked ? node.value : null;
35     } else if (type == "radio") {
36       value = inputRadioGetValue(node);
37     } else {
38       value = node.value;
39     }
40   } else if (tagName == "textarea") {
41     value = node.value;
42   } else if (tagName == "select") {
43     if (node.multiple) {
44       value = [];
45       for (var i = 0; i < node.options.length; i++) {
46         if (node.options[i].selected) {
47           value.push(node.options[i].value);
48         }
49       }
50     } else {
51       var idx = node.selectedIndex;
52       if (idx >= 0) {
53         value = node.options.item(idx).value;
54       } else {
55         value = null;
56       }
57     }
58   } else {
59     value = node.value;
60   }
61   return value;
62 }('{{ xpath }}'));
63 {% endautoescape %}