/**
 * @author Karol Drągowski
 */

//odścieżanie strony
function odswiez(){
	window.location.reload();	
}

//ustawianie stałej szerokości

jQuery.fn.extend({
  strictWidth: function() {
    return this.css('width',this.width()+'px');
  }
});

//1 zwraca najdłuższy ciąg znaków wystepujący w napisie(pierwszy argument) pomiędzy znakami { i } lub podanymi jako 2 i 3 argument

function $between(){
	var s=arguments[0];
	var ld='{';
	var rd='}';
	if(arguments[1] && arguments[2]){
		ld=arguments[1];
		rd=arguments[2];
	}
	return s.substring(s.indexOf(ld)+1, s.lastIndexOf(rd))	
}

//3 funkcja do kolorowania wierszy tabeli
function paintRows(elem){
	$('tr', elem).removeClass('hard');
	$('tr[td]:odd', elem).addClass('hard');
}



//4 funkcje do obsługi dodawania produktów do koszyka
function updateIlosc(zmiennik, roznica){
	var $wkoszyku=$('#jqwkoszyku');
	var $wkoszykuwartosc=$('#jqkoszkwartosc');
	var $podmiana=$('#jqpodmiana');
	var newwart=parseFloat($wkoszykuwartosc.text())+parseFloat(roznica);
	$wkoszykuwartosc.text(newwart.toFixed(2));
	
	var ile=$wkoszyku.text();
	ile=parseInt(ile)+zmiennik;
	$wkoszyku.text(ile+'');
	$podmiana.text(odmienRzeczownik(ile));
	return ile;
}

function setIlosc(liczba, wartosc){
	$('#jqwkoszyku').text(liczba+'');
	$('#jqpodmiana').text(odmienRzeczownik(liczba));
	$('#jqkoszkwartosc').text(parseFloat(wartosc).toFixed(2));
}

//funkcje do obsługi zapamiętywania starych wartości pól formularzy i kolorowania pól w zalezności od ich stanu

function setChangeEvent(obj){
	if(arguments[1])
		$(obj).bind('keyup', function(){
			$(this).removeClass("valerr updated");
			if(!compareValues(this))
				$(this).addClass("vc changed");
			else
				$(this).removeClass("vc changed");
		});
	else
		$(obj).bind('keyup', function(){
			$(this).removeClass("valerr updated").addClass('changed');
			if(!compareValues(this))
				$(this).addClass("vc");
			else
				$(this).removeClass("vc");
		});
}

function setUpdated(objs){
	objs.each(function (){
		this.oldvalue=$(this).val();
		if($(this).is('.changed'))
			$(this).removeClass("changed valerr").addClass("updated");
	})
}

function setBad(objs){
	objs.each(function (){
		$(this).removeClass("changed updated").addClass("valerr");
	})
}

function saveFieldsValues(objs){
	var arg1=arguments[1];
	objs.each(function (){
		this.oldvalue=$(this).val();
		if(arg1)
			setChangeEvent(this, arg1);
		else
			setChangeEvent(this);
	})
}

function compareValues(obj){
	return obj.oldvalue==$(obj).val();
}

//5 funkcje obsługi pojawiających się i znikających komunikatów
function printInNewWindow(echo){
		var okno=window.open();
		okno.document.write('<html><head><title></title>');
		okno.document.write('<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">');
		okno.document.write('</head><body onclick="window.close();"><pre>');
		okno.document.write(echo);		
		okno.document.write('</pre></body></html>');
		okno.document.close();
		okno.focus();
}

var $infTimeId;

function loadData(json){
	if(json)
		$.each(json, function (k,o){
			if($(k).size()>0)
				$(k).empty().html(o);
		});
}

