/**
 * 处理表单提交后的提示信息及跳转
 * @author sam.zhang
 * @param msgId 消息id，此id为html元素的id中的十进制数
 * @param successPage 成功后的跳转页面，当id为10的整数倍，则认为是成功
 * @param errorPrefix 包含提示信息id的前缀
 */
function post_submit(msgId,successPage,ajaxUsed,errorPrefix){
	var errPre=errorPrefix || "process_result_msg_";
	var ajaxFlag=(ajaxUsed==true) || false;
	var jumpPage=successPage || "";
	var msgObjId=msgId || "";
	if(msgObjId==""){
		return false;
	}
	var errors=msgObjId.split(",");
	if(errors[0]!="" && (errors[0]%10)==0){
		//处理正确的响应
		if($(errPre+errors[0])){	//如果用对应id的html元素，则将里面的内容打印出来
			alert($(errPre+errors[0]).innerHTML);	//TODO:改变处理方式
		}
		if(!ajaxUsed){				//如果使用传统页面刷新方式则通过后退和前进的方式来覆盖处理页面的历史，以使表单无法重复提交
			window.history.back();
		}
		if(jumpPage!=""){
			window.location.href=successPage;	//覆盖处理页面的历史记录
		}
		return true;
	}
	var counter=0;
	for(;counter<errors.length;counter++){
		//输出错误信息的处理
		if(errors[counter]!="" && $(errPre+errors[counter])){	//页面判断可能会返回空值(以防万一),并且判断对应html元素是否存在，以免程序意外中断
			alert($(errPre+errors[counter]).innerHTML);	//TODO:改变错误处理方式
		}
//		window.history.back();
	}
}

/**
 * @author sam.zhang
 * 对于post_submit的重构，主要改变在于处理消息的方式由div包含改为js对象包含,默认把页面的提交方式认为是ajax方式
 * 要求传入的首个对象为全局变量error_info中的下标多个下标以,号分割
 * 成功信息需要带success关键字
 */
function guide(msgId,successPage,ajaxUsed,errorPrefix){
	if(typeof(regSuccess)=="undefined"){
		regSuccess="";
	}
	var msgObjId=msgId || "";
	var jumpPage=successPage || "";
//	var ajaxFlag=(ajaxUsed==true) || true;
	var ajaxFlag=(arguments.length>=3)?ajaxUsed:true;
	if(msgObjId==""){
		return false;
	}
	var errors=msgObjId.split(",");
	ptnSuccess=/success+/;
	if(ptnSuccess.test(errors[0]) || errors[0]==regSuccess){
		//处理正确的响应，只有一条信息直接打印
		if($("check_msg")){
			$("check_msg").style.display="none";
		}
		/* 未重载alert方法时的处理 */
//		alert(error_info[errors[0]]);
//		if(!ajaxFlag){				//如果使用传统页面刷新方式则通过后退和前进的方式来覆盖处理页面的历史，以使表单无法重复提交
//			window.history.back();
//		}
//		if(jumpPage!=""){
//			window.location.href=successPage;	//覆盖处理页面的历史记录
//		}
//		return true;

		/* 重载alert方法时的处理 */
		if(!ajaxFlag){				//如果使用传统页面刷新方式则通过后退和前进的方式来覆盖处理页面的历史，以使表单无法重复提交
			func=function(){window.history.back()};
		}
		if(jumpPage!=""){
			func=function(){window.location.href=successPage;}	//覆盖处理页面的历史记录
		}
//		return true;
		alert(error_info[errors[0]]);
		return true;

	}
	var counter=0;
	//输出错误信息的处理
	if($("check_msg")){
		$("check_msg").innerHTML="";
	}
	var errorStyle="<span style=\"color:#ff6600;\">&#8226; </span>";
	for(;counter<errors.length;counter++){
		if(errors[counter]!="" && $("check_msg")){	//页面判断可能会返回空值(以防万一),并且判断对应html元素是否存在，以免程序意外中断
			$("check_msg").innerHTML+=errorStyle+error_info[errors[counter]]+"<br>";
			$("check_msg").style.display="";
//			alert(error_info[errors[counter]]);	//TODO:改变错误处理方式
		}else if(errors[counter]!=""){
			alert(error_info[errors[counter]]);	//TODO:改变错误处理方式
		}
	}
	location.href="#busytrade_page_start";
}

/**
 * @author sam.zhang
 * 功能同php中的implode函数
 */
