// @ฉ 2010-05-20 16:53
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var thchar = 'กะขาคิงีจุฉูเชแซโฌไญใฎ่ฏ้ฐ๊ฑ๋ฒ์ณ็ด์ตัถทธนบปผฝพฟภมยรลวศษสหฬอฮ๑๒๓๔๕๖๗๘๙๐';
var spc = '\ \@\.\-\_';

function isNum(parm) { return isValid(parm,numb); }
function isLower(parm) { return isValid(parm,lwr); }
function isUpper(parm) { return isValid(parm,upr); }
function isAlpha(parm) { return isValid(parm,lwr+upr); }
function isAlphanum(parm) { return isValid(parm,lwr+upr+numb); }

function res(t,v) {
	var w = '';
	for(i=0,len=t.value.length; i<len; i++) {
		var x = t.value.charAt(i);
		
		if(v.indexOf(x,0) != -1) {
			w += x;
		}
	}
	
	t.value = w;
}

function checkValidFormat(format, val) {
	for(i=0,len=val.length; i<len; i++) {
		if (format.indexOf(val.charAt(i)) == -1) return false;
	}
	
	return true;
}

function _g(namex){   
	if (document.getElementById) {
		return document.getElementById(namex);
	} else if (document.all) {
		return document.all[namex];   
	} else {
		return null;
	}
}

function detectClientBrowser() {
	var nAgt = navigator.userAgent;
	var sBrowserName  = navigator.appName;
	var sFullVersion  = ''+parseFloat(navigator.appVersion); 
	
	if((verOffset = nAgt.indexOf("MSIE"))!=-1) {
		sBrowserName = "IE";
		sFullVersion = nAgt.substring(verOffset+5);
	} else if((verOffset = nAgt.indexOf("Opera"))!=-1) {
		sBrowserName = "Opera";
		sFullVersion = nAgt.substring(verOffset+6);
	} else if((verOffset = nAgt.indexOf("Chrome"))!=-1) {
		sBrowserName = "Chrome";
		sFullVersion = nAgt.substring(verOffset+7);
	} else if((verOffset = nAgt.indexOf("Safari"))!=-1) {
		sBrowserName = "Safari";
		sFullVersion = nAgt.substring(verOffset+7);
	} else if((verOffset = nAgt.indexOf("Firefox"))!=-1) {
		sBrowserName = "Firefox";
		sFullVersion = nAgt.substring(verOffset+8);
	} else if((nameOffset = nAgt.lastIndexOf(' ')+1) < (verOffset = nAgt.lastIndexOf('/'))) {
		sBrowserName = nAgt.substring(nameOffset,verOffset);
		sFullVersion = nAgt.substring(verOffset+1);
		
		if (sBrowserName.toLowerCase() == sBrowserName.toUpperCase()) {
			sBrowserName = navigator.appName;
		}
	}
	
	return [sBrowserName, sFullVersion];
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			
			func();
		}
	}
}

function isDefined(variable) {
	return eval("(typeof(" + variable + ") != \"undefined\");");
}

function JSTrim(str) {
	return str.replace(/^\s+|\s+$/g, '');
}

function getRelativePos(obj) {
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	var pos = {offsetLeft:0,offsetTop:0};
	
	while(obj!=null){
		pos.offsetLeft += obj.offsetLeft;
		pos.offsetTop += obj.offsetTop;
		obj = isIE ? obj.parentElement : obj.offsetParent;
	}
	return pos;
}

function toggleTextDefault(obj, mode) {
	var sValue = obj.value.replace(/^\s+|\s+$/g, '');
	var sDefaultValue = obj.defaultValue;
	
	if (obj.type == 'text') {
		if (sValue == '' || sValue == sDefaultValue) 
			obj.value = (mode == 1) ? '' : sDefaultValue;
	} else if (obj.type == 'textarea') {
		if (sValue == '' || sValue.indexOf(sDefaultValue) > -1) 
			obj.value = (mode == 1) ? '' : sDefaultValue;
	}
}

/* Textarea limit */

function limitChars(obj, limit) {
	var text = obj.value;	
	var textlength = text.length;

	if(textlength > limit) {
		obj.value = text.substr(0,limit);
		return false;
	} else {
		return true;
	}
}

function randomString(len) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	var string_length = (typeof(len) !== "undefined") ? len : 10;
	
	var randomstring = '';
	for(var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	
	return randomstring;
}

function IsUrl(s) {
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}

function IsEmail(s) {
	var exclude = /[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check = /@[\w\-]+\./;
	var checkend = /\.[a-zA-Z]{2,3}$/;

	// Check email format
	return (!(!exclude.test(s) && check.test(s) && checkend.test(s))) ? false : true;
}

function IsUsername(str) {
	return (/[^a-zA-Z0-9\@\.\-\_]+/.test(str)) ? false : true;
}

function IsPassword(str) {
	return (/[^a-zA-Z0-9\!\@]+/.test(str)) ? false : true;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function doBack() {
	if(document.referer) {
		window.location.href = document.referer;
	}
}

function submitFormGet(form) {
	form.submit();
	return false;
}

function prepareInputsForHints() {
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++){
		// test to see if the hint span exists first
		if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
			// the span exists!  on focus, show the hint
			inputs[i].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			// when the cursor moves away from the field, hide the hint
			inputs[i].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
	// repeat the same tests as above for selects
	var selects = document.getElementsByTagName("select");
	for (var k=0; k<selects.length; k++){
		if (selects[k].parentNode.getElementsByTagName("span")[0]) {
			selects[k].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			selects[k].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
}

function writeObj(obj, message) {
	if(!message) { message = obj; }
	
	var details = "*****************" + "\n" + message + "\n";
	var fieldContents;
	
	for(var field in obj) {
		fieldContents = obj[field];
		if (typeof(fieldContents) == "function") {
			fieldContents = "(function)";
		}
		details += "  " + field + ": " + fieldContents + "\n";
	}
	
	if(!console) {
		var console = {log: function(details) { window.alert(details); }}
	}
	
	console.log(details);
}

