$(function() {
  var url = document.location.href;
  /*
  if((url.split('formulir-directory-masjid').length > 1) || 
    (url.split('daftar-masjid').length > 1)) false;
  else callPrayerTime();;
  */
  help();
  filter();
  $('thead select[name="filter"]').trigger("change");
  submitForm();
  getListMasjid();
  formFieldAdjustment();
});

function fUpperCase(str) {
  var fletter = str.substr(0,1);
  var newstr = fletter.toUpperCase() + str.substr(1);
  return str.replace(str,newstr);
}

function coolTab(tabName) {
  var cls = location.href.split('#'+tabName)[1] - 1;
  var tab = '.tab ul li';
  if(cls) {
    $(tab).removeClass('active');
    $(tab+':eq('+cls+')').addClass('active');
    $('.'+tabName).addClass('hidden');
    $('.'+tabName+':eq('+cls+')').removeClass('hidden');
  }
   
  $(tab).click(function(){
    var tab = '.tab ul li';
    var idx = $(tab).index(this);
    $(tab).removeClass('active');
    $(tab+':eq('+idx+')').addClass('active');
    $('.'+tabName).addClass('hidden');
    $('.'+tabName+':eq('+idx+')').removeClass('hidden');
    window.location = location.href.split("#")[0] + '#'+ tabName + (idx + 1);
    $("#list-masjid, .info").addClass('hidden'); 
  });
}

function help() {
  $('.help').click(function(){
    var id = $(this).attr('id');
    var page = id.split('help-')[1];
    window.open(
      domain + '/wp-content/themes/monochrome/help/' + page + '.html',
      'Help ' + page,
      'status=0,toolbar=0,location=0,menubar=0,resizeable=0,scrollbars=1,height=700,width=500'
    );
  });
}

var filter = function() {  
  $('thead select[name="filter"]').change(function(){
    var filter = $(this).val();
    $('.cari-masjid tbody tr').addClass('hidden')
    $('.cari-masjid tbody tr[id="'+filter+'"]').removeClass('hidden');
  });
}

function displayForm(fshow,fhide) {
  $('#form-'+fshow).removeAttr('style');
  $('#form-'+fhide).css('display','none');
  var url = window.location.href.split('#');
  window.location.href= url[0] + "#form-"+fshow;
}

function addForm(val) {
  if(val != '') {
    if(val == 'dibawah yayasan') $('.dibawah-yayasan').removeAttr('style'); 
    else if(val == 'berdiri sendiri') { $('.dibawah-yayasan').css('display','none'); $('input[name="yayasan"]').val(''); }
    else if(val == 'listrik sendiri') $('.listrik-sendiri').removeAttr('style');
    else if(val == 'PLN') { $('.listrik-sendiri').css('display','none'); $('input[name="kapasitas"]').val(''); }
    else if(val == 'tanpa listrik') { $('.listrik-sendiri').css('display','none'); $('input[name="kapasitas"]').val(''); }
    else if(val == 'parkir-ada') $('.parkir').removeAttr('style');
    else if(val == 'parkir-tidak') $('.parkir').css('display','none');
    else if(val == 'wakaf dengan sertifikat') $('.wakaf-sertifikat').removeAttr('style');
    else if(val == 'wakaf tanpa sertifikat') { $('.wakaf-sertifikat').css('display','none'); $('input[name="sertifikat"]').val(''); }
    else if(val == 'belum ada status') { $('.wakaf-sertifikat').css('display','none'); $('input[name="sertifikat"]').val(''); }
    else return;
  } else { return; }
}

function tabActive(id) {
  if(id == 'general') var status = new Array( 'block','none','none','none', 'none' );
  else if(id == 'fasilitas') var status = new Array( 'none','block','none','none', 'none' );
  else if(id == 'kegiatan') var status = new Array( 'none','none','block','none', 'none' );
  else if(id == 'sejarah') var status = new Array( 'none','none','none','block', 'none' );
  else if(id == 'pengurus') var status = new Array( 'none','none','none','none', 'block' );
  else return;
  $('#general').css('display',status[0]);
  $('#fasilitas').css('display',status[1]);
  $('#kegiatan').css('display',status[2]);
  $('#sejarah').css('display',status[3]);
  $('#pengurus').css('display',status[4]);
  
  $('#tab-info-masjid li').removeAttr('class');
  //alert('#tab-info-masjid li[onclick="tabActive(\''+id+'\')"]');
  $('#im-'+id).attr('class','tab-active');
}

