/* author:	Richard Schmid, infolox GmbH, http://www.infolox.de */

function HWSearchView( i18n ){
	this.items = new Array();
	this.variants = new Array();
	this.searchWord = "undefined";
	this.models = new Array();
	this.i18n = i18n;
	
	this.setFoundItems = function( items ){
		this.items = items;
	};
	
	this.setVariants = function( variants ){
		this.variants = variants;
	};

	this.setSearchWord = function( str ){
		if (str != "") {
			this.searchWord = str;
		}
	};
	
	this.setModels = function( models ){
		this.models = models;
	};

	this.appendStdResultBlock = function(oParent_){
		if (this.items.length > 0) {
			this.__getStdResultHead(oParent_);
			this.__getStdResultTable(oParent_);
		}
	};
	
	this.appendSplittedResultBlock = function(oParent_){
		if (this.models.length > 0) {
			this.__getSplittedResultTable(oParent_);
		}
	};

	this.appendNoResultBlock = function(oParent_){
		this.__getNoResultTable(oParent_);
	};

	this.__getNoResultTable = function(oParent_) {
		var oRes = document.createElement("DIV");
		oParent_.appendChild(oRes);
		oRes.className = "results";
		
		var sResultFor = "<strong>"+this.i18n['SearchResultFor']+" <span class='marked'>"+this.searchWord+"</span>";
		var sResultHits = "<p>"+this.i18n['Hits']+" <span class='marked'>"+this.items.length+"</span></p>";
		if (this.variants.length > 0) {
			sResultFor += " [";
			for (var i in this.variants) {
				sResultFor += this.variants[i];
				if (i < (this.variants.length-1)) {
					sResultFor += ", ";
				}
			}
			sResultFor += "]";
		}
		sResultFor += "</strong>";
		oRes.innerHTML = sResultFor+sResultHits;
	}

	this.__getSplittedResultTable = function(oParent_) {
		var oRes = document.createElement("DIV");
		oParent_.appendChild(oRes);
		oRes.className = "results";
		
		var sResultFor = "<strong>"+this.i18n['SearchResultFor']+" <span class='marked'>"+this.searchWord+"</span>";
		var sResultHits = "<p>"+this.i18n['Hits']+" <span class='marked'>"+this.items.length+"</span></p>";
		if (this.variants.length > 0) {
			sResultFor += " [";
			for (var i in this.variants) {
				sResultFor += this.variants[i];
				if (i < (this.variants.length-1)) {
					sResultFor += ", ";
				}
			}
			sResultFor += "]";
		}
		sResultFor += "</strong>";
		oRes.innerHTML = sResultFor+sResultHits;
		for (var i in this.models) {
			var sModelSearchWord = this.models[i].getSearchWord();
			var aModelFoundItems = this.models[i].getFoundItems();
			sResultFor = "<strong>"+this.i18n['SearchResultFor']+" <a href='javascript:HWSearchController.init(" + '"' + sModelSearchWord + '"' + ");'>"+sModelSearchWord+"</a></strong>";
			sResultHits = "<p>"+this.i18n['Hits']+" <a href='javascript:HWSearchController.init(" + '"' + sModelSearchWord + '"' + ");'>"+aModelFoundItems.length+"</a></p>";
			oRes = document.createElement("DIV");
			oParent_.appendChild(oRes);
			oRes.className = "results";

			oRes.innerHTML = sResultFor+sResultHits;
		}
	}

	this.__getStdResultHead = function(oParent_) {
		var oRes = document.createElement("DIV");
		oParent_.appendChild(oRes);
		oRes.className = "results";
		
		var sResultFor = "<strong>"+this.i18n['SearchResultFor']+" <span class='marked'>"+this.searchWord+"</span>";
		var sResultHits = "<p>"+this.i18n['Hits']+" "+this.items.length+"</p>";
		if (this.variants.length > 0) {
			sResultFor += " [";
			for (var i in this.variants) {
				sResultFor += this.variants[i];
				if (i < (this.variants.length-1)) {
					sResultFor += ", ";
				}
			}
			sResultFor += "]";
		}
		sResultFor += "</strong>";
		oRes.innerHTML = sResultFor+sResultHits;
	};
	
	this.__getStdResultTable = function(oParent_){
		var table = document.createElement("TABLE");
		var thead = document.createElement("THEAD");
		var tbody = document.createElement("TBODY");
		var tr = document.createElement("TR");
		var td_1 = document.createElement("TH");
		var td_2 = document.createElement("TD");
		
		table.appendChild( thead );
		table.appendChild( tbody );
		thead.appendChild( tr );
		tr.appendChild( td_1 );
		tr.appendChild( td_2 );
		
		table.className = "search";
		td_2.colSpan = 3;
		
		td_1.innerHTML = this.i18n['Type'];
		td_2.innerHTML = this.i18n['GroupName'];
		
		this.__buildItemsRows( tbody );
		
		oParent_.appendChild(table);
	};
	
	this.__buildItemsRows = function( tbody ){
		for (var i = 0; i < this.items.length; i++) {
			if (!this.items[i]['group_id']) continue;
			
			var tr = document.createElement("TR");
			tbody.appendChild(tr);
			tr.className = "group";
			
			var td_1 = document.createElement("TH");
			var td_2 = document.createElement("TD");
			tr.appendChild(td_1);
			tr.appendChild(td_2);
			
			td_2.className = "GroupName";
			td_2.colSpan = 3;
			
			if (this.items[i]['pictures'] && (this.items[i]['pictures'] != [])) {
				var pics_table = document.createElement("TABLE");
				var pics_tbody = document.createElement("TBODY");
				var pics_tr = document.createElement("TR");
				
				td_1.appendChild(pics_table);
				pics_table.appendChild(pics_tbody);
				pics_tbody.appendChild(pics_tr);
				pics_table.className = "pictures";
				
				for (var j = 0; j < this.items[i]['pictures'].length; j++ ) {
					var img = document.createElement("IMG");
					img.src = gsRelPath+this.items[i]['pictures'][j];
					img.align = "middle";
					img.border = 0;
					
					var pic_group_link = document.createElement("A");
					pic_group_link.href = gsRelPath+"ecatdata/pg_"+this.items[i]['group_id'].toLowerCase()+".html";
					pic_group_link.appendChild( img );

					var pics_td = document.createElement("TD");
					pics_tr.appendChild( pics_td );
					pics_td.appendChild( pic_group_link );
					
					pics_td.className = "simg";
				}
			}
			
			var group_link = document.createElement("A");
			group_link.href = gsRelPath+"ecatdata/pg_"+this.items[i]['group_id'].toLowerCase()+".html";
			group_link.innerHTML = this.items[i]['group_name'];
			td_2.appendChild( group_link );

			if (this.items[i]['subgroups'] != []) {
				for (var j = 0; j < this.items[i]['subgroups'].length; j++ ) {
					var s_tr = document.createElement("TR");
					var s_td_1 = document.createElement("TH");
					var s_td_2 = document.createElement("TD");
					var s_td_3 = document.createElement("TD");
					var s_td_4 = document.createElement("TD");
					
					tbody.appendChild(s_tr);
					s_tr.appendChild(s_td_1);
					s_tr.appendChild(s_td_2);
					s_tr.appendChild(s_td_3);
					s_tr.appendChild(s_td_4);
					
					s_tr.className = "type";
					s_td_1.className = "TypeNo";
					if (this.items[i]['subgroups'][j]['typenumbers'].length == 0)
						s_td_1.innerHTML = "&nbsp;";
					s_td_2.className = "Docname";
					s_td_3.className = "PDFs";
					s_td_4.className = "PDFsFS";
					if (this.items[i]['subgroups'][j]['pdf_documents'].length == 0) {
						s_td_2.innerHTML = "<br />";
						s_td_3.innerHTML = "<br />";
						s_td_4.innerHTML = "<br />";
					}
					
					for (var k = 0; k < this.items[i]['subgroups'][j]['typenumbers'].length; k++ ) {
						var type_div = document.createElement("DIV");
						type_div.innerHTML = this.__markStringForSearchWord(this.items[i]['subgroups'][j]['typenumbers'][k]);
						
						s_td_1.appendChild(type_div);
					}
					
					for (var k = 0; k < this.items[i]['subgroups'][j]['pdf_documents'].length; k++ ){
						//1st PDF-col
						var doc_ref_div = document.createElement("DIV");
						var doc_ref_link = document.createElement("A");
						
						doc_ref_link.href = gsRelPath+"pdf/" + this.items[i]['subgroups'][j]['pdf_documents'][k]['document_name'];
						doc_ref_link.innerHTML = this.items[i]['subgroups'][j]['pdf_documents'][k]['file_name'];
						
						s_td_2.appendChild(doc_ref_div);
						doc_ref_div.appendChild(doc_ref_link);

						//2nd PDF-col
						var doc_name_div = document.createElement("DIV");
						var doc_name_link = document.createElement("A");
						doc_name_link.href = doc_ref_link.href;
						doc_name_link.innerHTML = this.items[i]['subgroups'][j]['pdf_documents'][k]['document_name'];
						s_td_3.appendChild(doc_name_div);
						doc_name_div.appendChild(doc_name_link);

						//3rd PDF-col
						var doc_fs_div = document.createElement("DIV");
						doc_fs_div.innerHTML = this.items[i]['subgroups'][j]['pdf_documents'][k]['file_size'];
						s_td_4.appendChild(doc_fs_div);
					}
				}
			}
		}
	};
	
	this.__markStringForSearchWord = function( in_string ){
		var reg_1 = new RegExp("("+this.searchWord+")", "gi");
		var reg_2 = "<span class='marked'>$1</span>";
		
		return in_string.replace(reg_1, reg_2);
	};
};


