/**
 * @author Sulaeman, sulaeman.nowhere@gmail.com
 */

FeelInc.ui.Guru = function() {

	return {
	
	_currND: 0,
	_extArg: {},
	
	build: function(){
		FeelInc.ui.Default.init();
		if ($('#uploadbutt')[0] != null) {
			$('#uploadbutt').click(function(){
				FeelInc.ui.Default.openUpload({unid: $(this).attr('class'), callback: function(_container){
					alert("File berhasil di upload.");
					_container.dialog('close');
					location.href = location.href;
				}});
			});
		}
		if ($('#top-keywords')[0] != null) {
			var _getGuruList = FeelInc.ui.Guru.getGuruList.bind(FeelInc.ui.Guru);
			$('#top-submit').click(function(){_getGuruList()});
			$('#top-keywords').keypress(function(e){
				if(e.keyCode == 13) {
					_getGuruList();
					try {e.preventDefault();} catch(e) {e.returnValue = false;}
					return false;
				}
				return true;
			});
		}
		if ($('#peserta_selector')[0] != null) FeelInc.ui.Guru.generateSelector();
		
		if ($('#peserta_edit')[0] != null) {
			var message = "Maaf, salah";
			var input_empty = "*Ketikan tanggal disini", empty_string = "Ketikan tanggal";
			var date = null, format = "dddd, dd MMMM, yyyy";
			var input = $("#tgl_lhr"), date_string = $("#d_validation");
			if (input.val() == '') input.val(input_empty);
			date_string.text(empty_string);
			input.keyup( 
				function (e) {
					date_string.removeClass();
					if (input.val().length > 0) {
						date = Date.parse(input.val());
						if (date !== null) {
							input.removeClass('validate_error_date');
							date_string.addClass("accept_date").text(date.toString(format));
						} else {
							input.addClass("validate_error_date");
							date_string.addClass("error_date").text(message+"...");
						}
					} else {
						date_string.text(empty_string).addClass("empty_date");
					}
				}
			);
			input.focus(function (e) {if (input.val() === input_empty) {input.val("");}});
			input.blur(function (e) {if (input.val() === "") {input.val(input_empty);input.removeClass('validate_error');}});
			
			if($('#jenpen')[0] != null) {
				var _getMapel = FeelInc.ui.Guru.getMapel.bind(this);
				_getMapel();
				$('#jenpen').bind('change', function(){_getMapel();});
			}
			
			$('#butt_edit_peserta').click(function(){
				if ($('#kode').val() == '') {
					alert('Maaf, Kode harus diisi.');
					return;
				}
				if ($('#nama').val() == '') {
					alert('Maaf, Nama Lengkap harus diisi.');
					return;
				}
				if ($('#tmpt_lhr').val() == '') {
					alert('Maaf, Tempat Lahir harus diisi.');
					return;
				}
				if ($('#tgl_lhr').val() == '') {
					alert('Maaf, Tanggal Lahir harus diisi.');
					return;
				}
				if ($('#thn_kerja').val() == '') {
					alert('Maaf, Tahun Masa Kerja harus diisi.');
					return;
				}
				if ($('#bln_kerja').val() == '') {
					alert('Maaf, Bulan Masa Kerja harus diisi.');
					return;
				}
				if ($('#sk').val() == '0') {
					alert('Maaf, Anda belum memilih Status Kepegawaian.');
					return;
				}
				if ($('#sekolah').val() == '') {
					alert('Maaf, Sekolah harus diisi.');
					return;
				}
				if ($('#alamatsekolah').val() == '') {
					alert('Maaf, Alamat Sekolah harus diisi.');
					return;
				}
				if ($('#matpel').val() == '0') {
					alert('Maaf, Anda belum memilih Mata Pelajaran.');
					return;
				}
				if ($('#jenpen').val() == '0') {
					alert('Maaf, Anda belum memilih Jenjang Pendidikan.');
					return;
				}
				$('#peserta_edit')[0].submit();
			});
		}
	},
	
	getMapel: function(){
		var _generateMapel = FeelInc.ui.Guru.generateMapel.bind(this);
		$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 1, jpid: $('#jenpen').val()}, function(response){
			response = FeelInc.decode(response);
			var _mp = $('#matpel');
			_mp[0].length = 0;
			if (response.mp.length > 0) {
				for (var i = 0; i < response.mp.length; ++i) {
					_mp[0].options[i] = new Option(((response.mp[i].name.toLowerCase() == 'semua') ? 'Pilih Mata Pelajaran ...' : response.mp[i].name), response.mp[i].unid);
					if (_selmp == response.mp[i].name) _mp[0].options[i].selected = true;
				}
			} else _mp[0].options[0] = new Option('Pilih Mata Pelajaran ...', 0);
		});
	},
	
	generateSelector: function(){
		$('#peserta_selector').empty();
		
		var _generateYear = FeelInc.ui.Guru.generateYear.bind(this);
		var _generateKabupaten = FeelInc.ui.Guru.generateKabupaten.bind(this);
		var _generateInstansi = FeelInc.ui.Guru.generateInstansi.bind(this);
		var _generatePendidikan = FeelInc.ui.Guru.generatePendidikan.bind(this);
		var _generateMapel = FeelInc.ui.Guru.generateMapel.bind(this);
		$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 1, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0}, function(response){
			_generateYear(response);
			$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 1, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0}, function(response){
				_generateKabupaten(response);
				$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 0, inst: 1, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0}, function(response){
					_generateInstansi(response);
					$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 1, instid: 0, mp: 0, jpid: 0}, function(response){
						_generatePendidikan(response);
						$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 1, jpid: 0}, function(response){
							_generateMapel(response);
						});
					});
				});
			});
		});
		
		this.getGuruList();
	},
	
	generateYear: function(response){
		response = FeelInc.decode(response);
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('#tahun_sertifikasi');
		for (var i = 0; i < response.tahun.length; ++i) {
			if (_tahun == response.tahun[i].unid) this.setExtArg({'tahun': response.tahun[i].unid});
			a = $('<a id="'+response.tahun[i].unid+'" href="javascript:void(0);" class="'+((_tahun == response.tahun[i].unid) ? 'selected' : '')+'"><span>'+response.tahun[i].name+'</span></a>').appendTo(dllist);
			a.click(function(){
				_setExtArg({'tahun': $(this)[0].id});
				$('#tahun_sertifikasi a').each(function(){
					$(this).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
		}
	},
	
	generateKabupaten: function(response){
		response = FeelInc.decode(response);
		$('#kab_list').remove();
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="kab_list"/>').append($('<span>Kabupaten</span>')).appendTo($('#peserta_selector'));
		for (var i = 0; i < response.kabupaten.length; ++i) {
			if (_kab == response.kabupaten[i].unid) this.setExtArg({'kab': response.kabupaten[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.kabupaten[i].unid+'" href="javascript:void(0);" class="'+((_kab == response.kabupaten[i].unid) ? ' selected' : '')+'"><span>'+response.kabupaten[i].name+'</span></a>');
			dllist.append(dditem.append(a));
			a.click(function(){
				_setExtArg({'kab': $(this)[0].id});
				$('#kab_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
		}
	},
	
	generateInstansi: function(response){
		response = FeelInc.decode(response);
		$('#inst_list').remove();
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="inst_list"/>').append($('<span>Instansi</span>')).appendTo($('#peserta_selector'));
		for (var i = 0; i < response.inst.length; ++i) {
			if (_inst == response.inst[i].unid) this.setExtArg({'inst': response.inst[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.inst[i].unid+'" href="javascript:void(0);" class="'+((_inst == response.inst[i].unid) ? ' selected' : '')+'"><span>'+response.inst[i].name+'</span></a>');
			a.click(function(){
				_setExtArg({'inst': $(this)[0].id});
				$('#inst_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
			dllist.append(dditem.append(a));
		}
	},
	
	generatePendidikan: function(response){
		response = FeelInc.decode(response);
		$('#jp_list').remove();
		var _generateMapel = FeelInc.ui.Guru.generateMapel.bind(this);
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="jp_list"/>').append($('<span>Pendidikan</span>')).appendTo($('#peserta_selector'));
		for (var i = 0; i < response.jp.length; ++i) {
			if (_jp == response.jp[i].unid) this.setExtArg({'jp': response.jp[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.jp[i].unid+'" href="javascript:void(0);" class="'+((_jp == response.jp[i].unid) ? ' selected' : '')+'"><span>'+response.jp[i].name+'</span></a>');
			a.click(function(){
				$.post(_doc_root_path+"/page/peserta", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 1, jpid: $(this)[0].id}, function(response){_generateMapel(response);});
				_setExtArg({'jp': $(this)[0].id});
				$('#jp_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
			dllist.append(dditem.append(a));
		}
	},
	
	generateMapel: function(response){
		response = FeelInc.decode(response);
		$('#mp_list').remove();
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="mp_list"/>').append($('<span>Pelajaran</span>')).appendTo($('#peserta_selector'));
		for (var i = 0; i < response.mp.length; ++i) {
			if (_mp == response.mp[i].unid) this.setExtArg({'mp': response.mp[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.mp[i].unid+'" href="javascript:void(0);" class="'+((_mp == response.mp[i].unid) ? ' selected' : '')+'"><span>'+response.mp[i].name+'</span></a>');
			a.click(function(){
				_setExtArg({'mp': $(this)[0].id});
				$('#mp_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
			dllist.append(dditem.append(a));
		}
	},
	
	getGuruList: function(i){
		$('div.tool-tip').each(function(){$(this).remove();});
		var _loading = FeelInc.loading('peserta_content');
		var _storeGuruList = FeelInc.ui.Guru.storeGuruList.bind(this);
		$.post(_doc_root_path+"/page/peserta", $.extend({get: 'alllist', start: ((i != null) ? (i*10) : 0), limit: 10, search: $('#top-keywords')[0].value}, this._extArg), function(response){_storeGuruList(response);_loading.remove();});
	},
	
	storeGuruList: function(response){
		
		$('#peserta_list').empty();
		
		var i = 0;
		var dd, a, div;
		
		response = FeelInc.decode(response);
		
		$('#pesertandata').text(response.n);
		
		if (response.n > 0) {
			var _getGuruDetail = this.getGuruDetail.bind(this);
			for (i = 0; i < response.list.length; ++i) {
				dd = $('<dd id="item_'+response.list[i].unid+'" class="'+((response.list[i].stat == 0) ? 'inprogress' : ((response.list[i].stat == 1 || response.list[i].stat == 2) ? 'lulus' : 'notlulus'))+'"/>');
				a = $('<a title="Profil Peserta :: Klik untuk memunculkan detail peserta" href="javascript:void(0);"/>').bind('click', {unid: response.list[i].unid}, function(e){
					_getGuruDetail(e.data);
				});
				div = $('<div class="data_container"/>');
				a.append(div.html(
				        '<font color="#ff0000">ID Anda : '+ response.list[i].unid+'</font>&nbsp;<font color="#ff0000">|</font>&nbsp;'+
					response.list[i].kode+'&nbsp;<font color="#ff0000">|</font>&nbsp;'+
					response.list[i].nama+'&nbsp;<font color="#ff0000">|</font>&nbsp;'+
					response.list[i].sekolah+'&nbsp;<font color="#ff0000">|</font>&nbsp;'+
					response.list[i].kabupaten
				));
				if (response.list[i].error) $('<div class="error">Ada beberapa dari data Anda yang harus diperbaiki, silahkan hubungi pihak '+response.list[i].inst+' wilayah Anda.</div>').appendTo(a);				
				$('#peserta_list').append(dd.append(a));
				dd.append($('<div id="detail_'+response.list[i].unid+'" class="guru_detail" style="display:none;"/>'));
				
				new FeelInc.ui.Tips.init(a);
			};
			
			$('#act_g_list')[0].disabled = false;
			$('#act_g_list').click(function(){
				var _extArg = (FeelInc.ui.Guru._extArg.tahun != null && FeelInc.ui.Guru._extArg.tahun != 0) ? '/tahun/'+FeelInc.ui.Guru._extArg.tahun : '';
				_extArg += (FeelInc.ui.Guru._extArg.kab != null && FeelInc.ui.Guru._extArg.kab != 0) ? '/kab/'+FeelInc.ui.Guru._extArg.kab : '';
				_extArg += (FeelInc.ui.Guru._extArg.inst != null && FeelInc.ui.Guru._extArg.inst != 0) ? '/inst/'+FeelInc.ui.Guru._extArg.inst : '';
				_extArg += (FeelInc.ui.Guru._extArg.jp != null && FeelInc.ui.Guru._extArg.jp != 0) ? '/jp/'+FeelInc.ui.Guru._extArg.jp : '';
				_extArg += (FeelInc.ui.Guru._extArg.mp != null && FeelInc.ui.Guru._extArg.mp != 0) ? '/mp/'+FeelInc.ui.Guru._extArg.mp : '';
				window.open (_doc_root_path+'/page/peserta/list/grid'+_extArg,"GURUGRID","location=0,status=0,scrollbars=1,width=950,height=600");
			});
			
		} else {
			$('#peserta_list').html('Maaf, Tidak ada data guru yang bisa ditampilkan.');
			$('#act_g_list')[0].disabled = true;
		}
		
		if (response.n != this._currND) {
			this.buildPaging(response.n);
		} else if ($('#pagepesertanav_top').html() == '') {
			this.buildPaging(response.n);
		}
		if (response.n != this._currND) this._currND = response.n;
		
	},
	
	getGuruDetail: function(data){
		if($("#detail_"+data.unid).html() == '') {
			var _loading = FeelInc.loading("item_"+data.unid);
			var _storeGuruDetail = this.storeGuruDetail.bind(this);
			$.post(_doc_root_path+"/page/peserta", {get: 'detail', unid: data.unid}, function(response){_storeGuruDetail(response);_loading.remove();});
		} else {
			if($("#detail_"+data.unid).css('display') == 'none') {
				$("#detail_"+data.unid).slideDown("slow");
			} else $("#detail_"+data.unid).slideUp("slow");
		}
	},
	
	storeGuruDetail: function(response){
		response = FeelInc.decode(response);
		var div = $('<div align="center" class="title" style="margin:5px;padding:5px;border:#CECECE 1px solid;background:#fffbe2;"><h2>ID Anda : '+response.unid+'</h2></div>');
		var table = $('<table cellpadding="0" cellspacing="0"/>');
		var tr = $('<tr/>').appendTo(table);
		var leftContainer = $('<td class="left_container"/>').appendTo(tr);
		var rightContainer = $('<td class="right_container"/>').appendTo(tr);
		
		leftContainer.append($('<div class="photo"><div><span/><img src="'+response.pic+'"/></div></div>'));
		rightContainer.append($('<span class="item"><div class="title">Nomor Peserta</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.kode+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Pola Sertifikasi</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.pola+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Jenis Pendaftaran</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.pendaftar+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">NIP/NIK</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.nip+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">NUPTK</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.nuptk+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Nama Lengkap</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.nama+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Tempat Lahir</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.tmpt_lhr+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Tanggal Lahir</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.tgl_lhr+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Masa Kerja</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.masa_kerja+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Status</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.status+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Nama Sekolah</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.sekolah+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Alamat Sekolah</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.alamat_sek+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Mata Pelajaran</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.mp+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Kabupaten</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.kabupaten+'</div></span>'));
		if (response.action != null) rightContainer.append($('<span class="item"><div class="title">&nbsp;</div><label>&nbsp;</label><div class="value">'+response.action+'</div></span>'));
		
		$("#detail_"+response.unid).append(div);
		$("#detail_"+response.unid).append(table).slideDown("slow");
	},
	
	buildPaging: function(n){
		var _getGuruList = this.getGuruList.bind(this);
		$('#pagepesertanav_top').pagination(n, {link_to: 'javascript:void(0);', current_page: 0,num_edge_entries: 2, num_display_entries: 8, prev_text: 'Sebelumnya', next_text: 'Selanjutnya', items_per_page:10, callback:_getGuruList});
	},
	
	getExtArg: function(){
		return this._extArg;
	},
	
	setExtArg: function(opt){
		$.extend(this._extArg, opt);
	}
	
	};
	
}();