
function parseTextValue( i_Event, i_Element ) // parse float nie wystarczy bo ,. nie uwzględnia i daje Na dla np "p" lub innej litery
{
    var o_Result = true;

    var _KeyCode = null;
    if(window.event)
    {
            _KeyCode = i_Event.keyCode;
    }
    else if(i_Event.which)
    {
            _KeyCode = i_Event.which;
    }

    if( _KeyCode != null
        && _KeyCode !== 8) // jeśli nie del lub bksp lub tab
    {
        if( _KeyCode == 44
            || _KeyCode == 46)
        {
        	if( -1 < i_Element.value.indexOf(".")
        	    || -1 < i_Element.value.indexOf(","))
        	{
        		return false;
        	}
        }

        _KeyChar = String.fromCharCode(_KeyCode);
        _Pattern = /(\d|[\.\,])/;

        o_Result = _Pattern.test(_KeyChar);
        
        if ( 0 < i_Element.maxLength
        		&& i_Element.maxLength <= i_Element.value.length )
        {
        	o_Result = false;
        }
    }
    else
    {
    	o_Result = true;
    }

    return o_Result;
}

function submitSearch(i_urlFor, i_IncludeSearchString)
{
    var theForm = document.search_run
    var url = "/";
    for ( i=0; i<theForm.elements.length; i++ ) 
    {
        if ( theForm.elements[i].type == "text" 
          || theForm.elements[i].type == "select-one" ) 
        {
             if ( 0 < theForm.elements[i].value.length 
            	 && theForm.elements[i].value != 0 )
             {	
                if ( 'searchString' == theForm.elements[i].name )
                {
                	if ( undefined == i_IncludeSearchString 
                	  || true == i_IncludeSearchString)
                	{
                		url += theForm.elements[i].name + "/" + base64encode(encodeURI(theForm.elements[i].value)) + "/";
                	}
                }
                else
                {
                	url += theForm.elements[i].name + "/" + theForm.elements[i].value + "/";
                }
             }
        }
        
        if ( theForm.elements[i].type == "checkbox" 
        	&& theForm.elements[i].checked ) 
       	{
            url += theForm.elements[i].name + "/" + theForm.elements[i].value + "/";
        }
    }
    document.location= i_urlFor + url;
    return false;
}

// hack dla superapteki
function submitSearch2(i_urlFor, i_IncludeSearchString)
{
    var theForm = document.search_run2
    var url = "/";
    for ( i=0; i<theForm.elements.length; i++ ) 
    {
        if ( theForm.elements[i].type == "text" 
          || theForm.elements[i].type == "select-one" ) 
        {
             if ( 0 < theForm.elements[i].value.length 
            	 && theForm.elements[i].value != 0 )
             {	
                if ( 'searchString2' == theForm.elements[i].name )
                {
                	if ( undefined == i_IncludeSearchString 
                	  || true == i_IncludeSearchString)
                	{
                		url += 'searchString' + "/" + base64encode(encodeURI(theForm.elements[i].value)) + "/";
                	}
                }
                else
                {
                	url += theForm.elements[i].name + "/" + theForm.elements[i].value + "/";
                }
             }
        }
        
        if ( theForm.elements[i].type == "checkbox" 
        	&& theForm.elements[i].checked ) 
       	{
            url += theForm.elements[i].name + "/" + theForm.elements[i].value + "/";
        }
    }
    document.location= i_urlFor + url;
    return false;
}

function utf8(wide) 
{
  var c, s;
  var enc = "";
  var i = 0;
  while(i<wide.length) 
  {
    c= wide.charCodeAt(i++);
    // handle UTF-16 surrogates
    if (c>=0xDC00 && c<0xE000) continue;
    if (c>=0xD800 && c<0xDC00) 
    {
      if (i>=wide.length) continue;
      s= wide.charCodeAt(i++);
      if (s<0xDC00 || c>=0xDE00) continue;
      c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
    }
    // output value
    if (c<0x80) enc += String.fromCharCode(c);
    else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
    else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
    else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
  }
  return enc;
}

var hexchars = "0123456789ABCDEF";

function toHex(n) 
{
  return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
}

var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";

