Smoothen homepage clouds animation
[snf-cloudcms] / cloudcms / static / cloudcms / js / common.js
1 function setContainerMinHeight( applicableDiv){\r
2         \r
3     if ( $(applicableDiv).length > 0 ) {\r
4         //var h = $('.header').height(); div.header is not found \r
5         var f = $('.footer').height();\r
6         var w = $(window).height();\r
7         var pTop = parseInt (($(applicableDiv).css('padding-top').replace("px", "")) );\r
8         var pBottom = parseInt (($(applicableDiv).css('padding-bottom').replace("px", "")));\r
9 \r
10         var c = w - ( f+pTop+pBottom+36);//36 is header's height.\r
11         $(applicableDiv).css('min-height', c);\r
12     }    \r
13 \r
14 }\r
15 \r
16 function tableFixedCols(table, firstColWidth ){\r
17         ColsNum = $('table th').size();\r
18         var ColWidth = parseFloat( (100 - firstColWidth)/ColsNum ).toFixed(0);\r
19         var ColWidthPercentage = ColWidth+'%';\r
20         var firstColWidthPercentage = firstColWidth+'%';\r
21         $('.projects table th, .projects  table td').attr('width',ColWidthPercentage ); \r
22         $('.projects table tr td:first-child,.projects  table tr th:first-child').attr('width',firstColWidthPercentage );\r
23         \r
24 }\r
25 \r
26 function addClassHover(hoverEl, applicableEl){ \r
27         $(hoverEl).hover(\r
28       function () {\r
29          \r
30          $(applicableEl).addClass('red-border')\r
31       }, \r
32       function () {\r
33         $(applicableEl).removeClass('red-border');\r
34     \r
35     });\r
36 }\r
37 //equal heights\r
38  \r
39 (function($) {\r
40         $.fn.equalHeights = function(minHeight, maxHeight) {\r
41                 tallest = (minHeight) ? minHeight : 0;\r
42                 this.each(function() {\r
43                         if($(this).height() > tallest) {\r
44                                 tallest = $(this).height();\r
45                         }\r
46                 });\r
47                 if((maxHeight) && tallest > maxHeight) tallest = maxHeight;\r
48                 return this.each(function() {\r
49                         $(this).height(tallest);\r
50                 });\r
51         }\r
52 })(jQuery);\r
53 \r
54 \r
55 \r
56 // fix for iPhone - iPad orientation bug \r
57 var metas = document.getElementsByTagName('meta');\r
58 function resetViewport() {\r
59     var i;\r
60     if (navigator.userAgent.match(/iPhone/i)) {\r
61                 for (i=0; i<metas.length; i++) {\r
62                 if (metas[i].name == "viewport") {\r
63                         metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";\r
64                 }\r
65                 }\r
66         }\r
67 }\r
68 resetViewport();\r
69     \r
70 window.onorientationchange = function() {\r
71     resetViewport();\r
72 };\r
73     \r
74 function gestureStart() {\r
75   for (i=0; i<metas.length; i++) {\r
76     if (metas[i].name == "viewport") {\r
77       metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";\r
78     }\r
79   }\r
80 }\r
81 \r
82 if (navigator.userAgent.match(/iPhone/i)) {\r
83         document.addEventListener("gesturestart", gestureStart, false);\r
84 }\r
85 //end of fix\r
86 \r
87   \r
88 $(document).ready(function() {\r
89    \r
90 \r
91 \r
92     setContainerMinHeight('.container .wrapper');\r
93     tableFixedCols('my-projects', 25);\r
94         \r
95     $('.show-extra').click(function(e) {\r
96         e.preventDefault();\r
97         $(this).parents('.bg-wrap').find('.extra').slideToggle(600);\r
98     });\r
99     $('.hide-extra').click(function(e) {\r
100         e.preventDefault();\r
101         $(this).parents('.bg-wrap').find('.extra').slideUp(600);\r
102     });\r
103     \r
104     $('.box-more p').click(function(e) {\r
105         $(this).siblings('.clearfix').toggle('slow');\r
106         $(this).parents('.box-more').toggleClass('border');\r
107     });\r
108         \r
109         var fixTopMessageHeight = function() {\r
110                 var topMargin = parseInt($('.mainlogo img').height())+parseInt($('.top-msg').css('marginBottom'));\r
111                 $('.mainlogo').css('marginTop','-'+topMargin+'px');\r
112         }\r
113         \r
114   // Uncomment to hide logo upon top message appearance\r
115 \r
116         // if ($('.mainlogo img').length > 0) {\r
117         //      $('.mainlogo img').bind('load', fixTopMessageHeight)\r
118         // } else {\r
119         //      fixTopMessageHeight();\r
120         // }\r
121         \r
122         $('.top-msg a.close').click(function(e) {\r
123                 e.preventDefault();\r
124         $('.top-msg').animate({\r
125             paddingTop:'0',\r
126             paddingBottom:'0',\r
127             height:'0'\r
128         }, 1000, function (){\r
129              $('.top-msg').removeClass('active')\r
130         });\r
131         $('.mainlogo').animate({\r
132             marginTop:'0'\r
133         }, 1000, function (){\r
134              //todo\r
135         });\r
136     }); \r
137     \r
138      \r
139         $('select.dropkicked').dropkick({\r
140                 change: function (value, label) {\r
141                     $(this).parents('form').submit();\r
142                     \r
143                 }\r
144         });\r
145         \r
146         $('.with-info select').attr('tabindex','1');\r
147     $('.with-info select').dropkick();\r
148     \r
149     $('.top-msg .success').parents('.top-msg').addClass('success');\r
150     $('.top-msg .error').parents('.top-msg').addClass('error');\r
151     $('.top-msg .warning').parents('.top-msg').addClass('warning');\r
152     $('.top-msg .info').parents('.top-msg').addClass('info');\r
153     \r
154     // clouds homepage animation\r
155     $('#animation a').hover(\r
156       function () {\r
157         \r
158         $(this).animate({\r
159            top: '+=-5'   \r
160            }, 300, function() {\r
161                 if ($(this).find('img').attr('src').indexOf("_top") == -1) {\r
162                         var src = $(this).find('img').attr('src').replace('.png', '_top.png')\r
163                         $(this).find('img').attr("src", src);\r
164                 }\r
165 \r
166                 });\r
167         $(this).siblings('p').find('img').animate({\r
168           width: '60%'       \r
169         }, 300);\r
170       }, \r
171       function () {\r
172 \r
173         $(this).animate({top: '0'}, 300, function() {\r
174                 var src = $(this).find('img').attr('src').replace('_top.png', '.png')\r
175                 $(this).find('img').attr("src", src);\r
176                 });\r
177         $(this).siblings('p').find('img').animate({\r
178           width: '65%'       \r
179         },300);\r
180       }\r
181     );\r
182     \r
183     \r
184     \r
185     \r
186     $(function() {               \r
187                 $( "#id_start_date" ).datepicker({\r
188                         minDate: 0,\r
189                         defaultDate: "+0", \r
190             dateFormat: "yy-mm-dd",\r
191             onSelect: function( selectedDate ) {\r
192                 $( "#id_end_date" ).datepicker( "option", "minDate", selectedDate );\r
193             }\r
194         });\r
195         \r
196         $( "#id_end_date" ).datepicker({\r
197                 defaultDate: "+3w", \r
198             dateFormat: "yy-mm-dd",\r
199             onSelect: function( selectedDate ) {\r
200                 $( "#id_start_date" ).datepicker( "option", "maxDate", selectedDate );\r
201             }\r
202         });\r
203         });\r
204         \r
205          \r
206         \r
207         $('table .more-info').click(function(e){\r
208                 e.preventDefault();\r
209                 $(this).toggleClass('open');\r
210                 if ($(this).hasClass('open')){\r
211                         $(this).html('- less info ')\r
212                 } else {\r
213                         $(this).html('+ more info ')\r
214                 }\r
215                 $(this).parents('tr').next('tr').toggle();\r
216                  \r
217         });\r
218         \r
219         $('.projects .details .edit').click( function(e){\r
220                 e.preventDefault();\r
221                 $(this).parents('.details').children('.data').hide();\r
222                 $(this).parents('.details').children('.editable').slideDown(500, 'linear');\r
223                 $(this).hide();\r
224         });\r
225         \r
226         $('.editable .form-row').each(function() {\r
227                         if ( $(this).hasClass('with-errors') ){\r
228                                 $('.editable').show();\r
229                                 $('.projects .details a.edit, .projects .details .data').hide();\r
230                                 \r
231                         }\r
232                 });\r
233         \r
234  \r
235         $("input.leave, input.join").click(function () {\r
236                 $('dialog').hide();\r
237                 $(this).parents('.msg-wrap').find('.dialog').show();\r
238                 return false;      \r
239                 \r
240     });\r
241     \r
242      $('.msg-wrap .no').click( function(e){\r
243                 e.preventDefault();\r
244                 $(this).parents('.dialog').hide();\r
245         })\r
246     \r
247     $('.msg-wrap .yes').click( function(e){\r
248                 e.preventDefault();\r
249                 $(this).parents('.dialog').siblings('form').submit();\r
250         })\r
251     \r
252     $('.hidden-submit input[readonly!="True"]').focus(function () {\r
253          $('.hidden-submit .form-row.submit').slideDown(500);\r
254     });\r
255     \r
256     \r
257     \r
258    \r
259       \r
260     \r
261     setTimeout(function() {\r
262       if ($('input#id_username').val()){ \r
263         $('input#id_username').siblings('label').css('opacity','0');\r
264       };\r
265       if ($('input#id_password').val()){ \r
266         $('input#id_password').siblings('label').css('opacity','0');\r
267       }\r
268         }, 100);\r
269         \r
270         \r
271         \r
272         \r
273         $('.landing-page .cms').hover(\r
274       function () {\r
275          el = $('.cloudbar ul.services li').first();\r
276          var offset = el.offset();\r
277          positionX = offset.left;\r
278          $('#hand').css('left',positionX);               \r
279          $('#hand').show();\r
280       }, \r
281       function () {\r
282         $('#hand').hide();\r
283     \r
284     });  \r
285     \r
286     $('.landing-page .pithos').hover(\r
287       function () {\r
288          el = $('.cloudbar ul.services li:nth-child(3)');\r
289          var offset = el.offset();\r
290          positionX = offset.left;\r
291          left = parseInt(positionX) +20;\r
292          $('#hand').css('left',left+'px');               \r
293          $('#hand').show();\r
294       }, \r
295       function () {\r
296         $('#hand').hide();\r
297     \r
298     });  \r
299     \r
300     $('.landing-page .cyclades').hover(\r
301       function () {\r
302          el = $('.cloudbar ul.services li:nth-child(2)').first();\r
303          var offset = el.offset();\r
304          positionX = offset.left;\r
305          left = parseInt(positionX) +20;\r
306          $('#hand').css('left',left+'px');               \r
307          $('#hand').show();\r
308       }, \r
309       function () {\r
310         $('#hand').hide();\r
311     \r
312     });  \r
313     \r
314     \r
315     $('.landing-page .dashboard').hover(\r
316       function () {\r
317          el = $('.cloudbar .profile');\r
318          var offset = el.offset();\r
319          positionX = offset.left +50;\r
320          $('#hand').css('left',positionX);               \r
321          $('#hand').show();\r
322       }, \r
323       function () {\r
324         $('#hand').hide();\r
325     \r
326     });  \r
327     \r
328     $('.pagination a.disabled').click(function(e){\r
329         e.preventDefault();\r
330     });\r
331           \r
332         // fix for recaptcha fields\r
333         $('#okeanos_recaptcha').parents('.form-row').find('.extra-img').hide();\r
334 \r
335   fixEl = $('.details .lt');\r
336   if (fixEl.length){ window.fixEloffsetTop = fixEl.offset().top;} \r
337   \r
338 \r
339   $(".stats-block li em").equalHeights();\r
340 \r
341  \r
342 });\r
343         \r
344 $(window).resize(function() {\r
345     \r
346    setContainerMinHeight('.container .wrapper'); \r
347    $(".stats-block li em").equalHeights();\r
348     \r
349 \r
350 });\r
351 \r
352 \r
353 /* js for fixed faq/userguide side nav */\r
354 $(window).scroll(function () {\r
355 \r
356   if ( $('.details .lt').height() < $('.details .rt').height() ) {\r
357     if ($(window).scrollTop() > window.fixEloffsetTop){ \r
358       fixEl.addClass('fixed');\r
359     } else {\r
360       fixEl.removeClass('fixed');\r
361     }\r
362   }\r
363 \r
364 \r
365 \r
366 });\r