var PORTLET_INDUSTRIES = '/portlets/interests_industries_job_functions.xml'; 

function attachInterestsEvents() {
	attachEvents('#interests', loadIndustries);
}				

function attachIndustriesEvents() {
	attachEvents('#industries', loadJobFunctions);
}				

function attachEvents(selector, func) {
	$(selector + ' input').each(function() {
		$(this).bind('click', func);
	});
}		

function loadInterests(defaultParams) {
	var params = getParams(defaultParams);
	loadPreferences('interests', params, attachInterestsEvents);
	loadPreferences('industries', params, attachIndustriesEvents);
	loadPreferences('job-functions', isSet(params, 'industries') ? params : {}, null);
}

function loadIndustries() {
	var params = getParams(null);
	loadPreferences('industries', params, attachIndustriesEvents);
	loadPreferences('job-functions', isSet(params, 'industries') ? params : {}, null);
}

function loadJobFunctions() {
	var params = getParams(null);
	loadPreferences('job-functions', isSet(params, 'industries') ? params : {}, null);
}

function loadPreferences(mode, params, func) {
	var url = PORTLET_INDUSTRIES + '?mode=' + mode + '&int=' + params['interests'] + '&ind=' + params['industries'] + '&jf=' + params['job-functions'];
	$('#' + mode).load(url, func);
}

/* old version of the function 
function loadPreferences(mode, func, params) {
	var interestsIds = getParam(params, 'interests');
	var industriesIds = getParam(params, 'industries');
	var jobFunctionsIds = getParam(params, 'job-functions');
	var url = PORTLET_INDUSTRIES + '?mode=' + mode + '&int=' + interestsIds + '&ind=' + industriesIds + '&jf=' + jobFunctionsIds;
	$('#' + mode).load(url, func);
}
*/

function getParams(defaultParams) {
	return {
		'interests': getParam(defaultParams, 'interests'),
		'industries': getParam(defaultParams, 'industries'),
		'job-functions': getParam(defaultParams, 'job-functions')
	}
}

function getParam(params, param) {
	return isSet(params, param) ? params[param] : getSelectedIds('#' + param);
}

function isSet(params, param) {
	return params != null && params[param] != null && params[param] != '';
}

function getSelectedIds(selector) {
	var selectedIds = '';
	$(selector + ' input').each(function() {
		if ($(this).attr('checked')) {
			selectedIds += (selectedIds.length > 0 ? ',' : '') + $(this).attr('value');
		}
	});
	return selectedIds;
}

