/**

* @package mod_vm_live_product

*

* @license		http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL, see LICENSE.php

* VM Live Product Search 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.

*/



/**

 * VM Live Product Search

 *

 * Used to process Ajax searches on a Virtuemart 1.1.2 Products.

 * Based on the excellent mod_pixsearch live search module designed by Henrik Hussfelt (henrik@pixpro.net - http://pixpro.net)

 * @author		John Connolly <webmaster@GJCWebdesign.com>

 * @package		mod_vm_live_product

 * @since		1.5

 * @version     0.6.0

 */



/*

Global language vars, to be set from languagefiles through mod_vm_live_product.

*/

var _txtResults	= null;

var _txtClose	= null;

var _txtSearch	= null;

var _txtOneresult= null;

var _txtRedirect=null;

var _txtSearchLink=null;

var _txtURIBase	= null;

var _vmtemplate=null;

var _txtNoResult=null;

var _searchBy=null;

var _redirecturl=null;

/*

Set global language vars

*/

function setSpecifiedLanguage(a,b,c,d,e,f,g,h,j,k,l){

	_txtResults	= a;

	_txtClose	= b;

	_txtSearch	= c;

	_txtOneresult= d;

	_txtRedirect=e;

	_txtSearchLink=f;

	_txtURIBase	= g;

	_vmtemplate = h;

	_txtNoResult = j;

	_searchBy   = k;

	_redirecturl   = l;

}



/*

When DOMReady, execute js_code.

*/
  
function rawurlencode (str) {

 
    var hexStr = function (dec) {
        return '%' + dec.toString(16).toUpperCase();
    };
 
    var ret = '',
            unreserved = /[\w.~-]/; // A-Za-z0-9_.~-
    str = (str+'').toString();
 
    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            // Reserved assumed to be in UTF-8, as in PHP
            if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048 && code < 65536) { // 3 bytes
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 65536) { // 4 bytes
                ret += hexStr((code >> 18) | 0xF0);
                ret += hexStr(((code >> 12) & 0x3F) | 0x80);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
}

window.addEvent('domready', function() {

	var addSearchResult = function() {

		var result_div = $('vmlp_results');

		var row="vmlp_row_2";
    strserch2=$('vmlp_search_str').value;
       var searchstring2 = rawurlencode(strserch2);

var searchlim = "printer";


var requrl = (_redirecturl)+"index.php?keyword1="+rawurlencode($('vmlp_search_str').value)+"&Search=Search&Itemid=1&option=com_virtuemart&page=shop.browse&search_limiter="+searchlim;

		var res_header = new Element('div', {'class': 'vmlp_header' }).setHTML(_txtResults).injectInside(result_div);

		var link = new Element('a', {'id': 'vmlp_link' }).setProperty('href','#').setHTML(_txtClose).injectBefore(res_header);

		$('vmlp_link').addEvent('click', function(e) {

			e = new Event(e).stop();

			$('vmlp_search_str').value = _txtSearch;

			$('vmlp_results').setHTML('<a href="http://www.gjcwebdesign.com">Web Design England Belgium</a>').removeClass('vmlp_results').setStyle('visibility', 'hidden');

		});



		result_div.addClass('vmlp_results');

		 var testresult = $$('#vmlpsearch_tmpdiv #zero_results');

		  search_res = $$('#vmlpsearch_tmpdiv '+_vmtemplate);	  

		var test2 = search_res.length;

	    var test1 =testresult.length;

		var test3= test2+test1;

		

		/*************NO result***/

		if (test3==1){

		var el = new Element('div', {'class': row }).setHTML(_txtNoResult );	

						el.inject(result_div);

					}



		/*************results***/

			if ((test3==0)||(test3 > 1)){
			//if (test3==0){

			var el = new Element('div', {'class': row }).setHTML(_txtOneresult+' "'+$('vmlp_search_str').value+'"'+_txtRedirect+'&nbsp; <img src="'+_txtURIBase+'modules/mod_vm_live_product/css/loadingcircle.gif" height="16px" width="16px"><br/><br/>' );	

						el.inject(result_div);

     		/*redirect to single result product page or no result*/

        this.location.href = requrl;

		}

	}

				/*replace Search... text*/

	$('vmlp_search_str').addEvent('click', function(e) {

		if($('vmlp_search_str').value == _txtSearch) $('vmlp_search_str').value = '';

	});



	$('vmlp_search_str').onkeyup = function(){

		var curtime = new Date();

		var url = _txtURIBase+'index2.php';

				/*show throbber*/

			$('vmlp_timer').setStyle('visibility', 'visible');

				/*check search string length > 2*/

		tt=$('vmlp_search_str').value;

		tl=tt.length

			if(tl<2){

			$('vmlp_results').empty().removeClass('vmlp_results').setStyle('visibility', 'hidden');

					/*show 3 letter message*/

			$('vmlp_3letters').setStyle('visibility', 'visible');

		}

		else{

strserch=$('vmlp_search_str').value;
       var searchstring = rawurlencode(strserch);

			var req = new Ajax(url, {

				method: 'get',

				delay : 800,

				data: {

				'option' : 'com_virtuemart',

				'page' : 'shop.browse',


				'keyword1' : searchstring,

				'search' : 'search' ,


				'search_limiter' : 'printer',

				'r' : curtime.getTime()

				

				},

				onComplete: function(results) {

						/*hide throbber*/

			$('vmlp_timer').setStyle('visibility', 'hidden');

						/*hide 3 letter message*/

			$('vmlp_3letters').setStyle('visibility', 'hidden');

      

                   var theNewEle = new Element('div');

						theNewEle.setHTML(results);

						var vmlpsearch_tmpdiv = $('vmlpsearch_tmpdiv');

						var zr_list = theNewEle.getElements('.zero_results');//test for no result

						var zeroResults = (zr_list.length > 0);

						if (zeroResults)

						{

							var el = new Element('div', {'id': 'zero_results' }).setHTML(zr_list[0].innerHTML );	

						el.inject(vmlpsearch_tmpdiv);

						}

	

					else{

						theNewEle.getElements('.browseProductTitle').each(function(r) {

						vmlpsearch_tmpdiv.appendChild(r);

						});

				}



					$('vmlp_results').empty().removeClass('vmlp_results').setStyle('visibility', 'visible');

					addSearchResult();

					$('vmlpsearch_tmpdiv').empty().setStyle('visibility','visible');

					

				}	

		});

			var rq = req.request.delay(1000,req);

			$('vmlp_search_str').onkeydown = function(){$clear(rq);};

		}

	}

});




