var category_onchange;
var studio_onchange

function change_content_type()
{
	var content_select = document.getElementById('content_select');
	content_selected = content_select.value;
	
	var category_select = document.getElementById('category_select');
	if ( category_select != undefined )
	{
		if ( content_selected == 'straight' )
			var info_cat = cat_dvds;
		else
			var info_cat = cat_boys;
		
		var inc = 2;
		category_select.options.length = 0;		
		var oOption = new Option(_txt_all, 'all', true);
		category_select.options[0] = oOption;
		var oOption = new Option(_sig_sep, 'none');
		category_select.options[1] = oOption;

		for ( prop in info_cat )
		{
			var name_opt = info_cat[prop];
			var value_opt = prop;
			var oOption = new Option(name_opt, value_opt);
			category_select.options[inc] = oOption;
			inc ++;
		}	
	}
	
	var studio_select = document.getElementById('studio_select');
	if ( studio_select != undefined )
	{
		if ( content_selected == 'straight' )
			var info_st = st_dvds;
		else
			var info_st = st_boys;
		
		var inc = 2;
		studio_select.options.length = 0;		
		var oOption = new Option(_txt_all, 'all', true);
		studio_select.options[0] = oOption;
		var oOption = new Option(_sig_sep, 'none');
		studio_select.options[1] = oOption;

		for ( prop in info_st )
		{
			var name_opt = info_st[prop];
			var value_opt = prop;
			var oOption = new Option(name_opt, value_opt);
			studio_select.options[inc] = oOption;
			inc ++;
		}	
	}
	
	if ( category_select != undefined )
	{
		change_category();
		if ( studio_onchange != undefined )
			studio_onchange();	
	}
	else if ( studio_select != undefined )
	{	
		change_studio();
		if ( category_onchange != undefined )
			category_onchange();
	}
	
	if ( cont_onchange != undefined )
		cont_onchange();	
}

function change_category()
{
	upload_contents();	
	if ( category_onchange != undefined )
		category_onchange();
}

function change_studio()
{
	upload_contents();
	if ( studio_onchange != undefined )
		studio_onchange();
}


function upload_contents()
{
	var categories_filter = 0;
	var categories_selected = Array();
	category_select = document.getElementById('category_select');
	if ( category_select != undefined )
	{
		categories_filter = 1;
		categories_selected = getOptionsSelected(category_select);
		if ( categories_selected.length == 0 )
			return false;
	}
	
	var studios_filter = 0;
	var studios_selected = Array();
	studio_select = document.getElementById('studio_select');
	if ( studio_select != undefined )
	{
		studios_filter = 1;
		studios_selected = getOptionsSelected(studio_select);
		if ( studios_selected.length == 0 )
			return false;
	}
	
	var dvd_select = document.getElementById('dvd_select');
	if ( dvd_select != undefined )
	{
		if ( content_selected == 'straight' )
		{
			if ( categories_filter != 0 )
				var index_cat_dvd = ic_dvds;
			if ( studios_filter != 0 )
				var index_st_dvd = is_dvds;
			var info_dvd = d;
		}
		else
		{
			if ( categories_filter != 0 )
				var index_cat_dvd = ic_boys;
			if ( studios_filter != 0 )
				var index_st_dvd = is_boys;
			var info_dvd = b;
		}
		
		var dvdcat_to_display = Array();
		if ( categories_filter )
		{
			var all_in_cat = 0;			
			for ( cat in categories_selected )
			{
				if ( categories_selected[cat] != 'all' )
				{
					if ( index_cat_dvd[categories_selected[cat]] != undefined )
						dvdcat_to_display = dvdcat_to_display.concat(index_cat_dvd[categories_selected[cat]]);						
				}		
				else
					all_in_cat = 1;	
			}
		}
		else
			var all_in_cat = 1;
		
		var dvdstd_to_display = Array();
		if ( studios_filter )
		{
			var all_in_std = 0;
			for ( std in studios_selected )
			{
				if ( studios_selected[std] != 'all' )
				{
					if ( index_st_dvd[studios_selected[std]] != undefined )
						dvdstd_to_display = dvdstd_to_display.concat(index_st_dvd[studios_selected[std]]);				
				}
				else
					all_in_std = 1;		
			}
		}
		else
			var all_in_std = 1;
		
		var show_all = 0;    
		var dvd_to_display = Array();
		dvd_to_display = array_intersec(dvdcat_to_display, dvdstd_to_display);
		if ( dvd_to_display.length == 0 )
		{
			if ( all_in_std && all_in_cat )
			{
				show_all = 1;
				dvd_to_display = info_dvd;
			}
		}
		else
			dvd_to_display = dvd_to_display.sort(sortNumber);	
		
		var inc = 2;
		dvd_select.options.length = 0;		
		var oOption = new Option(_txt_all, 'all');
		dvd_select.options[0] = oOption;
		var oOption = new Option(_sig_sep, 'none');
		dvd_select.options[1] = oOption;
		
		for ( prop in dvd_to_display )
		{
			if ( show_all )
				var index_key = prop;
			else
				var index_key = dvd_to_display[prop];	
				
			if ( index_key == -1 )
				continue;
			
			var name_opt = info_dvd[index_key]['n'];
			var value_opt = info_dvd[index_key]['id'] + '|' + index_key;
			var oOption = new Option(name_opt, value_opt);
			dvd_select.options[inc] = oOption;
			inc ++;
		}	
		
		if ( dvd_select.options.length == 2 )
		{
			dvd_select.options.length = 0;	
			var name_opt = _txt_no_dvds;
			var value_opt = 'none';
			var oOption = new Option(name_opt, value_opt);
			dvd_select.options[0] = oOption;
		}
		
		document.getElementById('dvd_thumbnail').style.display = 'none';
	}	
}

