function Rand(n) { 
    return Math.round(Math.random()*n); 
}


function getCPF(formatado) 
{
    var cpf = ''; 
		var dv1, dv2;
		var v1=0;
		var v2=0;
    var n = 9;
		var cv1 = new Array('',10,9,8,7,6,5,4,3,2);
		var cv2 = new Array('',11,10,9,8,7,6,5,4,3);
    for(var i=1; i < 10; i++)
		{
			eval("n"+i+"="+Rand(n));
			v1 += cv1[i]*eval("n"+i);
			v2 += cv2[i]*eval("n"+i);
		}
    dv1 = v1;
    dv1 = 11 - ( dv1 % 11); 
    if (dv1>=10) { 
        dv1 = 0; 
    }
		dv2 = dv1*2 + v2; 
    dv2 = 11 - ( dv2 % 11 ); 
    if (dv2>=10) { 
        dv2 = 0; 
    }
    
    if (formatado==true) {
        return ''+n1+n2+n3+'.'+n4+n5+n6+'.'+n7+n8+n9+'-'+dv1+dv2;
    } else {
        return ''+n1+n2+n3+n4+n5+n6+n7+n8+n9+dv1+dv2;
    }
}

Curriculum = function(){};
Curriculum.cache = {
	self : function() {
		return Curriculum;
	},
	legShowHideFields : {
		self : function() {
			return Curriculum.cache;
		},
		objects : {},
		show : {},
		get : function(name,i){
			return this.objects[name] || null;
		},
		add : function(name,i,props,show){
			
			this.objects[name] = props;
			if(show) {
				this.showTo(name, i);
			}
			else {
				this.hideTo(name, i);
			}
		},
		getShow : function(name) {
			if(this.show[name]) {
				return i;
			}
			
			return false;
		},
		showTo : function(name, i) {
			if(!this.get(name) || this.get(name).showHide.length == 0) {
				return;
			}
			
			this.get(name,i).lgd.removeClass('obj_noPadding lg_label')
				.find('label').removeClass('obj_ftNoBold');
			this.get(name,i).root.removeClass('obj_noBorder obj_noMargin obj_noPadding');
			this.get(name,i).showHide.show();
			var linked = this.get(name, i).root.find(':linked').each(showHideLinked);
			// adicionar a mascara obrigatoria aos campos de preenchimento 
			// obrigatorio
			this.get(name,i).root.find(':maskedTo').enableMaskedTo();
			// informa que o campo está visível
			this.show[name] = true;
		},
		hideTo : function(name,i) {
			this.get(name,i).lgd.addClass('obj_noPadding lg_label')
				.find('label').addClass('obj_ftNoBold');
			this.get(name,i).root.addClass('obj_noBorder obj_noMargin obj_noPadding');
			this.get(name,i).showHide.hide();
			// remover a mascara obrigatoria aos campos de preenchimento 
			// obrigatorio
			this.get(name,i).root.find(':maskedTo').disableMaskedTo();
			// informa que o campo está invisível
			this.show[name] = false;
		},
		// Quando clicar no objeto
		onSelect : function(name,i,$this,check){
			if($this[0].type == 'radio') {
				if(check) {
					if($this[0].checked) {
						this.showTo(name, i);
					}
				}
				else {
					this.hideTo(name, this.getShow(name));
					this.showTo(name, i);
				}
			}
			else if($this[0].type == 'checkbox') {
				if($this[0].checked) {
					this.showTo(name, i);
				}
				else {
					this.hideTo(name, i);
				}
			}
		}
	}
};


function showHideByLink(target)
{
	if(!target)
	{
		target = $(document);
	}
	else
	{
		target = $(target);
	}
	
	function execute($obj, type)
	{
		$obj.each(function(i){
			var $this = $(this);
			var $lgd = $this.parent();
			var $root = $lgd.parent();
			var d = new Date();
			d = $this.attr('name');//'_' + d.getFullYear() + d.getMonth() + d.getDay() + d.getHours() + d.getMinutes() + d.getSeconds() + d.getMilliseconds();
			Curriculum.cache.legShowHideFields.add(d,i,
				{ 
					o : $this, 
					lgd : $this.parent(),
					root :  $lgd.parent(),
					showHide : $root.children(':not(LEGEND,.noShow)')
				}
			);
			
			Curriculum.cache.legShowHideFields.onSelect(d,i,$this);
			
			$this.click(function(){
				Curriculum.cache.legShowHideFields.onSelect(d,i,$this);
			});
			
			if(this.checked)
			{
				Curriculum.cache.legShowHideFields.onSelect(type,i,$this);
			}
		});
	}
	
	// Ocultar os elementos do item EXPERIENCIA
	execute(target.find('FIELDSET LEGEND :radio'), ':radio');
	execute(target.find('FIELDSET LEGEND :checkbox'), ':checkbox');
		
}

