var Ipshine = new Object();
Ipshine.VERSION="20070508";

Ipshine.affirm = function(hint, url) {
	if (confirm(hint))
		window.location = url;
}

Ipshine.copy = function(txt) {  
	if(window.clipboardData) {
		window.clipboardData.clearData();
		window.clipboardData.setData("Text", txt);
	} else if (navigator.userAgent.indexOf("Opera") != -1) {
		window.location = txt;
	} else if (window.netscape) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		} catch (e) {
			alert("Please input 'about:config' in URL Address, then press 'Enter'\n" +
				"set 'signed.applets.codebase_principal_support' to 'true'");
		}
		var clip = Components.classes['@mozilla.org/widget/clipboard;1']
			.createInstance(Components.interfaces.nsIClipboard);
		if (!clip)
			return;
		var trans = Components.classes['@mozilla.org/widget/transferable;1']
			.createInstance(Components.interfaces.nsITransferable);
		if (!trans)
			return;
		trans.addDataFlavor('text/unicode');
		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;1"]
			.createInstance(Components.interfaces.nsISupportsString);
		var copytext = txt;
		str.data = copytext;
		trans.setTransferData("text/unicode",str,copytext.length*2);
		var clipid = Components.interfaces.nsIClipboard;
		if (!clip)
			return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);
	}
}

