//---------------------------- Class function PrintingHead() { this.height = 0; this.count = 0; this.columns = new Array(); } function PrintingDetail() { this.height = 0; this.count = 0; this.columns = new Array(); } function PrintingFoot() { this.height = 0; this.count = 0; this.columns = new Array(); } function PrintFont() { this.name = ""; this.size = 0; this.b = false; this.i = false; this.u = false; this.s = false; this.color = "black"; } //---------------------------- Function function addCommas(nStr) { if (nStr == undefined || nStr == null || nStr == "") { return ""; } nStr += ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } function cnvNumberFormat(ele, format) { if (ele == undefined || ele == null || ele == "") { return ""; } var numFixed = 0; var num = parseFloat(ele); if (format.length > 3) { var numDec = parseInt(format.substr(3)); numFixed = num.toFixed(numDec); } else { numFixed = num; } ele = addCommas(numFixed); return ele; } function cnvDateTh(dt) { if (dt == undefined || dt == null || dt == "") { return ""; } try { var splitTime = dt.split(' '); var sss = splitTime[0].split('-'); var yyyy = sss[0]; var mm = sss[1]; var dd = sss[2]; if (mm.length < 2) mm = "0" + mm; if (dd.length < 2) dd = "0" + dd; return dd + "/" + mm + "/" + (parseInt(yyyy) + 543); } catch (err) { return "00/00/0000"; } } //---------------------------------Dot------------------------- function cnvDatemonthTh(dt) { var strMonthThai = new Array(12); strMonthThai[0] = "มกราคม"; strMonthThai[1] = "กุมภาพันธ์"; strMonthThai[2] = "มีนาคม"; strMonthThai[3] = "เมษายน"; strMonthThai[4] = "พฤษภาคม"; strMonthThai[5] = "มิถุนายน"; strMonthThai[6] = "กรกฎาคม"; strMonthThai[7] = "สิงหาคม"; strMonthThai[8] = "กันยายน"; strMonthThai[9] = "ตุลาคม"; strMonthThai[10] = "พฤศจิกายน"; strMonthThai[11] = "ธันวาคม"; if (dt == undefined || dt == null || dt == "") { return ""; } try { var splitTime = dt.split(' '); var sss = splitTime[0].split('-'); var yyyy = sss[0]; var mm = sss[1]; var dd = sss[2]; if (mm.length < 2) mm = "0" + mm; if (dd.length < 2) dd = "0" + dd; return dd + " " + strMonthThai[sss[1] - 1] + " " + (parseInt(yyyy) + 543) } catch (err) { return "00/00/0000"; } } function cnvBirthToAge(birth) { var day = new Date(); var nowyear = day.getFullYear(); if (birth == undefined || birth == null || birth == "") { return ""; } try { var splitTime = birth.split(' '); var sss = splitTime[0].split('-'); var yyyy = sss[0]; return (nowyear - parseInt(yyyy)); } catch (err) { return "agefail"; } } function printLevel(level) { if (level == undefined || level == null || level == "") { return ""; } else if (level == 0) { return ""; } return level; } function thaiword(num) { if (num == undefined || num == null || num == "") { return ""; } var i = num.length - 1; var digitpos = 0; var wordthai = ""; while (i >= 0) { wordthai = numToWord(num.charAt(i), digitpos, num.length) + getNumNaming(digitpos, num.charAt(i)) + wordthai; i--; digitpos++; } return wordthai; } function depAccount(numacc) { if (numacc == undefined || numacc == null || numacc == "") { return ""; } var numb = numacc.split(''); numacc = ""; var i = 0; while (i < 10) { if (i == 2 || i == 3 || i == 9) { numacc += "-" + numb[i]; } else { numacc += numb[i]; } i++; } return numacc; } function periodnum(peri) { if (peri == undefined || peri == null || peri == "") { return ""; } var periday = new Array(2); if (peri.indexOf("diffdate") != -1) { var splitDate = peri.split("diffdate"); } var i = 0; while (i < 2) { var text2 = splitDate[i].substr(0, 10); text2 += " " + splitDate[0].substr(11, 8); splitDate[i] = text2; var splitTime = splitDate[i].split(' '); var sss = splitTime[0].split('-'); var yyyy = sss[0]; var mm = sss[1]; var dd = sss[2]; periday[i] = new Date(yyyy, mm - 1, dd); i++; } var numday = parseInt((periday[0].getTime() - periday[1].getTime()) / (24 * 3600 * 1000)); return numday; } function cnvmoneyaddstar(money) { if (money == undefined || money == null || money == "") { return ""; } money = "" + money; var spritmoney = money.split('.'); var numS = 13; //จำนวนหลักทั้งหมด ถ้าเกินนี้จะกลายเป็น * var numM = spritmoney[0].length; var i = numS - numM; money = cnvNumberFormat(money,"dec2"); while (i > 0) { money = "*" + money; i--; } return money; } function cnvtime(mydate) { if (mydate == undefined || mydate == null || mydate == "") { return ""; } return mydate.substr(11, 8); } //--------------------------------------End Dot---------------------------------- function cnvNumberWord(money) { if (money == undefined || money == null || money == "") { return ""; } try { money = money + ""; var decimalpoint = ""; if (money.indexOf(".") != -1) { decimalpoint = money.substring(money.indexOf(".") + 1); if (decimalpoint.length == 1) { decimalpoint += "0"; } else if (decimalpoint.length > 2) { var decimalnum = Number(decimalpoint.substring(0, 3)); if (decimalnum % 10 > 4) { decimalnum = Math.floor((decimalnum + 10) / 10); } else { decimalnum = Math.floor(decimalnum / 10); } decimalpoint = decimalnum + ""; } } else { money = money + ".00"; cnvNumberWord(money); // -------Dot-------- } money = money.substring(0, money.indexOf(".")); money = money.replace(/,/g, ""); var decimalword = ""; var moneyword = "บาท"; var i = decimalpoint.length - 1; var digitpos = 0; if (decimalpoint == "00" || decimalpoint == "0" || decimalpoint == "") { decimalword += "ถ้วน"; } else { decimalword += "สตางค์"; while (i >= 0) { decimalword = numToWord(decimalpoint.charAt(i), digitpos, decimalpoint.length) + getNumNaming(digitpos, decimalpoint.charAt(i)) + decimalword; i--; digitpos++; } } i = money.length - 1; digitpos = 0; while (i >= 0) { moneyword = numToWord(money.charAt(i), digitpos, money.length) + getNumNaming(digitpos, money.charAt(i)) + moneyword; i--; digitpos++; } if (moneyword == "บาท") { moneyword = "ศูนย์" + moneyword; } moneyword += decimalword; return moneyword; } catch (err) { alert(err); } } function numToWord(num, digitpos, numlength) { var wordnum = ""; switch (Number(num)) { case 1: if (digitpos % 6 == 1) { wordnum = ""; } else { if ((numlength == digitpos + 1) || digitpos != 0) { wordnum = "หนึ่ง"; } else { wordnum = "เอ็ด"; } } break; case 2: if (digitpos % 6 == 1) { wordnum = "ยี่"; } else { wordnum = "สอง"; } break; case 3: wordnum = "สาม"; break; case 4: wordnum = "สี่"; break; case 5: wordnum = "ห้า"; break; case 6: wordnum = "หก"; break; case 7: wordnum = "เจ็ด"; break; case 8: wordnum = "แปด"; break; case 9: wordnum = "เก้า"; break; case 0: wordnum = ""; break; } return wordnum; } function getNumNaming(digitpos, num) { var numNaming = ""; if (Number(num) == 0) { } else { switch (Number(digitpos) % 6) { case 0: if (digitpos != 0) { numNaming = "ล้าน"; } else { numNaming = ""; } break; case 1: numNaming = "สิบ"; ; break; case 2: numNaming = "ร้อย"; break; case 3: numNaming = "พัน"; break; case 4: numNaming = "หมื่น"; break; case 5: numNaming = "แสน"; break; } } return numNaming; } function inputFormat(text, format, xml_type) { if (xml_type == "datatable") { if (format == "tdate" || format == "mthaidate" || format == "time") { //2012-06-07T00:00:00+07:00 var text2 = text.substr(0, 10); text2 += " " + text.substr(11, 8); text = text2; } } if (format.indexOf("dec") == 0) { text = cnvNumberFormat(text, format); } else if (format == "tdate") { text = cnvDateTh(text); } else if (format == "thaibath") { text = cnvNumberWord(text); } else if (format == "mthaidate") { //-----dot-----ฟอร์มวันที่เดือนไทย text = cnvDatemonthTh(text); } else if (format == "age") { //-----dot-----คำนวนอายุจากวันเกิดที่ส่งมา text = cnvBirthToAge(text); } else if (format == "level") { //-----dot-----ถ้า level = 0 ไม่พิมพ์ text = printLevel(text); } else if (format == "thaiword") { //-----dot-----อ่านไทยไม่มีคำว่าบาทถ้วน text = thaiword(text); } else if (format == "dept_acc_mhd") { //-------dot-----รหัสบัญชี text = depAccount(text); } else if (format == "pericount") { //-------dot---- จำนวนงวด text = periodnum(text); } else if (format == "stardec_first"){ //-----dot-----ใส่ดาวหน้าจำนวนเงิน text = cnvmoneyaddstar(text); } else if (format == "time") { //-----dot-----รับเฉพาะค่าเวลา text = cnvtime(text); } return text; } function defunction(str, index, columnType, xmlHandle, pd, position, xml_type) { var regex1 = /#x\{|#c\{/i; var func = ""; while (str.search(regex1) >= 0) { func = str.substring(str.search(regex1), 1 + str.indexOf("}", str.search(regex1))); str = str.replace(func, defunction2(func, index, columnType, xmlHandle, pd, position, xml_type)); } return str; } function defunction2(str, index, columnType, xmlHandle, pd, position, xml_type) { var point = "detail"; if (position != undefined && position != null) { point = position; } var xorc = str.substring(1, 2); var formatmodifier = ""; str = str.substring(str.indexOf("{") + 1, str.indexOf("}")); if (str.indexOf(":") != -1) { formatmodifier = str.substring(str.indexOf(":") + 1); str = str.substring(0, str.indexOf(":")); } str = str.replace(/\s/g, ""); var dump = str.substring(0); var para = null; var operandcount = 0; while (dump.length > 0) { //กรณี มี symbol นำหน้า column name if (dump.search(/\+|-|\*|\/|\(|\)/) == 0) { dump = dump.substring(1); //ชื่อ column name ตามด้วย symbol } else if (dump.search(/\+|-|\*|\/|\(|\)/) > 0) { para = dump.substring(0, dump.search(/\+|-|\*|\/|\(|\)/)); var newData = ""; if (xorc == "c") { try { if (point == "detail") { newData = pd.getData(index, para); } else if (point == "foot") { newData = pd.getFootData(para); } else if (point == "head") { newData = pd.getHeadData(para); } if (formatmodifier != "") { newData = newData.replace(/,/g, ""); } } catch (err) { } } else if (xorc == "x") { if (xml_type == "datatable") { newData = xmlHandle.xmlDoc.getElementsByTagName(para.toUpperCase())[index].childNodes[0].nodeValue; } else { newData = xmlHandle.xmlDoc.getElementsByTagName(para.toLowerCase())[index].childNodes[0].nodeValue; } } str = str.replace(para, newData); dump = dump.substring(para.length); operandcount++; //ไม่มีเครื่องหมาย } else if (dump.search(/\+|-|\*|\/|\(|\)/) == -1) { var newData = ""; if (xorc == "c") { try { if (point == "detail") { newData = pd.getData(index, dump); } else if (point == "foot") { newData = pd.getFootData(dump); } else if (point == "head") { newData = pd.getHeadData(dump); } if (formatmodifier != "") { newData = newData.replace(/,/g, ""); } } catch (err) { } } else if (xorc == "x") { if (xml_type == "datatable") { newData = xmlHandle.xmlDoc.getElementsByTagName(dump.toUpperCase())[index].childNodes[0].nodeValue; } else { newData = xmlHandle.xmlDoc.getElementsByTagName(dump.toLowerCase())[index].childNodes[0].nodeValue; } } str = str.replace(dump, newData); dump = ""; operandcount++; } } if (columnType == "compute" && operandcount > 1) { str = eval(str); } if (formatmodifier != "") { str = inputFormat(str, formatmodifier, xml_type); } return str; }