function encodeURI(s) 
{
  var s = utf8(s);
  var c;
  var enc = "";
  for (var i= 0; i<s.length; i++) 
  {
    if (okURIchars.indexOf(s.charAt(i))==-1)
      enc += "%"+toHex(s.charCodeAt(i));
    else
      enc += s.charAt(i);
  }
  return enc;
}





function base64encode( i_Element )
		{
		
          var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
          var bits, dual, i = 0, encOut = '';
          while(i_Element.length >= i + 3)
          {
            bits =
            (	i_Element.charCodeAt(i++) & 0xff) <<16
        		| (i_Element.charCodeAt(i++) & 0xff) <<8
        		| i_Element.charCodeAt(i++) & 0xff;
        
        		encOut += base64s.charAt((bits & 0x00fc0000) >>18) +
        			base64s.charAt((bits & 0x0003f000) >>12) +
        			base64s.charAt((bits & 0x00000fc0) >> 6) +
        			base64s.charAt((bits & 0x0000003f)
        	);
          }
          
          if(i_Element.length -i > 0 && i_Element.length -i < 3)
          {
            dual = Boolean(i_Element.length -i -1);
            bits =
             ((i_Element.charCodeAt(i++) & 0xff) <<16) |
             (dual ? (i_Element.charCodeAt(i) & 0xff) <<8 : 0);
            encOut +=
              base64s.charAt((bits & 0x00fc0000) >>18) +
              base64s.charAt((bits & 0x0003f000) >>12) +
              (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '=') +
              '=';
            }
  			return encOut;
		}




/**
 * Klasa Product obsługuje liste produktów
 *
 * @package    komputronik
 * @subpackage favourite
 * @author     Roman Piekarski <roman.piekarski@komputronik.com>
 */
ProductList = {
	/**
	 * Metoda zmienia zawartość kolumny favourite product
	 * po wykonaniu dodania-usunięcia produktu z favourite
	 *
	 * @param int i_LinkId identyfikator hiperlinka
	 * @param boolean true - dodawanie do favourite, false - usówanie z favourite
	 *
	 * @return boolean
	 */
	overwriteColumnFavourite : function (i_LinkId, i_ProductId, i_Bool)
	{
		o_Result = true;

		handleLink = document.getElementById(i_LinkId);
		
		switch ( i_Bool )
		{
			case true:
				this.showDelLinks(i_ProductId);
			break;
			case false:
				this.showAddLinks(i_ProductId);			
			break;
			default: 
				o_Result = false;
		}

		return o_Result;
	},
	showAddLinks : function (i_ProductId)
	{
		colValue = '<a id="add_to_favourite_pid_' + i_ProductId + '" href="#" onclick="new Ajax.Updater(\'feedback\',\'' + ProductParameter.requestReferer + 'favourite/' + ProductParameter.culture + '/addToFavourite/product_id/' + i_ProductId + '\', {asynchronous:true, evalScripts:true, method:\'get\', onComplete:function(request, json){ProductList.overwriteColumnFavourite(\'add_to_favourite_pid_' + i_ProductId + '\',' + i_ProductId + ', true);}}); return false;">' + ProductParameter.addFavouriteImageTag + '</a></a> | <a href="' + ProductParameter.requestReferer + 'favourite/' + ProductParameter.culture + '/addToFavourite/product_id/' + i_ProductId + '">' + ProductParameter.addFavouriteAndGoImageTag + '</a>';

		handleLink.parentNode.innerHTML = colValue;
	},
	showDelLinks : function (i_ProductId)
	{
		colValue = '<a id="del_from_favourite_pid_' + i_ProductId + '" href="#" onclick="new Ajax.Updater(\'feedback\',\'' + ProductParameter.requestReferer + 'favourite/' + ProductParameter.culture + '/deleteFromFavouriteTmp/product_id/' + i_ProductId + '\', {asynchronous:true, evalScripts:true, method:\'get\', onComplete:function(request, json){ProductList.overwriteColumnFavourite(\'del_from_favourite_pid_' + i_ProductId + '\', ' + i_ProductId + ', false);}}); return false;">' + ProductParameter.removeFavouriteImageTag + '</a> | <a href="' + ProductParameter.requestReferer + 'favourite/' + ProductParameter.culture + '/deleteFromFavouriteTmp/product_id/' + i_ProductId + '">' + ProductParameter.removeFavouriteAndGoLinkName + '</a>';

		handleLink.parentNode.innerHTML = colValue;
	}
}