Ipshine.formatDate = function(value, split) {
	if (value!="")
		value = value
			.replace(/\-/g,split).replace(/\./g,split).replace(/\//g,split)
			.replace(/－/g,split).replace(/·/g,split).replace(/。/g,split).replace(/／/g,split);
	return value;
}

Ipshine.formatAndSetDate = function(ctrl, split) {
	if (ctrl.value!="")
		ctrl.value = Ipshine.formatDate(ctrl.value, split);
}

Ipshine.insertById = function(id, text) {
	Ipshine.insertByControl(document.getElementById(id), text);
}

Ipshine.insertByForm = function(form, element, text) {
	Ipshine.insertByControl(document.forms[form].elements[element], text);
}

Ipshine.insertByControl = function(input, text) {
	input.focus();
	if (Ipshine.isIE()) {
		document.selection.createRange().text = text;
	} else {
		var begin = input.selectionStart + text.length;
		var pre = input.value.substr(0, input.selectionStart);
		var post = input.value.substr(input.selectionEnd);
		input.value = pre + text + post;
		input.selectionStart = begin;
		input.selectionEnd = begin;
	}
}

Ipshine.isBlank = function(value) {
	if (Ipshine.isEmpty(value))
		return true;
	return value.match(/^\s+$/);
}

Ipshine.isEmpty = function(value) {
	return (value == null) || (value.length == 0);
}

Ipshine.isHtmlEscaped = function(value) {
	if (Ipshine.isEmpty(value))
		return true;
	return value.indexOf('<', 0)==-1 && value.indexOf('>', 0)==-1 && value.indexOf('"', 0)==-1
		&& value.indexOf('%', 0)==-1 && value.indexOf(':', 0)==-1;
}

Ipshine.isIE = function() {
	return navigator.appName=="Microsoft Internet Explorer";
}

Ipshine.isNetscape = function() {
	return navigator.appName=="Netscape";
}

Ipshine.isOpera = function() {
	return navigator.appName=="Opera";
}

Ipshine.trimCtrl= function(ctrl) {
	ctrl.value = ctrl.value.replace(/^\s+/,"").replace(/\s+$/,"");
}

function after(name, timestr) {
	return compare(timestr, getElementValue(name)) > 0;
}

function checkDate(name, title, allownull) {
	var value = formatDate(name, "-");
	if (isDate(value, allownull))
		return true;
	window.alert(title + ": yyyy-MM-dd");
	return false;
}

function checkDateTime(name, allownull) {
	var value = getElementValue(name);
	if (isEmpty(value))
		return allownull;
	if ( value.match(/^\d{4,4}\-\d{1,2}\-\d{1,2} \d{1,2}:\d{1,2}$/) ) {
		var groups = value.split(" ");
		var date = groups[0].split("-");
		var time = groups[1].split(":");
		if (date[1]>=1 && date[1]<=12 && date[2]>=1 && date[2]<=31
			&& time[0]>=0 && time[0]<=23 && time[1]>=0 && time[1]<=59)
			return true;
	}
	return false;
}

function checkEmpty(name, title) {
	if (Ipshine.isEmpty(getElementValue(name))) {
		alert(title);
		return false;
	}
	return true;
}

function checkLength(name, title, minimum, maximum) {
	var str = getElementValue(name);
	if (str.length > maximum || str.length < minimum) {
		alert(title + " \u7684\u957f\u5ea6\u5e94\u5728 " + minimum + " \u5230 "
			+ maximum + " \u4e2a\u5b57\u7b26\u4e4b\u95f4");
		return false;
	}
	return true;
}

function checkNumber(name, title, minimum, maximum, allownull) {
	var number = getElementValue(name);
	var err =Ipshine.isEmpty(number);
	if (err)
		if (allownull)
			return true;
	if (err || !isDigit(number) || number<minimum || number>maximum) {
		alert(title + ": " + minimum + " - " + maximum);
		return false;
	}
	return true;
}

function checkSelect(name, msg) {
	var obj = getElementValue(name);
	if (obj.length == 0 || obj.selectedIndex==-1) {
		alert(msg);
		return false;
	} else
		return true;
}

function compare(str1, str2) {
	var d1 = parseDateTime(str1);
	var d2 = parseDateTime(str2);
	return d2.getTime() - d1.getTime();
}

function getDateString(str, sep) {
	var result = str.replace(/^.*(\d{4,4})\D+?(\d{1,2})\D+?(\d{1,2}).*$/, "$1"+sep+"$2"+sep+"$3");
	return result;
}

function getElementValue(name) {
	return document.forms["form"].elements[name].value;
}

function formatDate(name, sep) {
	var obj = document.forms["form"].elements[name];
	obj.value = getDateString(obj.value, sep);
	return obj.value;
}

function initSelect(sel) {
	if (sel.length==1)
		sel.selectedIndex = 0;
}

function isAlphanumeric(value, allownull) {
	if (isEmpty(value))
		return allownull;
	return /^\w+$/.test(value);
}

function isDate(value, allownull) {
	if (isEmpty(value))
		return allownull;
	if ( value.match(/^\d{4,4}\-\d{1,2}\-\d{1,2}$/) ) {
		var groups = value.split("-");
		if (groups[1]>=1 && groups[1]<=12 && groups[2]>=1 && groups[2]<=31)
			return true;
	}
	return false;
}

function isDigit(value) {
	return (Number(value)==value);
}

function isEmail(value, allownull) {
	if (Ipshine.isEmpty(value))
		return allownull;
	if ( value.match(/^(\w+[\-\_\.])*\w+@(\w+\.)*[a-zA-Z]{2,4}$/) )
		return true;
	return false;
}

function isIp(ip) {
	var items = ip.split(/\./);
	if (items.length!=4) return false;
	for (i=0; i<4; i++) {
		var number = items[i];
		if (!isNumber(number)) return false;
		if (number<0 || number>255)
			return false;
	}
	return true;
}

function isLatest(date, days) {
	var dif = new Date().getTime() - parseDateTime(date).getTime();
	return (dif / 86400000) < days+1;
}

function isNumber(value, allownull, minimum, maximum) {
	if (isEmpty(value))
		return allownull;
	else if (!isDigit(value))
		return false;
	else if (value<minimum || value>maximum)
		return false;
	return true;
}

function isPhone(value, allownull) {
	if (isEmpty(value))
		return allownull;
	if ( value.match(/^(\+\d+)?\d+(-\d+)*$/) )
		return true;
	return false;
}

function jumpMenu(target, name, url) {
	var selObj = document.forms["form"].elements[name];
	eval(target + ".location='" + url +
		selObj.options[selObj.selectedIndex].value + "'");
}

function parseDate(s) {
	var ss=s.split("-");
	if (ss.length!=3)
		return null;
	if (isNaN(ss[0]) || isNaN(ss[1]) || isNaN(ss[2]))
		return null;
	return new Date(parseFloat(ss[0]),parseFloat(ss[1])-1,parseFloat(ss[2]));
}

function parseDateTime(s) {
	var gp = s.replace(/\.\d$/, "").split(" ");
	if (gp.length!=2)
		return parseDate(s);
	var ss0 = gp[0].split("-");
	if (ss0.length!=3)
		return null;
	var ss1 = gp[1].split(":");
	if (ss1.length < 2 || ss1.length > 3)
		return null;
	if (ss1[2] == null)
		ss1[2] = 0;
	if (isNaN(ss0[0]) || isNaN(ss0[1]) || isNaN(ss0[2]) || isNaN(ss1[0]) ||
			isNaN(ss1[1]) || isNaN(ss1[2]))
		return null;
	return new Date(ss0[0],ss0[1],ss0[2],ss1[0],ss1[1],ss1[2]);
}

function removeHtml(name) {
	var obj = document.forms["form"].elements[name];
	obj.value = obj.value.replace("<","[").replace(">","]");
}

function removeSelect(sel) {
	var j=0;
	for (i=0; i<sel.length; i++)
		if (!sel.options[i].selected) {
			sel.options[j].text = sel.options[i].text;
			sel.options[j].value = sel.options[i].value;
			j++;
		}
	sel.length = j;
}

function selectJump(targ,sel,url,restore){
  eval(targ+".location='"+url+sel.options[sel.selectedIndex].value+"'");
  if (restore) sel.selectedIndex=0;
}

function trim(value) {
	return value.replace(/^\s+/, "").replace(/\s+$/, "");
}

function truncate(name, start, end) {
	var obj = document.forms["form"].elements[name];
	obj.value = obj.value.substr(start,end);
}