function change_dvd()
{
	var dvd_select = document.getElementById('dvd_select');
	var dvds_selected = getOptionsSelected(dvd_select);

	if ( dvds_selected.length != 1 )
	{
		document.getElementById('dvd_thumbnail').style.display = 'none';
	}
	else if ( dvd_select.value == 'all' )
	{
		document.getElementById('dvd_thumbnail').style.display = 'none';
	}
	else
	{	
		if ( content_selected == 'straight' )
		{
			var info_dvd = d;
			var url_free_content = url_free_content_dvds;
		}
		else
		{
			var info_dvd = b;
			var url_free_content = url_free_content_boys;
		}
		
		var arr_aux = dvd_select.value.split('|');
		var index = arr_aux[1];
		
		var url_thumb = url_free_content + info_dvd[index]['p'] +  '/thumb_1_2_1.jpg';
		document.getElementById('dvd_thumbnail').src = url_thumb;
		document.getElementById('dvd_thumbnail').style.display = 'block'; 	
	}
	
	if ( dvd_onchange != undefined )
		dvd_onchange();
}

/* ------------------------------------ Auxiliar Functions ------------------------------------ */

function in_array (needle, haystack) 
{
	if ( haystack != undefined )
	{
		var len = haystack.length;
		for ( var x = 0 ; x <= len ; x++ ) {
			if ( haystack[x] == needle ) return true;
		}
	}
	return false;
}

function array_intersec(array1, array2)
{
	if ( array1.length == 0 )
		return array2;
	
	if ( array2.length == 0 )
		return array1;
	
	var res = Array();
	var res_count = 0;
	for ( key in array1 )
		if ( in_array(array1[key], array2) )
		{
			res[res_count] = array1[key];
			res_count ++;
		}
	
	return res;	
}

function getOptionsSelected(select_obj)
{
	var res = Array();
	var res_count = 0;
	
	for ( opt in select_obj.options )
	{
		if ( select_obj.options[opt].selected )
		{
			if ( select_obj.options[opt].value == 'all' )
			{
				resetOptions(select_obj)
				return Array('all'); 
			}
			if ( select_obj.options[opt].value == 'none' || select_obj.options[opt].value == 'noexist' )
				select_obj.options[opt].selected = false;
			else
			{
				res[res_count] = select_obj.options[opt].value;
				res_count ++;
			}
		}
	}
	
	return res;
}

function resetOptions(select_obj)
{
	for ( opt in select_obj.options )
	{
		if ( select_obj.options[opt].value == 'all' )
			select_obj.options[opt].selected = true;
		else
			select_obj.options[opt].selected = false;	
	}
}

function sortNumber(a,b)
{
	return a - b
}