/*
###########################################################################
File main.js terdiri dari :
- KOLEKSI ELEMEN
- VARIABEL GLOBAL
- FUNGSI UTAMA
- FUNGSI YANG MENGATUR LAYOUT
- FUNGSI MENU
- FUNGSI TAB
- FUNGSI TABLE
- FUNGSI LAIN-LAIN

###########################################################################
*/

// ########################################################################
// KOLEKSI ELEMEN

// ########################################################################
// VARIABEL GLOBAL

var replaceIs
var jsdebug = false

// variable kerangka
var headerHeight = 61;
var modulHeaderHeight = 97;
var totalHeader

// variable halaman
var isiBawahHeight = 0

// variable menu utama
var siMnuAnak = new Array();
var mnuWasKlik
var setExpInterval
var setCollInterval
var siElemClicked

//variable tab
var tabOn

//variable table
var tblUtama
var currRow = -1;

//variable popUp
var newWindow
var winDebug
var winDebugLoaded

//variable Note
var siNote = new Array()
var waktu = new Date()

// ########################################################################
// FUNGSI UTAMA

function initKerangka(){
	if(aGetElementById("mnuUtama")) adjustMenu();
	if(!aGetElementById("modulHeader")) modulHeaderHeight = 0;
	totalHeader = headerHeight+modulHeaderHeight;
	if (aGetElementById("modul")){
		var modultr = aGetElementById("modul").getElementsByTagName("TR");
		modultr[modultr.length - 1].className = "modulTutup";
	}
	adjustLayoutKerangka();
	aAddEvent(window, 'resize', adjustLayoutKerangka);
}

function initHalaman(){
	if(document.referrer.indexOf("kerangka.php")==-1) backButton();
	if(aGetElementById("tab")){
		tabBegin();
		aAddEvent(aGetElementById("tab"), 'click', tabAktif);
	}
	if(aGetElementById("barTools")) bartools();
	if(aGetElementById("infoItem")) initInfo();
	if(parent.aGetElementById("tab") && aGetElementById("barJudul")) aGetElementById("barJudul").style.display = "none";

	adjustLayoutHalaman();
	aAddEvent(window, 'resize', adjustLayoutHalaman);

	if (aGetElementsByClassName("tblUtama")[0]){
		tblUtama = aGetElementsByClassName("tblUtama")[0]
		initTable()
	}

	/*
	if (aGetElementsByClassName("tblTelusur")[0].getElementsByTagName("TABLE")[0]){
		tblUtama = aGetElementsByClassName("tblTelusur")[0].getElementsByTagName("TABLE")[0]
		aAddEvent(tblUtama, "click", onMouseClick)
	}
	*/

	if (aGetElementsByClassName("formInput", aGetElementById("isiUtama"), "TABLE").length == 1){
		var formInput = aGetElementsByClassName("formInput", aGetElementById("isiUtama"), "TABLE")[0]
		if(window.opener) {
			if(window.opener.newWindow) window.opener.newWindow.focus()
			//opener.status = formInput.currentStyle.width
			if(formInput.currentStyle.width == "100%") formInput.style.width = "auto"
			if(aGetElementById("isiBawah")) isiBawahHeight = aGetElementById("isiBawah").offsetHeight;
			
			var iHeight = aGetElementById("isiUtama").offsetHeight + aGetElementById("isiUtama").offsetTop + isiBawahHeight + 38
			var iWidth = formInput.offsetWidth + 80
			resizeTo(iWidth, iHeight)

			var wTop = (screen.availHeight-iHeight)/2
			var wLeft = (screen.availWidth-iWidth)/2
			moveTo(wLeft, wTop)

			formInput.style.width = "100%"
		}
		if (aGetElementById("isiUtama").offsetHeight - formInput.offsetHeight > 150) formInput.className = "formInputPad"
	}else{
		if(window.opener) {
			if(window.opener.newWindow) window.opener.newWindow.focus()
			var wTop = (screen.availHeight-document.body.clientHeight)/2
			var wLeft = (screen.availWidth-document.body.clientWidth)/2
			moveTo(wLeft, wTop)
		}
	}

	if (aGetElementById("print")){
		var divprint = aGetElementById("print")
		aGetElementById("isiUtama").className = "isiUtamaPrint"

		var iWidth = divprint.offsetWidth + 30
		var iHeight = 560
		if (divprint.offsetHeight + 60 <= 560) iHeight = divprint.offsetHeight + 60
		resizeTo(iWidth, iHeight)

		var wTop = (screen.availHeight-iHeight)/2
		var wLeft = (screen.availWidth-iWidth)/2
		moveTo(wLeft, wTop)
	}

}