function prepareInfo(){
	var inf=$('#info');
	if(inf.size()==0)
		inf=$('<div id="info" class="flyTop"><div id="wcontent"></div><div id="wbottom"><div id="infIco"></div></div></div>').prependTo('body');
	else{
		if($infTimeId)
			clearTimeout($infTimeId);
		inf.css('display','none');
	}
	if(!inf.is('[#wtop]')){
		inf.prepend('<div id="wtop"><img src="images/w_minimalize.png" id="wdisplay"><img src="images/w_close.png" id="wclose" title="Zamknij"></div>');
		$('#wdisplay:eq(0)',inf).bind('click',function(){
			if($(this).attr('src').indexOf('min')>0){
				$(this).attr({'src':"images/w_maxymalize.png",'title':'Maksymalizuj'})
				$('#wcontent:eq(0)',inf).slideUp();
			}else{
				$(this).attr({'src':"images/w_minimalize.png",'title':'Minimalizuj'})
				$('#wcontent:eq(0)',inf).slideDown();				
			}
		}).css('cursor','pointer');
		$('#wclose:eq(0)',inf).bind('click',function(){
			$hideInfo();
		}).css('cursor','pointer');	
		var left=Math.round(($(document).width()-inf.width())/2);
		inf.css('left',left+'px')
	}else{
		//resetowanie
		$('#wdisplay:eq(0)',inf).attr({'src':"images/w_minimalize.png",'title':'Minimalizuj'});
		$('#wcontent:eq(0)',inf).slideDown();
	}
	return inf;
}

$showInfo=function(json){
	//printObject(json);
	/*if(json.devmsg)
		alert(json.devmsg);*/
	var typ=(json.typ?json.typ:'msg');
	var actionAfter=(json.runAfter?json.runAfter+'; ':'; ');
	var hideafter=(json.hideafter?json.hideafter:3000);
	loadData(json.data);
	if(json.echo)
		printInNewWindow(json.echo);
	if(json.runBefore)
		eval(json.runBefore+'; ');
	inf=prepareInfo();
	if(json.msg)
		$('#wcontent:eq(0)',inf).html(json.msg);
	else if(json.dontShow)
		$('#wcontent:eq(0)',inf).html('');
		
	if(json.runMiddle)
		eval(json.runMiddle+'; ');
	inf.removeClass().addClass(typ+' flyTop');
	$('div#infIco', inf).ifixpng();
	if($('#wcontent:eq(0)',inf).html()){
		if(hideafter>0)
			inf.fadeIn("slow", function (){$infTimeId=setTimeout(actionAfter+"$hideInfo()", hideafter);});
		else
			inf.fadeIn("slow", function (){
				eval(actionAfter);
			});
	}else
		eval(actionAfter);
}

function $hideInfo(){
	if($infTimeId)
		clearTimeout($infTimeId);
	var speed='slow';
	$('#info').fadeOut(speed, function(){$('div#infIco', this).iunfixpng();});
}


//6 funkcje obsługi paska ładowania danych
function $showLoad(){
	var lo=$('#load');
	if(lo.size()==0)
		lo=$('<div id="load" class="flyBottom">Proszę czekać...</div>').prependTo('body');
	else		
		lo.css('display','none');
	lo.fadeIn();
}

function $hideLoad(){
	var speed=(arguments[0]?arguments[0]:'slow');
	$('#load').fadeOut(speed);
}

//7 funkcja do podliczania wartości z koszyka
function podliczKoszyk(){
	var razem=0;
	var koszyk=$('#koszyk');
	$('td[@id^=jqcena_brutto]', koszyk).each(function (i,o){
		var id=$between(this.id,'[',']');
		var	wartosc=parseFloat($(this).text())*parseInt($('input[@name="jqilosc['+id+']"]', koszyk).val());
		if(isNaN(wartosc) || wartosc<=0) wartosc=0.0;
		$('td[@id="jqwartosc_brutto['+id+']"]', koszyk).html(wartosc.toFixed(2));
		razem=razem+wartosc;
	});
	$('#jqrazemwartosc', koszyk).html(razem.toFixed(2));
}