function implode(str_sp,obj_arr,ignore_empty){
	var counter=0;
	var returnValue="";
//	var ie=(ignore_empty==true) || true;
	var ie=(arguments.length>=3)?ignore_empty:true;

	for(;counter<obj_arr.length;counter++){
		if(ie){
			if(obj_arr[counter] && obj_arr[counter]!=""){
				returnValue+=obj_arr[counter]+str_sp;
			}
		}else{
			returnValue+=obj_arr[counter]+str_sp;
		}
	}
	return returnValue.length>0?returnValue.substring(0,returnValue.length-1):"";
}

function assembleParam(cVarArr){	//在使用表单的页面中，html元素的name和id属性必须一致
	var returnValue="";
	for(var counter=0;counter<cVarArr.length;counter++){
//		alert($(cVarArr[counter]).id);
//		alert(cVarArr[counter]+":"+document.getElementsByName(cVarArr[counter]).length);
//		if($(cVarArr[counter]) && $(cVarArr[counter]).id!=""){	//拥有id的元素优先处理,此处如果直接用$(id)方式判断对象在ie中会出错
		//ie先尝试用name去替代id
		if((document.getElementsByName(cVarArr[counter]).length=="undefined" || document.getElementsByName(cVarArr[counter]).length<2) && $(cVarArr[counter]) && $(cVarArr[counter]).id!=""){
			returnValue+=cVarArr[counter]+"="+encodeURIComponent($(cVarArr[counter]).value)+"&";
		}else{
			//处理可能是通过name传入的数组值--主要处理checkbox和radiobox
			var groupObj=document.getElementsByName(cVarArr[counter]);
			var strElementName=cVarArr[counter];
			if(groupObj.length >0 && groupObj[0].type.toLowerCase()!="radio" && !ptnPhpArray.test(strElementName)){	//除了单选框，其他元素都要作为数组处理否则无意义
				strElementName+="[]";
			}
			if(groupObj.length>0){
				for(var innerCounter=0;innerCounter<groupObj.length;innerCounter++){
					if(groupObj[innerCounter].type.toLowerCase()=="radio"
						|| groupObj[innerCounter].type.toLowerCase()=="checkbox"){
						if(groupObj[innerCounter].checked){	//如果当前元素为选中的checkbox或者radiobox 则记录数据
							returnValue+=strElementName+"="+encodeURIComponent(groupObj[innerCounter].value)+"&";
						}
					}else{	//如果不是checkbox或radiobox则直接记录数据
						returnValue+=strElementName+"="+encodeURIComponent(groupObj[innerCounter].value)+"&";
					}
				}
			}
		}
	}
	return returnValue.length>0?returnValue.substring(0,returnValue.length-1):"";
}

function implodeCheck(str_sp,basename,custname){
	var returnValue=new Array;
	var counter=1;
	if(basename==""){
		return "";
	}
	var chkObj=$(basename+counter);
	while(chkObj){
		if(chkObj.checked && chkObj.value!=""){
			returnValue.push(chkObj.value);
		}
		counter++;
		chkObj=$(basename+counter);
	}
	if(custname!="" && $(custname) && $(custname).value!=""){
		returnValue.push($(custname).value);
	}
	return implode(str_sp,returnValue);
}

function show_selects(choice){
	var action=true;
	if(arguments.length>=1){
		action=choice;
	}
	var selects=document.getElementsByTagName("select");
	for(var counter=0;counter<selects.length;counter++){
		selects[counter].style.visibility=action?"":"hidden";
	}

	if(document.getElementById("catagory_dialog_viewarea")){
		var showSelects=document.getElementById("catagory_dialog_viewarea").getElementsByTagName("select");
		for(var counter=0;counter<showSelects.length;counter++){
			showSelects[counter].style.visibility="";
		}
	}
}
/**
 * 验证对象，用来验证输入的内容
 * checker是一个对象
 * @author sam.zhang
 */
