/*               
 * 
 * for client side advanced search. copied from search.jsp with some modifications.
 *                                                                                                                                        
 * @author:trs-ldr
 * @date:06-09-20
 * @desc:operations to search banner
 * character encoding: utf-8
 */ 
var tt = ["包含", "等于"];
var ut = ["包含", "等于"];
var ft = ["小于", "等于", "大于"];
var sname = ["作者", "标题", "文件大小", "标签"];
var Content = ["等于"];
var Contains = ["包含"];
var TypeName = ["user", "title", "filesize", "keywords"];
var TypeId = ["ut", "tt", "ft"];
 
function trim(str) {
	return str.replace(/^\s*/ig, "").replace(/\s*$/ig, "");
}
 
function searchInit(frmName, fs, ss, ft){
	var banner = null;
	
	if(typeof(fs) == "undefined"){
		for(var i = 0; i < document[frmName].length; i += 1){
			banner = new SearchBanner(document[frmName][i]);
		}
	}
	else{
		for(var i = 0; i < document[frmName].length; i += 1){
			banner = new SearchBanner(document[frmName][i], fs, ss, ft);
		}
	}
};

function SearchBanner(formId, fSelect, sSelect, fText){
	this.tt = tt;
	this.ut = ut;
	this.ft = ft;
	this.sname = sname;
	this.Content = Content;
	this.Contains = Contains ;
	this.Type = [this.tt, this.ut, this.ft, this.Contains]; //this.Content, 
	this.TypeName = TypeName;
	this.TypeId = TypeId;
	
	if(typeof(formId) == "undefined" || formId == "")
		return;
	
	if(typeof(formId) == "object")
		this.form = formId;
	else
		this.form = document.getElementById(formId);

	//如果没有select的name参数
	if(typeof(fSelect) == "undefined"){
		this.select1 = this.form["select"];
		this.select2 = this.form["select2"];
		this.inputText = this.form["textfield"];
	}
	else{
		this.select1 = this.form[fSelect];
		this.select2 = this.form[sSelect];
		this.inputText = this.form[fText];
	}	

	//获取提交按钮
	//var smtParent = this.inputText.parentNode.nextSibling;
	//if(this.inputText.parentNode.nextSibling != null)
	//if(typeof(this.inputText.nextSibling) == "undefined")
	//	this.smt = smtParent.getElementsByTagName("input")[0];
	//else
	//	this.smt = this.inputText.nextSibling;
	var inputs = this.form.getElementsByTagName("input");

	for(var k = 0; k < inputs.length; k += 1){
		if(inputs[k].type == "image"){
			this.smt = inputs[k];
			break;
		}
	}
	
	//初始化两个select
	this.fillSelect(this.select1, this.sname);
	this.fillSelect(this.select2, this.tt);
	
	var caller = this;
	this.smt.onmousedown = function(){
//		if(caller.inputText.value == "" ){
//			alert("请输入要检索的内容");
//			return false;
//		}
		return true ;
	}
	/*
	this.inputText.onmouseover = function(){
		this.focus();
	}
	this.inputText.onfocus = function(){
		this.select();
	}
	*/
	this.select1.onchange = function(){
		var items = caller.select1;
		var item = null;
		//caller.prepare();
		
		//alert(items.length + " " + caller.Type.length);
		for(var i = 0; i < items.length; i += 1){
			item = items[i];
			if(item.selected){
				//if(item.value == 3){
					//var cur = new Date();
					//caller.inputText.value = cur.getFullYear() + "-" + caller.addZero(eval(cur.getMonth()+ 1)) + "-" + caller.addZero(cur.getDate());
				//}
					
				caller.fillSelect(caller.select2, caller.Type[i]);
				break;
			}
		}
	}
	
/*	this.smt.onclick = function(){
		if(caller.select1.value == "createdTime"){
			if(caller.inputText.value == "" || (caller.inputText.value.search(/\d{4}-\d{2}-\d{2}/) == 0 && caller.inputText.value.length == 10 )){
				caller.form.submit;
			}
			else{
			//如果有非数字，或者与格式不一致，或者长度超长的都返回
				alert("抱歉, 您输入的时间的格式不正确，正确的为 YYYY-MM-DD, 如 2006-02-05");
				return false;
			}
		}
	}
*/	
	
	//为提交的图增加点击事件
	this.smt.onclick = function(){
		var sValue = caller.select1.value; 
		//caller.prepare();
		
		caller.setToEmpty();
		sValue = TypeName[sValue];
//		if( sValue == "createdTime"){
//			if(caller.inputText.value.search(/\d{4}-\d{2}-\d{2}/) == 0 && caller.inputText.value.length == 10 ){
//				//caller.form.submit;
//				caller.form.stime.value = caller.inputText.value + " 00:01";
//				caller.form.etime.value = caller.inputText.value + " 23:59";
//				return true;
//			}
//			else{
//			//如果有非数字，或者与格式不一致，或者长度超长的都返回
//				alert("抱歉, 您输入的时间的格式不正确，正确的为 YYYY-MM-DD, 如 2006-02-05");
//				return false;
//			}
//		}
//		else 
		if( sValue == "filesize"){
			var rValue = caller.inputText.value;
			if(rValue.search(/(\d+|\d+.\d+)k/i) == 0 || (rValue.search(/(\d+|\d+.\d+)/) == 0 && rValue.search(/[^.,0,1,2,3,4,5,6,7,8,9]/) == -1)){
				if(rValue.indexOf("k") != -1 || rValue.indexOf("K") != -1)
					caller.inputText.value = parseFloat(rValue) * 1024;
				//caller.form.submit();
				caller.form.filesize.value = caller.inputText.value;
				caller.form.ft.value = caller.select2.value;
				return true;
			}
			else{
			//如果非数字或者不是如10k,120K形式的文字，则返回
				alert("抱歉, 请输入数字或者数字加 K/k，如5.6, 10, 1.2k, 5K");
				return false;
			}
		}
		else if( sValue == "title"){
			caller.form.title.value = caller.inputText.value;
			caller.form.tt.value = caller.select2.value;
			return true;
		}
		else if( sValue == "user"){
			caller.form.user.value = caller.inputText.value;
			caller.form.ut.value = caller.select2.value;
			return true;
		}else if( sValue == "keywords"){
			var rValue = trim(caller.inputText.value);
			
			if(!rValue){
				alert("抱歉,请输入要检索的标签");
				return false;
			}
			
			if(rValue.split(/\s+/ig).length > 3) {
				
				alert("抱歉,一次最多只能输入3个标签。现在您输入了" + rValue.split(/\s+/ig).length + "个");
				
				return false;
			}
			
			caller.form.keywords.value = rValue;
//			caller.form.ut.value = caller.select2.value;
			
			return true ;
		} 
		return true;
		//caller.form.submit();
	}
}
//用数组将一个select填充
SearchBanner.prototype.fillSelect = function(obj, values){
	var value = null;
	var option = null;

	while(obj.hasChildNodes()){
		obj.removeChild(obj.childNodes[0]);
	}

	for(var i = 0; i < values.length; i += 1){
		value = values[i];
		option = document.createElement("option");
		option.appendChild(document.createTextNode(value));
		obj.appendChild(option);
		option.setAttribute("value", i);
	}
	delete values;
	//delete obj;
}
SearchBanner.prototype.setToEmpty = function(){
	this.form.user.value = "";
	this.form.ut.value = "";
	this.form.filesize.value = "";
	this.form.ft.value = "";
	this.form.title.value = "";
	this.form.tt.value = "";
}
//将单字前增加0，例5变为05
SearchBanner.prototype.addZero = function(n){
	var num = n + "";
	if(num.length > 1)
		return num;
	return "0" + num;
}
function selectAll(self, cbxs){
	if(self.value == "全部选中"){
		for(var i = 0 ; i < cbxs.length ; i += 1){
			c = cbxs[i];
			c.checked=true;	
		}
		self.value="全部取消";
	}
	else{
		for(var i = 0 ; i < cbxs.length ; i += 1){
			c = cbxs[i];
			c.checked=false;	
		}
		self.value="全部选中";
	}
}
