Learn how to use jQuery at the Blog

iPlaynet « visit

  • Added 8 months ago
  • 290 Lines of Code shown
  • 0 Links of Interest
http://iplaynet.ru
This is my Source Code and I don't want to show it here
View Source Code only (as overlay)
// That code snippet belongs to iPlaynet - http://iplaynet.ru

function _eventDispather() {
	this.listeners = new Array();
	this.addListeners = function(type) {
		if (this.listeners[type] == undefined)
			this.listeners[type] = new Array();
			
		var args = new Array();
		for (var i = 1, len = arguments.length; i < len; i++)
			args.push(arguments[i]);
		
		this.listeners[type].push(args);
	}
	
	this.dispatchevent = function(type) {
		if (this.listeners[type] == undefined || this.listeners[type].length == 0)
			return false;
		
		var args = new Array();
		for (var i = 1, len = arguments.length; i < len; i++)
			args.push(arguments[i]);
		
		for (var i = 0, len = this.listeners[type].length; i < len; i++) {
			var f = this.listeners[type][i];
			f[1].apply(f[0], f.slice(2).concat(args));
		}
	}
}

window.eventDispather = new _eventDispather();

$(document).ready( function() {
	$("#more_filters, #more_categories").one("click", function() {
		var id = $(this).attr('id');
		$(".b-" + id, "#" + id + "-list").css("display", "block");
		$(this).remove();
		
		return false;
	});
	
	$("#main").usabillityInput();
	
	$("#post-comments")
		.find("a.comment-reply-link").reply().end()
		.find("#cancel_replay").cancelReply().end()
		.find("#commentform").commentajax();
	
	$("a", "#add_comment").click(function() {
		$("#post-comments").slideToggle('fast');
		return false;
	});
});