Curriculum.getColumnName = function(index) {
	var alpha = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
			"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
			"w", "x", "y", "z" ];

	if (index >= alpha.length) {
		return alpha[(index / alpha.length) - 1]
				+ Curriculum.getColumnName(index % alpha.length);
	} else {
		return alpha[index];
	}
};

Curriculum.loadTest = function(i) {
	$('[@name$=_cpf]').val(getCPF(true));
	
	var name = Curriculum.getColumnName(i);
	name = name + name + name + name + name;
	$('#dadosPessoais_nome').val(name);
	$('#dadosPessoais_dataNascimento').val('15/01/2009');
	$('#dadosPessoais_naturalidade_uf').val(i+1);
	$('#dadosPessoais_uf').val(i+3);
	$('#dadosPessoais_sexoM')[0].checked = true;
	$('#dadosPessoais_estadoCivilS')[0].checked = true;
	$('#dadosPessoais_filhosPossuiN')[0].checked = true;
	$('#dadosPessoais_bairro').val('bairro');
	$('#dadosPessoais_endereco').val('endereço');
	$('#dadosPessoais_email').val(name + '@gmail.com');
	$('#dadosPessoais_cep').val('36570-000');
	$('#dadosPessoais_tempoReside').val('semrpe');
	$('#dadosPessoais_habilitacao').val('C');
};

Curriculum.getData = function() {
	var $form = $('FORM#fm_curriculum'),
	dados = {
		dadosPessoais : {},
		formacao : {},
		experienciaProfissional : {},
		cursos : [],
		interesses : []
	};
	
	$form.find(
			'[name^=dadosPessoais_]:not(:radio),'
			+ ':radio[name^=dadosPessoais_]:checked,'
		).each(
			function(){
				var $this = $(this);
				var name = $this.attr('name').replace(/^[^_]+_(.+)$/,'$1');
				
				dados.dadosPessoais[name] = '';
			}
		);
	
	// dados pessoais
	$form.find(
			'[name^=dadosPessoais_]:not(:radio),'
			+ ':radio[name^=dadosPessoais_]:checked,'
		).each(
			function(){
				var $this = $(this);
				var name = $this.attr('name').replace(/^[^_]+_(.+)$/,'$1');
				
				dados.dadosPessoais[name] = '';
			}
		);
	
	// formacao
	$form.find(':checkbox[name^=formacao_]')
		.each(function(){
			var $this = $(this);
			var name = $this.attr('name').replace(/^[^_]+_(.+)$/,'$1');
			
			dados.formacao[name] = {};
			
			$this.parents('FIELDSET:eq(0)')
				.find('[name^=formacao_' + name + '_]:not(:radio),:radio:checked')
				.each(function(){
					var $this = $(this);
					var namef = $this.attr('name').replace(/^[^_]+_[^_]+_(.+)$/,'$1');
					dados.formacao[name][namef] = '';
				});
		});
	
	// experiencia
	$form.find(':checkbox[name^=experienciaProfissional_]')
		.each(function(){
			var $this = $(this);
			var name = $this.attr('name').replace(/^[^_]+_(.+)$/,'$1');
			
			dados.experienciaProfissional[name] = {
				pessoaDeContato : {}
			};
			
			var $fdset = $this.parents('FIELDSET:eq(0)');
			$fdset
				.find('[name^=experienciaProfissional_' + name + '_]'
					+':not('
						+':radio,'
						+'[name*=pessoaDeContato],'
						+'[name*=trabalhaAtualmente],'
						+'[name*=dataInicio],'
						+'[name*=dataFim]'
					+'),'
					+':radio:checked'
				)
				.each(function(){
					var $this = $(this);
					var namef = $this.attr('name').replace(/^[^_]+_[^_]+_(.+)$/,'$1');
					dados.experienciaProfissional[name][namef] = '';
				})
				.end()
				.find('[name*=pessoaDeContato]')
				.each(function(){
					var $this = $(this);
					var namef = $this.attr('name').replace(/^[^_]+_[^_]+_[^_]+_(.+)$/,'$1');
					dados.experienciaProfissional[name].pessoaDeContato[namef] = '';
				})
				.end()
				.find(':radio[name*=trabalhaAtualmente]:checked')
				.each(function(){
					var $this = $(this);
					var namef = $this.attr('name').replace(/^[^_]+_[^_]+_[^_]+_(.+)$/,'$1');
					
					dados.experienciaProfissional[name]['trabalhaAtualmente'] = '';
					
					if($.trim($this.val()) != 'sim') {
						dados.experienciaProfissional[name]['dataFim'] = '';
					}
					dados.experienciaProfissional[name]['dataInicio'] = '';
				});
		});
	
	// conhecidos na empresa
	dados.conheceNaEmpresa = $.trim($('#conheceNaEmpresa').val()).replace(/[\t\n]+/gi,'');
	
	// cursos
	for(var k in $._formCurriculo.cursos) {
		$._formCurriculo.cursos[k].each(function(){
			var _dados = {};
			var $this = $(this);
			$this.find('[name^=cursos]:not(:radio),:radio:checked').each(function(){
				var $_this = $(this);
				var namef = $_this.attr('name').replace(/^([^_]+_)+([^_]+)$/,'$2');
				
				
				if(/select/i.test(this.nodeName)) {
					_dados[namef] = $.trim($_this.children(':selected').attr('value'));
				}
				else {
					_dados[namef] = $.trim($_this.val());
				}
			});
			dados.cursos.push(_dados);
		});
	};
	
	// interesses
	$form.find(':checkbox[name^=interesse_]:checked,TEXTAREA[name^=interesse_]').each(function(){
		if(/textarea/i.test(this.nodeName)) {
			var outras = $.trim($(this).val()).replace(/[\t\n]/gi,'').split(',');
			for(var k in outras) {
				outras[k] = $.trim(outras[k]);
				if(outras[k].length > 0) {
					dados.interesses.push(outras[k]);
				}
			}
		}
		else {
			dados.interesses.push($.trim($(this).siblings('LABEL').text()));
		}
	});
	
	console.log(dados);
	
	return dados;
};

