﻿// JavaScript Document

function ThaiBaht(value,flank) {
	value = value + ""  ;
	value = value.replace(/,/g,'');
	if (isNaN(value))
	{
		return "Input must be Numeric.";
	}

	var leftDec = value.toString();
	var rightDec = "";
	if (leftDec.indexOf('.') != -1)
	{
		rightDec = leftDec.substring(leftDec.indexOf(".") + 1);
		leftDec = leftDec.substring(0,leftDec.indexOf("."));
	}

	if (rightDec.length > 2)
	{
		return "Decimal must be 2 positions.";
	}

	if (rightDec.length == 1)
		rightDec = rightDec + "0";

	if (leftDec == "0")
		leftDec = "";

	var textBath = "";
	var num = new Array("","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า","เอ็ด","ยี่");
	var unit = new Array("","สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน");
	var desc = new Array("บาท","สตางค์");
	var numIndex = 0;
	var unitIndex = 0;
	var currentNum = '';
	var textNum = "";
	for (var kk = 0; kk <= 1; kk++)
	{
		if (kk == 0)
			textNum = leftDec;
		else
			textNum = rightDec;
		
		if (textNum != "")
		{
			for (var ii = 0; ii < textNum.length; ii++ )
			{
				unitIndex = (textNum.length - 1 - ii) % 6;
				numIndex = parseInt(textNum.charAt(ii));
				currentNum = textNum.charAt(ii);

				if (unitIndex == 0 && currentNum == '1' && ii != 0 && textNum.charAt(ii - 1) != '0')
					numIndex = 10;
				else if (unitIndex == 1 && currentNum == '1')
					numIndex = 0;
				else if (unitIndex == 1 && currentNum == '2')
					numIndex = 11;

				if (unitIndex == 0 && ii != textNum.length - 1)
					unitIndex = 6;
				else if (currentNum == 0 && ii != textNum.length - 1)
					unitIndex = 0;
				
				textBath = textBath + num[numIndex];
				textBath = textBath + unit[unitIndex];
			}
			textBath = textBath + desc[kk];
			if (rightDec == "") textBath = textBath + "ถ้วน";
		}
		
	}
	//TotalTextField.innerText = textBath;
	if (flank == true)
		textBath = "(" + textBath + ")";
	return textBath;
}

function DisableKeypress (field, event) {
		return true;
	}      

function handleEnter (field, event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13) {
			var i;
			for (i = 0; i < field.form.elements.length; i++)
				if (field == field.form.elements[i])
					break;
			while (field.form.elements[++i].disabled == true || field.form.elements[i].readOnly == true){}
			field.form.elements[i].focus();
			return false;
		} 
		else
		return true;
	}      
	
function nextElement (field) {
			for (i = 0; i < field.form.elements.length; i++)
				if (field == field.form.elements[i])
					break;
			while (field.form.elements[++i].readOnly == true){}
			field.form.elements[i].focus();
			return false;
	}      
	
 function formatNumber(input,display){
  var num = input.value.replace(/\,/g,'');
   if(!isNaN(num)){
     if(num.indexOf('.') > -1){ 
        num = num.split('.');
        num[0] = num[0].toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'');
//       if(num[1].length > 2){ 
//          alert('You may only enter two decimals!');
//          num[1] = num[1].substring(0,num[1].length-1);
//       }  
	   input.value = num[0]+'.'+num[1]+(num[1].length==1?'0':'');   
       } else{ 
			input.value = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'')
			if (input.value != '')
				input.value = input.value + '.00';
		 };
	 return true;
   }
   else{ 
     if (display) {
        alert('ใส่จำนวนเงินไม่ถูกต้อง');
         //input.value = input.value.substring(0,input.value.length-1);
	    input.focus();
	 }
	 return false;
   }
 }

 function validateNumber(input){
     var num = input.value.replace(/\,/g,'');
     if(!isNaN) {
	if(input.value.indexOf('.')==-1) input.value=input.value+'.00'
     }
 }

 function OnFocusNumber(input){
	var num = input.value.replace(/\,/g,'');
	input.value = num;
        input.setAttribute("align","left"); 
		input.select();
 }
 