var checker={
	"checkText":function(sourceId,minLength,maxLength,patten){
		var sid=sourceId || "";
		if(sid=="" || !$(sid)){
			return 0.1;	//目标未找到
		}
		var sstr=$(sid).value;
		var ptn=patten || null;
		var minl=parseInt(minLength,10) || 0;
		var maxl=parseInt(maxLength,10) || 0;

		if(sstr.length<minl){
			return 0.2;	//长度不够
		}

		if(sstr.length>maxl){
			return 0.3;	//长度过长
		}

		if(sstr.length==0){
			return 0;	//最低要求长度为0，且输入长度为0的直接返回，否则模式判断可能报错
		}

		if(ptn){
			if(!sstr.match(ptn)){
				return 0.4;	//格式不匹配
			}
		}

		return 0;
	},
	"testText":function(sourceId,pattens){
		var counter=0;
		var returnValue=true;
		if(!(pattens instanceof Array)){
			pattens=new Array(pattens);
		}
		for(;counter<pattens.length;counter++){
//			if(typeof(pattens[counter])=="function"){
				if(!pattens[counter].test(sourceId.trim())){
					return false;
				}
//			}
		}
		return true;
	}
}

/**
 * FCKeditor的处理
 */
var fck = null;
function FCKeditor_OnComplete(inst){
	fck = inst;
}

/*
 * @author sam.zhang
 * 一些常用的正则
 */
ptnOUinteger=/^\d*$/;	//无符号整数(可选)
ptnUinteger=/^[\d]+$/;	//无符号整数
ptnOInteger=/^-?\d*$/;	//有符号整数(可选)
ptnInteger=/^-?\d+$/;	//有符号整数
ptnUfloat=/^\d+\.?\d*$/;	//无符号浮点数
ptnFloat=/^-?\d+\.?\d*$/;	//有符号浮点数
//ptnDbyte=/^[^x00-xff]+$/;	//双字节字符
ptnCharZhcn=/[\u4e00-\u9fa5]+/;	//匹配中文字符的正则表达式
ptnDbyte=/[^\x00-\xff]+/;	//匹配双字节字符(包括汉字在内)：
ptnSbyte=/^[\x00-\xff]*$/;	//匹配非双字节字符：
ptnHtml=/<(.*)>.*<\/\1>|<(.*)   \/>/;	//匹配HTML标记的正则表达式
ptnCommonOText=/^[\x00-\xff]{0,25}$/;	//匹配最大长度25的单字节字符(可选字段)
ptnCommonText=/^[\x00-\xff]{1,25}$/;	//匹配最大长度25的单字节字符
ptnCommonOTextArea=/^[\x00-\xff]{0,5000}$/;	//匹配最大长度200的单字节字符(可选字段)
//ptnCommonTextArea=/^[\x00-\xff]{100,5000}$/;	//匹配最大长度200的单字节字符
ptnCommonTextArea=/[^\u4e00-\u9fa5]{100,5000}$/;	//匹配最大长度200的单字节字符
ptnCommonEbookArea=/[^\u4e00-\u9fa5]{100,1000}$/;	//匹配最大长度200的单字节字符
ptnPhpArray=/^\w+\[\]$/;	//匹配html中的数组模式
ptnUrl=/^http:\/\/([\w\-\d]+)(.[\w\-\d]+)+$/;	//匹配url字符串
ptnEmail=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g;
ptnLetterBegin=/^[a-zA-Z]+/;	//匹配以字母开头的字符串
ptnSpecialCharBegin=/^\W+/;		//匹配"特殊字符"开头的字符串
ptnWithLetter=/[a-zA-Z]+/;		//匹配包含英文字符的字符串
ptnWithSpecialChar=/\W+/;		//匹配包含"特殊字符"的字符串

/**
 *原型扩展
 * @author jiabin.heng
 */
String.format = function(){
	if( arguments.length <= 0 )
		return;
	var str = arguments[0];
	for(var i=1; i < arguments.length; i++){
		str = str.replace("{" + (i-1) + "}", arguments[i]);
	}
	return(str);
};


if( !String.prototype.has ){
	String.prototype.has = function(c) {
		return this.indexOf(c) > -1;
	};
}

if( !String.prototype.trim ){
	String.prototype.trim = function() {
		return this.replace(/^\s*|\s*$/g, "");
	};
}

if( !String.prototype.isEmpty ){
	String.prototype.isEmpty = function(){
		return this.length == 0;
	};
}

if( !String.prototype.getBytesLength ){
	String.prototype.getBytesLength = function(){
		return this.replace(/[^\x00-\xff]/g,"**").length;
	};
}

if( !String.prototype.isInteger ){
	String.prototype.isInteger = function(){
		if(this == "")
			return true;
		return /^([\-\+]?)(\d+)$/.test(this);
	};
}

