New font (Open Sans)
[snf-cloudcms] / cloudcms / static / cloudcms / js / forms.js
1 (function($){\r
2   \r
3   $.fn.formCheckBoxes = function(options) {\r
4     \r
5     return this.each(function() {\r
6       // process checkboxes\r
7       var $this = $(this);\r
8       var el = $('<a class="checkbox-widget" href="javascript:void(0)"/>');\r
9       var form = $this.closest(".form-row");\r
10 \r
11       // add class to identify form rows which contain a checkbox\r
12       form.addClass("with-checkbox");\r
13       \r
14       if ($this.prev().length > 0) {\r
15         var lbl = $this.prev()[0];\r
16         if (lbl.nodeName == "LABEL" || lbl.nodeName == "label") {\r
17             $(lbl).addClass("checkbox-label");\r
18 \r
19             $(lbl).click(function(e){\r
20                 var src = e.srcElement.nodeName;\r
21                 if (src == "LABEL" || src == "label") {\r
22                     el.toggleClass("checked");\r
23                 };\r
24             })\r
25         }\r
26       }\r
27       $this.hide();\r
28       \r
29       if ($this.attr('checked')) {\r
30         el.addClass("checked");  \r
31       }\r
32 \r
33       el.click(function() {\r
34         el.toggleClass("checked");\r
35         $this.attr('checked', el.hasClass("checked"));\r
36       });\r
37       \r
38       el.keypress(function(e){\r
39         \r
40         if (e.keyCode == 0 || e.keyCode == 32){\r
41                 e.preventDefault();\r
42                 el.toggleClass("checked");\r
43                 $this.attr('checked', el.hasClass("checked"));\r
44         }\r
45       })\r
46 \r
47       $this.prev('label').before(el);\r
48     });\r
49 \r
50 \r
51   }\r
52 \r
53   $.fn.formErrors = function(options) {  \r
54     return this.each(function() {\r
55         var $this = $(this);\r
56 \r
57         // does the field has any errors ?\r
58         var errors = $this.find(".errorlist");\r
59         if (errors.length == 0) {\r
60             return;\r
61         }\r
62         \r
63         // create the custom error message block\r
64         // and copy the contents of the original\r
65         // error list\r
66         var el = $('<div class="form-error" />');\r
67         errors.find("li").each(function(){\r
68             el.html(el.html() + $(this).text() + "<br />");\r
69         })\r
70         \r
71         var formel = $this.find("input, select");\r
72         var lbl = $this.find("label");\r
73         var form = $this.closest("form");\r
74 \r
75 \r
76         // append element on form row \r
77         // and apply the appropriate styles\r
78         formel.closest(".form-row").append(el);\r
79         errors.remove();\r
80         var left = formel.width();\r
81         var top = formel.height();\r
82         var marginleft = lbl.width();\r
83         \r
84         // identify the position\r
85         // forms with innerlbales class\r
86         // display the label within the input fields\r
87         if ($(form).hasClass("innerlabels")) {\r
88             marginleft = 0;\r
89         }\r
90         \r
91         var styles = {\r
92             left: left + "px", \r
93             top: top + "px", \r
94             width: formel.outerWidth() - 10,\r
95             marginLeft: marginleft,\r
96             marginBottom: 5\r
97         }\r
98         \r
99         if (formel.attr("type") != "checkbox") {\r
100             el.css(styles);\r
101         } else {\r
102             el.css("margin-top", "5px");\r
103         }\r
104     });\r
105 \r
106   };\r
107 })( jQuery );\r