//8 funkcja do usuwania niepotrzebnych wierszy w koszyku i liczniku koszyka
function removeDeleted(){
	var koszyk=$('#koszyk');
	var pozostalo=0;
	$('input[@name^=jqilosc]', koszyk).each(function(i,o){
		var t_val=$(o).val();
		if(int(t_val) && t_val<1)
			$(o).parents('tr').eq(0).remove();
		else
			pozostalo++;
	});
	paintRows(koszyk);
	setIlosc(pozostalo, parseFloat($('#jqrazemwartosc', koszyk).text()));
}

//10 funkcja do ustawiania thickboxa
function setThickboxIn($objs){
	tb_init('a.thickbox', $objs);
}

//12 funkcja do walidacji i wysyłania formularzy POST lub GET parametr type odbiera dane w obiekcie JSON
function checkAndSendForm(selector, submiturl, type){
	var obj=$(selector);
	obj.find('input[@name=back]').remove();
	var opt={
		url:submiturl, 		
		type:type,
		data:obj.formToArray(),
		dataType:"json",
		success:$showInfo,
		beforeSubmit:Validate.validateForm
	};
	if(arguments[4]){
		opt.beforeSubmit=arguments[3];
		opt.success=arguments[4];		
	}else if(arguments[3]){
		opt.success=arguments[3];
	}
	obj.ajaxForm(opt);
}

//14 funkcja do wypisywania nazw pól i wartości pól obiektu

function printObject(obj){
	var ret='';
	var sep='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	var padd=(arguments[1]?arguments[1]:'')
	if(typeof obj=='object')// && !obj instanceof Function)
		for (var i in obj){
			var v=obj[i];
		//$.each(obj, function (i,v){
			if(typeof v=='object'){// && !v instanceof Function){
				ret+=padd+'<b>'+i+'</b>:<br>'; 
				ret+=printObject(v,padd+sep);
			}else
				ret+=padd+'<b>'+i+'</b>: '+v+'<br>';
		}//);
	else
		ret=obj;
	if(padd=='')
		printInNewWindow(ret);
	else
		return ret;	
}

//15 link przypomnij hasło
function przypomnijHaslo(){
	$('#przypomnij-haslo').bind('click',function(event){
		$.getJSON("przypomnij-haslo.php?getcontent",
			  function(json) {
				   $showInfo(json);
			 }
		)
		return false;
	});	
}

//16 odmiana rzeczownika
function odmienRzeczownik(liczba){
	var rzeczownik=(arguments[1]?arguments[1]:'produkt')
	var konc=['ów', '', 'y'];
	var przedzdo21={0:[0, 0],1:[1, 1],2:[4, 2],5:[21, 0]};
	var przedzpo21={0:[1, 0],2:[4, 2],5:[9, 0]};			
	var przel=parseInt(liczba)%100;
	var przedz=przedzdo21;
	if(przel>=22){
		przedz=przedzpo21;
		przel=przel%10;
	}
	
	for(k in przedz)
		if(przel>=parseInt(k) && przel<=przedz[k][0])
			return rzeczownik+konc[przedz[k][1]];
}

//17 formularz kontaktowy
function przypomnijHaslo(){
	$('#jqKontakt').bind('click',function(event){
		$.getJSON("kontakt.php?getcontent",
			  function(json) {
				   $showInfo(json);
			 }
		)
		return false;
	});	
}

//zaznacz kategorię
function selectCategory(id){
	$('a[@href^="k'+id+'-"]',$('#menucat')).addClass('current').parents('ol').show();
}

//zmienne i uruchamianie funkcji !!!!!!!!!!!!!!!!!!!!!!!!!!!

