// JavaScript Document
// Ahsanfile Project 2008 ahsanfile@gmail.com

// Copyright 2006-2007 javascript-array.com
var showAbout = function() {
    alert("eService INSW 1.0\nRegistered to Tim Persiapan Indonesia National Single Window\n\n" +
        "Author : Ahsanfile Project 2009\nahsanfile@gmail.com\n");
}

var changeTitle = function(strTitle) {
    document.title = strTitle+' - Forum Diskusi INSW';
}

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;
function mopen(id) {
    mcancelclosetime();
    if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
    ddmenuitem = document.getElementById(id);
    ddmenuitem.style.visibility = 'visible';
}

function mclose() {
    if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

function mclosetime() {
    closetimer = window.setTimeout(mclose, timeout);
}

function mcancelclosetime() {
    if(closetimer) {
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}
document.onclick = mclose;

var win = null;
/**
 * Untuk membuat window baru dengan ditentukan ukuran tinggi dan lebarnya
 */
function openWindow(mypage,myname,w,h) {
    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
    TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
    settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars=yes,resizable'
    win = window.open(mypage,myname,settings)
}

/**
 * Untuk membuat sebuah field input data hanya menerima input angka dari keyboard
 */
function onlyNumber(f) {
    var re = /^[0-9]*$/;
    if(!re.test(f.value)) {
        alert("For number only !");
        f.value=f.value.replace(/[^0-9]/g,"");
    }
}

/**
 * Untuk menyembunyikan sebuah div
 */
function hideDiv(id) {
    $(id).style.display = 'none';
}

/**
 * Untuk menampilkan sebuah div dari kondisi hide
 */
function showDiv(id) {
    $(id).style.display = 'block';
}

/**
 * Untuk menampilkan menyembunyikan sebuah div 
 */
function showHideDiv(id) {
    if($(id).style.display == 'none') {
        showDiv(id)
    } else {
        hideDiv(id)
    }
}

function showProses() {
    $('loading').style.display = 'block';
}

function hideProses() {
    $('loading').style.display = 'none';
}

function setFocus(id) {
    $(id).focus();
}

var selectValue = null;
selectValue = function(hiddenDiv,targetUse,valUse,valView,targetView) {
    hideDiv(hiddenDiv);
    if($chk(valView)) {
        $(targetView).value = valView;
    }
    $(targetUse).value = valUse;
}

var formatInputTanggal = null;
formatInputTanggal = function(str) {
    var obj = null;
    var dd = null;
    var mm = null;
    var yy = null;
    obj = $(str).value;
    if(obj.length==6) {
        dd = obj.substr(0, 2);
        mm = obj.substr(2, 2);
        yy = obj.substr(4, 2);
        $(str).value = "20"+yy+"-"+mm+"-"+dd;
    }
}

var backFormatInputTanggal = null;
backFormatInputTanggal = function(str) {
    var obj = null;
    var d = null;
    var m = null;
    var y = null;
    obj = $(str).value; // 1234567890
    if(obj.length==10) {
        d = obj.substr(8, 9);
        m = obj.substr(5, 6);
        y = obj.substr(2, 3);
        $(str).value = d+""+m+""+""+y;
    }
}

/**
 * Untuk merender sebuah grid/tabel data agar tiap barisnya memiliki warna selang-seling
 * dan pada barisnya ketika diklik memiliki warna background sebagai baris selected
 */
var renderRowList = null;
renderRowList = function(wraperName,trName,onRowRender) {
    var trApps = null;
    trApps = $(wraperName).getElements('tr');
    if(trApps.length > 0) {
        var i = null;
        var imin = null;
        var iminStyle = null;
        var oldOver = null;
        var oldTr = null;
        $(trName+1).setStyle('background-color','#ffffff');
        for(i=1; i<=trApps.length; i++) {
            imin = i - 1;
            if(imin > 0) {
                iminStyle = $(trName+imin).getStyle('background-color');
                if(iminStyle == '#ffffff') {
                    $(trName+i).setStyle('background-color','#e4f3fa');
                } else if(iminStyle == '#e4f3fa') {
                    $(trName+i).setStyle('background-color','#ffffff');
                }
            }

            $(trApps[i-1]).addEvent('mouseover',function() {
                oldOver = this.getStyle('background-color');
                this.setStyle('background-color','#ffffbd');
                this.setStyle('cursor','pointer');
            });

            $(trApps[i-1]).addEvent('mouseout',function() {
                this.setStyle('background-color',oldOver);
            });

            $(trApps[i-1]).addEvent('click',function() {
                if($chk(oldTr)) {
                    oldTr.setStyle('background-image','');
                }
                this.setStyle('background-image','url(var/slc.gif)');
                oldTr = this;
            });

            if($chk(onRowRender)) {
                if($type(onRowRender) == 'function') {
                    onRowRender(trApps[i-1]);
                }
            }
        }
    }
}

var sortRowList = function(field,id,url,wrapperName) {
    $('txtField').value = field;
    var currentMtd = $('txtSort').value;
    if(currentMtd == 'asc') {
        $('txtSort').value = 'desc';
        $('img'+field).set('html','<img src="var/s_desc.png">');
    } else if(currentMtd == 'desc') {
        $('txtSort').value = 'asc';
        $('img'+field).set('html','<img src="var/s_asc.png">');
    }
    if($chk('txtFilterData')) {
        var filterStatus = $('txtFilterData').value;
    }
    var sortMethod = $('txtSort').value;
    var dataSort = {
        id:id,
        fieldName:field,
        sortMethod:sortMethod,
        filterStatus:filterStatus
    };
    postData(url,wrapperName,dataSort,'');
}

var changeStringStatus = function(wrapperName,stringValue) {
    var stringChanged = '';
    if(stringValue == 'N') {
        stringChanged = 'Locked';
    } else if(stringValue == 'Y') {
        stringChanged = 'Aktif';
    }
    if($(wrapperName).value) {
        $(wrapperName).value = stringChanged;
    } else {
        $(wrapperName).innerHTML = stringChanged;
    }
}

var formatString = function(data,strVal) {
    var stringFormated;
    var longString = strVal.length;
    if(data == 'tglen') { // dd-mm-yyyy -> yyyy-mm-dd
        var dd = strVal.substring(0,2);
        var mm = strVal.substring(3,5);
        var yyyy = strVal.substring(6,10);
        stringFormated = yyyy+'-'+mm+'-'+dd;
    } else if(data == 'car') { // 000000-000000-20080987-000000
        if(longString == 26) {
            var kdPpjk = strVal.substring(0, 6);
            var kdImp = strVal.substring(6, 12);
            var kdTgl = strVal.substring(12, 20);
            var nmAju = strVal.substring(20, 26);
            stringFormated = kdPpjk+'-'+kdImp+'-'+kdTgl+'-'+nmAju;
        } else {
            stringFormated = 'Nomor car tidak lengkap !';
        }
    } else if(data == 'npwp') {
        if(longString == 15) { // 00.000.000.0-000.000
            var a = strVal.substring(0, 2);
            var b = strVal.substring(2, 4);
            var c = strVal.substring(5, 7);
            var d = strVal.substring(8, 8);
            var e = strVal.substring(9, 11);
            var f = strVal.substring(12, 14);
            stringFormated = a+'.'+b+'.'+c+'.'+d+'-'+e+'.'+f;
        } else if(longString == 12) {

        } else {
            stringFormated = 'Nomor npwp tidak lengkap !';
        }
    }
    return stringFormated;
}

var pagingList = function(nav,page,totalRow,url,dataAwal,divTujuan) {
    var nextPage;
    var totalPage = (totalRow/20).floor();
    totalPage = totalPage+1;
    $('txtTotalPage').value = totalPage;
    if(nav == '<<') {
        nextPage = 1;
    } else if(nav == '<') {
        if(page >=2 ) {
            nextPage = --page;
        } else {
            alert('First page !');
            nextPage = 1;
        }
    } else if(nav == '>') {
        if(page < totalPage) {
            nextPage = ++page;
        } else if(page == totalPage) {
            alert('Last page !');
            nextPage = totalPage;
        }
    } else if(nav == '>>') {
        nextPage = totalPage;
    }
    $('txtPage').value = nextPage;
    var dataPage = {
        page:nextPage
    };
    var dataPaging = $extend(dataAwal,dataPage);
    postData(url,divTujuan,dataPaging,'');
}

var clearForm = function(divName,inpFocus) {
    var i;
    var inpTxt = $(divName).getElements('input');
    var totalTxt = inpTxt.length;
    for(i=0; i < totalTxt; i++) {
        if(inpTxt[i].type == 'text' || inpTxt[i].type == 'password') {
            inpTxt[i].value = '';
        }
    }
    var inpSlc = $(divName).getElements('select');
    var totalSlc = inpSlc.length;
    for(i=0; i < totalSlc; i++) {
        inpSlc[i].value = '';
    }

    var inpTxa = $(divName).getElements('textarea');
    var totalTxa = inpTxa.length;
    for(i=0; i < totalTxa; i++) {
        inpTxa[i].value = '';
    }
    
    $(inpFocus).focus();
}



function checkMail(str) {
    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1){
        return false
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
        return false
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false
    }

    if (str.indexOf(at,(lat+1))!=-1){
        return false
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
    }

    if (str.indexOf(dot,(lat+2))==-1){
        return false
    }

    if (str.indexOf(" ")!=-1){
        return false
    }
    return true
}

function ambilHari() {
    var hari = '';
    var arrHari = new Array('Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu');
    var arrBln = new Array('Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Des');
    var d = new Date();
    var tg = d.getDate(); // number
    var hh = d.getDay(); // number
    var mm = d.getMonth(); // number
    var yy = d.getFullYear(); // 4 digit

    hari = arrHari[hh]+ ', ' + tg +'-'+ arrBln[mm] + '-' + yy;
    return hari;
}

/**
 * Untuk membuat navigasi page dari sebuah grid dengan model :
 * 1. Tampilkan info page x of y dimana x adalah page aktif dan y adalah total row dibagi 10
 * 2. 
 */
function createPaging(jmlRow, divWrapper) {
    
}


