var timeout         = 500;
var closetimer		= 0;
var ddmenuitem      = 0;

window.onload = function() {
//	setupCorners();
}

function bookmark(title, url) {
    if (document.all)
        window.external.AddFavorite(url, title);
    else if (window.sidebar)
        window.sidebar.addPanel(title, url, "");
}

function setupCorners() {
	Nifty("div#sidebar h2","tr same-height");
	Nifty("div#main1 h2","top same-height");
	Nifty("div#main2 h2","tl same-height");
}

/*
function jsddm_open()
{	jsddm_canceltimer();
	jsddm_close();
	ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}

function jsddm_close()
{	if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}

function jsddm_timer()
{	closetimer = window.setTimeout(jsddm_close, timeout);}

function jsddm_canceltimer()
{	if(closetimer)
	{	window.clearTimeout(closetimer);
		closetimer = null;}}
				
function initDropDownMenu() {
	$('#jsddm > li').bind('mouseover', jsddm_open);
	$('#jsddm > li').bind('mouseout',  jsddm_timer);	
}
*/

function initMovieShow() {

	$('#tab-level-0 ul').tabs();
	$('div.rating').each(function() {
		$(this).rating('', {maxvalue:10, curvalue:$(this).attr('curvalue')});
	});

	$(".review_vote").click(function() {
		var vote_block = $(this).parent().parent();
		var tmp = vote_block.attr('id').split('_');
		var username = tmp[1];
		var mid = $('#mid').val();
//		alert(username+" "+mid);
		$.post(this.href, {'mid': mid, 'username': username}, function(data, textStatus) {
			var a = data.split('|');
			if (a[2]!=0) {
			    if (a[2]==+1) innerHtml = "<b>Yes</b> | No"; else innerHtml = "Yes | <b>No</b>";
			    $('.vote_mark', vote_block).html(innerHtml);
			    $('.vote_ratio', vote_block).html(a[0]+"/"+a[1]);
			}
		});						
		return false;
	});
	
	$(".link_vote").click(function() {
		var vote_block = $(this).parent().parent();
		var tmp = vote_block.attr('id').split('_');
		var lid = tmp[1];
		var vote_url = $(this).attr('href');

		var form_str = "\
			<form> \
				Does this link set work for you? \
				<input id='yes' name='vote_option' value='yes' type='radio'> Yes \
				<input id='no' name='vote_option' value='no' type='radio'> No \
				<br> \
				Your comment (optional): \
				<br> \
				<textarea class='link_comment' title='e.g. the reason you select yes/no'></textarea> \
				<br> \
				<div id='link_vote_fb'/> \
				<input type='submit' value='Submit' id='link_vote_submit' /> \
			</form>";
		
		$.facebox(form_str);

		$(".link_comment").labelify({ labelledClass: "labelinside" });
		
		if ($(this).text()=='Yes') {
			$('#yes').attr('checked', true);
		} else {
			$('#no').attr('checked', true);
		}
		
		
		$('#link_vote_submit').click(function() {
			var vo = $('#yes').attr('checked');
			var comment = $('.link_comment').val();
			if (comment==$('.link_comment').attr('title')) comment = '';
			var v = vo?1:0;
//			alert(v+' '+comment+' '+lid);
			$.post(vote_url, {'lid': lid, 'vote_option': v, 'comment': comment}, function(dt, textStatus) {
				$('#link_vote_fb').html(dt);
				$('#link_vote_submit').attr('disabled', true);
				if (dt.search('successfully')>0) {
					$('.arrows > img:last', vote_block).remove();
					var newArrow;
					if (v==1) newArrow = '<img src="/images/green_arrow.png" title="Healthy links" alt="Healthy links">';
					else newArrow = '<img src="/images/red_arrow.png" title="Unhealthy links" alt="Unhealthy links">';
					$('.arrows', vote_block).prepend(newArrow);
				}
			});			
			return false;
		});
		
		return false;
	});
	
	$('.view_comments').click(function() {
		var vote_block = $(this).parent();
		var tmp = vote_block.attr('id').split('_');
		var lid = tmp[1];
		var vc_url = $(this).attr('href');
//		alert(lid+' '+vc_url);
		$.get(vc_url, {'lid': lid}, function(dt, textStatus) {
			$.facebox(dt);
		});			
		return false;
	});
}