$._formCurriculo = { cursos : [] };

function addCourse(data) {
	
	data = $.extend({
		cursos_nome : '',
		cursos_instituicao : '',
		cursos_cargaHoraria : '',
		cursos_cargaHoraria_tipo : 'Horas',
		cursos_dataInicio : '',
		cursos_dataConclusao : '',
		cursos_cursando : ''
	},data);
	
	if(!$._formCurriculo.cursosI) {
		$._formCurriculo.cursosI = 1;
	}
	else {
		$._formCurriculo.cursosI++;
	}
	var i = $._formCurriculo.cursosI;
	
	var o = $('<fieldset>'
		+ '<legend>'
			+ 'Curso'
		+ '</legend>'
		+ '<p>'
			+ '<a class="a_remove" '
				+ 'href="javascript:void(0);" '
				+ 'title="Remover este curso">Remover este curso</a>'
		+ '</p>'
		+ '<p>'
			+ '<label for="cursos_' + i +'_nome">'
				+ '<span>*</span>Nome do curso:</label><br />'
			+ '<input class="ipt_text required" '
				+ 'type="text" '
				+ 'name="cursos_' + i +'_nome" '
				+ 'id="cursos_' + i +'_nome" '
				+ 'maxlength="150" '
				+ 'title="Digite o nome do curso" '
				+ 'alt="Digite o nome do curso" /><br />'
			+ '<span class="sp_infoFieled">(este campo é de preenchimento obrigatório)</span>'
		+ '</p>'
		+ '<p>'
			+ '<label for="cursos_' + i +'_instituicao">'
				+ '<span>*</span>Instituição:</label><br />'
			+ '<input class="ipt_text required" '
				+ 'type="text" '
				+ 'name="cursos_' + i +'_instituicao" '
				+ 'id="cursos_' + i +'_instituicao" '
				+ 'maxlength="150" '
				+ 'title="Digite o nome da instituição de ensino" '
				+ 'alt="Digite o nome da instituição de ensino" /><br />'
			+ '<span class="sp_infoFieled">(este campo é de preenchimento obrigatório)</span>'
		+ '</p>'
		+ '<p>'
			+ '<label for="cursos_' + i +'_cargaHoraria">'
				+ '<span>*</span>Carga horária:</label><br />'
			+ '<input class="ipt_text required ipt_maskedInteger" '
				+ 'type="text" '
				+ 'name="cursos_' + i +'_cargaHoraria" '
				+ 'id="cursos_' + i +'_cargaHoraria" '
				+ 'maxlength="6" '
				+ 'title="Carga horária" '
				+ 'alt="Carga horária" /> '
				+ '<select class="sl_select" name="cursos_' + i +'_cargaHoraria_tipo">'
					+ '<option>Horas</option>'
					+ '<option>Minutos</option>'
				+ '</select><br />'
			+ '<span class="sp_infoFieled">(este campo é de preenchimento obrigatório)</span>'
		+ '</p>'
		+ '<p>'
			+ '<label for="cursos_' + i +'_dataInicio">'
				+ '<span>*</span>Data de início:</label><br />'
			+ '<input class="ipt_text ipt_maskedDate required" '
				+ 'type="text" '
				+ 'name="cursos_' + i +'_dataInicio" '
				+ 'id="cursos_' + i +'_dataInicio" '
				+ 'maxlength="10" '
				+ 'title="Digite a data de início" '
				+ 'alt="Digite a data de início" /><br />'
			+ '<span class="sp_infoFieled">(este campo é de preenchimento obrigatório)</span>'
		+ '</p>'
		+ '<p>'
			+ '<label for="cursos_' + i +'_dataConclusao">'
				+ '<span>*</span>Data de conclusão/previsão:</label><br />'
			+ '<input class="ipt_text ipt_maskedDate required" '
				+ 'type="text" '
				+ 'name="cursos_' + i +'_dataConclusao" '
				+ 'id="cursos_' + i +'_dataConclusao" '
				+ 'maxlength="10" '
				+ 'title="Digite a data de conclusao" '
				+ 'alt="Digite a data de conclusao" /><br />'
			+ '<span class="sp_infoFieled">(este campo é de preenchimento obrigatório)</span>'
		+ '</p>'
	+ '</fieldset>');
	
	$._formCurriculo.cursos[i] = o;
	                        
	o.find('A.a_remove').eq(0).click(function(){
		$._formCurriculo.cursos[i].remove();
		delete $._formCurriculo.cursos[i];
	});
	
	for(var k in data)
	{
		o.find('[@name=' + k.replace(/^([\w+]_)(.+)$/, '$1' + i + '$2') + ']').val(data[k]);
	}
	
	return o;
}