function CalulateSum(TotalField, SumField, MaxField)
{
	var num = 0;
	var vl;
	for(i=1; i<=MaxField; i++){
		vl = eval("document.KCCForm." + SumField + i + ".value.replace(/\,/g,'')");
		num = parseFloat(num) + parseFloat(vl==''?0:vl);
	}
	TotalField.value = num;
	
	formatNumber(TotalField);
} 
 
// function BlurPack ใช้เมื่อต้องการปรับแต่ง Field จำนวน (มัด)
// parameter
// 		input = Current Field
// 		PackField = Field pack ที่ต้องการคำนวน
// 		TypeField = Field ชนิดราคา ที่ต้องการคำนวน
//		TotalField = Field ที่ต้องการแสกงจำนวนเงินรวม
//		SumField = ชื่อ Field ที่ต้องการคำนวนผลรวม
//		MaxField = จำนวน Field ทั้งหมดที่ต้องการคำนวนผลรวม
function BlurPack(input, BathField, TypeField, TotalField, SumField, MaxField){
   if (formatNumber(input)) {
	   var num = input.value.replace(/\,/g,'');
	   var type = TypeField.value.replace(/\,/g,'');
	   type = type.replace('C','');
	   if(!isNaN(num)){
		   if (!isNaN(type)){
			 BathField.value = (num * type)==0?'':num * type;
		   }
		   CalulateSum(TotalField, SumField, MaxField);
		 formatNumber(input);
		 formatNumber(BathField);
	   }	
   }
}


// function BlurMoney ใช้เมื่อต้องการปรับแต่ง Field จำนวน (บาท)
// parameter
// 		input = Current Field
// 		PackField = Field pack ที่ต้องการคำนวน
// 		TypeField = Field ชนิดราคา ที่ต้องการคำนวน
//		TotalField = Field ที่ต้องการแสกงจำนวนเงินรวม
//		SumField = ชื่อ Field ที่ต้องการคำนวนผลรวม
//		MaxField = จำนวน Field ทั้งหมดที่ต้องการคำนวนผลรวม

function BlurMoney(input, PackField, TypeField, TotalField, SumField, MaxField){
   if (formatNumber(input)) {
	   var num = input.value.replace(/\,/g,'');
	   var type = TypeField.value.replace(/\,/g,'');
	   type = type.replace('C','');
	   if(!isNaN(num)){
		   if (!isNaN(type)){
				 PackField.value = (num / type)==0?'':num / type;
			   }
		   CalulateSum(TotalField, SumField, MaxField);
		   formatNumber(input);
		   formatNumber(PackField);
	   }	
   }
}

function getCurrentDate(input) {
	var date = new Date();
	var cDate = date.getDate();
	if (cDate.length == 1)
	{
		cDate = "0" + cDate;
	}
	var cMonth = date.getMonth() + 1;
	if (cMonth.length == 1)
	{
		cMonth = "0" + cMonth;
	}
	var cYear = date.getYear();
	input.value = cDate + "-" + cMonth + "-" + cYear;
}

function isTime(input) {
	// Checks if time is in HH:MM format.

	var timeStr = input.value;
	if (timeStr == "")
	{
		return false;
	}
	var timePat = /^(\d{1,2}):(\d{2})$/;

	var matchArray = timeStr.match(timePat);
	if (matchArray == null) {
		alert("Please enter date as either hh:mm.");
		input.focus();
		return false;
	}
	hour = matchArray[1];
	minute = matchArray[2];

	if (hour < 0  || hour > 23) {
		alert("Hour must be between 0 and 23.");
		input.focus();
		return false;
	}

	if (minute < 0 || minute > 59) {
		alert ("Minute must be between 0 and 59.");
		input.focus();
		return false;
	}
	return true;
}