function initMovieLinkEdit() {
	// validation
	$('#form-movielink-edit').validate();
	
	$('#content').wysiwyg();
	
	if ($("#movie_id").val()!='') {
		$("#movie_title").attr("disabled", "true");
	} else {
	
		$("#movie_title").keydown(function() {
			$("#movie_id").val('');
		});	

		$("#movie_title").autocomplete($("#ac_url").val()).result(
			function (evt, data, formatted) {
				$("#movie_id").val(data[1]);
			}
		);
	}
	
	$(".lnk_type").click(function() {
		$(".lnk_type").removeAttr('checked');
		$(this).attr('checked', 'checked');
	});	

	$(".quality").click(function() {
		$(".quality").removeAttr('checked');
		$(this).attr('checked', 'checked');
	});	
}

function updateListLength() {
	var len = $("#list-movie").children().length;
	$("#list_leng").html(len+' movie'+(len>1?'s':''));
}

function removeMovieInList(liNode) {	
	liNode.remove();
	updateListLength();
}

function extractListMovies() {
	var ret = {};
	$("#list-movie li").each(function() {
		ret[$(this).attr('id')] = $('textarea', this).val();
	});
	return ret;
}

function compareListMovies(lm1, lm2) { // for update
	var ret = new Array();
	
	// DELETE
	for (var mid in lm1) {
		if (lm2[mid]==undefined) ret.push(new Array(mid, 'D', ''));
	}
	
	// CREATE OR UPDATE
	for (var mid in lm2) {
		if (lm1[mid]==undefined) ret.push(new Array(mid, 'C', lm2[mid]));
		else if (lm1[mid]!=lm2[mid]) ret.push(new Array(mid, 'U', lm2[mid]));
	}
	
	return ret;
}

function initListEdit() {
	// validation
	$("#form-list-edit").validate();

	updateListLength();	
	$("#list-movie .delete").click(function() { removeMovieInList( $(this).parent() ) });
	
	$("#movieTitle").autocomplete($("#ac_url").val()).result(
		function (evt, data, formatted) {
			if ($("#list-movie li[id="+data[1]+"]").length>0) {
				alert(data[0]+' is already in the list!');
			} else {
				var liHtml = "<li id='"+data[1]+"' class='clear'>	<div class='movie-cover'><img src='/"+data[3]+"' /></div>	<h3>"+data[0]+"</h3>	<textarea class='comment'></textarea>	<img class='delete' src='/images/icons/delete.gif' />	</li>";				
				var newLi = $(liHtml);
				$("#list-movie").append(newLi);				
				updateListLength();				
				$(".delete", newLi).click(function() { removeMovieInList($(this).parent()); });
			}
			$("#movieTitle").val("");
		}
	);
	
	var startList = extractListMovies();	
	$("#save_butt").click(function (e) {
		var endList = extractListMovies();
		$("#list_content").val($.toJSON(compareListMovies(startList, endList)));
//		alert($.toJSON(startList));
//		alert($.toJSON(endList));
//		alert($("#list_content").val());
	});
}

function initListFindByMovie() {
	$("#movieTitle").autocomplete($("#ac_url").val()).result(
		function (evt, data, formatted) {
			$("#content").load($("#fbma_url").val(), {mid: data[1]});
			$("#movieTitle").val("");
		}
	);
}

