var zz91Search=new function(){
	var search=this;
	this.products=function(config){
		config=config||{};	
		var contextpath=config.contextpath||"";
		var target=config.target||"_blank";	
		var searchOpt=config.searchOptions||[];
		var debug=config.debug||false;
		
		var ptype=searchOpt["ptype"]||"";  
		var province=searchOpt["province"]||""; 
		var posttime=searchOpt["posttime"]||"";
		var priceflag=searchOpt["priceflag"]||""; 
		var nopiclist=searchOpt["nopiclist"]||""; 
		var havepic=searchOpt["havepic"]||"";
		var page=searchOpt["page"]||"";
		var keywords=searchOpt["keywords"]||"";  //关键字
		
		if(keywords.length<=0){
			return false;
		}
		
		keywords=keywords.replace(/\//gm,"astoxg");
		keywords=keywords.replace(/\\/gm,"asto5c");
		keywords=keywords.replace(/-/gm,"astohg");
		keywords=keywords.replace(/\(/gm,"astokhl");
		keywords=keywords.replace(/\)/gm,"astokhr");
		
//		window.open("http://www.zz91.com/offer/?ptype="+ptype+"&keywords="+encodeURI(keywords));
		
		var targetUrl="/offerlist";
		targetUrl=search.buildProductSearchUrl(targetUrl,"--a",ptype);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--b",province);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--c",posttime);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--d",priceflag);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--e",nopiclist);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--f",havepic);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--p",page);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--",encodeURIComponent(keywords));
		
		targetUrl=targetUrl+".htm";
		if(debug){
			alert("the target url is: "+targetUrl);
		}else{
			if(target=="_self"){
				location.href=contextpath+targetUrl;
			}else{
				window.open(contextpath+targetUrl);
			}
		}
		
	};
	
	this.price=function(config){
		config=config||{};
		var contextpath=config.contextpath||"";
		var target=config.target||"_blank";
		var searchOpt=config.searchOptions||[];
		var k=searchOpt["keywords"]||"";
		
		if(k.length<=0){
			return false;
		}
		
		var targetUrl="/priceSearch.htm?title="+encodeURI(k);
		
		if(target=="_self"){
			location.href=contextpath+targetUrl;
		}else{
			window.open(contextpath+targetUrl);
		}
	};
	
	this.company=function(config){
	};
	
	this.companyPrice=function(config){
		config=config||{};
		var contextpath=config.contextpath||"";
		var target=config.target||"_blank";
		var searchOpt=config.searchOptions||[];
		var k=searchOpt["keywords"]||"";  //关键字
		var pc=searchOpt["categoryCompanyPriceCode"]||"";  //企业报价类别
		var area=searchOpt["area"]||"";  //地区
		var interval=searchOpt["interval"]||"";  //产品刷新时间期限  距离现在，单位：天
		var priceRange=searchOpt["priceRange"]||"";  //报价区间
		var targetUrl="/companyprice/index--"+encodeURIComponent(k);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--pc",pc);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--area",area);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--int",interval);
		targetUrl=search.buildProductSearchUrl(targetUrl,"--pr",priceRange);
		targetUrl=targetUrl+".htm";
		if(target=="_self"){
			location.href=contextpath+targetUrl;
		}else{
			window.open(contextpath+targetUrl);
		}
	};

	this.buildProductSearchUrl=function(targetUrl,prefix,v){
		if(v.length>0){
			return targetUrl+prefix+v;
		}else{
			return targetUrl+prefix;
		}
	};
	
	//initialization  search  effects
	this.initSearchSlide=function(slideObj,noSearchSelectClass,SearchSelectClass,getSearchType,searchFocus,searchLabel){
		var operateObj = zz91Util.getElem(slideObj).getElementsByTagName("li");
		getSearchType = zz91Util.getElem(getSearchType);
		searchLabel=zz91Util.getElem(searchLabel);
		searchFocus = zz91Util.getElem(searchFocus);
		//获取当前节点索引
		var getIndex = function(self, obj){
			for(var i=0;i<obj.length;i++){
				if(obj[i]== self){
					return i;
				}
			}
		}
		for (var i = 0; i < operateObj.length; i++) {
			iNum = i
			
			operateObj[i].onmouseover = function(){
				//alert(i);
				//i = parseInt(i);
				for (var j = 0; j < operateObj.length; j++) {
					operateObj[j].className = noSearchSelectClass;
				}
				this.className = SearchSelectClass;
				//确定搜索类型，并且设置搜索焦点
				//alert(getSearchType.value+"_" +getIndex(this,operateObj));
				getSearchType.value = parseInt(getIndex(this,operateObj)+1);
				searchLabel.style.display="none";
				searchFocus.focus();	
			}
			operateObj[i].onmouseout=function(){
				if (searchFocus.value == "" || searchFocus.value == null) {
					setInterval(function(){
						searchFocus.blur();
						searchLabel.style.display = "";
					}, 1000)
				}
			}
		}
		searchLabel.onclick=function(){
			searchLabel.style.display="none";
			searchFocus.focus();
		}
	};
};





