Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / ui / new_ui / ui / javascripts / vm-wizard.js @ 27a54f35

History | View | Annotate | Download (14.2 kB)

1 bb8cc1dc Olga Brani
ui.wizard = {
2 148aeffe Athina Bekakou
        current_step: undefined,
3 bb8cc1dc Olga Brani
        total_step: $('.wizard-content .step').length,
4 148aeffe Athina Bekakou
        current_position: undefined,
5 148aeffe Athina Bekakou
        relocation: undefined,
6 eba2aada Athina Bekakou
        btns: {
7 eba2aada Athina Bekakou
                start: undefined,
8 eba2aada Athina Bekakou
                close: undefined,
9 eba2aada Athina Bekakou
                next: undefined,
10 eba2aada Athina Bekakou
                previous: undefined,
11 eba2aada Athina Bekakou
                expand_down: undefined
12 eba2aada Athina Bekakou
        },
13 9b6be833 Olga Brani
        speed: 500,
14 935e59b9 Olga Brani
        semaphore:1,
15 1a3be78b Athina Bekakou
        vm: {
16 1a3be78b Athina Bekakou
                getSize: function(elem) {
17 1a3be78b Athina Bekakou
                        if ($(elem).hasClass('small')) {
18 1a3be78b Athina Bekakou
                                return 'small';
19 1a3be78b Athina Bekakou
                        } else if ($(elem).hasClass('medium')) {
20 1a3be78b Athina Bekakou
                                return 'medium';
21 1a3be78b Athina Bekakou
                        } else if ($(elem).hasClass('large')) {
22 1a3be78b Athina Bekakou
                                return 'large';
23 1a3be78b Athina Bekakou
                        }
24 adcfc986 Athina Bekakou
                },
25 adcfc986 Athina Bekakou
26 adcfc986 Athina Bekakou
27 adcfc986 Athina Bekakou
                pickResources: function(resource) {
28 adcfc986 Athina Bekakou
                        $('.flavor .with-flavor a:not(.' + resource + ')').removeClass('current');
29 adcfc986 Athina Bekakou
                        $('.flavor .with-flavor a.' + resource + '').addClass('current');
30 adcfc986 Athina Bekakou
                },
31 adcfc986 Athina Bekakou
32 adcfc986 Athina Bekakou
                hideNext: function() {
33 adcfc986 Athina Bekakou
                        if(ui.wizard.current_step == 2 && $('.flavor a.disabled').hasClass('small')) {
34 adcfc986 Athina Bekakou
                                return true;
35 adcfc986 Athina Bekakou
                        }
36 adcfc986 Athina Bekakou
                        else {
37 adcfc986 Athina Bekakou
                                return false;
38 adcfc986 Athina Bekakou
                        }
39 1a3be78b Athina Bekakou
                }
40 148aeffe Athina Bekakou
        },
41 1a3be78b Athina Bekakou
        network: {},
42 1a3be78b Athina Bekakou
43 bb8cc1dc Olga Brani
        getCurrent: function(){
44 935e59b9 Olga Brani
                return $('.step').filter('.current').first();
45 bb8cc1dc Olga Brani
        },
46 bb8cc1dc Olga Brani
47 bb8cc1dc Olga Brani
        getNextStep: function() {
48 bb8cc1dc Olga Brani
        return ui.wizard.getCurrent().next();
49 bb8cc1dc Olga Brani
    },
50 bb8cc1dc Olga Brani
51 bb8cc1dc Olga Brani
    getPreviousStep: function() {
52 bb8cc1dc Olga Brani
        return ui.wizard.getCurrent().prev();
53 bb8cc1dc Olga Brani
    },
54 148aeffe Athina Bekakou
55 bb8cc1dc Olga Brani
    getScrollOffset: function() {
56 bb8cc1dc Olga Brani
        return document.body.scrollTop;
57 bb8cc1dc Olga Brani
    },
58 bb8cc1dc Olga Brani
59 bb8cc1dc Olga Brani
        submitData: function() {
60 9b6be833 Olga Brani
                console.log('submit data dummy function');
61 9b6be833 Olga Brani
        },
62 148aeffe Athina Bekakou
63 bb8cc1dc Olga Brani
        data_next_array: ['el0', 'el2', 'el4', 'el7'],
64 5bda20fe Olga Brani
65 bb8cc1dc Olga Brani
        focusFun: function() {
66 bb8cc1dc Olga Brani
                $('.firstfocus-' + ui.wizard.current_step + '').first().focus();
67 770ad9fa Olga Brani
                $('.nav.next').removeAttr('data-next');
68 770ad9fa Olga Brani
                $('.nav.next').attr('data-next', ui.wizard.data_next_array[ui.wizard.current_step]);
69 5bda20fe Olga Brani
        },
70 5bda20fe Olga Brani
71 bb8cc1dc Olga Brani
        move: function(step, pos) {
72 935e59b9 Olga Brani
                ui.wizard.semaphore = 0;
73 8896dd4e Olga Brani
                $('.actions-bar').hide();
74 0c26d55c Athina Bekakou
                ui.wizard.focusFun();
75 0c26d55c Athina Bekakou
                ui.wizard.indicateStep(ui.wizard.current_step);
76 0c26d55c Athina Bekakou
                ui.wizard.setMovementTags(ui.wizard.current_step, ui.wizard.btns.previous, ui.wizard.btns.next);
77 bba1c85c Olga Brani
                $('body').css('overflow','hidden');
78 bb8cc1dc Olga Brani
                // the current visible pane
79 935e59b9 Olga Brani
        var current = this.getCurrent();
80 bb8cc1dc Olga Brani
        // Set next pane position on the right of the current one
81 bb8cc1dc Olga Brani
        // Add current to the next pane, so that it will become
82 bb8cc1dc Olga Brani
        // visible
83 bb8cc1dc Olga Brani
        step.css({
84 bb8cc1dc Olga Brani
            left: pos.toString() + '%'
85 bb8cc1dc Olga Brani
        }).addClass("current");
86 bb8cc1dc Olga Brani
        // identify the current scroll position. Use it to
87 bb8cc1dc Olga Brani
        // set next pane top position. We assume all panes
88 bb8cc1dc Olga Brani
        // are within the scroll context of the main window.
89 bb8cc1dc Olga Brani
        step.css({
90 bb8cc1dc Olga Brani
            top: this.getScrollOffset() + 'px'
91 bb8cc1dc Olga Brani
        });
92 8896dd4e Olga Brani
        $('.step').animate({
93 bb8cc1dc Olga Brani
            marginLeft: (-pos).toString() + '%'
94 bb8cc1dc Olga Brani
        }, {
95 935e59b9 Olga Brani
                                complete: _.bind(function() {
96 bb8cc1dc Olga Brani
                // assuming all the following take place
97 bb8cc1dc Olga Brani
                // instantaneously within a single browser 
98 bb8cc1dc Olga Brani
                // render cycle, no flickering should occur.
99 bb8cc1dc Olga Brani
                current.removeClass("current");
100 935e59b9 Olga Brani
                            window.scroll(0, 0);
101 bb8cc1dc Olga Brani
                step.css({
102 bb8cc1dc Olga Brani
                    left: '0',
103 bb8cc1dc Olga Brani
                    top: '0'
104 bb8cc1dc Olga Brani
                });
105 bb8cc1dc Olga Brani
                $('.step').css({
106 bb8cc1dc Olga Brani
                    marginLeft: '0'
107 bb8cc1dc Olga Brani
                });
108 bba1c85c Olga Brani
                $('body').css('overflow','visible');
109 e4c44fcc Olga Brani
                if (ui.wizard.current_step == 3 ){
110 e4c44fcc Olga Brani
                                        $('.vm-name input').first().focus();
111 e4c44fcc Olga Brani
                }
112 8896dd4e Olga Brani
                $('.actions-bar').show();
113 935e59b9 Olga Brani
                ui.wizard.semaphore =1;
114 bb8cc1dc Olga Brani
            }, this)
115 bb8cc1dc Olga Brani
        });
116 935e59b9 Olga Brani
117 148aeffe Athina Bekakou
        },
118 148aeffe Athina Bekakou
119 bb8cc1dc Olga Brani
        goNext: function() {
120 bb8cc1dc Olga Brani
                var next = ui.wizard.getNextStep();
121 935e59b9 Olga Brani
                if (ui.wizard.semaphore == 1) {
122 935e59b9 Olga Brani
                        ui.wizard.current_step++;
123 935e59b9 Olga Brani
                        ui.wizard.move(next, 100);
124 935e59b9 Olga Brani
                }
125 9b6be833 Olga Brani
        },
126 148aeffe Athina Bekakou
127 bb8cc1dc Olga Brani
        goPrev: function() {
128 bb8cc1dc Olga Brani
                var prev = ui.wizard.getPreviousStep();
129 935e59b9 Olga Brani
                if (ui.wizard.semaphore == 1) {
130 935e59b9 Olga Brani
                        ui.wizard.current_step--;
131 935e59b9 Olga Brani
                        ui.wizard.move(prev, -100);
132 935e59b9 Olga Brani
                }
133 9b6be833 Olga Brani
        },
134 df5f7743 Athina Bekakou
135 bb8cc1dc Olga Brani
        initEvents: function() {
136 df5f7743 Athina Bekakou
                $(document).keydown(function(e) {
137 1a3be78b Athina Bekakou
                        var exp1 = $('.vm-name input').is(':focus') && $('.vm-name input').val().length>0;
138 1a3be78b Athina Bekakou
                        var exp2 = $('.form-item input').is(':focus') && $('.form-item input').val().length>0;
139 eba2aada Athina Bekakou
                        // right arrow keyCode == 39
140 bb8cc1dc Olga Brani
                        if ($('.wizard:visible').length != 0) {
141 1a3be78b Athina Bekakou
                                if (e.keyCode == 39 && ui.wizard.current_step != (ui.wizard.total_step) &&(!exp1) && (!exp2)) {
142 0c26d55c Athina Bekakou
                                        ui.wizard.goNext();
143 0c26d55c Athina Bekakou
                                        return false;
144 0c26d55c Athina Bekakou
                                }
145 0c26d55c Athina Bekakou
                                // left arrow keyCode == 37
146 1a3be78b Athina Bekakou
                                else if (e.keyCode == 37 && ui.wizard.current_step != 1 &&(!exp1) &&(!exp2)) {
147 0c26d55c Athina Bekakou
                                        ui.wizard.goPrev();
148 0c26d55c Athina Bekakou
                                        return false;
149 0c26d55c Athina Bekakou
                                }
150 0c26d55c Athina Bekakou
                                // ESC
151 bb8cc1dc Olga Brani
                                else if (e.keyCode == 27 && ui.wizard.current_step == 1) {
152 6fcab23b Olga Brani
                                        ui.wizard.close();
153 0c26d55c Athina Bekakou
                                }
154 96d15954 Olga Brani
                        }
155 df5f7743 Athina Bekakou
                });
156 bb8cc1dc Olga Brani
157 bb8cc1dc Olga Brani
                ui.wizard.btns.next.click(function(e) {
158 e4c44fcc Olga Brani
                        if (ui.wizard.current_step == ui.wizard.total_step ){
159 e4c44fcc Olga Brani
                                ui.wizard.submitData();
160 e4c44fcc Olga Brani
                                ui.wizard.close();
161 e4c44fcc Olga Brani
                                return false;
162 e4c44fcc Olga Brani
                        }
163 0c26d55c Athina Bekakou
                        ui.wizard.goNext();
164 e4c44fcc Olga Brani
                });
165 df5f7743 Athina Bekakou
166 bb8cc1dc Olga Brani
                ui.wizard.btns.previous.click(function(e) {
167 e4c44fcc Olga Brani
                        if (ui.wizard.current_step == 1 ){
168 e4c44fcc Olga Brani
                                ui.wizard.close();
169 e4c44fcc Olga Brani
                                return false;
170 e4c44fcc Olga Brani
                        }
171 0c26d55c Athina Bekakou
                        ui.wizard.goPrev();
172 df5f7743 Athina Bekakou
                });
173 148aeffe Athina Bekakou
        },
174 df5f7743 Athina Bekakou
175 148aeffe Athina Bekakou
        // for the carousel index
176 0c26d55c Athina Bekakou
        indicateStep: function(step) {
177 188fe5d9 Olga Brani
                $('.wizard .top .sub-menu[data-step]').hide();
178 bb8cc1dc Olga Brani
                $('.wizard .top .sub-menu[data-step=' + step + ']').fadeIn();
179 bb8cc1dc Olga Brani
180 148aeffe Athina Bekakou
                $('.nums').children().removeClass('current');
181 bb8cc1dc Olga Brani
                $('.nums li:not(".current")').show().css("display", "inline");
182 bb8cc1dc Olga Brani
                $('.nums li:nth-child(' + ui.wizard.current_step + ')').addClass('current');
183 55f6cbfe Athina Bekakou
                $('.nums li.current').hide();
184 bb8cc1dc Olga Brani
                $('.nums li.current').fadeIn('slow').css("display", "inline");
185 61b185d6 Olga Brani
                $('.nums .current').prevAll('li').hide();
186 8b3ba816 Athina Bekakou
        },
187 8b3ba816 Athina Bekakou
188 df5f7743 Athina Bekakou
        // changes the text of next and previous buttons
189 0c26d55c Athina Bekakou
        setMovementTags: function() {
190 bb8cc1dc Olga Brani
                if (ui.wizard.current_step == 1) {
191 eba2aada Athina Bekakou
                        ui.wizard.btns.previous.find('span').html('CANCEL');
192 eba2aada Athina Bekakou
                        ui.wizard.btns.next.find('span').html('NEXT');
193 bb8cc1dc Olga Brani
                } else if (ui.wizard.current_step == ui.wizard.total_step) {
194 eba2aada Athina Bekakou
                        ui.wizard.btns.previous.find('span').html('PREVIOUS');
195 eba2aada Athina Bekakou
                        ui.wizard.btns.next.find('span').html('CREATE');
196 adcfc986 Athina Bekakou
                } else if (ui.wizard.vm.hideNext()){
197 adcfc986 Athina Bekakou
                        ui.wizard.btns.next.hide();
198 bb8cc1dc Olga Brani
                } else {
199 eba2aada Athina Bekakou
                        ui.wizard.btns.previous.find('span').html('PREVIOUS');
200 eba2aada Athina Bekakou
                        ui.wizard.btns.next.find('span').html('NEXT');
201 8b3ba816 Athina Bekakou
                }
202 df5f7743 Athina Bekakou
        },
203 df5f7743 Athina Bekakou
204 6fcab23b Olga Brani
        close: function() {
205 bb8cc1dc Olga Brani
                $('body').removeClass('with-overlay');
206 bb8cc1dc Olga Brani
                $('.overlay-area').fadeOut(400, function() {
207 bb8cc1dc Olga Brani
                        $('.overlay-div').hide();
208 6fcab23b Olga Brani
                });
209 45d9d315 Athina Bekakou
                ui.wizard.reset();
210 df5f7743 Athina Bekakou
        },
211 df5f7743 Athina Bekakou
        // manually sets elements to a initial state
212 45d9d315 Athina Bekakou
        reset: function() {
213 bb8cc1dc Olga Brani
                ui.wizard.current_step = 1;
214 bba1c85c Olga Brani
                $('.step').removeAttr('style');
215 bb8cc1dc Olga Brani
                $('.bottom').show();
216 bb8cc1dc Olga Brani
                ui.wizard.indicateStep(ui.wizard.current_step);
217 bb8cc1dc Olga Brani
                ui.wizard.setMovementTags();
218 bb8cc1dc Olga Brani
                $('.networks-area .more').show();
219 bb8cc1dc Olga Brani
                $('.details').hide();
220 97ee3637 Athina Bekakou
                $('.vm-name input').val("");
221 97ee3637 Athina Bekakou
                $('.form-item input').val("");
222 bb8cc1dc Olga Brani
                $('.advanced-conf-options').hide();
223 bb8cc1dc Olga Brani
                $('.snf-color-picker').hide();
224 bb8cc1dc Olga Brani
                ui.wizard.preselectElements('.wizard');
225 6bd1416f Athina Bekakou
        },
226 6bd1416f Athina Bekakou
227 0c26d55c Athina Bekakou
        expandArea: function() {
228 bb8cc1dc Olga Brani
                ui.wizard.btns.expand_down.click(function(e) {
229 bb8cc1dc Olga Brani
                        ui.expandArrow(ui.wizard.btns.expand_down);
230 bb8cc1dc Olga Brani
                        $('.wizard-content').removeAttr('style');
231 bb8cc1dc Olga Brani
                        ui.wizard.btns.expand_down.parents('div.advanced-conf-step').find('.advanced-conf-options').stop().slideToggle(600, function() {
232 bb8cc1dc Olga Brani
                                if ($('.advanced-conf-options:visible').length != 0) {
233 bb8cc1dc Olga Brani
                                        ui.wizard.btns.expand_down.find('.snf-arrow-down .snf-arrow-up').removeClass('snf-arrow-down').addClass('snf-arrow-up');
234 bb8cc1dc Olga Brani
                                } else {
235 bb8cc1dc Olga Brani
                                        ui.wizard.btns.expand_down.find('.snf-arrow-down .snf-arrow-up').addClass('snf-arrow-down');
236 bb8cc1dc Olga Brani
                                }
237 bb8cc1dc Olga Brani
238 bb8cc1dc Olga Brani
                        });
239 bb8cc1dc Olga Brani
                })
240 d53ad190 Athina Bekakou
        },
241 0c26d55c Athina Bekakou
        focusCustom: function(el, step) {
242 9b6be833 Olga Brani
                el.focus();
243 bb8cc1dc Olga Brani
                el.attr('data-step', step);
244 ca3c8b6e Athina Bekakou
        },
245 ca3c8b6e Athina Bekakou
246 0c26d55c Athina Bekakou
        preselectElements: function(area) {
247 bb8cc1dc Olga Brani
                $(area).find('.current').not('.preselected').removeClass('current');
248 bb8cc1dc Olga Brani
                $(area).find('.preselected').not('.current').addClass('current');
249 bb8cc1dc Olga Brani
                $(area).find('.custom.dropdown.medium a:first').addClass('current'); // to fix
250 bb8cc1dc Olga Brani
                $(area).find('.snf-radio-checked').not('.prechecked').toggleClass('snf-radio-checked snf-radio-unchecked');
251 bb8cc1dc Olga Brani
                $(area).find('.snf-radio-unchecked.prechecked').toggleClass('snf-radio-checked snf-radio-unchecked');
252 bb8cc1dc Olga Brani
                $(area).find('.snf-checkbox-checked').not('.prechecked').toggleClass('snf-checkbox-checked snf-checkbox-unchecked');
253 bb8cc1dc Olga Brani
                $(area).find('.snf-checkbox-unchecked.prechecked').toggleClass('snf-checkbox-checked snf-checkbox-unchecked');
254 bb8cc1dc Olga Brani
                $('.expand-link').find('.snf-arrow-up.preselected').toggleClass('snf-arrow-up snf-arrow-down');
255 bba1c85c Olga Brani
                $('.step-1').addClass('current');
256 f6cfe41c Athina Bekakou
                
257 f6cfe41c Athina Bekakou
                $('.os li').hide();
258 f6cfe41c Athina Bekakou
                $('#vm-wizard .top .sub-menu[data-step=1] .preselected').data('img-type')
259 f6cfe41c Athina Bekakou
                $('.os').find('.'+$('#vm-wizard .top .sub-menu[data-step=1] .preselected').data('img-type')).show();
260 ffaabee9 Olga Brani
        },
261 ffaabee9 Olga Brani
262 f6cfe41c Athina Bekakou
263 f6cfe41c Athina Bekakou
        showImageCategory: function(imagesCategory) {
264 f6cfe41c Athina Bekakou
                $(imagesCategory).closest('.sub-menu').find('.current').removeClass('current');
265 f6cfe41c Athina Bekakou
                $(imagesCategory).addClass('current');
266 f6cfe41c Athina Bekakou
                $('.os li').hide();
267 f6cfe41c Athina Bekakou
                $('.os .details').hide();
268 f6cfe41c Athina Bekakou
                selectedImages = $(imagesCategory).data('img-type');
269 f6cfe41c Athina Bekakou
                $('.os').find('.'+selectedImages).fadeIn();
270 f6cfe41c Athina Bekakou
                
271 f6cfe41c Athina Bekakou
        
272 17118c18 Athina Bekakou
        }
273 df5f7743 Athina Bekakou
274 148aeffe Athina Bekakou
}
275 148aeffe Athina Bekakou
276 148aeffe Athina Bekakou
277 bb8cc1dc Olga Brani
$(document).ready(function() {
278 148aeffe Athina Bekakou
279 bb8cc1dc Olga Brani
        /*
280 9b6be833 Olga Brani
Various functions for vm creation wizard
281 9b6be833 Olga Brani
*/
282 9b6be833 Olga Brani
283 bb8cc1dc Olga Brani
        /* step functions */
284 bb8cc1dc Olga Brani
        /* step-1: Pick OS */
285 96e40ea0 Olga Brani
        $('.wizard .os > li').keydown(function(e) {
286 96e40ea0 Olga Brani
          if(e.keyCode == 13) {
287 96e40ea0 Olga Brani
            $(this).trigger("click", true);
288 96e40ea0 Olga Brani
            e.preventDefault();
289 96e40ea0 Olga Brani
          }
290 96e40ea0 Olga Brani
        });
291 96e40ea0 Olga Brani
292 96e40ea0 Olga Brani
        $('.wizard .os > li').click(function(e, wasEnterKey) {
293 bb8cc1dc Olga Brani
                e.preventDefault();
294 96e40ea0 Olga Brani
                if ( $(this).hasClass('current') && wasEnterKey) {
295 96e40ea0 Olga Brani
                        ui.wizard.goNext();
296 96e40ea0 Olga Brani
                }
297 bb8cc1dc Olga Brani
                $('.wizard .os >li').removeClass('current');
298 bb8cc1dc Olga Brani
                $(this).addClass('current');
299 6f4b6de9 Olga Brani
        });
300 9b6be833 Olga Brani
301 bb8cc1dc Olga Brani
        $('.os .btn-col a').click(function(e) {
302 bb8cc1dc Olga Brani
                e.preventDefault();
303 bb8cc1dc Olga Brani
                e.stopPropagation();
304 bb8cc1dc Olga Brani
                $(this).toggleClass('current');
305 bb8cc1dc Olga Brani
                var self = this;
306 bb8cc1dc Olga Brani
                $(this).parents('li').find('.details').stop().slideToggle();
307 bb8cc1dc Olga Brani
        });
308 9b6be833 Olga Brani
309 bb8cc1dc Olga Brani
310 bb8cc1dc Olga Brani
        /* step-2: Select flavor */
311 adcfc986 Athina Bekakou
        var disabledElems = $('.flavor a.disabled');
312 adcfc986 Athina Bekakou
        var disabledElemsNum = $('.flavor a.disabled').length;
313 1a3be78b Athina Bekakou
        if(disabledElemsNum>0) {
314 adcfc986 Athina Bekakou
                var size;
315 1a3be78b Athina Bekakou
                for(i=0; i<disabledElemsNum; i++) {
316 adcfc986 Athina Bekakou
                        size = ui.wizard.vm.getSize(disabledElems.get(i));
317 adcfc986 Athina Bekakou
                        $('.wizard .sub-menu[data-step=2]').find('a[data-size=' + size + ']').removeClass('current').addClass('disabled');
318 adcfc986 Athina Bekakou
                        $('#vm-wizard .flavor').find('.'+size).removeClass('current preselected');
319 adcfc986 Athina Bekakou
                        if(size == 'small') {
320 adcfc986 Athina Bekakou
                                $('#vm-wizard .flavor .vm-storage-selection a').removeClass('current preselected');
321 adcfc986 Athina Bekakou
322 adcfc986 Athina Bekakou
                        }
323 1a3be78b Athina Bekakou
                }
324 1a3be78b Athina Bekakou
        }
325 1a3be78b Athina Bekakou
        $('.wizard .sub-menu a[data-size]:not(.disabled)').on("click", function(e) {
326 bb8cc1dc Olga Brani
                // e.preventDefault();
327 bb8cc1dc Olga Brani
                $(this).parents('.sub-menu').find('a').removeClass('current');
328 bb8cc1dc Olga Brani
                $(this).addClass('current');
329 adcfc986 Athina Bekakou
                ui.wizard.vm.pickResources($(this).data('size'));
330 bb8cc1dc Olga Brani
        });
331 bb8cc1dc Olga Brani
332 1a3be78b Athina Bekakou
        $('.wizard .flavor .options:not(".vm-storage-selection") a:not(.disabled)').click(function(e) {
333 bb8cc1dc Olga Brani
                // e.preventDefault();
334 bb8cc1dc Olga Brani
                $('.wizard .sub-menu a[data-size]').removeClass('current');
335 bb8cc1dc Olga Brani
                $(this).parents('.options').find('a').removeClass('current');
336 bb8cc1dc Olga Brani
                $(this).addClass('current');
337 1a3be78b Athina Bekakou
                var size = ui.wizard.vm.getSize(this);
338 1a3be78b Athina Bekakou
                var count = $('.wizard .step-2 .options.with-flavor .' + size + '.current').length;
339 bb8cc1dc Olga Brani
                if (count == 3) {
340 bb8cc1dc Olga Brani
                        $('.wizard .sub-menu[data-step=2]').find('a[data-size=' + size + ']').addClass('current');
341 bb8cc1dc Olga Brani
                }
342 bb8cc1dc Olga Brani
        });
343 bb8cc1dc Olga Brani
344 bb8cc1dc Olga Brani
        $('.wizard .flavor .options.vm-storage-selection a').click(function(e) {
345 bb8cc1dc Olga Brani
                // e.preventDefault();
346 bb8cc1dc Olga Brani
                $(this).parents('.options').find('a').removeClass('current');
347 bb8cc1dc Olga Brani
                $(this).addClass('current');
348 bb8cc1dc Olga Brani
        });
349 17118c18 Athina Bekakou
350 0a891fe0 Olga Brani
        $('.flavor .options a').hover(
351 bb8cc1dc Olga Brani
                function() {
352 0a891fe0 Olga Brani
                        var paragraph = $(this).parents('.options-bar').siblings('.title').find('p');
353 0a891fe0 Olga Brani
                        var text = $(this).data('help');
354 0a891fe0 Olga Brani
                        paragraph.html(text);
355 bb8cc1dc Olga Brani
                        paragraph.css('visibility', 'visible');
356 0a891fe0 Olga Brani
                }, function() {
357 0a891fe0 Olga Brani
                        var paragraph = $(this).parents('.options-bar').siblings('.title').find('p');
358 bb8cc1dc Olga Brani
                        paragraph.css('visibility', 'hidden');
359 bb8cc1dc Olga Brani
                }
360 bb8cc1dc Olga Brani
        );
361 1a3be78b Athina Bekakou
362 1a3be78b Athina Bekakou
363 bb8cc1dc Olga Brani
        /* step-3: Advanced options */
364 0c26d55c Athina Bekakou
365 0c26d55c Athina Bekakou
        // reaction li.click   
366 bb8cc1dc Olga Brani
        $('.advanced-conf-options .checkbox').click(function(e) {
367 bb8cc1dc Olga Brani
                e.preventDefault();
368 bb8cc1dc Olga Brani
                var self = this;
369 bb8cc1dc Olga Brani
                var checkbox = $(this).find('.check');
370 bb8cc1dc Olga Brani
                ui.changeCheckboxState(checkbox);
371 bb8cc1dc Olga Brani
                if ($(this).hasClass('has-more')) {
372 bb8cc1dc Olga Brani
                        $(this).next('.more').stop().slideToggle(400, function() {
373 bb8cc1dc Olga Brani
                                if ($(self).next('.more:visible').length != 0) {
374 bb8cc1dc Olga Brani
                                        $(checkbox).find('span').removeClass('snf-checkbox-unchecked').addClass('snf-checkbox-checked');
375 bb8cc1dc Olga Brani
                                } else {
376 bb8cc1dc Olga Brani
                                        $(checkbox).find('span').removeClass('snf-checkbox-checked').addClass('snf-checkbox-unchecked');
377 bb8cc1dc Olga Brani
                                }
378 bb8cc1dc Olga Brani
                        });
379 bb8cc1dc Olga Brani
                }
380 bb8cc1dc Olga Brani
        });
381 bb8cc1dc Olga Brani
382 bb8cc1dc Olga Brani
383 bb8cc1dc Olga Brani
384 bb8cc1dc Olga Brani
        // reaction a.click
385 bb8cc1dc Olga Brani
        $('.checkbox .check').click(function(e) {
386 0c26d55c Athina Bekakou
                e.stopPropagation();
387 0c26d55c Athina Bekakou
                var self = this;
388 bb8cc1dc Olga Brani
                if ($(this).closest('.checkbox').hasClass('has-more')) {
389 bb8cc1dc Olga Brani
                        $(this).parent().next('.more').stop().slideToggle(400, function() {
390 bb8cc1dc Olga Brani
                                if ($(self).parent().next('.more:visible').length != 0) {
391 bb8cc1dc Olga Brani
                                        $(self).find('span').removeClass('snf-checkbox-unchecked').addClass('snf-checkbox-checked');
392 bb8cc1dc Olga Brani
                                } else {
393 bb8cc1dc Olga Brani
                                        $(self).find('span').removeClass('snf-checkbox-checked').addClass('snf-checkbox-unchecked');
394 bb8cc1dc Olga Brani
                                }
395 bb8cc1dc Olga Brani
                        });
396 bb8cc1dc Olga Brani
                }
397 0c26d55c Athina Bekakou
        });
398 9b6be833 Olga Brani
399 bb8cc1dc Olga Brani
        $('.show-add-tag').click(function(e) {
400 bb8cc1dc Olga Brani
                e.preventDefault();
401 bb8cc1dc Olga Brani
                $(this).parents('.tags-area').find('.snf-color-picker').slideDown('slow', function() {
402 bb8cc1dc Olga Brani
                        $('#hide-add-tag-dummy').scrollintoview({
403 bb8cc1dc Olga Brani
                                'duration': 'slow'
404 bb8cc1dc Olga Brani
                        });
405 bb8cc1dc Olga Brani
                });
406 bb8cc1dc Olga Brani
                ui.colorPickerVisible = 1;
407 bb8cc1dc Olga Brani
        });
408 9b6be833 Olga Brani
409 bb8cc1dc Olga Brani
        $('.hide-add-tag').click(function(e) {
410 bb8cc1dc Olga Brani
                e.preventDefault();
411 bb8cc1dc Olga Brani
                $(this).parents('.tags-area').find('.snf-color-picker').slideUp(400, function() {
412 bb8cc1dc Olga Brani
                        $('.show-add-tag').first().scrollintoview({
413 bb8cc1dc Olga Brani
                                'duration': 'slow'
414 bb8cc1dc Olga Brani
                        });
415 bb8cc1dc Olga Brani
                        ui.colorPickerVisible = 0;
416 bb8cc1dc Olga Brani
                });
417 bb8cc1dc Olga Brani
        });
418 6bd1416f Athina Bekakou
419 bb8cc1dc Olga Brani
        /* end of step functions */
420 62462e34 Athina Bekakou
421 bb8cc1dc Olga Brani
        /* navigation and numbers functions */
422 bb8cc1dc Olga Brani
        $('.nav.previous').focus(function(e) {
423 bb8cc1dc Olga Brani
                $(this).addClass('active');
424 bb8cc1dc Olga Brani
        });
425 d53ad190 Athina Bekakou
426 bb8cc1dc Olga Brani
        $('.nav.previous').focusout(function(e) {
427 bb8cc1dc Olga Brani
                $(this).removeClass('active');
428 d53ad190 Athina Bekakou
429 bb8cc1dc Olga Brani
        });
430 d53ad190 Athina Bekakou
431 bb8cc1dc Olga Brani
        $('.sub-menu[data-step=2] li:last').find('a').focusout(function(e) {
432 bb8cc1dc Olga Brani
                $('.step-2').find('.dropdown a:first').focus();
433 d53ad190 Athina Bekakou
434 bb8cc1dc Olga Brani
        });
435 d53ad190 Athina Bekakou
436 bb8cc1dc Olga Brani
        $('.os .name-col').focus(function(e) {
437 bb8cc1dc Olga Brani
                $(this).parents('li').addClass('hover');
438 bb8cc1dc Olga Brani
        });
439 bb8cc1dc Olga Brani
440 bb8cc1dc Olga Brani
        $('.os .name-col').focusout(function(e) {
441 bb8cc1dc Olga Brani
                $(this).parents('li').removeClass('hover');
442 bb8cc1dc Olga Brani
        });
443 d53ad190 Athina Bekakou
444 eba2aada Athina Bekakou
445 bb8cc1dc Olga Brani
        /* end of navigation and numbers functions */
446 eba2aada Athina Bekakou
447 62462e34 Athina Bekakou
448 bb8cc1dc Olga Brani
        /* focus and tabs functionality */
449 62462e34 Athina Bekakou
450 bb8cc1dc Olga Brani
        $('a').keyup(function(e) {
451 935e59b9 Olga Brani
452 bb8cc1dc Olga Brani
                var self = this;
453 bb8cc1dc Olga Brani
                if (e.keyCode == 9 || e.which == 9) {
454 935e59b9 Olga Brani
                        if (e.shiftKey) {
455 935e59b9 Olga Brani
                        } else {
456 bb8cc1dc Olga Brani
                                //Focus next input
457 bb8cc1dc Olga Brani
                                if ($(self).attr('data-next')) {
458 bb8cc1dc Olga Brani
                                        $(self).focusout(function(e) {
459 bb8cc1dc Olga Brani
                                                var classname = $(self).data('next');
460 bb8cc1dc Olga Brani
                                                $('.' + classname + '').first().focus();
461 bb8cc1dc Olga Brani
                                        });
462 bb8cc1dc Olga Brani
                                }
463 770ad9fa Olga Brani
                        }
464 5bda20fe Olga Brani
                }
465 bb8cc1dc Olga Brani
        })
466 62462e34 Athina Bekakou
467 bb8cc1dc Olga Brani
        /* end of focus and tabs functionality */
468 d53ad190 Athina Bekakou
469 9b6be833 Olga Brani
        $('#vm-wizard').find('a').click(function(e) {
470 9b6be833 Olga Brani
                e.preventDefault();
471 9b6be833 Olga Brani
        });
472 bb8cc1dc Olga Brani
        ui.wizard.current_step = 1;
473 9b6be833 Olga Brani
        ui.wizard.btns.previous = $('.bottom').find('.nav.prev');
474 9b6be833 Olga Brani
        ui.wizard.btns.next = $('.bottom').find('.nav.next');
475 bb8cc1dc Olga Brani
        ui.wizard.btns.expand_down = $('.adv-main').find('.expand-link');
476 bb8cc1dc Olga Brani
        ui.wizard.btns.close = $('#vm-wizard').find('.close');
477 0c26d55c Athina Bekakou
        ui.wizard.initEvents();
478 0c26d55c Athina Bekakou
        ui.wizard.setMovementTags();
479 0c26d55c Athina Bekakou
        ui.wizard.expandArea();
480 6fcab23b Olga Brani
        ui.wizard.btns.close.click(function() {
481 6fcab23b Olga Brani
                ui.wizard.close();
482 9b6be833 Olga Brani
        });
483 f6cfe41c Athina Bekakou
        
484 f6cfe41c Athina Bekakou
        $('.os .system-images').show();
485 f6cfe41c Athina Bekakou
486 f6cfe41c Athina Bekakou
        $('#vm-wizard .top .sub-menu[data-step=1] a').click(function() {
487 f6cfe41c Athina Bekakou
                ui.wizard.showImageCategory(this);
488 f6cfe41c Athina Bekakou
        })
489 148aeffe Athina Bekakou
});