function createCourse($this) {
	if(!$this) {
		$this = $('A#addCourse');
	}
	var newCourse = addCourse();
	
	$this.parent().parent().append(newCourse);
	toMaskFields(newCourse);
}

function setVal(name, val)
{
	var selector = '[@name=' + name + ']';
	var $obj = $(selector);
	
	$obj.each(function(){
		var $this = $(this);
		
		if(/radio/.test(this.type))
		{
			if(this.value == val)
			{
				this.checked = true;
				this.click();
			}
		}
		else if(/checkbox/.test(this.type))
		{
			if(val) {
				this.checked = true;
			}
		}
		else if(/(uf|municipio)$/.test(name))
		{
			$obj.data('__value', val);
		}
		else
		{
			$this.val(val);
		}
	});
}

function __toValues(data)
{
	for(var k in data)
	{
		if(k == 'interesse')
		{
			for( i in data[k]) {
				data[k][i] = $.trim(data[k][i]);
				
				var lb = $('LABEL:contains("' + data[k][i] + '")');
				
				if(lb.length > 0)
				{
					var o = $('#' + lb.attr('for'));
					if(o.length > 0)
					{
						o[0].checked = true;
					}
				}
				else
				{
					var io = $('#interesse_outras');
					var txt = $.trim(io.val()).split(',');
					var newTxt = [];
					
					for(var m in txt)
					{
						txt[m] = $.trim(txt[m]);
						
						if(txt[m] && txt[m] != data[k][i])
						{
							newTxt.push(txt[m]);
						}
					}
					
					newTxt.push(data[k][i]);
					
					io.val( newTxt.join(', ') );
				}
			}
		}
		else if(k == 'cursos')
		{
			for( i in data[k]) {
				createCourse();
				
				var j = $._formCurriculo.cursosI;
				
				for( m in data[k][i]) {
					setVal(
						m.replace(/(^[^_]+_)(.+)$/, '$1' + (j) + '_$2'), 
						data[k][i][m]
					);
				}
			}
		}
		else
		{
			if(/^(formacao|experienciaProfissional)_/.test(k))
			{
				var name = k.replace(/^([^_]+_[^_]+).*$/, '$1');
				var obj = document.getElementById(name);
				
				if(obj) {
					obj.checked = true;
				}
				else {
					console.log(name);
				}
			}
			
			if(k != 'formacao_segundoGrauIncompleto')
			{
				setVal(k,data[k]);
			}
		}
	}
};