function initRatingFilter() {
	$("#artistName").autocomplete($("#ac_url").val()).result(
		function (evt, data, formatted) {
			$("#artistName").data("aid", data[1]);
		}
	);

	$("#artistName").keydown(function() {
		$("#artistName").removeData("aid");
	});
	
	initStarRating();
	clearAllRatings();
	$("#reset").click(function() {
		clearAllRatings();
	});
	$("#shuffle").click(function() {
		
		$('#movies_to_rate .loading').show();
		
		if ($("#artistName").val()!=''&&$("#artistName").data("aid")==undefined) {
			alert("Please select an artist");
			return;
		}
	
		var data = {};
		if ($("#artistName").data("aid")!=undefined) {
			data["a"] = $("#artistName").data("aid");			
		}
		data["c"] 	= $("#c").val();
		data["g"] 	= $("#g").val();
		data["n"] 	= $("#n").val();
		data["fr"] 	= $("#fr").val();
		data["to"] 	= $("#to").val();
		data["rpp"] = $("#rpp").val();
		
		var url = $("#filterForm").attr("action");
		$("#movies_to_rate").load(url, data, function() {
			initStarRating();
			clearAllRatings();
			$('#movies_to_rate .loading').hide();					
		});		
	});
	
	$("#save_shuffle").click(function() {
		var rates = new Array();
		$('div.rating').each(function() {
			var curvalue = $(this).data("curvalue");
			if (curvalue!=undefined&&curvalue!=0) {
				var mid = $(this).attr("id").split("_")[1];			
				rates.push({'mid': mid, 'rating': curvalue});
			}
		});
		var jsonData = $.toJSON(rates);
		$.post($("#rate_url").val(), {'rates': jsonData}, function(dt, textStatus) {
			$("#shuffle").click();
		});
	});

}

function initStarRating() {
	$('div.rating').each(function() {
		$(this).rating('', {maxvalue:10});
	});
	
	$('div.rating').mouseover(function() {
		$('.movie_to_rate .movie-cover').hide();
		var cover = $('.movie-cover', $(this).parent());
		cover.show();
	});
}

function clearAllRatings() {
	$('div.rating .cancel').each(function() {
		$(this).click();
	});		
}

function initRatingEdit() {
	// validation
	
	$.validator.addMethod("ratingValue", function() {
		var rv = $('div.rating').data("curvalue");
		return (1<=rv)&&(rv<=10);
	}, "Your rate is required.");
		
	$('#form-review-edit').validate({
		submitHandler: function(form) {
			var rv = $('div.rating').data("curvalue");
			$("#rating_value").val(rv);
			form.submit();
		},
		rules: {
		  rating_value: { ratingValue: true }
		}
	});

	if ($("#rating_value").val()!='') {
		var rv = $("#rating_value").val();
		$('div.rating').rating('', {maxvalue: 10, curvalue: rv});
		$('div.rating').data("curvalue", rv); 
	} else {
		initStarRating(); 
		$('div.rating').data("curvalue", 0); 
	}
}

function initLike() {
	$('a.like').click(function() {
		if ($(this).hasClass('marked')) {
			$.post($('#unlike_url').val(), {}, function(data, textStatus) {
//												alert(data);
											}
			);
			$(this).attr('title', 'Click here to like this list');
		} else {
			$.post($('#like_url').val(), {}, function(data, textStatus) {
//												alert(data);
											}
			);
			$(this).attr('title', 'Click here to stop liking this list');
		}
		$(this).toggleClass('marked');
		return false;
	});
}

function initListShow() {
	// validation
	$('#form-list-comment').validate();
	
	$('#post_butt').click(function() {
		if ($(this).hasClass('login-first')) {
			$('#quick-login').slideDown('normal');
			$('#username').focus();			
			return false;
		}
		$.post($('#pc_url').val(), {'id': $('#list_id').val(), 'comment': $('#comment').val()}, function(data) {
			$('#list-comments').append($(data));
			$('#comment').val('');
		});
		return false;
	});
	
	initLike();
}

var myCarousel = null;

