// JavaScript Document

/*###GLOBAL VARIABLE###*/
var _err_internal = 'Err : {errmsg}';
var spryTextSearch = new Spry.Widget.ValidationTextField("spryTextSearch", "none", {validateOn:["change"], hint:"Product Code or Name"});
var loading_img = '<img src="http://www.dhc.co.th/public/images/loading_busy.gif" border="0">';
var emergency_block = { message: null, overlayCSS: { backgroundColor: '#ccc' } };
var timeOut = null;
var ttip = null;
var fancy = null;
var validator = null;
var PREFIX_FF = '';
/******/

/*###EXTEND JQUERY###*/
$.fn.extend({
	exists: function(){ 
		return Boolean($(this).length); 
	}
});

$(function(){
	/*###INITIAL ANYTHING###*/
	$.metadata.setType('attr', 'rule');
	$.unblockUI();
	$(document).ajaxStop($.unblockUI);	
	
	/*###SPECIFIED###*/
	/*set keypress enter in text2go*/
	$(".goent").keypress(function(e){
		if (e.which == 13){
			$("#"+$(this).metadata().relname).triggerHandler('click');
			return false;
		}
	});
	
	/*###tooltip###*/
	ttip = function(){ $('.ttip').tooltip({ showURL: false, track: true }); }
	ttip();
	
	/*###extend jquery validate method###*/
	if ( $.validator ){
		validator = function(){
			$.validator.addMethod('thai_only', function(value, elem, params){
				var chk = check_char(value, false, false, true, false, ' ');
				return ( ( params && chk ) || ! params );
			}, '');
			$.validator.addMethod('eng_only', function(value, elem, params){	
				var chk = check_char(value, false, true, false, false, ' ');
				return ( ( params && chk ) || ! params );
			}, '');
			$.validator.addMethod('num_only', function(value, elem, params){	
				var chk = check_char(value, true, false, false, false);
				return ( ( params && chk ) || ! params );
			}, '');	
			
			/*append*/
			$.validator.addMethod('address_no', function(value, elem, params){	
				var chk = check_char(value, true, false, false, false, '/-');
				return ( ( params && chk ) || ! params );
			}, '');
			$.validator.addMethod('username', function(value, elem, params){	
				var chk = check_char(value, true, true, false, false, '_');
				return ( ( params && chk ) || ! params );
			/***/
			
			}, '');			
		}
		validator();
	}
	
	fancy = function(){
		if ( ! ( $.fancybox && $('a.fancy_pdetail').exists() ) ) return false;
		$('a.fancy_pdetail').fancybox({
			width: 722,
			height: 450,
			padding: 5,
			hideOnContentClick: false,
			titlePosition: 'over',
			centerOnScroll: true,
			autoDimensions: false
		});	
	}
	fancy();

});

function call_ajaxSubmit(url, func, bfSubmit, clsFrm){
	if (typeof clsFrm == 'undefined') clsFrm = false;
	if (typeof bfSubmit == 'undefined') bfSubmit = block;	
	$('#myform').ajaxSubmit({
		url: url,
		clearForm: clsFrm,
		beforeSubmit: bfSubmit,
		success: function(msg){
			if (typeof func != 'undefined'){
				if (typeof func == 'function')
					func();
				else
					$(func).html(msg);				
			}
		}
	});
}


/****************************/
/*------------New Function--------------*/
/****************************/
function number_format (number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);
    // *     returns 12: '1.200'
    var n = number, prec = decimals;

    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };

    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;

    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;

    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;

    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;

        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }

    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}

function in_array (needle, haystack, argStrict) {
    // Checks if the given value exists in the array  
    // 
    // version: 1008.1718
    // discuss at: http://phpjs.org/functions/in_array    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {                return true;
            }
        }
    }
     return false;
}
