/** Adding array.indexOf for IE.. **/
if (typeof (Array.indexOf) == 'undefined') {
	Array.prototype.indexOf = function (obj) {
		for (var i = 0; i < this.length; i++) {
			if (this[i] == obj) return i;
		}
		return -1;
	}
} // array.indexOf

var globals = {
	search_word: '',
	search_word_default: 'Search',
	search_category: 0,
	catalog_order: 'date',
	catalog_order_way: 0,
	video_server_url: 'http://67.20.108.112/data/flv/'
};

function setup_previews() {
	$('.preview_dropdown').change (function() {
		play_preview (this.options[this.selectedIndex].value);
	});
	
	$('.preview_dropdown').focus (function() {
		play_preview (this.options[this.selectedIndex].value);
	});
	
	$('.preview_link').click (function (event) {
		var id = $(this).attr ('href').substring (1);
		var options = $('#preview_dropdown_' + id + ' option');
	
		event.preventDefault();
		if (options.length > 1) {
			var code = $('#preview_dropdown_' + id).val();
	
			if (code != '0') {
				play_preview (code);
			}
			else {
				play_preview ($(options[1]).val());
				$(options[1]).attr ('selected', 'selected');
			}
		}
		else {
			return false;
		}
	});
}

function play_preview (code) {
	if (code.length < 2) return;

	$.post (
		lang_url + '/play_preview',
		{ code: code },
		function (data) {
			var video = $.parseJSON (data);

			if (video.type != 'none') {
				$('#preview_title').html ('Video: ' + video.title + ' <em>' + video.type + '</em>');
				flowplayer().play ([globals.video_server_url + video.flv]);
			}
		}
	);
}

function download_video (code) {
	$.post (
		lang_url + '/check_download',
		{ code: code },
		function (data) {
			var result = $.parseJSON (data);

			switch (result.status) {
				case 'ok':
					document.location.href = result.link;
					break;
				case 'no-credit':
					alert ('Please renew your membership points!');
					break;
				case 'bad-code':
					alert ('No such download!');
					break;
				default:
					alert ('Something wrong happened!');
					break;
			}

			$('#id_points').html (result.points);
		}
	);

	return false;
}

function set_catalog_category (category) {
	globals.search_category = category;
	globals.search_word = '';
	$('#id_search_word').val (globals.search_word_default);
	catalog_page (0);
}

function set_catalog_search (word) {
	var options = $('#id_search_category option');

	globals.search_category = 0;
	globals.search_word = word;
	$(options[0]).attr ('selected', 'selected');
	catalog_page (0);
}

function set_catalog_order (orderby) {
	var options = $('#id_search_category option');

	switch (orderby) {
		case 'date':
			if (globals.catalog_order == orderby) {
				globals.catalog_order_way = 1 - globals.catalog_order_way;
			}
			else {
				globals.catalog_order = orderby;
				globals.catalog_order_way = 0;
			}
			break;
		case 'title':
			if (globals.catalog_order == orderby) {
				globals.catalog_order_way = 1 - globals.catalog_order_way;
			}
			else {
				globals.catalog_order = orderby;
				globals.catalog_order_way = 1;
			}
			break;
		case 'genre':
			if (globals.catalog_order == orderby) {
				globals.catalog_order_way = 1 - globals.catalog_order_way;
			}
			else {
				globals.catalog_order = orderby;
				globals.catalog_order_way = 1;
			}
			break;
	}

	globals.search_category = 0;
	$(options[0]).attr ('selected', 'selected');
	globals.search_word = '';
	$('#id_search_word').val (globals.search_word_default);
	catalog_page (0);
}

function catalog_page (page) {
	$('#catalog_content_container').load (
		lang_url + '/catalog/' + page, {
			category: globals.search_category,
			word: globals.search_word,
			order_by: globals.catalog_order,
			order_way: globals.catalog_order_way,
			ajax: 1
		},
		function() {
			$('#catalog_pager').load (
				lang_url + '/catalog/pager/' + page, {
					category: globals.search_category,
					word: globals.search_word,
					ajax: 1
				}
			);
			setup_previews();
			setup_ordering();
		}
	);

	return false;
}

function setup_ordering() {
	$('#id_catalog_order_date').click (function (e) {
		e.preventDefault();
		set_catalog_order ('date');
	});

	$('#id_catalog_order_title').click (function (e) {
		e.preventDefault();
		set_catalog_order ('title');
	});

	$('#id_catalog_order_genre').click (function (e) {
		e.preventDefault();
		set_catalog_order ('genre');
	});
}

function signup_tab (tab) {
	$('#signup_errors').hide();
	$('#id_login').hide();
	$('#id_signup').hide();
	$('#id_password').hide();
	$('#id_' + tab).show();
	
	$('#signup_links a').removeClass ('active');
	$('#signup_link_' + tab).addClass ('active');

	return false;
}