function mycarousel_initCallback(carousel) {
	
	myCarousel = carousel;
	
//	alert('save carousel into myCarousel');
	
    // Disable autoscrolling if the user clicks the prev or next button.
    carousel.buttonNext.bind('click', function() {
        carousel.startAuto(0);
    });

    carousel.buttonPrev.bind('click', function() {
        carousel.startAuto(0);
    });

    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function() {
        carousel.stopAuto();
    }, function() {
        carousel.startAuto();
    });
	initStarRating();
};

function mycarousel_itemLoadCallback(carousel, state) {
	var url = $("#filterForm").attr("action");
	var param = $('#recommend_me').data('param');
	param['offset'] = carousel.first-1;
    jQuery.get(url, param,
        function(data) {
			carousel.add(carousel.first, data);
			if (carousel.first<30) {
				if (data.search('Hey')<0) {
					carousel.size(carousel.first+1);
				}
//				else {
//					myCarousel.reset();
//				}
			}    
        }
    );
};

function createRecommendationParam() {
	var data = {};
	if ($("#artistName").data("aid")!=undefined) {
		data["a"] = $("#artistName").data("aid");			
	}
	data["c"] 	= $("#c").val();
	data["g"] 	= $("#g").val();
	data["n"] 	= $("#n").val();
	data["fr"] 	= $("#fr").val();
	data["to"] 	= $("#to").val();
	if ($("#list_id").length>0) data["list_id"] 	= $("#list_id").val();
	
	return data;
}

function initRecommendationIndex() {
	var param = createRecommendationParam();
	$('#recommend_me').data('param', param);
	
    $('#mycarousel').jcarousel({
//    	animation: 'slow',
//    	wrap: 'last',
	    vertical: 1,
        scroll: 1,
        size: 2,
        start: 1,
        initCallback: mycarousel_initCallback,
        itemLoadCallback: mycarousel_itemLoadCallback
    });

	$("#artistName").autocomplete($("#ac_url").val()).result(
		function (evt, data, formatted) {
			$("#artistName").data("aid", data[1]);
		}
	);

	$("#artistName").keydown(function() {
		$("#artistName").removeData("aid");
	});
	
	$("#recommend_me").click(function() {
		if ($("#artistName").val()!=''&&$("#artistName").data("aid")==undefined) {
			alert("Please select an artist");
			return;
		}
	
		var url = $("#filterForm").attr("action");		
		var param = createRecommendationParam();
		$('#recommend_me').data('param', param);		
//		alert($.toJSON(param)+' '+url);
		
		myCarousel.reset();
	});
	
	initLike();	
}

function initProfileSettings() {
	// validation
	$('#form-sign-up').validate();
}

function initProfileLists() {
	$('.delete').click(function() {
		var answer = confirm("Do you really want to delete the list?");
		if (!answer) return false;
	});
}

function initProfileRequests() {
	$('.delete').click(function() {
		var answer = confirm("Do you really want to delete the request?");
		if (!answer) return false;
	});
}

function initProfileRatings() {
	$('.delete').click(function() {
		var answer = confirm("Do you really want to delete the rating?");
		if (!answer) return false;
	});
}

function initSfGuardAuthSignin() {
	//validation
	$('#form-sign-in').validate();
}

function initSfGuardAuthSignup() {
	//validation
	$('#form-sign-up').validate();
}

function initSfGuardAuthRequestReset() {
	//validation
	$('#form-request-reset').validate();
}

function initRequestEdit() {

	// validation
	
	$('#form-request-edit').validate();
	
	// ----------------------------------------------
	
	$('#all_link_types').click(function() {
		var parent = $(this).parent().parent();
		$(':checkbox', parent).each(function() {
			$(this).attr('checked', 'checked');
		});
		return false; 
	});
	$('#none_link_types').click(function() {
		var parent = $(this).parent().parent();
		$(':checkbox', parent).each(function() {
			$(this).removeAttr('checked');
		});
		return false; 
	});
	$('#all_qualities').click(function() {
		var parent = $(this).parent().parent();
		$(':checkbox', parent).each(function() {
			$(this).attr('checked', 'checked');
		});
		return false; 
	});
	$('#none_qualities').click(function() {
		var parent = $(this).parent().parent();
		$(':checkbox', parent).each(function() {
			$(this).removeAttr('checked');
		});
		return false; 
	});
}