var $noStdAJAX;
var $wKoszyku=false;
//on ready
$(function (){
	//zaokrąglenia w nagłówkach tabelek i formularzach
	$('table.formtab, table.colored').find('tr[th]').each(function(i,o){
		$th=$(o).find('th');
		if($th.size()==1){
			$($th).css('padding','0px').html('<img src="images/th_right.jpg" style="float:right;"><img src="images/th_left.jpg" style="float:left;"><div style="margin-top:4px; text-align:left;">'+$($th).html()+'</div>');
		}else{
			$th.filter(':first').css('background','#E9DEA8 url(images/th_left.jpg) top left no-repeat').end().filter(':last').css('background','#E9DEA8 url(images/th_right.jpg) top right no-repeat');
		}		
	})
	if(window.location.pathname.indexOf('koszyk.php')!=-1)
		$wKoszyku=true;

	//obsługa formularzy logowania i newslettera
	checkAndSendForm('#frmlogowanie', "logowanie.ax.php"+($wKoszyku?'?full':window.location.search), "GET");
	
	checkAndSendForm("#frmnewsletter","newsletter.ax.php", "GET");

	//dodawanie stylu do radio
	$('input:radio, input:checkbox').addClass('radio');
	
	//inicjalizacja menu
	$sekcjamenu=$('#menucat');
	$('li[ol]', $sekcjamenu).each(function (i,o){
		$(o).children('ol:first').addClass('podmenu');
		var a=$(o).children('a:first');
		$(a).bind('click', function (){
			var next=$(o).children('.podmenu:first');
			$('.podmenu:visible', $sekcjamenu).not(next).slideUp(1);
			next.slideToggle("fast"); //zwalnia ostro w IE6
			return false;
		});
	});

	//wypełnianie pustych komórek tabeli
	$('td:empty').html('&nbsp');
	
	//odznaczanie zaznaczanego elementu
	$('a, input:button, input:image, input:radio, img').click(function(){this.blur()});

	//zapamiętywanie wartości pól które mają być aktualizowane
	saveFieldsValues($('input, textarea, select, radio', $('form.jqupdate')), 'strict');

	//testowa obsługa błędów ajaxa
	$('body').ajaxError(function(request, settings){
	   $hideLoad();
	   //printObject(request);
	   //printObject(settings);
	   printInNewWindow('<b>responseText</b>: '+settings.responseText+'<br>');
	}).ajaxStart(function(){
		if(!$noStdAJAX)
			$showLoad();
	}).ajaxStop(function(){
		if(!$noStdAJAX)
			$hideLoad();
	});
	
	//domyślne wartości pola wyszukiwania
	var domyslnyTekst3='podaj nazwę produktu ...';
	$('input[@name=keywords]').each(function(i,o){
		if($(this).val()=='')
			$(this).val(domyslnyTekst3);
	}).focus(function (){
		if($(this).val()==domyslnyTekst3)
			$(this).val('');
	}).blur(function (){
		if($(this).val()=='')
			$(this).val(domyslnyTekst3);
	});

	var domyslnyTekst='Imię ...';
	$('input[@name=nimie]').each(function(i,o){
		if($(this).val()=='')
			$(this).val(domyslnyTekst);
	}).focus(function (){
		if($(this).val()==domyslnyTekst)
			$(this).val('');
	}).blur(function (){
		if($(this).val()=='')
			$(this).val(domyslnyTekst);
	});

	var domyslnyTekst2='E-mail ...';
	$('input[@name=nemail]').each(function(i,o){
		if($(this).val()=='')
			$(this).val(domyslnyTekst2);
	}).focus(function (){
		if($(this).val()==domyslnyTekst2)
			$(this).val('');
	}).blur(function (){
		if($(this).val()=='')
			$(this).val(domyslnyTekst2);
	});

});

//on load
$(window).load(function(){
	//temp
	//$('#layout > tbody > tr > td').bind('click',function (){alert($(this).width())});
});

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 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_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


function validate_formularz_kontakt()
{
  f = document.forms['jqKontakt'];
  if (f.imie.value == "" || f.nazwisko.value == "") { window.alert("Podaj imię i nazwisko!"); return false; }
  if (f.ulica.value == "") { window.alert("Podaj ulicę, nr domu i mieszkania!"); return false; }
  if (f.kod.value == "") { window.alert("Podaj kod pocztowy!"); return false; }
  if (f.miasto.value == "") { window.alert("Podaj miasto!"); return false; }
  if (f.email.value == "") { window.alert("Podaj prawidłowy email!"); return false; }
  if (f.tresc.value == "") { window.alert("Podaj treść!"); return false; }
  return true;
}
