function checkAll(formname,className, inputClass)
{
	for (x = 0; x < document.forms[formname].elements.length; x++)
 	{
		if (inputClass && document.forms[formname].elements[x].type == "checkbox")
 		{
			Element.extend(document.forms[formname].elements[x]);
			
 			if (document.forms[formname].elements[x].hasClassName(inputClass))
 			{
 				continue;
 			}
 		}
 		
 		if (document.forms[formname].elements[x].type == "checkbox")
 		{
 			document.forms[formname].elements[x].checked = "checked";
 		}
 		
 		if($(formname + document.forms[formname].elements[x].value) != null)
 		{
 			switchClass(true,formname + document.forms[formname].elements[x].value,className);
 		}
 		 		
 	}
 	
}

function unCheckAll(formname,className, inputClass)
{
	for (x = 0; x < document.forms[formname].elements.length; x++)
 	{ 		 	
 		if (document.forms[formname].elements[x].type == "checkbox")
 		{
 			document.forms[formname].elements[x].checked = "";
 		}
 		
 		if($(formname + document.forms[formname].elements[x].value) != null)
 		{
 			switchClass(false,formname + document.forms[formname].elements[x].value,className);
 		}
 	}
}

function switchClass(checked,id,className)
{
  if(checked)
  {
  	$(id).addClassName(className);
  }
  else
  {
    $(id).removeClassName(className);
  }
}

function checkAll2(){

$("input[@type='checkbox']").each(function() {
	this.checked = true;
$(this).parents("tr").addClass("active");
});

}

function unCheckAll2(){

$("input[@type='checkbox']").each(function() {
	this.checked = false;
$(this).parents("tr").removeClass("active");
	// or, to toggle
//	this.checked = !this.checked;
});
}