function isDate(input) {

	var dateStr = input.value;
	if (dateStr == "")
	{
		return false;
	}

	var datePat = /^(\d{1,2})(\-)(\d{1,2})(\-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null) {
		alert("Please enter date as either dd-mm-yyyy.");
		input.focus();
		return false;
	}

	day = matchArray[1];
	month = matchArray[3] - 1; // p@rse date into variables
	year = matchArray[5];

	var tempDate = new Date(year,month,day);
	//alert(day + " " + month + " " + year + " " + tempDate);
	if (tempDate.getDate() == day && tempDate.getMonth() == month && tempDate.getYear() == year)
	{
		if (day.toString().length == 1) day = "0" + day;
		month = month + 1;
		if (month.toString().length == 1) month = "0" + month;
		input.value = day + "-" + month + "-" + year;
	} else
	{
		alert("Invalid date enter!!!");
		input.focus();
		return false;
	}

//	validate = validate || null;
//	if (validate != null)
//	{
//		matchArray = validate.value.match(datePat);
//		var vDate = new Date(matchArray[5],matchArray[3],matchArray[1]);
//		if (vDate > tempDate)
//		{
//			alert("วันที่ดำเนินการ ต้องมากกว่าวันที่สร้างรายการ!!!");
//			input.focus();
//			return false;
//		}
//	}

	return true; // date is valid
}

function setFocus(input)
{
	input.focus();
}

function CalculateTotal(input, TotalField, SumField, MaxField, TotalTextField)
{
	var num = 0;
	//document.write(input.id);
	var vl;
	for(i=1; i<=MaxField; i++){
		vl = eval("document.KCCForm." + SumField + i + ".value.replace(/\,/g,'')");
		num = parseFloat(num) + parseFloat(vl==''?0:vl);
	}
	TotalField.value = num;
	TotalTextField.innerText =ThaiBaht(num);
	formatNumber(input,true);
	formatNumber(TotalField);
} 

function Sum(input, TotalField, ThaiField)
{
	var total = 0;
	var formRef = input.form;
	var num = 0;

	for (i = 0; i < formRef.elements.length; i++)
		if (input.id == formRef.elements[i].id)
		{
			num = formRef.elements[i].value.replace(/\,/g,'');
			num = isNaN(num)?0:num;
			total = total + parseFloat(num==''?0:num);
		}
	if (total != 0)
		TotalField.value = total;
	else
		TotalField.value = "";
	formatNumber(input,true);
	formatNumber(TotalField);
	if (! (ThaiField == null))
	{
		if (ThaiField.type == "undefined")
			ThaiField.value = ThaiBaht(total)
		else
			ThaiField.innerText = ThaiBaht(total);
	}
}

function Minus(source, destination, TotalField)
{
	var src = (source.value == ""?0:parseFloat(source.value.replace(/\,/g,'')));
	var dst = (destination.value == ""?0:parseFloat(destination.value.replace(/\,/g,'')));
	TotalField.value = src - dst;
	formatNumber(TotalField);
	var total = TotalField.value;
	if (src - dst < 0)
	{
		TotalField.value = "(" + total.replace('-','') + ")";
		TotalField.style.color = "#FF0000";
		//document.getElementsByName(TotalField.name).style.color = "#FF0000";
	} 
	else
	{
		TotalField.style.color = "#000000";
	}

	formatNumber(source);
	formatNumber(destination);
}

function ValidateDate(input)
{
	var dateStr = input.value;
	if (dateStr == "")
	{
		alert("กรุณาใส่ข้อมูลให้ถูกต้อง");
		input.focus();
		return false;
	}

	var datePat = /^(\d{1,2})(\-)(\d{1,2})(\-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	var zDate = new Date(matchArray[5],matchArray[3] - 1,matchArray[1]);
	var xDate = new Date();

	day = xDate.getDate();
	month = xDate.getMonth(); // p@rse date into variables
	year = xDate.getYear();
	xDate = new Date(year, month, day);

	if (xDate > zDate)
	{
		alert("วันที่ดำเนินการ ต้องเท่ากับหรือมากกว่าวันที่สร้างรายการ");
		input.focus();
		return false;
	}
	//alert(xDate == zDate);
	return true;
}
 
function ToggleAllCheckBox(form, isChecked)
{
	for (i=0; i<form.length; i++) {
		if (form.elements[i].type == "checkbox") {
			if (isChecked) {form.elements[i].checked = true;}
			else {form.elements[i].checked = false;}
		}
	}
}