function bartools(){
	var aColl = aGetElementById("barTools").getElementsByTagName("A")
	for (var i=0;i<aColl.length ; i++){if (aColl[i].className == "tool") aAddEvent(aColl[i], 'click', toolsAktif)}
}

function toolsAktif(evt) {
	var e = new aEvent(evt);
	var siElem = e.target;
	openTools(siElem.href)
	return false
}

function openTools(url) {
	//var wTop = (screen.availHeight-480)/2
	//var wLeft = (screen.availWidth-640)/2
	newWindow = window.open(url, "win", "top=5000,left=5000,height=480,width=640,location=no,menubar=no,scrollbars=no,titlebar=no,toolbar=no,resizable=yes")
	aAddEvent(window, 'unload', closeTools)
}

function openPop(url,tinggi,lebar) {
	var wHeight = tinggi ? tinggi : 480
	var wWidth = lebar ? lebar : 640
	var wTop = (screen.availHeight-wHeight)/2
	var wLeft = (screen.availWidth-wWidth)/2
	if (event.srcElement.parentNode.className=="hapus"){
		if (!confirm('Anda benar-benar ingin menghapus data ini ?')) return false
	}
	newWindow = window.open(url, "win", "top="+wTop+",left="+wLeft+",height="+wHeight+",width="+wWidth+",location=no,menubar=no,scrollbars=no,titlebar=no,toolbar=no,resizable=yes")
	aAddEvent(window, 'unload', closeTools)
}

function closeTools() {if (newWindow) newWindow.close()}

function backButton(){
	if (!window.opener){
		if (aGetElementById("barJudul")){
			aGetElementById("barJudul").style.paddingLeft = "0px"
			aGetElementById("barJudul").style.paddingTop = "0px"
			aGetElementById("barJudul").innerHTML = "<a href='javascript:history.back(-1);' class='backJudul'><img src='/_images/btn_barjudulback.gif'></a><div class='backJudul'>" + aGetElementById("barJudul").innerText + "</div>"
		}
	}
}

// ########################################################################
// FUNGSI-FUNGSI YANG MENGATUR LAYOUT

function adjustLayoutKerangka(){
	aGetElementById("isiUtama").style.height = (getViewportHeight()-totalHeader) + "px"
	if (aGetElementById("modul")){
		if (aGetElementById("modul").offsetHeight < aGetElementById("isiUtama").offsetHeight){
			aGetElementById("modul").style.marginTop =
				((aGetElementById("isiUtama").offsetHeight - aGetElementById("modul").offsetHeight)/2) + "px"
		}else{
			aGetElementById("modul").style.marginTop = "10px"
		}
	}
}

function adjustLayoutHalaman(){

	if ((aGetElementById("isiUtama") && (!window.opener)) || aGetElementById("print") ) {
		var isiUtama = aGetElementById("isiUtama")
		if(aGetElementById("isiBawah")) isiBawahHeight = aGetElementById("isiBawah").offsetHeight;
		isiUtama.style.height = (getViewportHeight() - ((isiUtama.offsetTop + isiBawahHeight)+1)) + "px"
	}

	if(tblUtama) setTimeout("adjustTable()", 10);
	
}

// ########################################################################
// FUNGSI MENU