function strlen (string) {
    // Get string length  
    // 
    // version: 905.3122
    // discuss at: http://phpjs.org/functions/strlen
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Sakimori
    // +      input by: Kirk Strobeck
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +    revised by: Brett Zamir (http://brett-zamir.me)
    // %        note 1: May look like overkill, but in order to be truly faithful to handling all Unicode
    // %        note 1: characters and to this function in PHP which does not count the number of bytes
    // %        note 1: but counts the number of characters, something like this is really necessary.
    // *     example 1: strlen('Kevin van Zonneveld');
    // *     returns 1: 19
    // *     example 2: strlen('A\ud87e\udc04Z');
    // *     returns 2: 3
    var str = string+'';
    var i = 0, chr = '', lgth = 0;

    var getWholeChar = function (str, i) {
        var code = str.charCodeAt(i);
        var next = '', prev = '';
        if (0xD800 <= code && code <= 0xDBFF) { // High surrogate(could change last hex to 0xDB7F to treat high private surrogates as single characters)
            if (str.length <= (i+1))  {
                throw 'High surrogate without following low surrogate';
            }
            next = str.charCodeAt(i+1);
            if (0xDC00 > next || next > 0xDFFF) {
                throw 'High surrogate without following low surrogate';
            }
            return str.charAt(i)+str.charAt(i+1);
        } else if (0xDC00 <= code && code <= 0xDFFF) { // Low surrogate
            if (i === 0) {
                throw 'Low surrogate without preceding high surrogate';
            }
            prev = str.charCodeAt(i-1);
            if (0xD800 > prev || prev > 0xDBFF) { //(could change last hex to 0xDB7F to treat high private surrogates as single characters)
                throw 'Low surrogate without preceding high surrogate';
            }
            return false; // We can pass over low surrogates now as the second component in a pair which we have already processed
        }
        return str.charAt(i);
    };

    for (i=0, lgth=0; i < str.length; i++) {
    	chr = getWholeChar(str, i)
    	
        if (chr === false) {
            continue;
        } // Adapt this line at the top of any loop, passing in the whole string and the current iteration and returning a variable to represent the individual character; purpose is to treat the first part of a surrogate pair as the whole character and then ignore the second part
        
    	if (chr == "\n") lgth++;
    
        lgth++;                         
    }
    return lgth;
}


function countDown(field,update,length)
{
  fieldLength = strlen(field.value);
	
  if(fieldLength > length)
  {
    field.value = field.value.substring(0,length); 
  }
  else
  {
	if (update)
	{
		update.innerHTML = length - fieldLength;
	}
  }
}
function dodajDoUlubionych()
{
  if (window.external || window.sidebar || (window.opera && window.print) )
  {
    var title = 'Oferia';
    var address = 'http://oferia.pl';
    //FireFox
    if (window.sidebar)
    {
      window.sidebar.addPanel(title, address, "");
    //IE
    } else if (window.external)
    {
      window.external.AddFavorite(address, title);
    //Opera
    } else if (window.opera && window.print)
    {
      var a = document.createElement('a');
      a.setAttribute('href', address);
      a.setAttribute('title', title);
      a.setAttribute('rel','sidebar');
      a.click(); 
    } 
  }  
}

function implode(myArray,separator)
{
	var resultArray = new Array();
	var counter = 0;
	
	for(var i = 0;i < myArray.length;++i)
	{
		if(myArray[i].length > 0)
		{
			resultArray[counter] = myArray[i];
			++counter;
		}
	}	

	return resultArray.join(separator);
}

function disableSubmitOnEnter(e)
{
  var keyCode;     
  
  if(window.event)
  {
	keyCode = window.event.keyCode;
  }
  else
  {
	keyCode = e.which;    
  }
  
  return (keyCode != 13);
}

function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}

  function showHide(id)
  {
    if (document.getElementById)
    {
      obj = document.getElementById(id);
      if (obj.style.display == "none")
      {
        obj.style.display = "";
      }
      else
      {
        obj.style.display = "none";
      }
    }
  }

  function disableEnable(id)
  {
    if (document.getElementById)
    {
      obj = document.getElementById(id);
      if (obj.disabled == true)
      {
        obj.disabled = false;
      }
      else
      {
        obj.disabled = true;
      }
    }
  }

  function trim(str)
  {
	  return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  }
  
  function number_format( number, decimals, dec_point, thousands_sep )
  {
	    // Formats a number with grouped thousands
	    //
	    // version: 906.1806
	    // discuss at: http://phpjs.org/functions/number_format
	    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +     bugfix by: Michael White (http://getsprink.com)
	    // +     bugfix by: Benjamin Lupton
	    // +     bugfix by: Allan Jensen (http://www.winternet.no)
	    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	    // +     bugfix by: Howard Yeend
	    // +    revised by: Luke Smith (http://lucassmith.name)
	    // +     bugfix by: Diogo Resende
	    // +     bugfix by: Rival
	    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
	    // +     improved by: davook
	    // +     improved by: Brett Zamir (http://brett-zamir.me)
	    // +     input by: Jay Klehr
	    // +     improved by: Brett Zamir (http://brett-zamir.me)
	    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
	    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
	    // *     example 1: number_format(1234.56);
	    // *     returns 1: '1,235'
	    // *     example 2: number_format(1234.56, 2, ',', ' ');
	    // *     returns 2: '1 234,56'
	    // *     example 3: number_format(1234.5678, 2, '.', '');
	    // *     returns 3: '1234.57'
	    // *     example 4: number_format(67, 2, ',', '.');
	    // *     returns 4: '67,00'
	    // *     example 5: number_format(1000);
	    // *     returns 5: '1,000'
	    // *     example 6: number_format(67.311, 2);
	    // *     returns 6: '67.31'
	    // *     example 7: number_format(1000.55, 1);
	    // *     returns 7: '1,000.6'
	    // *     example 8: number_format(67000, 5, ',', '.');
	    // *     returns 8: '67.000,00000'
	    // *     example 9: number_format(0.9, 0);
	    // *     returns 9: '1'
	    // *     example 10: number_format('1.20', 2);
	    // *     returns 10: '1.20'
	    // *     example 11: number_format('1.20', 4);
	    // *     returns 11: '1.2000'
	    // *     example 12: number_format('1.2000', 3);
	    // *     returns 12: '1.200'
	    var n = number, prec = decimals;
	 
	    var toFixedFix = function (n,prec) {
	        var k = Math.pow(10,prec);
	        return (Math.round(n*k)/k).toString();
	    };
	 
	    n = !isFinite(+n) ? 0 : +n;
	    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
	    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
	    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
	 
	    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
	 
	    var abs = toFixedFix(Math.abs(n), prec);
	    var _, i;
	 
	    if (abs >= 1000) {
	        _ = abs.split(/\D/);
	        i = _[0].length % 3 || 3;
	 
	        _[0] = s.slice(0,i + (n < 0)) +
	              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
	        s = _.join(dec);
	    } else {
	        s = s.replace('.', dec);
	    }
	 
	    var decPos = s.indexOf(dec);
	    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
	        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
	    }
	    else if (prec >= 1 && decPos === -1) {
	        s += dec+new Array(prec).join(0)+'0';
	    }
	    return s;
	}
  function getScrollXY() {
	  var scrOfX = 0, scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' ) {
	    //Netscape compliant
	    scrOfY = window.pageYOffset;
	    scrOfX = window.pageXOffset;
	  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrOfY = document.body.scrollTop;
	    scrOfX = document.body.scrollLeft;
	  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	    //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	    scrOfX = document.documentElement.scrollLeft;
	  }
	  return [ scrOfX, scrOfY ];
	}
  function getViewportDimensions() {
	    var intH = 0, intW = 0;
	    
	    if(self.innerHeight) {
	       intH = window.innerHeight;
	       intW = window.innerWidth;
	    } 
	    else {
	        if(document.documentElement && document.documentElement.clientHeight) {
	            intH = document.documentElement.clientHeight;
	            intW = document.documentElement.clientWidth;
	        }
	        else {
	            if(document.body) {
	                intH = document.body.clientHeight;
	                intW = document.body.clientWidth;
	            }
	        }
	    }

	    return {
	        height: parseInt(intH, 10),
	        width: parseInt(intW, 10)
	    };
	}
  function findPosition( oElement ) {
	  if( typeof( oElement.offsetParent ) != 'undefined' ) {
	    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
	      posX += oElement.offsetLeft;
	      posY += oElement.offsetTop;
	    }
	    return [ posX, posY ];
	  } else {
	    return [ oElement.x, oElement.y ];
	  }
	}
  function centerElement(elem) {
	    var containerLeft = findPosition(document.getElementById('container'))[0];
	    var viewport = getViewportDimensions();
	    var left = (viewport.width == 0) ? 50 : parseInt((viewport.width - elem.offsetWidth) / 2, 10);
	    var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - elem.offsetHeight) / 2, 10);
	    elem.style.position = 'absolute';
	    elem.style.left = (left - containerLeft) + 'px';
	    elem.style.top = (top + getScrollXY()[1]) + 'px';
 
	    viewport = left = top = ele = null;
	}

Event.observe(window, 'load', function() 
{
  try
  {
    if (Calendar != undefined)
    {
	  Calendar.isRelated = function (el, evt) 
	  {
	      var related = evt.relatedTarget;
	      if (!related) {
	              var type = evt.type;
	              if (type == "mouseover") {
	                      related = evt.fromElement;
	              } else if (type == "mouseout") {
	                      related = evt.toElement;
	              }
	      }
	      while (related) {
	              if (related == el) {
	                      return true;
	              }
	              try
	              {
	            	  related = related.parentNode;
	              }catch(e){related = null;}
	      }
	      return false;
	  };
    }
  }catch(ex){}
});

function disableForms(withLightWindowLinks)
{
  forms = document.forms;
  for(var i = 0;i < forms.length;++i)
  {
      elements = forms[i].elements;
      for(var j = 0;j < elements.length;++j)
      {
        elements[j].disabled = 'true';
      }
      forms[i].onsubmit = function() { return false; }
  }
  if(withLightWindowLinks)
  {
    $$('a.lightwindow').map(function(link){Event.stopObserving(link,'click');link.onclick = function(){ return false; }; Event.observe(link,'click',function(){return false;})});
  }
}