//zz91 通用方法封装
var zz91Util=new function(){
    /**
	* 显示消息
	*/
    this.showmsg = function(key){
    	var m={
			"commonError":"发生了一点错误，请过一会再试!",
			"connectError":"与服务器失去连接，请过一会再试!",
			"default":"发生错误，请重新操作!",
			"failureInsert":"信息没有发布成功，可能是服务器出现了问题，请再试一次!",
			"failureUpdate":"信息没有更新成功，可能是服务器出现了问题，请再试一次!",
			"sessionTimeOut":"您是不是很长时间没有操作了，请重新登录后再操作!",
			"memberAuthorFailure":"对不起，您现在的会员类型还不能这么做，\n您可以跟我们的客服联系，升级会员后再操作!",
			"companyInfoBroken":"对不起，您查看的企业信息不完整!",
			"contactInfoBroken":"对不起，您查看的联系人信息不完整!",
			"overLimit":"对不起，您的操作已经超过了限制!",
			"canNotVoteSelf":"对不起，您不能对自己评价!"
		};
    	if(typeof(m[key]) == "undefined" ){
			alert(m["default"]);
			return ;
		}
		alert(m[key]);
		return ;
    };
	
	/**
	* zz91网站登入
	*/
	this.login=function(config){
		if(config==null){
			config={};
		}
		
//		username,password,cookieMaxAge,url,randcode,randcodeKey,contextpath,fn
		
		var utils=this;
		
		var _username=config.username||"";
		var _password=config.password||"";
		var _cookieMaxAge=config.cookieMaxAge||"";
		var _url=config.url||"";
		var _randcode=config.randcode||"";
		var _randcodeKey=config.randcodeKey||"";
		var _contextpath=config.contextpath||Context.ROOT;
		var _success=config.success||function(response){
			if(response.success){
				window.location.href=response.data;
			}else{
				alert(response.data);
			//	utils.showmsg(response.data);
			}
		};
		
		jQuery.ajax({
			url:_contextpath+"/checkuser.htm",
			type:"POST",
			cache:false,
			dataType:"json",
			data:{username:_username,password:_password,cookieMaxAge:_cookieMaxAge,url:_url,randCode:_randcode,randCodeKey:_randcodeKey},
			success:_success,
			error:function(e){
				utils.showmsg("accountValicateError");
			}
		});
	};
	
	/**
	* zz91网站登出
	*/
	this.logout=function(config){
		if(config==null){
			config={};
		}
		
		var utils=this;
		
		var _url=config.url||"";
		var _contextRoot = config.contextpath||"";
		var _successFn=config.success||function(response){
			if(response.success){
    			window.location.href=response.data;
    		}else{
    			alert(response.data);
    		}
		};
		jQuery.ajax({
			url:_contextRoot+"/logout.htm",
			type:"POST",
			cache:false,
			dataType:"json",
			data:{url:_url},
			success:_successFn
		});
	};
	
	/**
	* 动态加载JS
	*/
	this.loadJs=function(file, callback){
		var script = document.createElement('script');
		script.type = 'text/javascript';
		if (callback) script.onload = script.onreadystatechange = function() {
		    if (script.readyState && script.readyState != 'loaded' && script.readyState != 'complete') return;
		    script.onreadystatechange = script.onload = null;
		    callback();
		};
		script.src = url;
		document.getElementsByTagName('head')[0].appendChild(script);
	};
	
	/**
	* 验证方法
	*/
	this.simpleValidate=new function(){
		return {
			required:function(v){
				//对v做处理，去除空格等
				return v.length>0;
			},
			email:function(v){
				return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(v);
			},
			url:function(v){
				return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(v);
			},
			date:function(v){
				return !/Invalid|NaN/.test(new Date(v));
			},
			number: function(v) {
				return /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(v);
			}
		}
	};
	
	this.submitCallBack=new function(result, data){
		
	}
	
};

/**
* var selector = new zz91AreaSelector({
* 	contextroot:Context.ROOT,
*	selects:["#country","#province","#city","#county"]
* });
* 
*/

