// JavaScript Document
/**
* @copyright	Copyright (C) 2007 PixPro Stockholm AB. All rights reserved.
* @license		GNU/GPL, see LICENSE.php
* PixSearch is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

/**
* PixSearch javascript
*
* Used to process Ajax searches on a Joomla database.
*
* @author		Henrik Hussfelt <henrik@pixpro.net>
* @package		mod_pixsearch
* @since		1.5
* @version		0.4.0
*/

/*
Global language vars, to be set from languagefiles through mod_pixsearch.
*/
var _txtResults	= null;
var _txtClose	= null;
var _txtSearch	= null;
var _txtReadmore= null;
var _txtNoResults=null;
var _txtAdvSearch=null;
var _txtSearchLink=null;
var _txtURIBase	= null;
var _optLimit	= null;
var _optOrdering= null;
var _optPhrase	= null;
var _optHideDivs = null;
var _optIncludeLink=null;
var _txtViewAll	=null;
var _optShowCategory=null;
var _optShowReadmore=null;
var _optShowDescription=null;
var _optShowImage=null;

/*
Set global language vars
*/
function setSpecifiedLanguage(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
	_txtResults	= a;
	_txtClose	= b;
	_txtSearch	= c;
	_txtReadmore= d;
	_txtNoResults=e;
	_txtAdvSearch=f;
	_txtSearchLink=g;
	_txtURIBase	= h;
	_optLimit	= i;
	_optOrdering= j;
	_optPhrase	= k;
	_optHideDivs = l;
	_optIncludeLink = m;
	_txtViewAll	= n;
	_optShowCategory = o;
	_optShowReadmore = p;
	_optShowDescription = q;
	_optShowImage = r;
}

//function to trim the extra spaces 
/*
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
*/