(function($) {
	var hash_prefix = "iplay_";
	
	var bgCH = function(b, m, p) {
		var mH = parseInt(m.height());
		var pH = parseInt(p.height()) + parseInt(p.css("paddingTop"));
		return b.height((pH > mH) ? pH : mH);
	}
	
	var posPreloader = function(p) {
		var preloader = (!!p.data && p.data.p) ? p.data.p : p;
		preloader.css({top:(($(window).height() - preloader.height()) / 2 + $(document).scrollTop())});
	}
	
	var loadVideoToPopUp = function(url, get_type) {
		
		if (!url) {
			return false;
		}
		
		var escClose = function(e) {
			if(e.which==27) closePopUp();
		};
		
		var closePopUp = function() {
			location.hash = 'close';
			$(document).unbind('keydown', escClose);
			$(window).unbind('resize scroll', posPreloader);
			
			popup.remove();
			
			return false;
		}
		
		var reply = function (plink) {
			if (!plink)
				return;
			$("a.comment-reply-link", plink).reply().click(function(){
				bgCH(bg, main, popup);
			});
		}
		
		if (!get_type) {
			get_type = 'post';
		}
		
		var main = $("#main");
		var popup = $('<div class="b-post b-popup-post"></div>');
		var bg = $('<i class="b-popup-post-bg"></i>').click(closePopUp);
		var preloader = $('<div class="b-post_preloader"><i class="b-bg1"></i><i class="b-bg2"></i></div>');
		
		$(document).bind('keydown', escClose);
		bgCH(bg, main, popup);
		
		eventDispather.addListeners('add_comment', this, bgCH, bg, main, popup);
		eventDispather.addListeners('add_comment', this, reply);
		
		$("body:eq(0)").append(popup.append(preloader).append(bg));
		bg.add(preloader).css('opacity', 0).fadeTo(200, 0.9);
		
		$(window).bind('resize scroll', {p:preloader}, posPreloader);
		posPreloader(preloader);
		
		$.post (url, {get_type: get_type}, function (data, textStatus) {
			preloader.fadeOut(200, function() {
				$(window).unbind('resize scroll', posPreloader);
				$(this).remove();
			});
			
			var close = $('<div class="b-popup-post-close b-popup-post-wrapper hFloat">' +
					'<a href="#close" class="b-ico b-ico-close"><span class="b-inline_block">???????</span><i class="ico"><i></i></i></a>' + 
				'</div>').find("a:eq(0)").click(closePopUp).end();
			
			var content = $('<div class="b-popup-post-content b-popup-post-wrapper"></div>').append($(data)).hide();
			var player = content.find("#player").css('visibility', 'hidden');
			
			var add_comment = content.find("#add_comment");
			var post_comments = $("#post-comments", content);
			
			content.usabillityInput();
			content.commentajax();
			
			if (post_comments.length) {
				reply(post_comments);
				
				$("#cancel_replay", post_comments).cancelReply().click(function(){
					bgCH(bg, main, popup);
				});
			}
			
			add_comment.find("a").click(function() {
				//var self = $(this);
				var lock;
				
				if (lock == undefined) {
					if (post_comments.length == 0) {
						lock = true;
						var count_comments = $("a.b-comments-count", add_comment).clone(true);
						$("a.b-comments-count", add_comment).remove();
						var preloader = $('<div class="b-add_comment_preloader b-inline_block">' +
											'<span class="b-content">????????</span>' +
											'<i class="b-bg"></i>' +
										'</div>');
						
						add_comment.append(preloader);
						
						$.post(url, {get_type: 'comments'}, function (data, textStatus) {
							preloader.remove();
							add_comment.append(count_comments);
							
							add_comment.after($(data));
							post_comments = $("#post-comments", content).hide(0);
							$("a.comment-reply-link", post_comments).reply().click(function(){
								bgCH(bg, main, popup);
							});
							
							$("#cancel_replay", post_comments).cancelReply().click(function(){
								bgCH(bg, main, popup);
							});
							
							content.usabillityInput();
							content.commentajax();
							bgCH(bg, main, popup);
							
							lock = false;
							count_comments.triggerHandler('click');
						});
					}
					else {
						lock = false;
						//content.commentajax();
					}
				}
				
				if (!lock) {
					post_comments.slideToggle('fast', function() {
						bgCH(bg, main, popup);
					});
				}
				
				return false;
			});
			
			popup.prepend(content).prepend(close);
			
			popup.css("paddingTop", $(document).scrollTop()).show(0, function() {
				bgCH(bg, main, popup);
			});
			
			content.slideDown('fast', function() {
				player.css('visibility', 'visible');
				bgCH(bg, main, popup);
			});
		});
	}
	
	$(document).ready(function() {
		
		if (location.hash.indexOf("#" + hash_prefix) === 0) {
			var vname = location.protocol + '//' + location.host + (location.port ? ':' + location.port : '') + '/' + location.hash.substr(new String("#" + hash_prefix).length) + '/';
			loadVideoToPopUp(vname);
		}
		
		$("a.b-play, a.b-comments-count", "#video_list").click(function(evt) {
			if (!$(this).data('video_name')) {
				$(this).data(
					'video_name',
					$(this).attr('href').replace(
						new RegExp(location.protocol + '//' + location.host + '(:' + location.port + ')?/(.*?)/', 'gi'), '$2'
					)
				);
			}
			
			location.hash = hash_prefix + $(this).data('video_name');
			
			loadVideoToPopUp($(this).attr('href'), ($(this).hasClass("b-comments-count")) ? 'post_comments' : 'post');
			return false;
		});
	});
	
})(jQuery);

(function($){
	$.fn.usabillityInput = function() {
		var s = function (self) {
			var p = self.parent();
			return p.find('label').add(p).filter("label[for='" + self.attr('id') + "']");
		}
		var check = function() {
			s($(this)).css("textIndent", (($(this).val($.trim($(this).val())).val() == '') ? "0px" : "-9999px"));
		}
		
		this.filter("input[type='text'], textarea").add(this.find("input[type='text'], textarea")).bind('focus', function() {
			s($(this)).css("textIndent", "-9999px");
		}).bind('blur',check).each(check);
		
		return this;
	}
})(jQuery);

(function($) {
	$.fn.reply = function() {
		return this.bind('click', function() {
			var parent = $(this).parents("li:eq(0)");
			
			if (!parent.data("parentId"))
				parent.data("parentId", parseInt(parent.attr("id").substr(parent.attr("id").lastIndexOf("-") + 1)));
			
			parent.after(
				$("#respond")
					.find("#comment_parent").val(parent.data("parentId"))
				.end()
			);
			return false;
		});
	}
	
	$.fn.cancelReply = function() {
		return this.click(function(){
			$("#post-comments").append(
				$("#respond")
					.find("#comment_parent").val(0)
				.end()
			);
			return false;
		});
	}
})(jQuery);

/*(function($) {
	$.log = function(message) {
	  if(window.console) {
	     console.debug(message);
	  } else {
	     alert(message);
	  }
	};
})(jQuery);*/