var zz91Selector=function(config){
	config = config||{};
	this.url=config.url||"/category/areaChild.htm";
	this.assistUrl=config.assistUrl||"/category/areaChild.htm";
	var zz91sel = this;
	this.init =function(cfg){
		cfg=cfg||{};
		var rootCode=cfg.rootCode||"";
		var selectors=cfg.selects||[];
		var assistSelectors = cfg.assistSelects||[];
		var codeLength=cfg.codeLength||4;
		var initCode=cfg.initCode||"";
		var initAssistCode=cfg.initAssistCode||"";
		
		//初始化辅助类别（如果有）
		if(assistSelectors.length>0 && initAssistCode!=""){
			zz91sel.fillAssistOption(initCode, initAssistCode, assistSelectors[0]);
		}
		
		jQuery(selectors).each(function(idx,e){
			//初始化选择项	
			if(initCode.length>rootCode.length){
				if((rootCode.length+((idx+1)*codeLength))<=initCode.length){
					var p=initCode.substring(0, rootCode.length+(idx*codeLength));
					var c=initCode.substring(0, rootCode.length+(idx+1)*codeLength);
//					alert(p+"   "+c)
					zz91sel.fillOption(p,c,e);
				}else{
					if(initCode.length+codeLength == rootCode.length+((idx+1)*codeLength)){
						zz91sel.fillOption(initCode, "", e);
					}
				}
			}else{
				if(idx==0){
					zz91sel.fillOption(rootCode,"",e);
				}
			}
			
			//为选择器绑定事件
			jQuery(e).change(function(obj){
				//如果选中值不为空，则将选中值放入指定隐藏域
				if(assistSelectors.length>0){
					jQuery(assistSelectors[0]).val("");
					var ahtml= jQuery(assistSelectors[0]).find('option:selected').html();
					jQuery(assistSelectors[0]).empty();
					jQuery(assistSelectors[0]).append("<option value=''>"+ahtml+"</option>");
					if(jQuery(e).val()!="" && jQuery(e).val()!=null){
						zz91sel.fillAssistOption(jQuery(e).val(), "", assistSelectors[0]);
					}
				}
				
				if(typeof(selectors[idx+1])=="undefined"){
					return false;
				}
				
				//清除选择项后面的所有选择值
				for(var ii=idx;ii<selectors.length;ii++){
    				jQuery(selectors[ii+1]).val("");
					var html= jQuery(selectors[ii+1]).find('option:selected').html();
					jQuery(selectors[ii+1]).empty();
					jQuery(selectors[ii+1]).append("<option value=''>"+html+"</option>");
				}
				
				//ajax获取子类别
				if(jQuery(e).val()!="" && jQuery(e).val()!=null){
					zz91sel.fillOption(jQuery(e).val(),"",selectors[idx+1]);
				}
			});
		});
	}
	
	this.fillOption = function(parentCode, currentCode, targetElement){
		jQuery.ajax({
    		url:zz91sel.url,
    		type:"POST",
    		cache:false,
    		dataType:"json",
    		data:{"parentCode":parentCode},
    		success:function(req){
				jQuery(req).each(function(idx,e){
					jQuery(targetElement).append("<option value='"+e.code+"'>"+e.label+"</option>");
					
				});
				jQuery(targetElement).val(currentCode);
			},
    		error:function(e){
    		}
    	});
	}
	
	this.fillAssistOption = function(mainCode, currentCode, targetElement){
		jQuery.ajax({
    		url:zz91sel.assistUrl,
    		type:"POST",
    		cache:false,
    		dataType:"json",
    		data:{"mainCode":mainCode},
    		success:function(req){
				jQuery(req).each(function(idx,e){
					jQuery(targetElement).append("<option value='"+e.code+"'>"+e.label+"</option>");
				});
				jQuery(targetElement).val(currentCode);
			},
    		error:function(e){
    		}
    	});
	}
}