function adjustMenu() {

	var siMnuAnakRaw = aGetElementById("mnuUtama").childNodes;
	for (var i = 0; i < siMnuAnakRaw.length; i++){
		if ( (siMnuAnakRaw[i].nodeType != 3) && (siMnuAnakRaw[i].nodeType != 8) ){
			siMnuAnak[siMnuAnak.length] = siMnuAnakRaw[i]
		}
	}
	
	var adjmoz = aMoz? 2 : 0

	for (var j=0; j < siMnuAnak.length; j++ ){
		if(siMnuAnak[j]) siMnuAnak[j].style.height = (siMnuAnak[j].getElementsByTagName("A")[0].offsetHeight - adjmoz) + 2 + "px"
		if(siMnuAnak[j+1]) siMnuAnak[j+1].style.top = (siMnuAnak[j].offsetTop + siMnuAnak[j].offsetHeight) + 1 + "px"

		if (siMnuAnak[j].getElementsByTagName("A")[0]) {
			var siA = siMnuAnak[j].getElementsByTagName("A")
			aAddEvent(siA[0], 'click', menuClick);
			for(k=1; k < siA.length ; k++ ){aAddEvent(siA[k], 'click', menuAnakClick);}
		}
	}

}

function menuAnakClick(evt){
	var e = new aEvent(evt);
	var siElem = e.target;

	if(siElemClicked) siElemClicked.className = "";
	siElem.className = "mnuAnakAct";
	siElemClicked = siElem;
}

function menuClick(evt) {
	var e = new aEvent(evt);
	var siElem = e.target;

	if (siElem.className == "mnuOrtu"){
		for (i=0; i<siMnuAnak.length ;i++ ){
			if((siMnuAnak[i]==siElem.parentNode) && (siElem.parentNode!=siMnuAnak[mnuWasKlik])) mnuInterval(i);
		}
	}
}
 
function mnuInterval(diKlik) {
	if(siMnuAnak[mnuWasKlik]) {
		siMnuAnak[mnuWasKlik].getElementsByTagName("A")[0].className = "mnuOrtu"
		setCollInterval = setInterval("mnuCollapse(" + diKlik + ")",1);
	}else{
		siMnuAnak[diKlik].getElementsByTagName("A")[0].className = "mnuOrtuAct"
		setExpInterval = setInterval("mnuExpand(" + diKlik + ")",10);
	}
}

function mnuCollapse(diKlik){  //collapse
	var adjMoz = aMoz? 2 : 0
	
	siMnuAnak[mnuWasKlik].style.height = ((siMnuAnak[mnuWasKlik].offsetHeight - adjMoz) - 10) + "px"
	
	for (var i = mnuWasKlik+1; i < siMnuAnak.length; i++){if(siMnuAnak[i]) siMnuAnak[i].style.top = (siMnuAnak[i].offsetTop - 10) + "px"}
	
	if (siMnuAnak[mnuWasKlik].offsetHeight <= siMnuAnak[mnuWasKlik].getElementsByTagName("A")[0].offsetHeight){
		clearInterval(setCollInterval);
		siMnuAnak[mnuWasKlik].style.height = siMnuAnak[mnuWasKlik].getElementsByTagName("A")[0].offsetHeight + 2
		if(siMnuAnak[mnuWasKlik+1]) var slisih = (siMnuAnak[mnuWasKlik].offsetTop + siMnuAnak[mnuWasKlik].offsetHeight + adjMoz + 1) - siMnuAnak[mnuWasKlik+1].offsetTop
		for (var i = mnuWasKlik+1; i < siMnuAnak.length; i++){
			if(siMnuAnak[i]) siMnuAnak[i].style.top = (siMnuAnak[i].offsetTop + slisih) + "px"
		}
		setExpInterval = setInterval("mnuExpand(" + diKlik + ")",10);
	}
}