function openListMasjid(idx) {
  //window.location.href = domain + '/directory-masjid?id='+idx;
  window.location.href += '?npm='+idx;
}

function getListMasjid() {
  $('select[name="propinsi"]').change(function() {
    var value = $(this).val();
    var value64 = Base64.encode(value);
    var val = '<option>  Loading...     </option>';
    $('select[name="kabupaten"]').html(val);
    $.post(
      "3d3d5d9a1b8f73158e8a16926ad6f5b2", 
      { 
           func: 'get',
           form: 'propinsi',
           data: value64
      },
      function(data){
        var val = '<option value="">-- Pilih salah satu --</option>' + Base64.decode(data.status);
        $('select[name="kabupaten"]').html(val);
        /*
        if(data.status == '1') alert('Insert data successful');
        else alert('Insert data failed!');
        */
        //alert('done');
      }, 
      "json"
    );
  });
  $('select[name="kabupaten"]').change(function() {
    var value = $(this).val() + ';' + $('select[name="propinsi"]').val();
    //alert(value);
    var value64 = Base64.encode(value);
    $.post(
      "3d3d5d9a1b8f73158e8a16926ad6f5b2", 
      { 
           func: 'get',
           form: 'kabupaten',
           data: value64
      },
      function(data){
        //alert(Base64.decode(data.status))
        $('#list-masjid').removeClass('hidden');
        $('.lm-header').after(Base64.decode(data.status));
        $('#content-daftar-masjid .info').removeClass('hidden')
        /*
        if(data.status == '1') alert('Insert data successful');
        else alert('Insert data failed!');
        */
        //alert('done');
      }, 
      "json"
    );
  });
  $('form[name="cari"]').submit(function(){
    /* Clear the table result */
    $("#list-masjid tbody").html('');
    var filter = $('select[name="filter"]').val();
    var value;
    /* Filter untuk npm dan nama masjid */
    if(filter == "npm" || filter == "nama") {
      $(this).find("button").text("Searching...").attr('disabled','disabled');
      value = $('input[name="'+filter+'"]').val();
    }
    
    $.post(
      "3d3d5d9a1b8f73158e8a16926ad6f5b2", 
      { 
           func: 'search',
          query: filter,
           data: Base64.encode(value)
      },
      function(data){
        if(filter == "npm") {
          if(data.status == "1") {
            window.location = domain + "/daftar-masjid?npm=" + value;
          } else if(data.status > "1"){
            alert("there are " +data.status+ " data found in the database.\n Please report this event to the administrator.\n Thhnk you...")
          } else { alert("no data found"); }
        } else if(filter == "nama") {
          //alert(data.status);
          if(data.status != "") {
            var body;
            for(var i=0;i<data.status.length;i++) {
              body = "<tr>"
                   + "<td>" + (i+1) + "</td>"
                   + "<td>" + data.status[i].kecamatan + "</td>"
                   + "<td>" + data.status[i].kelurahan + "</td>"
                   + "<td>" + data.status[i].rt + " / " + data.status[i].rw + "</td>"
                   + "<td><a href=\"daftar-masjid?npm="+data.status[i].npm+"\">" + data.status[i].nama + "</a></td>"
                   + "<td>" + data.status[i].npm + "</td>"
                   + "</tr>"; 
              if(i == 0) {
                $('#list-masjid').removeClass('hidden');
                $('#list-masjid tbody').html(body);
              }
              else $('#list-masjid tbody tr').append(body);
            }
          } else alert("No data found");
        }
        $("button[name='submit']").text("Search").removeAttr('disabled');
      }, 
      "json"
    );
  });
}

function getFormValue(name, type) {
  if(!type) {
    return $('input[name="'+name+'"]').val();
  } else if((type == 'radio') || (type == 'checkbox')) {
    return $('input[name="'+name+'"]:checked').val();
  } else if(type == 'select') {
    return $('select[name="'+name+'"]').val();
  } 
}   

