/********************** string begin **********************/
String.SYMBOL_SPLIT = ",";
String.SYMBOL_BLANK = " ";
String.format = function(B)
{
		var A=Array.prototype.slice.call(arguments,1);
		return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})
}

String.formatNum = function(srcStr,nAfterDot)
{
var srcStr,nAfterDot;
    var resultStr,nTen;
    srcStr = ""+srcStr+"";
    strLen = srcStr.length;
    dotPos = srcStr.indexOf(".",0);
    if (dotPos == -1){
        resultStr = srcStr+".";
        for (i=0;i<nAfterDot;i++){
            resultStr = resultStr+"0";
        }
        return resultStr;
    } else{
        if ((strLen - dotPos - 1) >= nAfterDot){
            nAfter = dotPos + nAfterDot + 1;
            nTen =1;
            for(j=0;j<nAfterDot;j++){
            nTen = nTen*10;
        }
        resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
        return resultStr;
        } else{
            resultStr = srcStr;
            for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
                resultStr = resultStr+"0";
            }
            return resultStr;
        }
    }
}


String.prototype.fix = function()
{
	return this.replace(/'/g, "");
}



String.prototype.toDate = function()
{
	var a = this.split('-');
	
	if (a.length != 3)
	{
		a = this.split('/');
		
		if (a.length == 3)
		{
			return new Date(this.toLowerCase());
		}
		else
			return new Date();
	}
	
	var d = new Date(a[0], a[1]-1, a[2]);
	
	if (d.toString().toLowerCase() == 'invalid date')
	  return new Date();
	  
	return d;  
}


String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.lTrim = function()
{
return this.replace(/(^\s*)/g, "");
}

String.prototype.rTrim = function()
{
return this.replace(/(\s*$)/g, "");
} 

/********************** string end **********************/

/********************* Regex begin****************************/
RegExp.int =  /^-?\d+$/;// /^[0-9\.]+$/ig;
RegExp.double = /^[-\+]?\d+(\.\d+)?$/;

Date.TYPE_COMMON= 0;
Date.TYPE_FOREIGN = 1;
Date.format = function(date, type)
{
	switch(type)
	{
		case Date.TYPE_COMMON: return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
		case Date.TYPE_FOREIGN: 
		{
			var m, d;
			
			m = date.getMonth() + 1;
			m = (m>= 10?m:'0'+m);
			
			d = date.getDate();
			d = (d>=10?d:'0'+d);
			
			return (m) + "/" + d + "/" + date.getFullYear();
		}
	}
	
	return "";
}

Date.formatTime = function(h, s)
{
	var t = "";
	var hi = parseInt(h), si = parseInt(s);
	
	if (si < 10)
	  s = "0" + s;
	  
	if (hi < 12)
	{
		if (hi < 10)
		{
			if (hi == 0)
			  h = "12";
			else  
		    h = "0" + h;
		}
		
		t = h + ":" + s + "am";
	}
	else
	{
		hi = hi - 12;
		t = hi + ":" + s + "pm";
	}	
	
	return t;
}

Date.timeToDate = function(t)
{
	var d = new Date(t);
	return String.format("{0}-{1}-{2} {3}", d.getFullYear(), d.getMonth(), d.getDate(), Date.formatTime(d.getHours(), d.getSeconds()));
}

Date.prototype.toFullDate = function()
{
	var d = this;
	return String.format("{0}-{1}-{2} {3}:{4}:{5}", 
		                     d.getFullYear(), d.getMonth() + 1, d.getDate(), 
		                     d.getHours(), d.getMinutes(), d.getSeconds())
}

Date.prototype.compare = function(d)
{
	var y1, m1, d1, y2, m2, d2;
	
	y1 = this.getFullYear();
	m1 = this.getMonth();
	d1 = this.getDate();
	
	y2 = d.getFullYear();
	m2 = d.getMonth();
	d2 = d.getDate();
	
	if (y1 > y2)
	  return 1;
	else
	if (y1 == y2)  
	{
		if (m1 > m2)
		  return 1;
		else
		if (m1 == m2)
		{
			if (d1 > d2)
			  return 1;
			else
			if(d1 == d2)  
			  return 0;
			else
				return -1;  
				  
		}  
		else
			return -1;
	}
	else
		return -1;
	
}

Date.between = function(d, s, e)
{
	var b = d.compare(s) >= 0 && d.compare(e) <= 0;
	return b;
}

var Sunnet = {};
Sunnet.util = {};

Sunnet.util.extend = function(dest, orig)
{
	for (var i in orig)
	  dest[i] = orig[i];
}

Sunnet.util.getBlank = function(num, blank)
{
	var r = "";
	for (var i = 1; i <= num; i++)
	  r += blank;
	
	return r;  
}

var oUtil = Sunnet.util;

Sunnet.util.Url = 
{
	fix: function(qrystr)
	{
		if (qrystr.charAt(0) == "?")
		  qrystr = qrystr.substring(1, qrystr.length);  
		
		return qrystr;  
	},
	
	getPageUrl: function()
	{
		return location.search;
	},
	
  getQueryString: function(qrystr, param)
  {
  	//name=li&age=32
    qrystr = this.fix(qrystr);
    var a = qrystr.split("&");
    var b;
    
    for (var i = 0; i < a.length; i++)
    {
    	b = a[i].split("=");
    	if (b[0].toLowerCase() == param.toLowerCase())
    	  return b[1];
    }
    
    return "";
  },
  
  urlEncode: function(str)
  {
  },
  urlDecode: function(str)
  {
  	return unescape(str);
  }
}

var G_OBJ_URL = Sunnet.util.Url;
var oUrl = Sunnet.util.Url;
Sunnet.util.UrlClass = function(sUrl)
{
	this.URL = sUrl;
	
	this.getQueryString = function(param)
	{
		
	}
}

Sunnet.util.DomHelper =
{
  getMasterEl: function(id)
  {
    return document.getElementById("ctl00_ContentPlaceHolder1_" + id);
  },
	createElement: function(type)
	{
		return document.createElement(type);
	},
	getElement: function(id)
	{
		return document.getElementById(id);
	},
	getBlank: function(count)
	{
		var r = "";
		
		for (var i = 0; i < count; i++)
		  r += "&nbsp;";
		
		return r;  
	},
	getEvent: function(e)
	{
		return e || window.event;
	},
	getSrcElement: function(e)
	{
		return e.srcElement || e.target;
	},
	getHtmlNames: function(names)
	{
		var namelist = names.split(String.SYMBOL_SPLIT);
		
		var i;
		for (i = 0; i < namelist.length; i++)
		  namelist[i] = "ctl00_ContentPlaceHolder1_" + namelist[i];
		
		var str = "";
		for (i = 0; i < namelist.length; i++)
		{
		  str += namelist[i];
		  
		  if (i < namelist.length - 1)
		    str += String.SYMBOL_SPLIT;
		}
		
		return str;
	}
}

Sunnet.util.Css =
{
	setUnVisibility: function(el)
	{
		var v = el.style.visibility;
		v = v.toLowerCase();
		
		if (v == "visible")
		{
			el.style.visibility = "hidden";
			el.style.display = "none";
		}
		else
		if (v == "hidden")	
		{
			el.style.visibility = "visible";
			el.style.display = "block";
		}
	}
}

var Css = Sunnet.util.Css;

Sunnet.util.Event = 
{
	getEvent: function(e)
	{
		return e || window.event;
	},
	
	getSrcElement: function(e)
	{
		var e = this.getEvent(e);
		return e.srcElement || e.target;
	}
}

var DomHelper = Sunnet.util.DomHelper;
var Event = Sunnet.util.Event;

Sunnet.Debug = 
{
	displayer: null,
	getDisplayer: function()
	{
		if (this.displayer == null)
		  this.displayer = new Sunnet.ui.Displayer();
		  
		return this.displayer;
	},
	
	showAllMember: function (o)
	{
		var s = "";
		for (var i in o)
		  s += i + ": " + o[i] + "<br/>";
		
		this.getDisplayer().innerHTML = s;
	},
	
	alert: function(msg, isClear)
	{
		this.getDisplayer().style.visibility = "visible";
		
		if (!isClear)
		  this.getDisplayer().innerHTML += msg + "<br/>";
		else
		  this.getDisplayer().innerHTML = msg + "<br/>";  
	}
}

var Debug = Sunnet.Debug;

Sunnet.net = {};
Sunnet.net.Ajax = 
{
	httprequest: null,
	getHttpRequest: function()
	{
		if (this.httprequest == null)
		{
			if (window.XMLHttpRequest)
			  this.httprequest = new XMLHttpRequest();
			else 
			  if (window.ActiveXObject)
			    this.httprequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		return this.httprequest;
	},
	sendRequest: function(qrystr)
	{
		var req = this.getHttpRequest();
		req.open('Get', qrystr, false);
    req.send(null);
    return req.responseText;
	}
}

var oAjax = Sunnet.net.Ajax;
var Ajax = oAjax;

Sunnet.util.Time = 
{
	short: function(time)
	{
		//12:00 PM
		var h, ex;
		var i = parseInt(time);
		if (i == 0)
				{
				  h = 12;
				  ex = "AM";
				}
				else
				if (i == 12)
				{
					h = 12;
					ex = "PM";
				}
				else
				if (i < 12)	
				{
					h = i;
					ex = "AM";
				}
				else //i > 12
				{
					h = i - 12;
					ex = "PM";
				}
    return {h:h, ex:ex};
	},
	shortEx: function(time) //0:30
	{
		var a = time.split(":");
		var t = this.short(a[0]);
		
		return String.format("{0}:{1} {2}", t.h, a[1], t.ex);
	}
}

var Time = Sunnet.util.Time;
	