if( !String.prototype.isChinese ){
	String.prototype.isChinese = function(){
		var pattern = /^([\u4E00-\u9FA5])*$/g;
		return pattern.test(this);
	};
}

if( !String.prototype.isContainChinese ){
	String.prototype.isContainChinese = function(){
	    var pattern = /([\u4E00-\u9FA5])*/g;
	    return pattern.test(this);
	};
}

if( !String.prototype.isDoubleByte ){
	String.prototype.isDoubleByte = function(){
	    var pattern = /^[x00-xff]+$/g;
	    return pattern.test(this);
	};
}

if( !String.prototype.isContainDoubleByte ){
	String.prototype.isContainDoubleByte = function(){
	    var pattern = /[x00-xff]+/g;
	    return pattern.test(this)
	};
}

if( !String.prototype.isUrl ){
	String.prototype.isUrl = function() {
		var pattern = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/g;
	    return pattern.test(this);
	};
}

if( !String.prototype.isContainEmail ){
	String.prototype.isContainEmail = function(){
	    var pattern = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g;
	    return pattern.test(this);
	};
}

if( !String.prototype.isContainHTML ){
	String.prototype.isContainHTML = function(){
	    var pattern = /<(.*)>.*<\/\1>|<(.*)\/>/g;
	    return pattern.test(this);
	};
}

if( !String.prototype.isEmail ){
	String.prototype.isEmail = function(){
	    var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	    return pattern.test(this);
	};
}

if( !String.prototype.capitalize ){
	String.prototype.capitalize = function(){
		return this.charAt(0).toUpperCase()+this.substr(1);
	};
}

if( !String.prototype.toArray ){
	String.prototype.toArray = function(){
		return arguments.length == 0 ? this.split('') : this.split(arguments[0]);
	}
}

if(!String.prototype.stripTags){
  String.prototype.stripTags = function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  }
}

if( !Number.prototype.length ){
	Number.prototype.length = function(){
		return this.toString().length;
	};
}

if( !Date.prototype.getMDate ){
	Date.prototype.getMDate = function(){
		return (new Date(this.getFullYear(), this.getMonth()+1, 0).getDate());
	};
}

if( !Date.prototype.isWeekend ){
	Date.prototype.isWeekend = function(){
		return (this.getDay() % 6) ? false : true;
	};
}

//------------------------------------
Array.prototype.exists = function(str){
	return (this.indexOf(str) != -1);
};

Array.prototype.indexOf=function(substr,start){
	var ta,rt,d='\0';
	if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}
	var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);
	if(t==-1)return -1;rt+=str.slice(0,t).replace(/[^\0]/g,'').length;
	return rt;
};

Array.prototype.lastIndexOf=function(substr,start){
	var ta,rt,d='\0';
	if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}
	ta=ta.reverse();var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);
	if(t==-1)return -1;rt+=str.slice(t).replace(/[^\0]/g,'').length-2;
	return rt;
};

Array.prototype.replace=function(reg,rpby){
	var ta=this.slice(0),d='\0';
	var str=ta.join(d);str=str.replace(reg,rpby);
	return str.split(d);
};

Array.prototype.search=function(reg){
	var ta=this.slice(0),d='\0',str=d+ta.join(d)+d,regstr=reg.toString();
	reg=new RegExp(regstr.replace(/\/((.|\n)+)\/.*/g,'\\0$1\\0'),regstr.slice(regstr.lastIndexOf('/')+1));
	t=str.search(reg);if(t==-1)return -1;return str.slice(0,t).replace(/[^\0]/g,'').length;
};

function SelectAll( elements_name , checked ){
	var objs = document.getElementsByName( elements_name );
	for( var i = 0 ; i < objs.length ; i ++ ){
		objs[i].checked = checked;
	}
}
function make_inquire(param){
	new Ajax.Request("http://www.endev.busytrade.com/common/inquiry.php", {
		method: 'post',
		parameters:"action=inquiry&no_display=&"+param,
		onSuccess: function(transport) {
			//在通信过程中弹出窗口将被浏览器阻止。
//			window.open("/common/inquiry.php");
			return true;
		}
	});
}

function inquire_now(check_box_name,error_id){
	var err_id=error_id || "tip_1";
//	window.open()
	var inquery_list=assembleParam(Array(check_box_name));
	if(inquery_list==""){
		alert(error_info[err_id]);
		return false;
	}
	make_inquire(inquery_list);
	window.open("http://www.endev.busytrade.com/common/inquiry.php");
}