common.js fix
[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         $('table th, table td').attr('width',ColWidthPercentage ); \r
22         $('table tr td:first-child, 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 $(document).ready(function() {\r
88    \r
89     setContainerMinHeight('.container .wrapper');\r
90     tableFixedCols('my-projects', 25);\r
91         \r
92     $('.show-extra').click(function(e) {\r
93         e.preventDefault();\r
94         $(this).parents('.bg-wrap').find('.extra').slideToggle(600);\r
95     });\r
96     $('.hide-extra').click(function(e) {\r
97         e.preventDefault();\r
98         $(this).parents('.bg-wrap').find('.extra').slideUp(600);\r
99     });\r
100     \r
101     $('.box-more p').click(function(e) {\r
102         $(this).siblings('.clearfix').toggle('slow');\r
103         $(this).parents('.box-more').toggleClass('border');\r
104     });\r
105         \r
106         var fixTopMessageHeight = function() {\r
107                 var topMargin = parseInt($('.mainlogo img').height())+parseInt($('.top-msg').css('marginBottom'));\r
108                 $('.mainlogo').css('marginTop','-'+topMargin+'px');\r
109         }\r
110         \r
111   // Uncomment to hide logo upon top message appearance\r
112 \r
113         // if ($('.mainlogo img').length > 0) {\r
114         //      $('.mainlogo img').bind('load', fixTopMessageHeight)\r
115         // } else {\r
116         //      fixTopMessageHeight();\r
117         // }\r
118         \r
119         $('.top-msg a.close').click(function(e) {\r
120                 e.preventDefault();\r
121         $('.top-msg').animate({\r
122             paddingTop:'0',\r
123             paddingBottom:'0',\r
124             height:'0'\r
125         }, 1000, function (){\r
126              $('.top-msg').removeClass('active')\r
127         });\r
128         $('.mainlogo').animate({\r
129             marginTop:'0'\r
130         }, 1000, function (){\r
131              //todo\r
132         });\r
133     }); \r
134     \r
135      \r
136         $('select.dropkicked').dropkick({\r
137                 change: function (value, label) {\r
138                     $(this).parents('form').submit();\r
139                     \r
140                 }\r
141         });\r
142         \r
143         $('.with-info select').attr('tabindex','1');\r
144     $('.with-info select').dropkick();\r
145     \r
146     $('.top-msg .success').parents('.top-msg').addClass('success');\r
147     $('.top-msg .error').parents('.top-msg').addClass('error');\r
148     $('.top-msg .warning').parents('.top-msg').addClass('warning');\r
149     $('.top-msg .info').parents('.top-msg').addClass('info');\r
150     \r
151     // clouds homepage animation\r
152     $('#animation a').hover(\r
153       function () {\r
154         \r
155         $(this).animate({\r
156            top: '+=-10'   \r
157            }, 600, function() {\r
158                 if ($(this).find('img').attr('src').indexOf("_top") == -1) {\r
159                         var src = $(this).find('img').attr('src').replace('.png', '_top.png')\r
160                         $(this).find('img').attr("src", src);\r
161                 }\r
162 \r
163                 });\r
164         $(this).siblings('p').find('img').animate({\r
165           width: '60%'       \r
166         }, 600);\r
167       }, \r
168       function () {\r
169 \r
170         $(this).animate({top: '0'}, 600, function() {\r
171                 var src = $(this).find('img').attr('src').replace('_top.png', '.png')\r
172                 $(this).find('img').attr("src", src);\r
173                 });\r
174         $(this).siblings('p').find('img').animate({\r
175           width: '65%'       \r
176         },600);\r
177       }\r
178     );\r
179     \r
180     \r
181     \r
182     \r
183     $(function() {               \r
184                 $( "#id_start_date" ).datepicker({\r
185                         minDate: 0,\r
186                         defaultDate: "+0", \r
187             dateFormat: "yy-mm-dd",\r
188             onSelect: function( selectedDate ) {\r
189                 $( "#id_end_date" ).datepicker( "option", "minDate", selectedDate );\r
190             }\r
191         });\r
192         \r
193         $( "#id_end_date" ).datepicker({\r
194                 defaultDate: "+3w", \r
195             dateFormat: "yy-mm-dd",\r
196             onSelect: function( selectedDate ) {\r
197                 $( "#id_start_date" ).datepicker( "option", "maxDate", selectedDate );\r
198             }\r
199         });\r
200         });\r
201         \r
202          \r
203         \r
204         $('table .more-info').click(function(e){\r
205                 e.preventDefault();\r
206                 $(this).toggleClass('open');\r
207                 if ($(this).hasClass('open')){\r
208                         $(this).html('- less info ')\r
209                 } else {\r
210                         $(this).html('+ more info ')\r
211                 }\r
212                 $(this).parents('tr').next('tr').toggle();\r
213                  \r
214         });\r
215         \r
216         $('.projects .details .edit').click( function(e){\r
217                 e.preventDefault();\r
218                 $(this).parents('.details').children('.data').hide();\r
219                 $(this).parents('.details').children('.editable').slideDown(500, 'linear');\r
220                 $(this).hide();\r
221         });\r
222         \r
223         $('.editable .form-row').each(function() {\r
224                         if ( $(this).hasClass('with-errors') ){\r
225                                 $('.editable').show();\r
226                                 $('.projects .details a.edit, .projects .details .data').hide();\r
227                                 \r
228                         }\r
229                 });\r
230         \r
231  \r
232         $("input.leave, input.join").click(function () {\r
233                 $('dialog').hide();\r
234                 $(this).parents('.msg-wrap').find('.dialog').show();\r
235                 return false;      \r
236                 \r
237     });\r
238     \r
239      $('.msg-wrap .no').click( function(e){\r
240                 e.preventDefault();\r
241                 $(this).parents('.dialog').hide();\r
242         })\r
243     \r
244     $('.msg-wrap .yes').click( function(e){\r
245                 e.preventDefault();\r
246                 $(this).parents('.dialog').siblings('form').submit();\r
247         })\r
248     \r
249     $('.hidden-submit input[readonly!="True"]').focus(function () {\r
250          $('.hidden-submit .form-row.submit').slideDown(500);\r
251     });\r
252     \r
253     \r
254     \r
255    \r
256       \r
257     \r
258     setTimeout(function() {\r
259       if ($('input#id_username').val()){ \r
260         $('input#id_username').siblings('label').css('opacity','0');\r
261       };\r
262       if ($('input#id_password').val()){ \r
263         $('input#id_password').siblings('label').css('opacity','0');\r
264       }\r
265         }, 100);\r
266         \r
267         \r
268         \r
269         \r
270         $('.landing-page .cms').hover(\r
271       function () {\r
272          el = $('.cloudbar ul.services li').first();\r
273          var offset = el.offset();\r
274          positionX = offset.left;\r
275          $('#hand').css('left',positionX);               \r
276          $('#hand').show();\r
277       }, \r
278       function () {\r
279         $('#hand').hide();\r
280     \r
281     });  \r
282     \r
283     $('.landing-page .pithos').hover(\r
284       function () {\r
285          el = $('.cloudbar ul.services li:nth-child(3)');\r
286          var offset = el.offset();\r
287          positionX = offset.left;\r
288          left = parseInt(positionX) +20;\r
289          $('#hand').css('left',left+'px');               \r
290          $('#hand').show();\r
291       }, \r
292       function () {\r
293         $('#hand').hide();\r
294     \r
295     });  \r
296     \r
297     $('.landing-page .cyclades').hover(\r
298       function () {\r
299          el = $('.cloudbar ul.services li:nth-child(2)').first();\r
300          var offset = el.offset();\r
301          positionX = offset.left;\r
302          left = parseInt(positionX) +20;\r
303          $('#hand').css('left',left+'px');               \r
304          $('#hand').show();\r
305       }, \r
306       function () {\r
307         $('#hand').hide();\r
308     \r
309     });  \r
310     \r
311     \r
312     $('.landing-page .dashboard').hover(\r
313       function () {\r
314          el = $('.cloudbar .profile');\r
315          var offset = el.offset();\r
316          positionX = offset.left +50;\r
317          $('#hand').css('left',positionX);               \r
318          $('#hand').show();\r
319       }, \r
320       function () {\r
321         $('#hand').hide();\r
322     \r
323     });  \r
324     \r
325     $('.pagination a.disabled').click(function(e){\r
326         e.preventDefault();\r
327     });\r
328           \r
329         // fix for recaptcha fields\r
330         $('#okeanos_recaptcha').parents('.form-row').find('.extra-img').hide();\r
331 \r
332   fixEl = $('.details .lt');\r
333   if (fixEl.offset()) {
334     window.fixEloffsetTop = fixEl.offset().top;\r
335   }
336    \r
337 });\r
338         \r
339 $(window).resize(function() {\r
340     \r
341    setContainerMinHeight('.container .wrapper');\r
342     \r
343 \r
344 });\r
345 \r
346 \r
347 /* js for fixed faq/userguide side nav */\r
348 $(window).scroll(function () {\r
349 \r
350   if ( $('.details .lt').height() < $('.details .rt').height() ) {\r
351     if ($(window).scrollTop() > window.fixEloffsetTop){ \r
352       fixEl.addClass('fixed');\r
353     } else {\r
354       fixEl.removeClass('fixed');\r
355     }\r
356   }\r
357 \r
358 \r
359 \r
360 });