observe_header_links = function () {

	// login link
	jQuery ('.jsLogin').click (function () {
		var popover = environmentManager.create_popover ("login");
		popover.attach_to_element ($("link_login"), { xSourcePoint: "right", xDestPoint: "right", ySourcePoint: "top", yDestPoint: "top", xPixelOffset: 80, yPixelOffset: -35 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_login.php");
//			.set_content_html ("hello there");
		popover.get_shell_object ()
			.set_title ("Log in to ChallengeMix")
			.set_width ("425px");
		popover.show ();
	});

	// register link
	jQuery ('.jsRegister').click (function () {
		var popover = environmentManager.create_popover ("register");
		popover.attach_to_element ($("link_register"), { xSourcePoint: "right", xDestPoint: "right", ySourcePoint: "top", yDestPoint: "top", xPixelOffset: 80, yPixelOffset: -35 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_register.php");
		popover.get_shell_object ()
			.set_title ("Start Challenging - Join ChallengeMix Now!")
			.set_width ("495px");
		popover.show ();
	});

	// forgotten password link
	jQuery ('.jsForgottenPassword').click (function () {
		var popover = environmentManager.create_popover ("forgotPassword");
		popover.attach_to_element ($("link_forgottenPassword"), { xSourcePoint: "right", xDestPoint: "right", ySourcePoint: "top", yDestPoint: "top", xPixelOffset: 80, yPixelOffset: -35 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_forgot_password.php");
		popover.get_shell_object ()
			.set_title ("Forgot Password")
			.set_width ("495px");
		popover.show ();
	});

	// watch for jsCreateChallenge clicks
	jQuery ('.jsCreateChallengeHeader').click (function () {
		var popover = environmentManager.create_popover ("createChallenge");
		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 7 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_create_challenge.php");
		popover.get_shell_object ()
			.set_title ("Create a Challenge")
			.set_width ("625px");
		popover.show ();
	});
	

	return true;
}


observe_update_challenge = function () {
	// watch for jsUpdateChallenge clicks
	jQuery ('.jsUpdateChallenge').click (function () {
		var popover = environmentManager.create_popover ("updateChallenge");
		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 7 });
		popover.get_content_block_object ()
			.set_content_source_url ("/admin/ajax_update_challenge.php", {challengeId: this.id});
		popover.get_shell_object ()
			.set_title ("Update a Challenge")
			.set_width ("625px");
		popover.show ();
	});
	
	return true;

}






jQuery ().ready (function () {
	observe_challenge_links ();
	observe_challenge_items ();
	observe_member_items ();
	observe_media_vote_links ();
	poll_challenge_stats ();
	return true;
});






function observe_challenge_items () {
	// watch for challenge item block mouse-overs
	jQuery ('.jsChallengeBlockLink').mouseover (function () {
		$(this.id).addClassName ('hover');
	});
	// watch for challenge item block mouse-outs
	jQuery ('.jsChallengeBlockLink').mouseout (function () {
		$(this.id).removeClassName ('hover');
	});
	// watch for challenge item block clicks
	jQuery ('.jsChallengeBlockLink').click (function () {
		var destination = jQuery (this).find ('.challengeTitle a').attr ('href');
		if (destination != '')
			window.location = destination;
    });
	return true;
}

function observe_challenge_links () {

	// watch for jsCreateChallenge clicks
	jQuery ('.jsCreateChallenge').click (function () {
		var popover = environmentManager.create_popover ("createChallenge");
		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 7 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_create_challenge.php");
		popover.get_shell_object ()
			.set_title ("Create a Challenge")
			.set_width ("625px");
		popover.show ();
	});

	// watch for jsAcceptChallenge clicks
	jQuery ('.jsAcceptChallenge').click (function () {
		var popover = environmentManager.create_popover ("createChallenge");
		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 7 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_upload_media.php", { elementId: this.id, accept: 'Y' });
		popover.get_shell_object ()
			.set_title ("Accept Challenge")
			.set_width ("625px");
		popover.show ();
	});

	// watch for jsAddComment clicks
	jQuery ('.jsAddComment').click (function () {
		var popover = environmentManager.create_popover ("addComment");
		popover.attach_to_element ($(this.id), { xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", xPixelOffset: 0, yPixelOffset: -35 });
//		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 25 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_add_comment.php", { elementId: this.id, accept: 'Y' });
		popover.get_shell_object ()
			.set_title ("Add a Comment")
			.set_width ("660px");
		popover.show ();
	});
	return true;
}

function observe_member_items () {
	// watch for challenge item block mouse-overs
	jQuery ('.jsMemberBlockLink').mouseover (function () {
		$(this.id).addClassName ('hover');
	});
	// watch for challenge item block mouse-outs
	jQuery ('.jsMemberBlockLink').mouseout (function () {
		$(this.id).removeClassName ('hover');
	});
	// watch for challenge item block clicks
	jQuery ('.jsMemberBlockLink').click (function () {
		var destination = jQuery (this).find ('.memberTitle a').attr ('href');
		if (destination != '')
			window.location = destination;
    });
	return true;
}


function observe_media_vote_links () {
	// make jsVote links appear clickable
	jQuery ('.jsVote').each (function () {
		$(this.id).addClassName ('clickable');
	});
	// watch for vote clicks
	jQuery ('.jsVote').click (function () {

		var requestParameters = new Object();
		requestParameters.elementId = this.id;
		ajaxManager.request ('/ajax_vote.php', { 'method': 'post', parameters: requestParameters }, 'vote_' + this.id);
    });
	return true;
}

function observe_host_a_challenge_links () {

	// watch for jsCreateChallenge clicks
	jQuery ('.jsHostAChallenge').click (function () {
		var popover = environmentManager.create_popover ("createChallenge");
		popover.position_on_screen ({ xSourcePoint: "middle", xDestPoint: "middle", ySourcePoint: "top", yDestPoint: "top", ySourcePercentOffset: 7 });
		popover.get_content_block_object ()
			.set_content_source_url ("/ajax_host_a_challenge.php");
		popover.get_shell_object ()
			.set_title ("Host a Challenge")
			.set_width ("625px");
		popover.show ();
	});
	return true;
}










function poll_media_stats (active) {

	// if there's no media content on the page then don't continue
	var temp = $$(".jsMediaVotes");
	if (!temp.length)
		return true;

	if (active) {
		var requestParameters = new Object ();

		var mediaIds = [];
		for (var count = 0; count < temp.length; count++)
			mediaIds[mediaIds.length] = temp[count].id;
		requestParameters.mediaIds = mediaIds.toString ();
		ajaxManager.request ('/ajax_update_media_stats.php', { 'method': 'post', parameters: requestParameters }, 'updateMediaStats');
	}

	var delay = 60 * 1000;	// 1 minute
	timer.start_delayed_action ("poll_media_stats (true);", delay, "updateMediaStats");
	return true;
}

function poll_challenge_stats (active) {

	// if there's no challenge content on the page then don't continue
	var temp = $$(".jsChallengeVotes");
	if (!temp.length)
		return true;

	if (active) {
		var requestParameters = new Object ();

		var challengeIds = [];
		for (var count = 0; count < temp.length; count++)
			challengeIds[challengeIds.length] = temp[count].id;
		requestParameters.challengeIds = challengeIds.toString ();
		ajaxManager.request ('/ajax_update_challenge_stats.php', { 'method': 'post', parameters: requestParameters }, 'updateChallengeStats');
	}

	var delay = 60 * 1000;	// 1 minute
	timer.start_delayed_action ("poll_challenge_stats (true);", delay, "updateChallengeStats");
	return true;
}
