fork(4) download
  1. /**
  2.  * @todo: пожалуйста пишите в подобном стиле!!!!
  3.  */
  4. $(document).ready(function(){
  5. /**
  6. * Login button On main page
  7. */
  8. $('#login').click(GlobalHovers.loginClick);
  9. $('#register').click(GlobalHovers.registerClick);
  10. $('div#login-pupup,div.popup-close').die().live('click', GlobalHovers.loginCloseClick);
  11. $('ul.ajax-tab li').click(GlobalHovers.mainPageTabs);
  12. $('div.ico-print').click(GlobalHovers.printClick);
  13. $('a#reminder_send').live("click", GlobalHovers.sendReminder);
  14.  
  15. // for news_all.tpl & news.tpl
  16. $('.hbi-image.news-img-block').mouseenter(function(){
  17. $('.dt', $(this)).show();
  18. }).mouseleave(function(){
  19. $('.dt', $(this)).hide();
  20. });
  21. $('.hb-item a.news-list-link').mouseenter(function(){
  22. $(this).parents('.hb-item').find('.dt').show();
  23. }).mouseleave(function(){
  24. $(this).parents('.hb-item').find('.dt').hide();
  25. })
  26. });
  27.  
  28. var onLoad = function(e){
  29. $('.print_title_m').html($('.h-block .hb-head span').html());
  30. var temp = $('.hb-content').html();
  31. $('#print_content').html(temp);
  32. }
  33.  
  34. var GlobalHovers = new Function();
  35.  
  36. GlobalHovers.loginClick = function(){
  37. Popup.load('login');
  38. $('#registration_popup').live('click', GlobalHovers.registerClick);
  39. }
  40. GlobalHovers.loginCloseClick = function(){
  41. Popup.removePopup();
  42. }
  43.  
  44. GlobalHovers.sendReminder = function(){
  45. Popup.load('reminder_send');
  46. }
  47.  
  48. function refreshCaptcha(){
  49. d=new Date();
  50. $('#kсaptcha').attr('src', '');
  51. $('#kсaptcha').attr('src', '/kcaptcha/?rnd='+d.getTime());
  52. return false;
  53. }
  54.  
  55. function isValidEmailAddress(emailAddress) {
  56. var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
  57. return pattern.test(emailAddress);
  58. }
  59.  
  60. GlobalHovers.sendMailReminder = function(email){
  61. var s = '<div class="form-errors form-errors-list"><ul class="errors"><li><b>';
  62. var f = '</b></li></ul></div>';
  63. if(!isValidEmailAddress(email)){
  64. $("#errors").html(s+'Вы ввели не корректный Email'+f);
  65. return;
  66. }
  67.  
  68. var params = {
  69. email:email
  70. }
  71. $.ajax({
  72. url: '/auth/reminder',
  73. data: params,
  74. async: false,
  75. dataType: 'json',
  76. success: function(data){
  77. if(data.body['message'] == "OK"){
  78. $('#remind_text').html("<div>На указаный email, было отправлено письмо с инструкцией о восстановлении пароля.</div>");
  79. //GlobalHovers.loginCloseClick();
  80. }else{
  81. $("#errors").html(s+'Вы не зарегистрированы в данной системе'+f);
  82. }
  83. }
  84. });
  85. }
  86.  
  87. Onair = {
  88. setTimeout: function(interval) {
  89. //console.warn(interval);
  90. if(interval<=0) {
  91. interval = 600;
  92. }
  93. setTimeout(this.update, interval*1000);
  94. },
  95. update: function() {
  96. $.post('/help/getonair', function(data){
  97. // Если не загружено "Сейча в эфире" для текщего времени, то ставим таймер на 5 минут чтобы переспросить сервер через это время
  98. var timeout = 300;
  99.  
  100. if(data.body.onair) {
  101. if(data.body.onair.timeout) {
  102. timeout = data.body.onair.timeout+1;
  103.  
  104. $(".play-efir #pe-title").attr("title", data.body.onair.song);
  105. $(".play-efir #pe-title").html(data.body.onair.song);
  106. }
  107. else {
  108. $(".play-efir #pe-title").attr("title", ' - ');
  109. $(".play-efir #pe-title").html(' - ');
  110. }
  111. }
  112.  
  113. //console.log(timeout);
  114. Onair.setTimeout(timeout);
  115. }, "json");
  116. }
  117. }
  118.  
  119. GlobalHovers.registerClick = function(){
  120. Popup.load('register');
  121. }
  122. GlobalHovers.printClick = function(){
  123. window.print();
  124. }
  125. GlobalHovers.mainPageTabs = function(){
  126.  
  127. var oParent = $(this).parents('.h-block');
  128. var iItem = $(this).attr('item');
  129. var tab = $(oParent).attr('id');
  130.  
  131. $('ul.tabs li', oParent).removeClass('tab-current');
  132. $(this).addClass('tab-current');
  133.  
  134. var clickedPage = $('#tab-'+iItem, oParent);
  135. $('.tab-page', oParent).removeClass('tab-page-current');
  136.  
  137. if($(this).hasClass('loaded'))
  138. {
  139. $('.tab-page:not(.tab-page-current)', oParent).hide();
  140. clickedPage.show();
  141. }
  142. else
  143. {
  144. var _this = this;
  145.  
  146. $.ajax({
  147. type: 'POST',
  148. url: '/index/ajax-tab',
  149. data: { type : iItem ,tab:tab},
  150. success: function(data){
  151. if(data.status=='OK' && data.body.content)
  152. {
  153. clickedPage.append(data.body.content);
  154. clickedPage.addClass('tab-page-current')
  155. $(_this).addClass('loaded');
  156. }
  157. clickedPage.show();
  158. $('.tab-page:not(.tab-page-current)', oParent).hide();
  159. },
  160. dataType: 'json'
  161. });
  162. }
  163. }
  164. /**
  165.  * ================== выше этой линии не пиши свой код, а ты ниже=========================
  166.  */
  167.  
  168. var submenuTimeOut;
  169.  
  170. $(document).ready(function(){
  171.  
  172. if($.browser.msie && $.browser.version < 9.0 && window.PIE){
  173. applyCSS3();
  174. }
  175.  
  176. /*
  177. $('ul.tabs li').click(function(){
  178. var oParent = $(this).parents('.h-block');
  179. var iItem = $(this).attr('item');
  180.  
  181. $('ul.tabs li', oParent).removeClass('tab-current');
  182. $(this).addClass('tab-current');
  183.  
  184. $('.tab-page', oParent).removeClass('tab-page-current').hide();
  185. $('#tab-page-'+iItem, oParent).show();
  186.  
  187. });
  188. */
  189. $('.star').hover(
  190. function(){
  191. var parentObj = $(this).parents('.stars');
  192. $('.star', $(parentObj)).removeClass('star_hovered');
  193. $(this).addClass('star_hovered');
  194. $(this).prevAll().addClass('star_hovered');
  195. },
  196. function(){
  197. var parentObj = $(this).parents('.stars');
  198. $('.star', $(parentObj)).removeClass('star_hovered');
  199. }
  200. );
  201. $('.artists_menu_tab').hover(
  202. function(){
  203. if($('.sub-menu').size()==0) $('.menu-top').addClass('menu-top_nobr');
  204. $('.artists_menu').show();
  205. },
  206. function(){
  207. if($('.sub-menu').size()==0) $('.menu-top').removeClass('menu-top_nobr');
  208. $('.artists_menu').hide();
  209. }
  210. );
  211. $('.artists_menu').hover(
  212. function(){
  213. if($('.sub-menu').size()==0) $('.menu-top').addClass('menu-top_nobr');
  214. $('.artists_menu').show();
  215. },
  216. function(){
  217. if($('.sub-menu').size()==0) $('.menu-top').removeClass('menu-top_nobr');
  218. $('.artists_menu').hide();
  219. }
  220. );
  221.  
  222. $('.star').click(function(){
  223. var parentObj = $(this).parents('.stars');
  224. $('.star',$(parentObj)).removeClass('star_hovered')
  225. $(this).addClass('star_hovered');
  226. $(this).prevAll().addClass('star_hovered');
  227. $('.star', $(parentObj)).unbind();
  228. });
  229.  
  230. $('.btn-login', '.comments').click(function(){
  231. $('#login').click();
  232. });
  233.  
  234. $('.m-item-a').hover(function(){
  235. clearTimeout(submenuTimeOut);
  236. var par = $(this).parent();
  237. $('.m-item').removeClass('m-item-hover');
  238. par.addClass('m-item-hover');
  239. },function(data){
  240. submenuTimeOut = setTimeout(function(){
  241. $('.m-item').removeClass('m-item-hover');
  242. }, 500);
  243. });
  244.  
  245. $('.menu2').hover(function(){
  246. clearTimeout(submenuTimeOut);
  247. },function(data){
  248. submenuTimeOut = setTimeout(function(){
  249. $('.m-item').removeClass('m-item-hover');
  250. }, 500);
  251. })
  252.  
  253. //Onair.setTimeout(5);
  254. });
  255.  
  256.  
  257. var Artists = {
  258. getArtistsByLetter:function(obj, char, page, en){
  259. var page = page || 1;
  260. if(obj){
  261. $('.alph-item').removeClass('alph-item_hover');
  262. $(obj).addClass('alph-item_hover');
  263. }
  264. var data = {};
  265. if(char) data['char'] = char;
  266. if(page) data['page'] = page;
  267. if(en) data['en'] = en;
  268. $.post('/artist/ajax', data, function(data){
  269. $('#artists_list_content').html(data.body.list);
  270. $('#artist_menu_paginator').html(data.body.paginator);
  271. }, 'json');
  272. }
  273. }
  274.  
  275. function tabPhoneNumber(code){
  276. if(code.length == 3){
  277. $('#phone_number').focus();
  278. }
  279. }
  280.  
  281. function sendInteractiveIndex()
  282. {
  283. var auth = $("form#interactive_index").find('input.name').val();
  284. var text = $("form#interactive_index").find('textarea').val();
  285. var code = $("form#interactive_index").find('#code').val();
  286. var textarea = $("form#interactive_index").find('textarea');
  287. var notify_placeholder = $('.notify-placeholder', '#interactive_index');
  288.  
  289. notify_placeholder.hide();
  290. notify_placeholder.html('');
  291.  
  292. if(auth.length < 1){
  293. notify_placeholder.html('Вы не авторизованы и поэтому не можете отправить это сообщение.');
  294. notifyPlaceHolderIndex(notify_placeholder, textarea, null, text);
  295. return;
  296. }
  297.  
  298. if(text.length > 250){
  299. notify_placeholder.html('Вы привысили лимит символов');
  300. notifyPlaceHolderIndex(notify_placeholder, textarea, null, text);
  301. return;
  302. }
  303.  
  304. if(text.length < 2){
  305. notify_placeholder.html('Вы не ввели текст');
  306. notifyPlaceHolderIndex(notify_placeholder, textarea, null, text);
  307. return;
  308. }
  309. var params = {
  310. auth:auth,
  311. text:text,
  312. code:code
  313. }
  314.  
  315. $.ajax({
  316. url: '/interactive/sendindex',
  317. data: params,
  318. async: false,
  319. dataType: 'json',
  320. type:"POST",
  321. success: function(data){
  322. //alert(print_r(data.body[0]['code']));
  323. if(data.body['status'] == 1){
  324. notify_placeholder.html('Спасибо! Ваше сообщение отправлено на модерацию.');
  325. }else if(data.body['status'] == 2){
  326. notify_placeholder.html('Сервис временно не доступен.');
  327. }else if(data.body['status'] == 3){
  328. notify_placeholder.html('<span class="err_upper">ВЫ ПРЕВЫСИЛИ ЛИМИТ.</span> Не более 3х сообщений в течение 30 минут.');
  329. }else if(data.body[0]['code']['CaptchaInvalid']){
  330. notify_placeholder.html(data.body[0]['code']['CaptchaInvalid']);
  331. }else if(data.body[0]['code']['isEmpty']){
  332. notify_placeholder.html('Необходимо ввести текст с картинки');
  333. }
  334. notifyPlaceHolderIndex(notify_placeholder, textarea ,data, text);
  335. notify_placeholder.click(function(){
  336. $(this).hide();
  337. $('textarea', '#interactive_index').click();
  338. });
  339. }
  340. });
  341. }
  342.  
  343. function notifyPlaceHolderIndex(notify_placeholder, textarea, data, text){
  344. $('#kсaptcha').attr('src', '/kcaptcha/?rnd=1234?'+(new Date().getTime()));
  345. $("form#interactive_index").find('#code').val("");
  346. textarea.val(" ");
  347. if(notify_placeholder!='' && data){
  348. $('textarea', '#interactive_index').removeAttr('placehilder');
  349. notify_placeholder.show();
  350. setTimeout(function(){
  351. if(data.body['status']){
  352. notify_placeholder.hide();
  353. textarea.val("");
  354. }else if(data.body[0]['code']){
  355. notify_placeholder.hide();
  356. textarea.val(text);
  357. }
  358. },6000)
  359. }else{
  360. $('textarea', '#interactive_index').removeAttr('placehilder');
  361. notify_placeholder.show();
  362. setTimeout(function(){
  363. notify_placeholder.hide();
  364. textarea.val(text);
  365. },6000)
  366. }
  367. }
  368.  
  369.  
  370. function print_r(arr, level) {
  371. var print_red_text = "";
  372. if(!level) level = 0;
  373. var level_padding = "";
  374. for(var j=0; j<level+1; j++) level_padding += " ";
  375. if(typeof(arr) == 'object') {
  376. for(var item in arr) {
  377. var value = arr[item];
  378. if(typeof(value) == 'object') {
  379. print_red_text += level_padding + "'" + item + "' :\n";
  380. print_red_text += print_r(value,level+1);
  381. }
  382. else
  383. print_red_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  384. }
  385. }
  386. else print_red_text = "===>"+arr+"<===("+typeof(arr)+")";
  387. return print_red_text;
  388. }
  389.  
  390. function applyCSS3(){
  391. $('.rounded, .red-btn, .hb-head, .heads, .menu-top, .sc_item_right, .sc_item, .h-block, .sub-menu, .find_form, .tabs li a, .tabs li.tab-current a, .tabs1 li a, .tabs1 li.tab-current a, .band div.play-efir .pe-head, .paginator a.current, .btn-send, .custom-input').each(function(){
  392. PIE.attach(this);
  393. });
  394. }
  395.  
  396. RatingHand = {
  397. param:{object_type:null,object_id : null,substance : null, value:null},
  398. init:function(val, obj){
  399. //Сохраняем значения в объект
  400. this.param.object_id = obj.parent("#hand_rating").find(':input[name="object_id"]').val();
  401. this.param.object_type = obj.parent("#hand_rating").find(':input[name="object_type"]').val();
  402. this.param.substance = obj.parent("#hand_rating").find(':input[name="substance"]').val();
  403. this.param.value = val;
  404. },send:function(val,obj,user){
  405. this.init(val, obj);
  406.  
  407. if(!user){
  408. obj.parent("#hand_rating").find('.status_message_hand').text("Только для зарегистрированных!");
  409. obj.parent("#hand_rating").find('.status_message_hand').css("color","red");
  410. obj.parent("#hand_rating").find('.status_message_hand').css("margin-left","100px");
  411. return;
  412. }
  413. for(var key in this.param){
  414. if(!this.param[key]){
  415. alert('Ошибка!!! Ни все параметры были проинициализированы.');
  416. return;
  417. }
  418. }
  419.  
  420. $.ajax({
  421. url: '/rating/hand',
  422. data: this.param,
  423. async: false,
  424. dataType: 'json',
  425. type:"POST",
  426. success: function(data){
  427. if(data.rating > 0){
  428. obj.css('background','url(/images/hand_black.png) no-repeat center');
  429. obj.attr("onclick", " ");
  430. obj.css("cursor","default");
  431. //obj.parent("#hand_rating").css('margin-left', '-10px');
  432. obj.parent("#hand_rating").find('.status_message_hand').text("Спасибо, Ваш голос учтен!");
  433. obj.parent("#hand_rating").find('.handrating_chislo').css("display","block");
  434. obj.parent("#hand_rating").find('.handrating_chislo').text(data.rating);
  435. obj.css("margin-left","55px");
  436. }else{
  437. obj.attr("onclick", " ");
  438. obj.css("cursor","default");
  439. obj.parent("#hand_rating").find('.status_message_hand').text('Извините, Вы уже голосовали!');
  440. obj.parent("#hand_rating").find('.status_message_hand').css("color","red");
  441. //obj.parent("#hand_rating").find('.status_message_hand').css("margin-left","80px");
  442. }
  443. }
  444. });
  445. //alert(this.param.object_id+' / '+this.param.object_type+' / '+this.param.substance+" / "+this.param.value);
  446. }
  447. }
  448.  
  449. /*etyulenev object*/
  450. /*
  451. * Объект должен отправлять комментарии в контакт
  452. *
  453. * */
  454. SocMessage = {
  455. vk_mid:null, //profile_id vk
  456. vk_sig:null,
  457. vk_sid:null,
  458. vk_expire:null,
  459. vk_secret:null,
  460. title:"",
  461. message:"",
  462. authType:"",
  463. init:function(/*Инициализация должна принимать сообщение которое объект должен отправить*/message){
  464. this.message = message;
  465. this.fb_title = document.title;
  466. if(this.authType == "http://v...content-available-to-author-only...e.ru/"){
  467. VK.Auth.getLoginStatus(function(response) {
  468. if (response.session){
  469. /* Авторизованный в Open API пользователь */
  470. /*Инициализация элементов пользователя, записывает данные в объект для удобства*/
  471. for(var key in response.session){
  472. eval("SocMessage.vk_"+key+"='"+response.session[key]+"'");
  473. }
  474. SocMessage.VkSend();
  475. } else {
  476. /* Неавторизованный в Open API пользователь */
  477. SocMessage.Vklogin();
  478. }
  479. });
  480. }else{
  481. this.facebook();
  482. }
  483. },
  484. Vklogin:function(){
  485. VK.Auth.login(function(response) {
  486. if (response.session) {
  487. //alert("Пользователь успешно авторизовался");
  488.  
  489. //После того как мы залогинились, снова пытаемся отправить сообщение в vk
  490. SocMessage.init(SocMessage.message);
  491.  
  492. if (response.settings) {
  493. //alert("Выбранные настройки доступа пользователя, если они были запрошены");
  494. }
  495. } else {
  496. //alert("Пользователь нажал кнопку Отмена в окне авторизации");
  497. }
  498. });
  499. },
  500. VkSend: function(){
  501. this.request( "wall.post"/*"comments.post"*/,
  502. {
  503. message: this.message,//, текст сообщения
  504. //attachments: "photo-22186156_196620153,http://"+location.host+"/?ad_com=5621&utm_source=Vkontakte.ru&utm_medium=registration"
  505. attachments: window.location.href
  506. },
  507. function(response2)
  508. {
  509. //Возвращает статус типа proccesing:1
  510. //alert(print_r(response2));
  511. });
  512. },
  513. request: function(method, params, cbFunc){
  514. t = this;
  515. params.test_mode = 1;
  516.  
  517. VK.api(method, params, function(data){
  518. lastResponse = data;
  519. if(data.error){
  520. //alert("ERROR: " + data.error.error_msg);
  521. data = [];
  522. } else {
  523. data = data.response;
  524. }
  525.  
  526. //t.cache[key] = data;
  527. cbFunc(data);
  528.  
  529. }, function(){
  530. //alert(1)
  531. });
  532. },
  533. facebook: function(){
  534. //Инициализация скриптов для работы с FB находится в /application/layout/layout.tpl
  535.  
  536. //Картинка для записи
  537. var meta_og_image = $("meta#og_image").attr('content');
  538.  
  539. FB.ui({
  540. method: 'stream.publish',display:'popup',
  541. message: 'getting educated about Facebook Connect',
  542. attachment: {
  543. name: SocMessage.fb_title,
  544. caption: 'europaplustv.com',
  545. description: (this.message),
  546. 'media': [{ 'type': 'image',
  547. 'src': meta_og_image,
  548. 'href': meta_og_image}],
  549. href: 'http://g...content-available-to-author-only...b.com/facebook/connect-js'
  550. },
  551. action_links: [
  552. { text: 'Code', href: 'http://g...content-available-to-author-only...b.com/facebook/connect-js' }
  553. ],
  554. user_message_prompt: 'Share your thoughts about Connect'
  555. },
  556. function(response) {
  557. if (response && response.post_id) {
  558. //Комментарий опубликован.
  559. } else {
  560. //Комментарий не опубликован.
  561. }
  562. }
  563. );
  564. }
  565. }
  566.  
  567. function isNotMax(oTextArea) {
  568. return oTextArea.value.length <= oTextArea.getAttribute('maxlength');
  569. }
Runtime error #stdin #stdout #stderr 0.01s 29760KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
prog.js:4:0 ReferenceError: $ is not defined