function startApplication(){
	//$('#dv_content').fadeIn(500);
	var form = $('FORM#fm_curriculum');
	
	showHideByLink(form);
	
	// Selects de estados e municipios
	var selectsUf = $('SELECT[name$=uf]');
	if(selectsUf.length > 0) {
		$.getCJSON('/cep/getEstados/22',function(states){
			var options = '';
			for(var k in states) {
				options += '<option value="' + states[k].id + '">'
					+ states[k].abbr
					+ '</option>';
			}
			
			function _changeState($o){
				var municipios = $('#' + $o.attr('id').replace(/^(.*)uf$/,'$1')+'municipio');
				if($.trim($o.val()).length > 0) {
					municipios
						.empty()
						.append(municipios.data('__loading'))
						.attr('disabled','disabled');
					
					$.getCJSON('/cep/getMunicipios/' + $o.val(), function(cities){
						var options = '';
						for(var k in cities) {
							options += '<option value="' + cities[k].id + '">'
								+ cities[k].nome
								+ '</option>';
						}
						
						municipios
							.empty()
							.append(municipios.data('__noEmpty'))
							.append(options)
							.removeAttr('disabled');
						
						if(municipios.data('__value'))
						{
							municipios.val(municipios.data('__value'));
						}
					});
				}
				else {
					municipios
						.empty()
						.append(municipios.data('__empty'));
				}
			};
			
			selectsUf
				.append(options)
				.change(function(){
					_changeState($(this));
				})
			.each(function(){
				var $o = $(this);
				var municipios = $('#' + $o.attr('id').replace(/^(.+)uf$/,'$1')+'municipio');
				
				municipios
					.data('__empty', '<option value="">' + municipios.find('option:first').text() + '</option>')
					.data('__noEmpty', '<option value="">--- SELECIONE ---</option>')
					.data('__loading', '<option value="">--- AGUARDE. CARREGANDO...</option>');
				
				if($o.data('__value'))
				{
					$o.val($o.data('__value'));
					_changeState($o);
				}
			});
		});
	}
	
	$('A#addCourse').click(function(){
		createCourse($(this));
	});
	
	
	if(window.QUESTIONARIOS) 
	{
		for(var k in window.QUESTIONARIOS)
		{
			window.QUESTIONARIOS[k].start();
		}
	}
	
	$('#sendCurriculum').click(function() {
		//console.log(JSON.encode(Curriculum.getData()));

		//return;
		var valid = $(':maskedTo').maskedToNow(true);
		
		if(valid.noValids.length > 0)
		{
			for(var k in valid.noValids)
			{
				var _name = valid.noValids[k].attr('name');
				
				if(/^_alias.+/.test(_name))
				{
					var target = $('#' + _name.replace(/^_alias[^_]+_/, ''));
					var _val = $.trim(target.val());

					if(_val.length > 0)
					{
						valid.noValids[k].val(_val);
						delete valid.noValids[k];
					}
				}
			}
		}
		
		if(valid.noValidSize() > 0) {
			var ids = [];
			for(var k in valid.noValids) {
				ids.push(valid.noValids[k].attr('id'));
			}
			console.log({Error:ids});
			alert('ATENÇÃO:\n\nPara enviar o seu currículo você precisa preencher todos os campos corretamente.');
		}
		else {
			
			var $this = $(this);
			var text = $this.val();
			
			var dados = $('form').eq(0).serializeArray();
			var nDados = {
				interesse : [],
				cursos : []
			};
			var _cursos = {};
			for(var k in dados)
			{
				if(/^_alias/.test(dados[k].name))
				{
					if(dados[k].value.length > 0)
					{
						nDados[dados[k].name.replace(/^_alias[^_]+_(.+)$/,'$1')] = dados[k].value;
					}
					delete dados[k];
				}
				else if(/^interesse/.test(dados[k].name))
				{
					if(dados[k].value == 'on')
					{
						nDados.interesse.push($.trim($('#' + dados[k].name).siblings('LABEL').text()));
					}
					else if(dados[k].name == 'interesse_outras')
					{
						var outras = $.trim(dados[k].value).split(',');
						
						for(var i in outras)
						{
							outras[i] = $.trim(outras[i]);
							
							if(outras[i].length > 0)
							{
								nDados.interesse.push(outras[i]);
							}
						}
					}
					
					delete dados[k];
				}
				else if(/^cursos_/.test(dados[k].name))
				{
					var i = dados[k].name.replace(/\D/g, '');
					var name = dados[k].name.replace(/_\d+/g, '');
					
					if(_cursos[i] == undefined)
					{
						_cursos[i] = nDados.cursos.length;
						nDados.cursos[_cursos[i]] = {};
					}
					
					nDados.cursos[_cursos[i]][name] = dados[k].value;
					dados[k].name = name;
					dados[k].multiple = true;
				}
				else if(/^questionario_/.test(dados[k].name))
				{
					dados[k].value = $.trim(dados[k].value);
					
					if(dados[k].value.length > 0)
					{
						if(!nDados.questionarios)
						{
							nDados.questionarios = {};
						}
						
						var name = dados[k].name.replace(/^([^_]+_[^_]+)_.+$/, '$1');
						
						if(nDados.questionarios[name] == undefined)
						{
							nDados.questionarios[name] = {};
						}
						
						nDados.questionarios[name][dados[k].name.replace(/^[^_]+_[^_]+_(.+)$/, '$1')] = dados[k].value;
					}
				}
				else if(/^(formacao|experienciaProfissional)_[^_]+.+$/.test(dados[k].name))
				{
					var name = dados[k].name.replace(/^([^_]+_[^_]+).*$/, '$1');
					var obj = document.getElementById(name);
					if(obj && obj.checked) {
						if(dados[k].name != name) {
							nDados[dados[k].name] = dados[k].value;
						}
					}
					else {
						delete dados[k];
					}
				}
				else if(/^(_linkedTo.+)_[^_]+$/.test(dados[k].name))
				{
					delete dados[k];
				}
				else
				{
					dados[k].value = $.trim(dados[k].value);
					
					if(dados[k].value.length > 0)
					{
						nDados[dados[k].name] = dados[k].value;
					}
					delete dados[k].value;
				}
			}
			dados.push({name : 'interesse', multiple : true});
			
			var dDados = [];
			for(var k in dados)
			{
				dDados.push(dados[k]);
			}
			
			//console.log(nDados);
			
			$this.attr('disabled','disabled')
				.val('Aguarde. Enviando...');
			//return;
			$.post('/curriculo/save/',
				{
					data: JSON.encode(nDados)
				},
				function(resp){
					if($.trim(resp).length == 0) {
						alert($.curriculo && $.curriculo.msgSucces ? $.curriculo.msgSucces : 'SUCESSO!\n\nSeu currículo foi enviado com sucesso.'
							+'\n\nInformação para atualização do currículo:'
								+'\n\tLogin: ' + nDados.dadosPessoais_email
								+'\n\tSenha: ' + nDados.dadosPessoais_cpf
							+'\n\nATENÇÂO:\n\nAo fechar este alerta, você será redirecionado para a página de contato.');
						
						if(!window.IS_TEST)
						{
							if(/_continue\=false/i.test(location.href)) 
							{}
							else 
							{
								//location.href = '/contato';
							}
						}
						else
						{}
					}
					else {
						alert('ERRO:\n\n' + resp);
					}
					
					$this.removeAttr('disabled').val(text);
				}
			);
		}
	}
	);
};

$(function(){
	if($.LOAD_CURRICULUM)
	{
		__toValues($.LOAD_CURRICULUM);
		startApplication();
	}
	else
	{
		startApplication();
	}
});