merged cont.
[opensuse:yast-rest-service.git] / webservice / public / javascripts / webyast-firewall.js
1 /*
2 #--
3 # Webyast Webservice framework
4 #
5 # Copyright (C) 2009, 2010 Novell, Inc.
6 #   This library is free software; you can redistribute it and/or modify
7 # it only under the terms of version 2.1 of the GNU Lesser General Public
8 # License as published by the Free Software Foundation.
9 #
10 #   This library is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13 # details.
14 #
15 #   You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 #++
19 */
20
21 //TRACK THE FORM CHANGES
22 var formChanged = false;
23
24 function initChagesTrack(message) {
25   $("#on").click(formWasChanged);
26   $("#off").click(formWasChanged);
27
28   $('#firewallForm .firewall-service').bind('click', formWasChanged);
29
30    $("#firewall-wrapper .action-link").click(function(event) {
31      event.stopPropagation();
32      event.preventDefault();
33
34      if (formChanged == true) {
35        $.modalDialog.dialog({message:message, form: 'firewallForm'});
36      } else {
37       document.location = event.target.href;
38      }
39    });
40 }
41
42 function formWasChanged() {
43   formChanged = true;
44   $('#firewallForm .firewall-service').unbind('click', formWasChanged);
45 }
46
47 jQuery(function($){
48   //SORT SERVICES LIST
49   var $list = $('#allowed_services>span');
50   $list.css('display', 'inline-block');
51
52   var array = new Array();
53   $list = $list.tsort()
54
55   $.each($list, function(i, l){
56     if (jQuery.inArray($(l).text().substr(0, 1).toLowerCase(), array) == -1) {
57       array.push($(l).text().substr(0, 1).toLowerCase())
58     }
59   });
60
61   var category = -1;
62   var lastElement = -1;
63
64   $.each($list, function(i, elem){
65     var firstChar = $(elem).text().substr(0, 1).toLowerCase();
66
67     if(array.indexOf(firstChar) != category) {
68       $(elem).wrap('<p>').before('<b class="firstChar">' + $(elem).text().substr(0, 1) + '</b>');
69       lastElement = i;
70       category = array.indexOf(firstChar)
71     } else {
72       $($(elem)).insertAfter($list[lastElement]);
73     }
74   });
75
76   var $list = $("#blocked_services>span");
77   $list.css('display', 'inline-block');
78
79   var array = new Array();
80   $list = $list.tsort()
81
82   $.each($list, function(i, l){
83     if (jQuery.inArray($(l).text().substr(0, 1).toLowerCase(), array) == -1) {
84       array.push($(l).text().substr(0, 1).toLowerCase())
85     }
86   });
87
88   var category = -1;
89   var lastElement = -1;
90
91   $.each($list, function(i, elem){
92     var firstChar = $(elem).text().substr(0, 1).toLowerCase();
93
94     if(array.indexOf(firstChar) != category) {
95       $(elem).wrap('<p>').before('<b class="firstChar">' + $(elem).text().substr(0, 1) + '</b>');
96       lastElement = i;
97       category = array.indexOf(firstChar)
98     } else {
99       $($(elem)).insertAfter($list[lastElement]);
100     }
101   });
102 });
103
104 function enableFirewallForm() {
105   //Description Tooltip
106   /*gravity: $.fn.tipsy.autoNS,*/
107   $('span.firewall-service').tipsy({gravity: 's', delayIn: 500 })
108 //   $('span.firewall-service').removeClass('firewall_disabled');
109   $('span.firewall-service').removeClass('firewall_disabled').addClass('firewallForm_enabled');
110
111   //Change color on hover
112   $('#allowed_services span.firewall-service').hover(
113     function () {
114       $(this).css('color', '#8cb219');
115     },
116     function () {
117       $(this).css('color', '');
118     }
119   );
120
121   $('#allowed_services span.firewall-service').bind({
122     click: function(event){
123       $(this).fadeOut(200);
124       $("#fw_services_values input."+$(this).attr("value")).attr("value", "false");
125       $("#blocked_services span[value='"+$(this).attr("value")+"']").fadeIn(50).effect("highlight", {color:'#ff6440'}, 300);
126     }
127   });
128
129   //Change color on hover
130   $('#blocked_services span.firewall-service').hover(
131     function () {
132       $(this).css('color', '#ff7640');
133     },
134     function () {
135       $(this).css('color', '');
136     }
137   );
138
139   $('#blocked_services span.firewall-service').bind({
140     click: function(event){
141       $(this).fadeOut(200);
142       $("#fw_services_values input."+$(this).attr("value")).attr("value", "true");
143       $("#allowed_services span[value='"+$(this).attr("value")+"']").fadeIn(50).effect("highlight", {color:'#8cb219'}, 300);
144     }
145   });
146 }
147
148 function disableFirewallForm() {
149   $elements = $('span.firewall-service');
150 //   $elements.addClass('firewall_disabled');
151   $elements.removeClass('firewallForm_enabled').addClass('firewall_disabled');
152   $elements.unbind('click').unbind('mouseenter mouseleave');
153 }
154
155 // RADIO BUTTONS SWITCHER
156 $(document).ready(function(){
157   var $on = $('#on');
158   var $off = $('#off');
159
160   function toggleMode($id) {
161     if($id.val() == "on") {
162       $on.addClass('active');
163       $off.removeClass('active');
164
165       $('#allowed_services').removeClass('firewallForm_disabled');
166       $('#blocked_services').removeClass('firewallForm_disabled');
167
168       enableFirewallForm();
169       $('#use_firewall').click();
170     } else {
171       $off.addClass('active');
172       $on.removeClass('active');
173
174       $('#allowed_services').addClass('firewallForm_disabled');
175       $('#blocked_services').addClass('firewallForm_disabled');
176
177       disableFirewallForm();
178       $('#use_firewall').click();
179     }
180   }
181
182   $on.click(function(event) {
183     event.preventDefault();
184     toggleMode($(this));
185     return false;
186   });
187
188   $off.click(function(event) {
189     event.preventDefault();
190     toggleMode($(this));
191     return false;
192   });
193 });
194