/*
When DOMReady, execute js_code.
*/
window.addEvent('domready', function() {
	var addSearchResult = function() {
		var result_div = $('ps_results');
		var row="ps_row_2";
		var x=0;
		var res_header = new Element('div', {'class': 'ps_header' }).setHTML(_txtResults).injectInside(result_div);
		var link = new Element('a', {'id': 'ps_link' }).setProperty('href','#').setHTML(_txtClose).injectBefore(res_header);
		var splitDivs=_optHideDivs.split(" ");
		$('ps_link').addEvent('click', function(e) {
			e = new Event(e).stop();
			$('ps_search_str').value = _txtSearch;
			$('ps_results').empty().removeClass('ps_results').setStyle('visibility', 'hidden');
			// SHOW DIVS
			if(splitDivs.length > 0 && splitDivs != '') splitDivs.each(function(r){
				$(r).setStyle('visibility', 'visible');
			});
		});
		// HIDE DIVS
		if(splitDivs.length > 0 && splitDivs != '') splitDivs.each(function(r){
			$(r).setStyle('visibility', 'hidden');
		});
		
		//result_div.addClass('ps_results');
		search_res = $$('#pixsearch_tmpdiv fieldset');
		
		//alert(search_res);
		
		if(search_res.length > 0) search_res.each(function(res) {

			x +=1;
			var res_data='';
			
			res_data=res.getChildren();
			//alert(res_data);
			
			if(res_data.length > 0){
				
				res_data.each(function(r) {
					
					//alert("res_data");
					
					// MAKE A CHECK THAT OBJECT EXIST AND THAT THE LENGTH OF THE TITLE IS GREATER THEN 2
					if(r.getTag() == "div"){
						
						var addToResultSet = true;
							
						//if(r.getChildren().length > 2 && isDesiredTitleNotFound){
						if(r.getChildren().length > 2){
							
							//alert(">2");
							
							
							//Checking the category of result
							var m = r.getChildren().getLast().getText();
							m = m.replace(/^[\s]+/,'').replace(/[\s]+$/,'').replace(/[\s]{2,}/,' ');
							
							//setting href for products or articles
							var suri = "";
							if(m == "(Products)")
							{
								suri=r.getFirst().getNext().getNext().getProperty('href');
							}//if
							else
							{
								suri=r.getFirst().getNext().getProperty('href');
							}//else
							
							//toggling of css classes
							if(row == "ps_row_2") row = "ps_row_1";
							else row = "ps_row_2";
							
							
							
							//creating div element 'el'
							var el = new Element('div', {'class': row });
							
							
							
							//if show image option is true and category is products
							if(_optShowImage && m == "(Products)")
							{
								//alert(r.getFirst().getFirst());
								//var test = new Element('img').setProperty('src','./images/pcategories/thumbs/pkFlag_w.jpg').injectAfter(link);
								var imgElement = new Element('img', {'style': 'margin-right: 10px'}).setProperty('src',r.getFirst().getFirst().getProperty('src')).setProperty('align','left').setProperty('hspace','5').setProperty('height','90').setProperty('width','54').injectInside(el);
								
							}
							
							
							//now creating a link
							//setting its href property to 'suri'
							//then inject/place it within the div 'el'
							var link = new Element('a').setProperty('href',suri).injectInside(el).setProperty('style','float:left');
							
							
							//now creating a h3 element 'name'
							//placing it with the link created above
							//setting Heading for products or articles
							var name = "";
							if(m == "(Products)")
							{
								
								var html =  "<span>" + r.getFirst().getNext().getNext().getText() + "</span>";
								//var html =  "<span style='float:left'>" + r.getFirst().getNext().getNext().getText() + "</span>" + "<span style='float:right'>" + r.getChildren().getLast().getText() +  "</span>";
								
								name=new Element('h3').setHTML(html).injectInside(link);
							}//if
							else
							{
								var html =  "<span>" + r.getFirst().getNext().getText() + "</span>";
								name=new Element('h3').setHTML(html).injectInside(link);
								
								
							}//else
							
							
							//option for showing category
							if(_optShowCategory){
								
								//var cat = new Element('span', {'class': 'small'})
								//						.setHTML(r.getChildren().getLast().getText())
								//						.setProperty('align','left').injectAfter(link);
														
								var cat = new Element('span', {'style': 'display:block;font-style:italic;float:right'}).setHTML(r.getChildren().getLast().getText()).injectAfter(link);
								/**/
								//var cat = new Element('span', {'class': 'small'}).setHTML(r.getFirst().getNext().getNext().getText()).injectAfter(link);
								var br = new Element('br').injectAfter(cat);
								//alert(cat);
							}
							
							//option for showing description
							var description
							if(_optShowDescription) 
							{
								if (r.getNext() != null)
								{
									description=r.getNext().getText();
								}
								else
								{
									description = '';
									addToResultSet = false;
								}
							}
							else
							{
								description = '';
							}
							
							var desc = new Element('span').setHTML(description).injectAfter(br);
							
							
							//option for showing read more
							if(_optShowReadmore){
								var link = new Element('a',{'class': 'clearboth'}).setProperty('href',suri).setHTML(_txtReadmore).injectAfter(desc);
								if(_optShowDescription) var br = new Element('br').injectAfter(desc);
							}
							
							if(m == "(Products)")
							{
								var br = new Element('br').injectAfter(desc);
								var br2 = new Element('br').injectAfter(br);
							}
							
							if(addToResultSet)
							{
								el.inject(result_div);
							}
							//alert(result_div.getFirst());
						}
					}
				});
			}
		});
		if(x < 1){
			
			/*
			var el = new Element('div', {'class': "ps_row_1" });
			var name = new Element('h3').setHTML(_txtNoResults).injectInside(el);
			var link = new Element('a').setProperty('href',_txtSearchLink).injectAfter(name);
			var name = new Element('span').setHTML(_txtAdvSearch).injectInside(link);
			el.inject(result_div);
			*/
			
			var splitDivs=_optHideDivs.split(" ");
			$('ps_results').empty().removeClass('ps_results').setStyle('visibility', 'hidden');
			
		}else{
			if(_optIncludeLink == 1){
				var el = new Element('div', {'class': "ps_row_btm" });
				var link2 = new Element('a').setProperty('href',"javascript:document.pp_search.limit.value='';document.pp_search.submit();").injectInside(el);
				var name = new Element('span').setHTML(_txtViewAll).injectInside(link2);
				el.inject(result_div);
			}
		}
	}
	$('ps_search_str').addEvent('click', function(e) {
		if($('ps_search_str').value == _txtSearch) $('ps_search_str').value = '';
	});

	$('ps_search_str').onkeyup = function(){
		var curtime = new Date();
		var url = _txtURIBase+'/index2.php';
		if($('ps_search_str').value == ''){
			var splitDivs=_optHideDivs.split(" ");
			$('ps_results').empty().removeClass('ps_results').setStyle('visibility', 'hidden');
			// SHOW DIVS
			if(splitDivs.length > 0 && splitDivs != '') splitDivs.each(function(r){
				$(r).setStyle('visibility', 'visible');
			});
		}
		else{
			var req = new Ajax(url, {
				method: 'get',
				delay : 200,
				data: {
				'option' : 'com_search',
				'view' : 'search',
				'searchphrase' : _optPhrase, //any,all,exact
				'ordering' : _optOrdering, // popular,oldest,newest,alpha,category
				'limit' : _optLimit, // 10
				'searchword' : $('ps_search_str').value,
				'r' : curtime.getTime()
				},
				onComplete: function(results) {
					var theNewEle = new Element('div').setHTML(results);

					theNewEle.getChildren().each(function(r) {
						
						if(r.getProperty('id') == 'content'){
							
							//now trasversing div hiearchy in default.php of com_search
							
							//div id = right_column_template_a
							//id = r.getFirst().getFirst().getProperty('id');
							div1 = r.getChildren().getFirst();
							
							//div id = right_column_template_a1
							//id2 = div1.getFirst().getNext().getFirst().getProperty('id');
							div2 = div1.getFirst().getNext().getFirst();
							
							//div id = div_search_results
							//id3 = div2.getFirst().getNext().getProperty('id');
							table = div2.getFirst().getNext();
							
							var tmp = $('pixsearch_tmpdiv');
							table.injectInside(tmp);
							
						}//if
						
					});//each
							
					$('ps_results').empty().removeClass('ps_results').setStyle('visibility', 'visible');
					addSearchResult();
					$('pixsearch_tmpdiv').empty().setStyle('visibility','visible');
				}
			});
			var rq = req.request.delay(200,req);
			$('ps_search_str').onkeydown = function(){$clear(rq);};
		}
	}
});