function mnuExpand(diKlik){  //gerakin menu2 dibawah menu yg diKlik
	var maxTop = 0
	var adjMoz = aMoz? 2 : 0
	
	for (var i = 0 ; i < siMnuAnak[diKlik].childNodes.length; i++){
		if(siMnuAnak[diKlik].childNodes[i].nodeType == 1) maxTop = maxTop + siMnuAnak[diKlik].childNodes[i].offsetHeight
	}

	siMnuAnak[diKlik].style.height = (siMnuAnak[diKlik].offsetHeight-adjMoz) + 5 + "px"

	for (var i = diKlik+1 ; i < siMnuAnak.length; i++){
		var siTop = siMnuAnak[i].offsetTop + 5;
		siMnuAnak[i].style.top = siTop + "px"
	}

	if ((siMnuAnak[diKlik].offsetHeight) >= maxTop){
		var slisihTop = (siMnuAnak[diKlik].offsetHeight-adjMoz) - maxTop

		siMnuAnak[diKlik].style.height = maxTop + "px"

		for (var j = diKlik+1 ; j < siMnuAnak.length; j++){
			siMnuAnak[j].style.top = (siMnuAnak[j].offsetTop - slisihTop) + "px"
		}

		clearInterval(setExpInterval);
		mnuWasKlik = diKlik
	}

}

// ########################################################################
// FUNGSI TAB

function initInfo(){
	var divcoll = aGetElementById("infoItem").getElementsByTagName("DIV");
	var i,divInfo,divInfoTitle;

	for(i=0;i<divcoll.length;i++){
		divInfo = divcoll[i].innerHTML
		divInfoTitle = divcoll[i].title
		divcoll[i].innerHTML = ""
		var spanElem = document.createElement("span")
		spanElem.className = "kotakInfoIsi"
		spanElem.innerHTML = divInfo
		divcoll[i].parentNode.appendChild(spanElem)
		divcoll[i].innerHTML = divInfoTitle
	}
}


function tabAktif(evt) {
	var e = new aEvent(evt);
	var siElem = e.target;
		
	if((siElem.tagName=="A")&&(!siElem.disabled)){
		if (tabOn) tabOn.className=""
		siElem.className="tabAktif"
		tabOn = siElem
		window.frmIsiTab.location.replace(siElem.href);
	}

	return false;
}

function tabBegin() {
	if(!aGetElementById("item")) aGetElementById("barJudul").style.borderBottomWidth = "1"

	if(!tabOn){
		var aColl = aGetElementById("tab").getElementsByTagName("A");
		for (var i=0; i<aColl.length ; i++ ){if (aColl[i].className=="tabAktif") tabOn = aColl[i]}
	}
}


// ########################################################################
// FUNGSI TABLE

function scrollIsiUtama(){
	if (fixedTh.getElementsByTagName("TABLE")[0]){
	fixedTh.getElementsByTagName("TABLE")[0].style.left = -(aGetElementById("isiUtama").scrollLeft) +"px"
	}
}	

function initTable(){
	var siFixedTh = document.createElement("DIV")
	siFixedTh.id = "fixedTh"
	document.body.appendChild(siFixedTh)

	var siTable = tblUtama.cloneNode(false)
	var siTHead = tblUtama.getElementsByTagName("THEAD")[0].cloneNode(true)

	siTable.appendChild(siTHead)
	aGetElementById("fixedTh").appendChild(siTable)

	aAddEvent(tblUtama, "mouseover", onMouseOver)
	aAddEvent(tblUtama, "mouseout", onMouseOut)
	aAddEvent(aGetElementById("isiUtama"), "scroll", scrollIsiUtama)

	adjustTable()
}

function hilite(newRow){
	if (currRow != -1) currRow.className = "";
	if (newRow != -1) newRow.className = "rowOn";
	currRow = newRow;
} 

function onMouseOver(evt){
	var e = new aEvent(evt);
	var siElem = e.target;

	while (siElem.tagName != "TR" && siElem.tagName != "TABLE") siElem = siElem.parentElement;
	if(siElem.tagName != "TR") return;

	if (siElem.parentElement.tagName == "TBODY") hilite(siElem);
		else hilite(-1);
}

function onMouseOut(){hilite(-1);}
/*
function onMouseClick(evt){
	var e = new aEvent(evt);
	var siElem = e.target;

	//crawl up the tree to find the table row
	while (siElem.tagName != "TR" && srcElem.tagName != "TABLE") siElem = siElem.parentElement;
	if(srcElem.tagName != "TR") return;
	if(srcElem.rowIndex == 0 ) return;
	if (selRow != -1) selRow.runtimeStyle.backgroundColor = '';
	srcElem.className = "";
	selRow = srcElem;
	
	var oEvent 	= createEventObject();
	oEvent.selected = selRow;
	rowSelect.fire(oEvent);
}
*/
///////////////////////////////////////////////
var fixedTh;

