/**
 * @author Will Lin
 * @date   2010-06-04
 */

var Utils =
{
	// html encode
	htmlEncode: function(txt)
	{
		return txt.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/&/g, "&amp;").replace(/"/g, "&quot");
	},
	
	// Strip whitespace from the beginning of and the end of string
	trim: function(str)
	{
		return typeof(str) == "string" ? str.replace(/^\s*|\s*$/g, "") : str;
	},
	
	// Check empty
	isEmpty: function(val)
	{		
		switch (typeof(val))
		{
			case "string" :
				return this.trim(val).length == 0;
			case "object" :
				return val == null;
			case "number" :
				return val == 0;
			case "array" :
				return val.length == 0;
			default :
				return true;
		}
	},
	
	// check number
	isNumber: function(num)
	{
		var reg = /^[\d|\.|,]+$/;
		return reg.test(num);
	},
	
	// Check integer
	isInt: function(num)
	{
		return num == "" ? false : (!/\D+/.test(num));
	},
	
	// valid char
	isValidChar: function(str)
	{
		return /^\w+$/.test(str);
	},
	
	// Check email
	isEmail: function(email)
	{
		var reg = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
		return reg.test(email);
	},
	
	// check domain
	isDomain: function(domain)
	{
		if (!this.isEmpty(domain) && domain.indexOf('http') == -1 && domain.indexOf('www') == -1) {
			var reg = /([a-z0-9]|\\-)+\.[a-z]{2,6}$/;
			return reg.test(domain);
		} else {
			return false;
		}		
	},
	
	// Fix event
	fixEvent: function(e)
	{
		return (typeof(e) == "undefined") ? window : e;
	},
	
	// Elements
	srcElement: function(e)
	{
		if (typeof(e) == "undefined") {
			e = window.event;
		}
		
		return document.all ? e.srcElement : e.target;
	},
	
	// Gets form
	getForm: function(form)
	{
		var data = "";
		var items = form.elements;
		var first = true;
		
		for (var i=0; i<items.length; i++) {      
			var e = items[i];
			
			if(e.name == null || e.name=="") {continue;}
		  
			if(e.type=="checkbox" || e.type == "radio") {      
				if(e.checked) { 
					if(first == true) {
						first = false;
						data += e.name + "=" + encodeURIComponent(e.value);      
					} else {      
						data += "&" + e.name + "=" + encodeURIComponent(e.value);      
					}
				} // end if
			}
			else if(e.type=="select-one") {
				e.value=e.options[e.selectedIndex].value;
				
				if(first == true) {
					first = false;
					data += e.name + "=" + encodeURIComponent(e.value);      
				} else {      
					data += "&" + e.name + "=" + encodeURIComponent(e.value);      
				}//select-one
			}
			else if (e.type=="select-multiple") {
				for (var n=0;n<e.length;n++) {
					var op=e.options[n];
					
					if (op.selected) {
						if(first == true) {
							first = false;
							data += e.name + "=" + encodeURIComponent(op.value);      
						} else {      
							data += "&" + e.name + "=" + encodeURIComponent(op.value);      
						}
					}
				}
			} else {
				if(first == true) {
					first = false;
					data += e.name + "=" + encodeURIComponent(e.value);      
				} else {
					data += "&" + e.name + "=" + encodeURIComponent(e.value);      
				}
			}
			
	    }
			
	    return data;		
	},
	
  // clear form
	clearForm: function(form)
	{
		var items = form.elements;
		
		for (var i=0; i<items.length; i++) {
			if (items[i].type == "text" || items[i].type == "textarea") {
				items[i].value = '';
			}
		} // end ofr
	}
}