$(document).ready(function() {
	initAll();
	initOne();
});

function initAll() {
	if ($("#q")!=null) {
//		$("#q").labelify({ labelledClass: "labelinside" });
	}
	initForm();
//	initDropDownMenu();
	
	$('.link-to-login').click(function() {
		$('#quick-login').slideDown('normal');
		$('#username').focus();
		return false;
	});

	$('.play-trailer').click(function() {
		$('#trailer-wrapper').show();
		return false;
	});
	
	$('.close-trailer').click(function() {
		$('#trailer-wrapper').hide();
		return false;
	});
	
	$('#close-login').click(function() {
		$('#quick-login').slideToggle('normal');
	});

	$('.remember_me_link').click(function() {
		if ($('#remember').attr('checked')) {
			$('#remember').removeAttr('checked');
		} else {
			$('#remember').attr('checked', 'checked');
		}
	});

	$("body").append("<div id='opaque' style='display: none;'></div>");

	$(document).bind('loading.facebox', function() {
	    $("#opaque").fadeIn();
	});
	$(document).bind('close.facebox', function() {
	    $("#opaque").fadeOut();
	});
	$(document).bind('afterReveal.facebox', function() {
	    // this is a fix for IE6 which resets the height to 100% of the window height
	    $("#opaque").height($(document).height());
	});

	$('.play-trailer').click(function() {
		var trailer_wrapper = $(this).parent();
		var embed_code = $('.trailer-object', trailer_wrapper).html();
		$.facebox(embed_code);
		return false;
	});
}

function initOne() {
	if ($("#list_create").length>0||$("#list_edit").length>0) {
		initListEdit();
	}
	
	if ($("#list_findByMovie").length>0) {
		initListFindByMovie();
	}	
	
	if ($("#rating_create").length>0||$("#rating_edit").length>0) {
		initRatingEdit();
	}
	
	if ($("#rating_filter").length>0) {
		initRatingFilter();
	}
	
	if ($("#recommendation_index").length>0||$("#recommendation_fromList").length>0) {
		initRecommendationIndex();
	}
	
	if ($("#community_postLink").length>0) {
		initMovieLinkEdit();
	}
	
	if ($("#movieLink_edit").length>0||$("#movieLink_create").length>0) {
		initMovieLinkEdit();
	}
	
	if ($("#movie_show").length>0) {
		initMovieShow();
	}
	
	if ($('#list_show').length>0) {
		initListShow();
	}

	if ($('#profile_settings').length>0) {
		initProfileSettings();
	}

	if ($('#profile_lists').length>0) {
		initProfileLists();
	}

	if ($('#profile_requests').length>0) {
		initProfileRequests();
	}
	
	if ($('#profile_ratings').length>0) {
		initProfileRatings();
	}
	
	if ($('#sfGuardAuth_signup').length>0) {
		initSfGuardAuthSignup();
	}
	
	if ($('#sfGuardAuth_signin').length>0) {
		initSfGuardAuthSignin();
	}

	if ($('#sfGuardAuth_requestReset').length>0) {
		initSfGuardAuthRequestReset();
	}

	if ($('#request_edit').length>0) {
		initRequestEdit();
	}
}

function initForm() {
/*
	$(".form-container .form-input").focus(function() {
	    $(this).parent().find(".error").css("visibility", "hidden");
	    $(this).parent().find(".info").css("visibility", "visible");
		$(this).addClass('focus');
	}).blur(function(){
	    $(this).parent().find(".info").css("visibility", "hidden");
		$(this).removeClass('focus');
	});
*/	
}

