/**
 * http://www.jobcn.com/
 * By zhangping
 *
 * For: IE6,IE7,Firefox	
 * 
 * Required : dailog.js, masker.js;
 */


function CatelogDailog(config){
	//extends Dailog
	Dailog.call(this, config);
	
	var self = this;
	var config = this.getConfig();
		
	//catelogs数组的每个元素为一个大类，每个元素第一个子元素为不限，及 对应值%100==0；
	//每个元素的第二个子元素开始，为其子类的列表及 对应值%100!=0；
	var catelogs = new Array();
	var cat = null;
	for(var i=0; i<config.data.length; i++){
		if(config.data[i][3]==1){
			cat = catelogs[catelogs.length] = new Array();
			cat[0] = config.data[i];				
		}else{
			cat[cat.length] = config.data[i];
		}
	}	
	
		
	var supCatelogTable  = getSupCatelogTable();
	var allCatelog = getSelectAllBox();

	self.append(getSupCatelogPrompt());
	self.append(allCatelog);
	self.append(supCatelogTable);
	
	this.supCheckValue = config.allValue;
	this.supCheckLabel = config.allLabel;
	this.subCheckValue = '0';
	this.subCheckLabel = config.promptNull;
	
	this.listSupCatelog = listSupCatelog;
	this.listSubCatelog = listSubCatelog;	
	
	function getSupCatelogTable(){
		var cells = new Array();
		var link = null;
		for(var i=0;i<catelogs.length;i++){
			link = document.createElement('A');					
			link.value = catelogs[i][0][2];
			link.label = catelogs[i][0][0].replace('-不限','');					
			link.href = "javascript:void(0)";
			link.onclick = function() { listSubCatelog(this.value,  this.label + '不限'); };
			link.appendChild(document.createTextNode(link.label));		
			cells[cells.length] = link;		
		}			
		return Dailog.util.createTable(cells, config.colunms, config.oddBgColor, config.eveBgColor);	
	}
	
	function getSubCatelogTable(id){
		var cat = null;
		for(var i=0;i<catelogs.length;i++)
			if(catelogs[i][0][2]==id){cat = catelogs[i]; break; }
		if(!cat) return;
			
		var back = document.createElement('A');
		back.href = "javascript:void(0)";
		back.onclick = function() { listSupCatelog() };
		back.appendChild(document.createTextNode('返回'));		
			
		var cells = new Array();
		var link = null;
		for(var i=1;i<cat.length;i++){
			link = document.createElement('A');					
			link.value = cat[i][2];
			link.label = cat[i][0];					
			link.href = "javascript:void(0)";
			link.onclick = function() { check(this.value, this.label); };
			link.appendChild(document.createTextNode(link.label));		
			cells[cells.length] = link;		
		}
		return Dailog.util.createTable(cells, config.colunms, config.oddBgColor, config.eveBgColor);	
	}
			
	function getSearchResultTable(key){
		key = key ? key.replace(/(^\s*)|(\s*$)/g, "") : '';	
				
		var table = document.createElement('TABLE');
		table.style.width = "100%";
		table.cellSpacing = 0;
		table.cellPadding = 0;
		var tbody = document.createElement('TBODY');
		table.appendChild(tbody);
					
		var tr = null;
		var td = null;
		var header = null; 	
					
  		for(var i = 0; i < catelogs.length; i++){
  			header = document.createElement('TR');    		
    		header.className = 'sup';
  			td = document.createElement('TD');
    		header.appendChild(td);
    		td.appendChild(document.createTextNode(catelogs[i][0][0].replace("-不限","")));
    		td = document.createElement('TD');
    		header.appendChild(td);
    		td.appendChild(document.createTextNode(catelogs[i][0][1]));
  			
  			for(var j=0;j<catelogs[i].length;j++) {  			
		    	if(catelogs[i][j][0].indexOf(key) > -1 || catelogs[i][j][1].indexOf(key) > -1){
		    		if(!!header){
		    			tbody.appendChild(header);
		    			header = null;
		    		}
					tr = document.createElement('TR');
			  		tbody.appendChild(tr); 
			  		tr.className = 'sub';   
					td = document.createElement('TD');
			  		tr.appendChild(td);
			  		td.appendChild(document.createTextNode(catelogs[i][j][0]));
			  		td = document.createElement('TD');
			  		tr.appendChild(td);
			  		td.appendChild(document.createTextNode(catelogs[i][j][1]));
			
			  		tr.onmouseover = function(){this.style.backgroundColor ="#E1EBE0"};
			  		tr.onmouseout = function(){this.style.backgroundColor ="#FFF"};
			  		tr.value = catelogs[i][j][2];
			  		tr.label = catelogs[i][j][0];
			  		tr.onclick = function(){ check(this.value, this.label); };
		  		}  			
  			}
   		}
   		return table;
	}
		
	function getSupCatelogPrompt(){
		var input = document.createElement('INPUT');
 		input.type = "text";
 		input.id = "id_text_search_field";
 		input.size = 15;
 		input.onkeyup = function(eve){
 			if(!eve) eve = window.event;
 			if(eve.keyCode == 13) searchCatelog(input.value);			
 		}
 		
 		var button = document.createElement('INPUT');
 		button.type = "button";
 		button.value = "查询";
 		button.onclick = function(){ searchCatelog(input.value);};
 		 				
		var table = document.createElement('TABLE');
		table.style.width = "100%";
		table.cellSpacing = 0;
		table.cellPadding = 0;
		var tbody = document.createElement('TBODY');
		table.appendChild(tbody);
					
		var tr = document.createElement('TR');		
		tbody.appendChild(tr); 
		
		var td = document.createElement('TD');			
		tr.appendChild(td);
		td.appendChild(getPrompt());
		
		td = document.createElement('TD');
		tr.appendChild(td);
		td.width = "170px";
		//td.appendChild(document.createTextNode(config.searchLabel));
		td.appendChild(input);	
		td.appendChild(button);
		table.className = "prompt";
		return table;			
	}	
	
	function getSubCatelogPrompt(){
		var back = document.createElement('A');
		back.href = "javascript:void(0)";
		back.onclick = function() { listSupCatelog() };
		back.appendChild(document.createTextNode('[返回]'));
		back.className = "bold";
		
		var table = document.createElement('TABLE');
		table.style.width = "100%";
		table.cellSpacing = 0;
		table.cellPadding = 0;
		var tbody = document.createElement('TBODY');
		table.appendChild(tbody);
					
		var tr = document.createElement('TR');		
		tbody.appendChild(tr); 
		var td = document.createElement('TD');
		tr.appendChild(td);
		
		//td.appendChild(document.createTextNode(cat[0][0].replace('-不限','')));
		td.appendChild(getPrompt());
		
		td = document.createElement('TD');
		tr.appendChild(td);
		td.width = "45px";
		td.appendChild(back);				
		table.className = "prompt";
		return table;
	}
	
	
	function getSearchCatelogPrompt(){
		var back = document.createElement('A');
		back.href = "javascript:void(0)";
		back.onclick = function() { listSupCatelog(); };
		back.appendChild(document.createTextNode('[返回]'));	
		back.className = "bold";
				
 		var input = document.createElement('INPUT');
 		input.type = "text";
 		input.id = "id_text_search_field";
 		input.size = 15;
 		input.onkeyup = function(eve){
 			if(!eve) eve = window.event;
 			if(eve.keyCode == 13) searchCatelog(input.value);			
 		}
 		
 		var button = document.createElement('INPUT');
 		button.type = "button";
 		button.value = "查询";
 		button.onclick = function(){ searchCatelog(input.value);}; 		
 				
		var table = document.createElement('TABLE');
		table.style.width = "100%";
		table.cellSpacing = 0;
		table.cellPadding = 0;
		var tbody = document.createElement('TBODY');
		table.appendChild(tbody);
					
		var tr = document.createElement('TR');		
		tbody.appendChild(tr); 
		
		var td = document.createElement('TD');
		tr.appendChild(td);
		td.appendChild(getPrompt());
				
		td = document.createElement('TD');
		tr.appendChild(td);		
		td.width = "170px";		
		td.appendChild(input);	
		td.appendChild(button);
		
		td = document.createElement('TD');
		tr.appendChild(td);		
		td.width = "45px";	
		td.appendChild(back);
					
		table.className = "prompt";		
		return table;
	}
		
	function getSelectAllBox(value, label){	
		var div = document.createElement('DIV');
		var link = document.createElement('A');					
		link.value = value || config.allValue;
		link.label = label || config.allLabel;					
		link.href = "javascript:void(0)";
		link.onclick = function() { check(this.value, this.label); };		
		var span = document.createElement('SPAN');	
		span.appendChild(document.createTextNode(link.label));
		span.className = "bold";
		link.appendChild(span);
		div.appendChild(link);
		return div;
	}

	function getPrompt(){
		var prompt = document.createElement('SPAN');		
		prompt.appendChild(document.createTextNode(config.promptLabel));
 		var span = document.createElement('SPAN');
 		span.className = "bold";	
		prompt.appendChild(span);	
		var text = self.subCheckLabel ? (self.supCheckLabel + '-'+ self.subCheckLabel) : config.promptNull;
		span.appendChild(document.createTextNode(text));
		if(self.subCheckLabel) span.title = self.supCheckLabel + '-'+ self.subCheckLabel;	
		prompt.style.marginBottom = "2px";
		return prompt;
	}

	function listSupCatelog(){
		self.clear();	
		self.append(getSupCatelogPrompt());
		self.append(allCatelog);
		self.append(supCatelogTable);
	}
	
	function listSubCatelog(value, label){
		if(!value || parseInt(value)==0) return;;
		
		self.clear();
		self.append(getSubCatelogPrompt());
		self.append(getSelectAllBox(value, label));
		self.append(getSubCatelogTable(value, label));
	}
		
	function searchCatelog(id){
		var div = document.createElement('DIV');
		if(config.height) div.style.height = parseInt(config.height) - 75 + 'px';
		else div.style.height = "450px"		
		div.style.overflowX = "hidden";
		div.style.overflowY ="scroll";
		//for ie6, the place for scroll bar
		if(Masker && Masker.ie6) div.style.width = parseInt(config.width) - 18 + 'px';		
		div.appendChild(getSearchResultTable(id));				
		
		self.set(getSearchCatelogPrompt());
		self.append(div);
	}
	
	function check(value, label){
		if(value%100==0) {			
			self.subCheckValue = value;
			self.subCheckLabel = '不限';
			self.supCheckValue = value;
			self.supCheckLabel = label;
		}else {
			self.subCheckValue = value;
			self.subCheckLabel = label;
			self.supCheckValue = parseInt(value/100)*100;			
			for(var i=0;i<catelogs.length;i++){
				if(catelogs[i][0][2]== self.supCheckValue){
					self.supCheckLabel = catelogs[i][0][0].replace('-不限','');
					break;
				}
			}
		}
		config.submit(value, label);					
		self.hide();
	}

}