function adjustTable(){

	fixedTh = aGetElementById("fixedTh")
	var thUtama = tblUtama.getElementsByTagName("TH")
	var thFixed = aGetElementById("fixedTh").getElementsByTagName("TH")

	fixedTh.getElementsByTagName("TABLE")[0].style.left = "0px"

	for ( var i=0; i < thUtama.length; i++ ){ thFixed[i].style.width = (thUtama[i].offsetWidth-10) + "px";}

	fixedTh.style.top = aGetElementById("isiUtama").offsetTop + "px"
	fixedTh.style.width = aGetElementById("isiUtama").clientWidth + "px"

	scrollIsiUtama()
}

// ########################################################################
// FUNGSI LAIN-LAIN

function notes(comment) {
	var collDiv = document.getElementsByTagName("DIV")
	var oDiv = document.createElement("div")
	oDiv.className = "note"
	oDiv.innerHTML = comment
	
	var noteDiv = document.body.appendChild(oDiv)
	siNote[siNote.length]=noteDiv
	
	if(siNote.length > 1){
		var editHeight = 0

		for (var i=1;i < siNote.length;i++ )
		{
			siNote[i].style.top = siNote[i-1].offsetTop + siNote[i-1].clientHeight
		}
	}
}

function note(sourcenya,notenya){
	if (jsdebug)
	{
	if (!winDebug){
		var wHeight = 200
		var wWidth = 250
		var wTop = (screen.availHeight-wHeight)-40
		var wLeft = (screen.availWidth-wWidth)-15
		winDebug = window.open("/_js/jsdebug.php", "jsdebug", "top="+wTop+",left="+wLeft+",height="+wHeight+",width="+wWidth+",location=no,menubar=no,scrollbars=yes,titlebar=no,toolbar=no,resizable=yes,status=no")
		aAddEvent(winDebug, 'unload', destroyWinDebug);
		aAddEvent(window, 'unload', closeWinDebug);
	}

	//cari metode paling aman tuk gantiin cara dibawah!
	while (!winDebug.document.body) {
	}

	var oDebugItem = winDebug.document.createElement("div")
	var oSrcErr = winDebug.document.createElement("div")
	var oNoteErr = winDebug.document.createElement("div")

	oDebugItem.className = "debugItem"
	oSrcErr.className = "srcErr"
	oNoteErr.className = "noteErr"

	if(sourcenya) {
		oSrcErr.innerText = sourcenya + " :"
	}else{
		oSrcErr.innerText = ""
	}
	oNoteErr.innerText = notenya

	oDebugItem.appendChild(oSrcErr)
	oDebugItem.appendChild(oNoteErr)

	winDebug.document.body.appendChild(oDebugItem)
	}
}

function destroyWinDebug(){
	winDebug = false;
}

function closeWinDebug(){
	if(winDebug) winDebug.close();
}
////////////////////////////////////////////////////////////////

// Fungsi konfirmasi
function konfirmasiForm() {
	return window.confirm("Anda benar-benar ingin menyimpan data ini ?");
}

