function GetExCookie(cookiename) {
	var thebigcookie = document.cookie;
	var firstchar = thebigcookie.indexOf(cookiename+"=");
	if (firstchar != -1) {
		firstchar += cookiename.length + 1;
		lastchar = thebigcookie.indexOf(";",firstchar);
		if(lastchar == -1) lastchar = thebigcookie.length;
		return unescape(thebigcookie.substring(firstchar, lastchar));
	}
	return "";
}

function setExCookie(cookiename,cookievalue,cookieexpdate,domainname) {
    document.cookie = cookiename + "=" + cookievalue
    	+ "; domain=" + domainname
    	+ "; path=" + "/"
    	+ "; expires=" + cookieexpdate.toGMTString();
}

function $c(type, id, parent) {
	var el = null;
	if (document.createElementNS) {
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		parent.appendChild(el);
	}
	if (typeof id != "undefined") {
		el.id = id;
	}
	return el;
}

function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1) 
      return element;
    elements.push(element);
  }
  return elements;
}


function loc(u) {
	var d = new Date();
	var t = d.getMilliseconds();
	if (u.indexOf('?') >= 0) u += '&t=' + t;
	else u += '?t=' + t;
	window.location = u;
}

function floc(u, target) {
	u = u.unescapeHTML();
	var id = 'loc_form_tmp';
	var f = $(id);
	if (!f) {
		f = $c('form', id, document.body);
	}
	if (!target) target = '';
	f.target = target;
	f.action = u;
	f.method = 'get';
	if (u.indexOf('?') >= 0) {
		var t = u.split('?')[1];
		var ts = t.split('&');
		if (ts && ts.length > 0) {
			for (var i = 0; i < ts.length; ++i) {
				var tss = ts[i].split('=');
				if (tss && tss.length == 2) {
					var h = $c('input');
					h.type = 'hidden';
					h.name = tss[0];
					h.value = tss[1];
					f.appendChild(h);
				}
			}
		}
	}
	f.submit();
}

var abCookieName = 'ab';
var abNum = GetExCookie(abCookieName);
if (!abNum || abNum <= 0) {
	abNum = parseInt(Math.random()*100);
	var t=new Date();t.setTime(t.getTime() + 1000 * 60 * 60 * 24 * 30);
	document.cookie = abCookieName + '=' + abNum + ';expires=' + t.toGMTString();
}

function selectAll(name) {
	var es = document.getElementsByTagName('input');
	for (var k = 0; k < es.length; ++k) {
		var e = es[k];
		if (e.type && e.type.toUpperCase() == 'CHECKBOX' && e.name == name) {
			e.checked = true;
		}
	}
}

function reverseSelect(name) {
	var es = document.getElementsByTagName('input');
	for (var k = 0; k < es.length; ++k) {
		var e = es[k];
		if (e.type && e.type.toUpperCase() == 'CHECKBOX' && e.name == name) {
			e.checked = !e.checked;
		}
	}
}

function gotoPage(id) {
	var jumpto = $(id);
	var tpage = getInt(jumpto.getAttribute('tpage'));
	var page = getInt(jumpto.getAttribute('page'));
	var newPage = parseInt(jumpto.value);
	if (isNaN(newPage)) newPage = page;
	var msg = jumpto.getAttribute('msg');
	if (newPage > tpage || newPage < 1) {
		if (msg) alert(msg);
	}else if (newPage != page) {
		var link = jumpto.getAttribute('lk').replace('page=9999', 'page='+newPage);
		if (link.indexOf('javascript:') == 0) {
			link = link.substring(11);
			eval(link);
		}else {
			loc(link);
		}
	}
}
function gotoPageDelegate(e) {
	if (!e) var e = event;
	var o = e.target || e.srcElement;
	var c = e.keyCode;
	if (c == 13) {
		gotoPage(o.id);
		return stopEvent(e);
	}
}

function getSelectCount(name) {
        var es = document.getElementsByTagName('input');
	var count = 0;
        for (var i = 0; i < es.length; ++i) {
                var e = es[i];
                if (e.type && e.type.toUpperCase() == 'CHECKBOX' && e.name == name && e.checked) {
			count++;
                }
        }
	return count;
}

function isPrice(a) {
	var regex = /^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{0,2})?$/;
	return regex.test(a);
}

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

function unescapeHTML(s) {
	s = s.replace(/&nbsp;/g, ' ');
	s = s.replace(/&lt;/g, '<');
	s = s.replace(/&gt;/g, '>');
	s = s.replace(/&amp;/g, '&');
	s = s.replace(/&quot;/g, '"');
	return s;
}

function escapeHTML(s) {
	s = s.replace(/ /g, '&nbsp;');
	s = s.replace(/</g, '&lt;');
	s = s.replace(/>/g, '&gt;');
	s = s.replace(/&/g, '&amp;');
	s = s.replace(/\"/g, '&quot;');
	return s;
}

if (!String.prototype.trim) {
  String.prototype.trim = function() {
	  return trim(this);
  }
}

if (!String.prototype.escapeHTML) {
  String.prototype.escapeHTML = function() {
	  return escapeHTML(this);
  }
}

if (!String.prototype.unescapeHTML) {
  String.prototype.unescapeHTML = function() {
	  return unescapeHTML(this);
  }
}

function byteLength(str) {
	var len = 0;
	for (var i=0;i<str.length;i++) {
		if (str.charCodeAt(i)>255) {
			len+=2;	
		}else {
			len++;
		}
	}
	return len;
}

if (!String.prototype.byteLength) {
  String.prototype.byteLength = function() {
	  return byteLength(this);
  }
}

function getInt(o, d) {
	if (!d) d = 0;
	o = parseInt(o);
	if (isNaN(o)) o = d;
	return o;
}

function getFloat(o, d) {
	if (!d) d = 0.0;
	o = parseFloat(o);
	if (isNaN(o)) o = d;
	return o;
}

function addEvent(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
}

function removeEvent(el, evname, func) {
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, true);
	} else {
		el["on" + evname] = null;
	}
}

function stopEvent(ev) {
	ev || (ev = window.event);
	if (document.all && window.event) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	} else {
		ev.preventDefault();
		ev.stopPropagation();
	}
	return false;
}