function validation() {
  var valid = '';
  var nameArr = new Array("name","tipe","kelurahan","kecamatan","propinsi","kabupaten","cp-nama","cp-telp","cp-email","pemohon-nama");
  var valueArr = new Array("Nama Masjid","Tipe Masjid","Kelurahan","Kecamatan","Propinsi","Kabupaten","Nama Contact Person","Telp Contact Person","Email Contact Person","Nama Pemohon");
  var temp = false;
  var j = 1;
  for(var i=0;i<nameArr.length;i++) {
    //alert($('select[name="'+nameArr[i]+'"]').val());
    if(($('input[name="'+nameArr[i]+'"]').val() == '') || ($('select[name="'+nameArr[i]+'"]').val() == ''))  {
      if(temp) valid += '\n ' + j + '. ';
      else valid += j + '. ';
      valid += valueArr[i];
      temp = true;
      j++;
     } 
  }
  return valid;
}

function submitForm() {
  $('img[alt="Submit"]').click(function() {
    if(validation() == '') {
      $(this).append('<img src="../wp-content/themes/monochrome/img/ajax-loader.gif">'); 
      var kapasitas = getFormValue('kapasitas');
      kapasitas = (kapasitas == "") ? "" : " berkapasitas " + kapasitas;
      var yayasan = getFormValue('yayasan');
      yayasan = (yayasan == "") ? "" : " " + yayasan;
      var sertifikat = getFormValue('sertifikat');
      sertifikat = (sertifikat == "") ? "" : " no: " + sertifikat;
      var psBulanTahun = getFormValue('ps-bulan-tahun','radio');
      psBulanTahun = (psBulanTahun == "") ? "" : " " + psBulanTahun;
      var rbBulanTahun = getFormValue('rb-bulan-tahun','radio');
      rbBulanTahun = (rbBulanTahun == "") ? "" : " " + rbBulanTahun;
      var value = "'" + getFormValue('npm')
                + "','" + getFormValue('nb') 
                + "','" + getFormValue('name') 
                + "','" + getFormValue('tipe','select')
                + "','" + getFormValue('propinsi','select') 
                + "','" + getFormValue('kabupaten')
                + "','" + getFormValue('kecamatan')
                + "','" + getFormValue('kelurahan')
                + "','" + getFormValue('rt')
                + "','" + getFormValue('rw')
                + "','" + getFormValue('alamat')
                + "','" + getFormValue('telepon')
                + "','" + getFormValue('fax')
                + "','" + getFormValue('email')
                + "','" + getFormValue('bangunan-masjid','select')
                + "','" + getFormValue('letak-masjid','select')
                + "','" + getFormValue('kapasitas-masjid')
                + "','" + getFormValue('jumlah-jamaah-tetap')
                + "','" + getFormValue('tw-pria','radio')
                + "','" + getFormValue('tw-wanita','radio')
                + "','" + getFormValue('km-pria','radio')
                + "','" + getFormValue('km-wanita','radio')
                + "','" + getFormValue('gudang','radio')
                + "','" + getFormValue('air','radio')
                + "','" + getFormValue('listrik', 'select') + kapasitas
                + "','" + getFormValue('ac','radio')
                + "','" + getFormValue('sound','radio')
                + "','" + getFormValue('parkir','radio')
                + "','" + getFormValue('parkir-luas')
                + "','" + getFormValue('parkir-mobil')
                + "','" + getFormValue('parkir-motor')
                + "','" + getFormValue('tanah-masjid','select') + sertifikat
                + "','" + getFormValue('luas-tanah')
                + "','" + getFormValue('luas-bangunan')
                + "','" + getFormValue('kantor-pengurus','radio')
                + "','" + getFormValue('majelis-taqlim','radio')
                + "','" + getFormValue('remaja-masjid','radio')
                + "','" + getFormValue('pendidikan','radio')
                + "','" + getFormValue('pesantren','radio')
                + "','" + getFormValue('perpustakaan','radio')
                + "','" + getFormValue('koperasi','radio')
                + "','" + getFormValue('poliklinik','radio')
                + "','" + getFormValue('rumah-sehat','radio')
                + "','" + getFormValue('asy-syifa','radio')
                + "','" + getFormValue('konsultasi','radio')
                + "','" + getFormValue('panti-asuhan','radio')
                + "','" + getFormValue('sekolah','radio')
                + "','" + getFormValue('bantuan-hukum','radio')
                + "','" + getFormValue('btk','radio')
                + "','" + getFormValue('upz','radio')
                + "','" + getFormValue('bank-syariah','radio')
                + "','" + getFormValue('bmt','radio')
                + "','" + getFormValue('bprs','radio')
                + "','" + getFormValue('kantor-pos','radio')
                + "','" + getFormValue('penyelenggara-haji','radio')
                + "','" + getFormValue('toko-buku','radio')
                + "','" + getFormValue('pusat-informasi','radio')
                + "','" + getFormValue('wartel','radio')
                + "','" + getFormValue('pgb','radio')
                + "','" + getFormValue('upj','radio')
                + "','" + getFormValue('upq','radio')
                + "','" + getFormValue('uph','radio')
                + "','" + getFormValue('kedudukan-masjid','select') + yayasan
                + "','" + getFormValue('didirikan-tahun')
                + "','" + getFormValue('pembangunan-selama') + psBulanTahun
                + "','" + getFormValue('total-dana')
                + "','" + getFormValue('renovasi-berapa-kali')
                + "','" + getFormValue('renovasi-terakhir-tahun')
                + "','" + getFormValue('renovasi-berlangsung') + rbBulanTahun
                + "','" + getFormValue('total-dana-2')
                + "','" + getFormValue('ketua')
                + "','" + getFormValue('wakil')
                + "','" + getFormValue('sekretaris')
                + "','" + getFormValue('bendahara')
                + "','" + getFormValue('imam-besar')
                + "','" + getFormValue('imam-tetap')
                + "','" + getFormValue('muadzin')
                + "','" + getFormValue('cp-nama')
                + "','" + getFormValue('cp-telp')
                + "','" + getFormValue('cp-email')
                + "','" + getFormValue('pemohon-nama')
                + "','" + getFormValue('pemohon-jabatan')
                + "','" + getFormValue('god','checkbox')
                + "','" + getFormValue('rasul','checkbox')
                + "','" + getFormValue('hollybook','checkbox')
                + "'";
      //alert(value);
      var value64 = Base64.encode(value);
      $.post(
        "3d3d5d9a1b8f73158e8a16926ad6f5b2", 
        { 
             func: 'store',
             data: value64
        },
        function(data){
          
          if(data.split(':gmm:')[0] == '1') {
            
            $('#form-8').removeAttr('style');
            $('#status').html('<p>Assalamualaikum,</p> <p>Terima kasih atas partisipasi anda mendaftarkan masjid anda kedalam database kami. Untuk selanjutnya kami akan melakukan pengeckan terhadap data-data masukan anda sebelum informasi masjid anda dapat masuk kedalam <a href="http://memakmurkanmasjid.com/daftar-masjid">daftar masjid</a> Dewan Masjid Indonesia / Gerakan Memakmurkan Masjid. Kami akan menghubungi anda kembali jika kami telah mem-verifikasi masjid anda dan pada saat itu pula anda akan menerima <strong>Nomor Pokok Masjid (NPM)</strong>.</p> <p>Sekali lagi terima kasih atas partisipasi anda.</p> <p>Wassalam.<br /><em>Admin Gerakan Memakmurkan Masjid</em></p>');
            $('#form-7').css('display','none');
          }
          else {
            $('#form-8').removeAttr('style');
            $('#status').html('<p>Assalamualaikum,</p> <p>Mohon maaf, tampaknya data masukan anda belum dapat diproses dikarenakan adanya kesalahan input didalam form isian. Mohon di cek kembali sebelum kemudian di submit.</p><p>Jika anda merasa telah memasukkan input yang benar tapi tetap mendapatkan pesan error, kami mohon untuk melporkan bug ini kepada administrator melalui email sekretariat@memakmurkanmasjid.com</p><p>Terima kasih atas kerjasamanya..</p> <p>Wassalam.</p><p><input type="button" value="kembali ke Formulir" onclick="displayForm(1,8);" /></p>');
            $('#form-7').css('display','none');
          }
          
          //alert(data.status);
        }
      );
    } else {
      alert('Ups, maaf permintaan anda belum dapat di proses karena anda belum memasukkan data tentang:\n ' + validation() + '\nMohon dicek kembali formulir isian anda. Terima kasih..');
    }
  });
}  

/* Form field adjustment */
function formFieldAdjustment() {
  $('input').each(function(){
    var max = $(this).attr('maxlength');
    if(max != 524288) $(this).attr('size',max);
  });
}



/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}