// Fungsi validasi
function validasiForm(theElm, strOptional) {
	var i, j, inputArr, textAreaArr, selectArr, nameArr, bGotIt, bStop, rgx, bOptional, tempVal, theForm;
	rgx = / /gi;

	theForm = theElm.form;

	if (strOptional) {
		strOptional = strOptional.toString().replace(rgx, "");
		nameArr = strOptional.toString().split(",");
		bOptional = nameArr.length > 0;
	}

	inputArr = theForm.getElementsByTagName("input");
	textAreaArr = theForm.getElementsByTagName("textarea");
	selectArr = theForm.getElementsByTagName("select");

	if (inputArr) {
		for (i = 0; i < inputArr.length; i++) {
			tempVal = inputArr[i].value.toString().replace(rgx, "");
			if (((inputArr[i].getAttribute("type") == "text") || ((inputArr[i].getAttribute("type") == "file"))) && (!inputArr[i].disabled)) {
				if (inputArr[i].name.toString().replace(rgx, "") == "") continue;
				bGotIt = false;
				if (bOptional) {
					for (j = 0; j < nameArr.length; j++) {
						if (inputArr[i].getAttribute("name") == nameArr[j]) bGotIt = true;
					}
				}
				if ((!bGotIt) && (tempVal == "")) {
					alert("Data TEXT : " + inputArr[i].getAttribute("name") + " belum diisi!");
					inputArr[i].focus();
					return false;
				}
			} else
				continue;
		}
	}

	if (textAreaArr) {
		for (i = 0; i < textAreaArr.length; i++) {
			tempVal = textAreaArr[i].value.toString().replace(rgx, "");
			if (!textAreaArr[i].disabled) {
				if (textAreaArr[i].name.toString().replace(rgx, "") == "") continue;
				bGotIt = false;
				if (bOptional) {
					for (j = 0; j < nameArr.length; j++) {
						if (textAreaArr[i].getAttribute("name") == nameArr[j]) bGotIt = true;
					}
				}
				if ((!bGotIt) && (tempVal == "")) {
					alert("Data TEXTAREA : " + textAreaArr[i].getAttribute("name") + " belum diisi!");
					textAreaArr[i].focus();
					return false;
				}
			} else 
				continue;
		}
	}

	if (selectArr) {
		for (i = 0; i < selectArr.length; i++) {
			tempVal = selectArr[i].value.toString().replace(rgx, "");
			if (!selectArr[i].disabled) {
				if (selectArr[i].name.toString().replace(rgx, "") == "") continue;
				bGotIt = false;
				if (bOptional) {
					for (j = 0; j < nameArr.length; j++) {
						if (selectArr[i].getAttribute("name") == nameArr[j]) bGotIt = true;
					}
				}
				if ((!bGotIt) && (tempVal == "")) {
					alert("Data SELECT : " + selectArr[i].getAttribute("name") + " belum diisi!");
					selectArr[i].focus();
					return false;
				}
			} else 
				continue;
		}
	}

	return konfirmasiForm();
}


////////////////////////////////////////////////////////////////

function formatUang(num) {
	var depan, belakang;

	belakang = num.toString().split(".");
	if (belakang.length > 1) 
		belakang = belakang[1];
	else
		belakang = "00";

	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	num = Math.floor(num/100).toString();
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+'.'+ num.substring(num.length-(4*i+3));

	depan = (((sign)?'':'-') + num);

	if (belakang.toString().length < 2) belakang = belakang + '0';

	return (depan + "," + belakang.toString().substr(0, 2));
}


function initFocus() {
	if(top.newWindow) top.newWindow.focus()
	}

////////////////////////////////////////////////////////////////

function openPopLaporan(targetWindow) {
	var theWidth = 800;
	var theHeight = 500;
	var left = (screen.availWidth/2)-(theWidth/2);
	var top = (screen.availHeight/2)-(theHeight/2);
	window.open('about:blank',targetWindow,'copyhistory=no,status=no,resizable=yes,toolbar=yes,location=no,width=830,height=487,left='+left+',top='+top);
}

function openPop2(url,nama,lebar,tinggi) {
	var winNama=new Date(); //generate buat nama window
	winNama=nama;
	
	var left = (screen.availWidth/2)-(lebar/2)
	var top = (screen.availHeight/2)-(tinggi/2)
	
	window.open(url,winNama,"copyhistory=no,status=no,resizable=yes,toolbar=yes,location=no,width="+lebar+",height="+tinggi+",left="+left+",top="+top);
}

function openPopLaporanBaru(targetWindow) {
	var theWidth = 800;
	var theHeight = 500;
	var left = (screen.availWidth/2)-(theWidth/2);
	var top = (screen.availHeight/2)-(theHeight/2);
	window.open('about:blank',targetWindow,'copyhistory=no,status=no,resizable=no,toolbar=yes,location=no,width=830,height=487,left='+left+',top='+top);
}
////////////////////////////////////////////////////////////////