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

FeelInc.ui.Guru = function() {

	return {
	
	_currND: 0,
	_extArg: {},
	
	build: function(){
		FeelInc.ui.Default.init();
		if ($('#peserta_selector')[0] != null) FeelInc.ui.Guru.generateSelector();
		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;
			});
		}

	},
	
	generateSelector: function(){
		$('#peserta_selector').empty();
		
		var _generateKabupaten = FeelInc.ui.Guru.generateKabupaten.bind(this);
		var _generateInstansi = FeelInc.ui.Guru.generateInstansi.bind(this);
		$.post(_doc_root_path+"/page/hasil", {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/hasil", {get: 'selector', tahun: 0, kab: 1, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0}, function(response){
					_generateKabupaten(response);

			});
		});
		
		this.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>Daerah</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);
		var _generatePmp = FeelInc.ui.Guru.generatePmp.bind(this);
		var _generateStatus = FeelInc.ui.Guru.generateStatus.bind(this);
		$('#inst_list').remove();
		$('#pmp_list').remove();
		$('#status_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');
			if($(this)[0].id == 1){
				$.post(_doc_root_path+"/page/hasil", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0, pmp: 1}, function(response){
					_generatePmp(response);	
				});
			}else if($(this)[0].id == 2){
					$('#pmp_list').remove();
					$('#status_list').remove();	
					$.post(_doc_root_path+"/page/hasil", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0, pmp: 0, status: 1}, function(response){
						_generateStatus(response,2);	
					});
			}else{
				$('#pmp_list').remove();
				$('#status_list').remove();	
			}

				FeelInc.ui.Guru.getGuruList();
			});
			dllist.append(dditem.append(a));
		}
	},
	
	generateStatus: function(response,stat){
		response = FeelInc.decode(response);
		$('#status_list').remove();
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="status_list"/>').append($('<span>Status</span>')).appendTo($('#peserta_selector'));
		if(stat == 1)
			$('#pmp_list').after(dllist);
		else
			$('#inst_list').after(dllist);
			
		for (var i = 0; i < response.status.length; ++i) {
			if (_inst == response.status[i].unid) this.setExtArg({'status': response.status[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.status[i].unid+'" href="javascript:void(0);" class="'+((_inst == response.status[i].unid) ? ' selected' : '')+'"><span>'+response.status[i].name+'</span></a>');
			a.click(function(){
				_setExtArg({'status': $(this)[0].id});
				$('#status_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				FeelInc.ui.Guru.getGuruList();
			});
			dllist.append(dditem.append(a));
		}
	},	

	generatePmp: function(response){
		response = FeelInc.decode(response);
		var _generateStatus = FeelInc.ui.Guru.generateStatus.bind(this);
		$('#status_list').remove();
		$('#pmp_list').remove();
		var _setExtArg = this.setExtArg.bind(this);
		var dllist = $('<dl id="pmp_list"/>').append($('<span>Jalur</span>'));
		$('#inst_list').after(dllist);
		for (var i = 0; i < response.pmp.length; ++i) {
			if (_inst == response.pmp[i].unid) this.setExtArg({'pmp': response.pmp[i].unid});
			dditem = $('<dd class="selector_item"/>');
			a = $('<a id="'+response.pmp[i].unid+'" href="javascript:void(0);" class="'+((_inst == response.pmp[i].unid) ? ' selected' : '')+'"><span>'+response.pmp[i].name+'</span></a>');
			a.click(function(){
				_setExtArg({'pmp': $(this)[0].id});
				$('#pmp_list dd.selector_item').each(function(){
					$(this.childNodes).removeClass('selected');
				});
				$(this).addClass('selected');
				if($(this)[0].id != 0){
					$.post(_doc_root_path+"/page/hasil", {get: 'selector', tahun: 0, kab: 0, inst: 0, kabid: 0, jp: 0, instid: 0, mp: 0, jpid: 0, pmp: 0, status: $(this)[0].id}, function(response){
						_generateStatus(response,1);	
					});
				}else{
					$('#status_list').remove();
				}
				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/hasil", $.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);
			tbl = $('<table cellpadding="0" cellspacing="0" width="100%"/>');
			tbl.html('<tr class="tb-title"><td>No.</td><td>Kode</td><td>Nama</td><td>Sekolah</td><td>Mata Pelajaran</td><td>Daerah</td><td>TTL</td></tr>');
				for (i = 0; i < response.list.length; ++i) {
				dd = $('<dd id="item_'+response.list[i].unid+'"/>');
				if((response.list[i].stat=='MS') || (response.list[i].stat=='MA') || (response.list[i].stat=='K')){
					a = $('<a href="javascript:void(0);" title="Klik Untuk Lihat Detail Status"/>').bind('click', {datahsl: response.list[i]}, function(e){
						_getGuruDetail(e.data);
					});;
				}else{
					a = $('<a/>');;
				}
				div = $('<div class="data_container"/>');
				
				if(response.list[i].stat=='L'){
					response.list[i].stat='LULUS';
				}else if(response.list[i].stat=='D'){
					response.list[i].stat='DISKUALIFIKASI';					
				}else if(response.list[i].stat=='MA'){
					response.list[i].stat='MELENGKAPI ADMINISTRASI';					
				}else if(response.list[i].stat=='MS'){
					response.list[i].stat='MELENGKAPI SUBSTANSI';					
				}else if(response.list[i].stat=='K'){
					response.list[i].stat='KLARIFIKASI';					
				}
				
				a.append(div.html(
					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+'&nbsp;<font color="#ff0000">|</font>&nbsp;'+
					'<strong>'+response.list[i].stat+'</strong>'
				));
				$('#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);
			};
			
			
		} else {
			$('#peserta_list').html('Maaf, Tidak ada data guru yang bisa ditampilkan.');
		}
		
		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.datahsl.unid).html() == '') {
			//var _loading = FeelInc.loading("item_"+data.datahsl.unid);
			var _storeGuruDetail = this.storeGuruDetail.bind(this);
			_storeGuruDetail(data.datahsl);
		} else {
			if($("#detail_"+data.datahsl.unid).css('display') == 'none') {
				$("#detail_"+data.datahsl.unid).slideDown("slow");
			} else $("#detail_"+data.datahsl.unid).slideUp("slow");
		}
	},
	
	storeGuruDetail: function(response){
		//response = FeelInc.decode(response);
		var table = $('<div align="center" style=""><p><strong>'+response.ket+'</strong></p></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);
		if(response.lokasi==""){
			response.lokasi ="Belum Terpetakan";
			response.waktu ="Belum Terpetakan";
			response.klases ="Belum Terpetakan";
		}
		//leftContainer.append($('<div class="photo"><div><span/><img src="'+response.pic+'"/></div></div>'));
		rightContainer.append($('<span class="item"><div class="title">Lokasi PLPG</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.lokasi+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Waktu Pelaksanaan</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.waktu+'</div></span>'));
		rightContainer.append($('<span class="item"><div class="title">Kelas</div><label>&nbsp;:&nbsp;</label><div class="value">'+response.klases+'</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(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);
	}
	
	};
	
}();