$(function() {
	$.ajaxSetup ({ jsonp: null, jsonpCallback: null });

	if (show_disclaimer) {
		$('#disclaimer').dialog ({
			autoOpen: true,
			title: 'Disclaimer',
			closeOnEscape: false,
			beforeclose : function() {
				return false;
			},
			modal: true,
			position: 'center',
			resizable: false,
			width: 640,
			buttons: {
				'Disagree' : function() {
					document.location.href = 'http://www.google.com/#q=I+wanna+be+a+dj';
				},
				'I AGREE' : function() {
					$.get (
						lang_url + '/agree_disclaimer',
						null,
						function() {
							$('#disclaimer').dialog ('option', 'beforeclose', function() {
								return true;
							});
							$('#disclaimer').dialog ('close');
						}
					);
				}
			}
		});
	}

	flowplayer (
		'player',
		base_url + 'images/flowplayer.swf', {
			clip: {
				autoPlay: false,
				scaling: 'fit'
			},
			plugins: {
				controls: {
					url: base_url + 'images/flowplayer.controls.swf',
					backgroundColor: '#092324',
					autoHide: 'never'
				}
			}
		}
	);

	$('#id_search_category').change (function() {
		set_catalog_category ($(this).val());
	});

	$('#submit_catalog_search').click (function() {
		set_catalog_search ($('#id_search_word').val());
	});
	
	$('#id_search_word').keyup (function (e) {
		if (e.keyCode == '13') set_catalog_search ($('#id_search_word').val());
	});
	
	$('#id_search_word').focusin (function() {
			if ($('#id_search_word').val() == globals.search_word_default) $('#id_search_word').val ('');
			$('#id_search_word').removeClass ('search_empty');
	});

	$('#id_search_word').focusout (function() {
		if ($('#id_search_word').val() == '') {
			$('#id_search_word').val (globals.search_word_default);
			$('#id_search_word').addClass ('search_empty');
		}
	});

	/** Signup **/
	if ($('#id_form_login').length > 0) {
		var validator = $('#id_form_login').validate ({
			errorLabelContainer: $('#signup_errors'),
			wrapper: 'p',
			submitHandler: function (form) {
				form.submit();
			},
			rules: {
				login_username: 'required',
				login_password: 'required'
			},
			messages: {
				login_username: 'Please enter your username',
				login_password: 'Please enter your password'
			}
		});
	}
	
	if ($('#id_form_signup').length > 0) {
		var validator = $('#id_form_signup').validate ({
			errorLabelContainer: $('#signup_errors'),
			wrapper: 'p',
			submitHandler: function (form) {
				form.submit();
			},
			rules: {
				'data[name]': 'required',
				'data[username]': 'required',
				'data[email]': { required: true, email: true },
				'data[pass1]': 'required',
				'data[pass2]': 'required',
				'data[stagename]': 'required',
				'data[tool]': 'required',
				'data[software]': 'required',
				'data[place]': 'required',
				'data[place_address]': 'required',
				'data[experience]': 'required',
				'data[audience]': 'required',
				'data[country]': 'required',
				'data[city]': 'required',
				'data[how_find]': 'required'
			},
			messages: {
				'data[name]': 'Please enter your name',
				'data[username]': 'Please enter a username',
				'data[email]': 'Please enter your valid email address',
				'data[pass1]': 'Please enter a password',
				'data[pass2]': 'Please retype the password you selected',
				'data[stagename]': 'Please enter your stage name',
				'data[tool]': 'Please enter what tools do you use',
				'data[software]': 'Please select which software do you use',
				'data[place]': 'Please enter where do you DJ/VJ',
				'data[place_address]': 'Please enter the address of where do you DJ/VJ',
				'data[experience]': 'Please select your DJ/VJ experience',
				'data[audience]': 'Please enter how much people do you entertain per week',
				'data[country]': 'Please select which country do you work in',
				'data[city]': 'Please enter which city do you work in',
				'data[how_find]': 'Please enter how did you find this site'
			}
		});
	}

	if ($('#id_form_password').length > 0) {
		var validator = $('#id_form_password').validate ({
			errorLabelContainer: $('#signup_errors'),
			wrapper: 'p',
			submitHandler: function (form) {
				form.submit();
			},
			rules: {
				forgot: 'required'
			},
			messages: {
				forgot: 'Please enter your username or email address'
			}
		});
	}

	if ($('#id_form_contact').length > 0) {
		var validator = $('#id_form_contact').validate ({
			errorLabelContainer: $('#signup_errors'),
			wrapper: 'p',
			submitHandler: function (form) {
				form.submit();
			},
			rules: {
				'data[name]': 'required',
				'data[email]': { required: true, email: true },
				'data[subject]': 'required',
				'data[message]': 'required'
			},
			messages: {
				'data[name]': 'Please enter your name',
				'data[email]': 'Please enter your valid email address',
				'data[subject]': 'Please enter a subject for your mail',
				'data[message]': 'Please write your message'
			}
		});
	}

	setup_ordering();
	setup_previews();
});