/**
* 
*/
var zz91CategoryPriceSelector = function(config){
	config = config||{};
	
	this.url=config.url||"/category/priceChild.htm";
	this.parentUrl = config.parentUrl||"/category/priceParent.htm";
	this.assistUrl = config.assistUrl||"/category/priceAssist.htm";
	
	var zz91sel = this;
	
	this.init =function(cfg){
		cfg=cfg||{};

		var selectors=cfg.selects||[];
		var assistSelectors = cfg.assistSelects||[];
		var rootCode=cfg.rootCode||0;
		var initCode=cfg.initCode||1;
		var initAssistCode=cfg.initAssistCode||"";
		
		//初始化主类别选择项
		if(initCode!=""){
    		jQuery.ajax({
        		url:zz91sel.parentUrl,
        		type:"POST",
        		cache:false,
        		dataType:"json",
        		data:{"id":initCode,"rootId":rootCode},
        		success:function(req){
    				var arr=new Array();
    				for(var i=(req.length-1);i>=0;i--){
    					arr.push(req[i]);
    				}
    				for(var i=1;i<=arr.length;i++){
    					zz91sel.fillOption(arr[i-1],arr[i],selectors[i-1]);
    				}
    			},
        		error:function(e){
        		}
        	});
		}
		
		//初始化辅助类别选择项
		zz91sel.fillAssistOption(initCode,initAssistCode,assistSelectors[0]);
		
		jQuery(selectors).each(function(idx,e){
			//为选择器绑定事件
			jQuery(e).change(function(obj){
				//如果选中值不为空，则将选中值放入指定隐藏域
				
				jQuery(assistSelectors[0]).val("");
				var ahtml=jQuery(assistSelectors[0]).find('option:selected').html();
				jQuery(assistSelectors[0]).empty();
				jQuery(assistSelectors[0]).append("<option value=''>"+ahtml+"</option>");
				zz91sel.fillAssistOption(jQuery(e).val(),"",assistSelectors[0]);
				
				if(typeof(selectors[idx+1])=="undefined"){
					return false;
				}
				
				//清除选择项后面的所有选择值
				for(var ii=idx;ii<selectors.length;ii++){
    				jQuery(selectors[ii+1]).val("");
					var html= jQuery(selectors[ii+1]).find('option:selected').html();
					jQuery(selectors[ii+1]).empty();
					jQuery(selectors[ii+1]).append("<option value=''>"+html+"</option>");
				}
				
				//ajax获取子类别
				zz91sel.fillOption(jQuery(e).val(),"",selectors[idx+1]);
			});
		});
		
	}
	
	this.fillOption = function(parentCode, currentCode, targetElement){
		if(parentCode==""){
			return false;
		}
		jQuery.ajax({
    		url:zz91sel.url,
    		type:"POST",
    		cache:false,
    		dataType:"json",
    		data:{"id":parentCode},
    		success:function(req){
				jQuery(req).each(function(idx,e){
					jQuery(targetElement).append("<option value='"+e.id+"'>"+e.name+"</option>");
				});
				jQuery(targetElement).val(currentCode);
			},
    		error:function(e){
    		}
    	});
	}
	
	this.fillAssistOption = function(mainCode,currentCode,targetElement){
		jQuery.ajax({
    		url:zz91sel.assistUrl,
    		type:"POST",
    		cache:false,
    		dataType:"json",
    		data:{"id":mainCode},
    		success:function(req){
				jQuery(req).each(function(idx,e){
					jQuery(targetElement).append("<option value='"+e.id+"'>"+e.name+"</option>");
				});
				jQuery(targetElement).val(currentCode);
			},
    		error:function(e){
    		}
    	});
	}
}


function checklogin(username,password,cookieMaxAge,url,randcode,randcodeKey,contextpath,fn){
	jQuery.ajax({
		url:contextpath+"/checkuser.htm",
		type:"POST",
		cache:false,
		dataType:"json",
		data:{username:username,password:password,cookieMaxAge:cookieMaxAge,url:url,randCode:randcode,randCodeKey:randcodeKey},
		success:fn,
		error:function(e){
			alert("您的账号存在问题,请再试一次,如果仍然出现错误,请联系我们!" );
		}
	});
}

function logout(url,contextpath,fn){
	jQuery.ajax({
		url:contextpath+"/logout.htm",
		type:"POST",
		cache:false,
		dataType:"json",
		data:{url:url},
		success:fn
	});
}

/*
 * search frame function 
 *
 */
function zz91SearchSlide(searchFrame,typeValue,searchInputFill){
	var searchInput    =$(searchFrame+" "+"input[id="+searchInputFill+"]");
	var typeValueInput =$(searchFrame+" "+"input[id="+typeValue+"]");
	var searchLabel    =$(searchFrame+" "+"label[id=search_label]");
	var searchTab      = $(searchFrame+" "+"ul[id=search_tab]");
	//alert(typeValueInput.val());
    searchTab.find("li").click(function(e) {
		searchTab.find("li").removeClass("searchSelected");
		$(this).addClass("searchSelected");
		searchInput.focus();
		var getLiIndex=$(this).index()
		typeValueInput.attr({value:function(){
			return getLiIndex+1;
		}
		});
    })
	if (searchInput.val() != ""){
		searchLabel.fadeOut(50);
	}
	searchInput.focus(function(){
		searchLabel.css({
			"color": "#DDDDDD"
		});
		searchInput.keydown(function(){
				var t = setTimeout(function(){
					if (searchInput.val() != "") {
						searchLabel.fadeOut(1);
					}
					else {
						searchLabel.fadeIn();
					}
				}, 100);
		});
	});
	searchInput.blur(function(){
			//clearTimeout(t);
			if ($(this).val() == "") {
				searchLabel.fadeIn(500).css({"color":"#999999"});
			}
	});
};


		
		
		
		
		
		

