$(document).ready(ajax_load);
function ajax_load() {
	$('.ajax_load').each(function(){
		var url = $(this).html();
		var a = fast_ajax(url, $(this), function(){}, function(obj) {$(obj).removeClass('din');});
	});
}

$(document).ready(centrala);

function centrala() {
}


var bannCount2=0;
var inter2=null;
var ss3=2;

$(document).ready(function() {
	$('#slider>a').each(function() {
		bannCount2++;
		$(this).attr('id','b2anner_'+bannCount2);
		$(this).parent().find('.controls').append('<a id="c2ontrol_'+bannCount2+'">'+bannCount2+'</a>');
	});
	$('#slider .controls>a').click(function(){
		var id = $(this).attr('id');
		id = parseInt(id.replace('c2ontrol_',''));
		clearInterval(inter2);
		inter2 = null;
		fades2(id);
		inter2 = setInterval(wywInt2, 3000);
	});
	if (bannCount2>=1) {
		$('#slider>a:nth-child(1)').fadeIn(0);
		$('#slider .controls>a:nth-child(1)').addClass('a');
	}
	/*
	$('#animation_stopper').mouseover(function(){
		clearInterval(inter2);
		inter2 = null;
	});
	$('#animation_stopper').mouseout(function(){
		if (inter2==null) {
			inter2 = setInterval(wywInt2, 5000);
		}
	});
	*/
	
	inter2 = setInterval(wywInt2, 3000);
});

function wywInt2() {
	fades2(ss3++);
	if(ss3 > bannCount2) ss3=1;
}

function fades2(i) {
	for (var x=1; x<=bannCount2; x++) {
		if (i==x) {
			$('#slider>a:nth-child('+x+')').fadeIn(500);
			$('#slider .controls>a:nth-child('+x+')').addClass('a');
		}
		else {
			$('#slider>a:nth-child('+x+')').stop(false,true);
			$('#slider>a:nth-child('+x+')').fadeOut(500);
			$('#slider .controls>a:nth-child('+x+')').removeClass('a');
		}
	}
}






function contact_send(e) {
	if (!e.isDefaultPrevented()) {
		var selector = '#kontakt_form';
		var rules = $(this).find('.rules').html();

		var arr = Array();
		$(selector).find('input[type=text],input[type=password],input[type=radio]:checked,input[type=checkbox]:checked,textarea,select').each(function(){
			var name=$(this).attr('name');
			var val=$(this).val();
			arr[name]=val;
		});
		
		validation_triggered=true;
		var result = validateArray(arr, rules);
		
		if (result===true) {
			var w=$('#kontakt_form').width();
			var h=$('#kontakt_form').height();
			$('#kontakt_form .loading').css({width: w, height: h});
			$('#kontakt_form .loading').fadeOut(0);
			$('#kontakt_form .content').animate({opacity: 0.1}, 500);
			$('#kontakt_form .loading').fadeIn(500, function(){
				$.ajax({
					type: "POST",
					url: "/ajax/contact/",
					cache: false,
					data: {
						"v1": $('#kontakt_form [name=v1]').val(),
						"v2": $('#kontakt_form [name=v2]').val(),
						"v3": $('#kontakt_form [name=v3]').val(),
						"v4": $('#kontakt_form [name=v4]').val()
					},
					timeout: 25000, // 25 sec
					error: function() {
						$('#kontakt_form .loading').fadeOut(500);
						$('#kontakt_form .content').animate({opacity: 1}, 500, function() {
							alert('Błąd przetwarzania żądania. Spróbuj wysłać formularz ponownie. Jeżeli sytuacja się powtórzy - proszę użyj innej metody kontaktu.');
						});
					},
					success: function(info) {
						if (info && info=="OK") {
							$('#kontakt_form .loading').fadeOut(500);
							$('#kontakt_form .content').slideUp(500);
							$('#kontakt_form .success').fadeIn(500);
						}
						else {
							$('#kontakt_form .loading').fadeOut(500);
							$('#kontakt_form .content').animate({opacity: 1}, 500, function() {
								alert('Błąd przetwarzania żądania. Spróbuj wysłać formularz ponownie. Jeżeli sytuacja się powtórzy - proszę użyj innej metody kontaktu.');
							});
						}
			         } // success
				});// ajax
			});
			return false;
		}
	}
}



function anchor(target) {
	var targetOffset = $('#'+target).offset().top;
	$('html').animate({scrollTop: targetOffset}, 1000);
	return false;
}

function fast_ajax(url, obj, onError, callBack) {
	$.ajax({
		type: "GET",
		url: htmlspecialchars_decode(url),
		cache: false,
		success: function(info) {
			if (info) {
				if (info=='ERROR') {
					onError();
				}
				else {
					$(obj).html(info);
					callBack(obj);
				}
			}
			else {
				onError();
			}
         } // success
	});// ajax
}

$(document).ready(iframe_loader);
function iframe_loader() {
	$('.iframe_loader').each(function(){
		$(this).removeClass('iframe_loader');
		$(this).removeClass('din');
		var html = $(this).html();
		html = trim(html);
		html = htmlspecialchars_decode(html);
		$(this).html(html);
	});
}


function defaultValueRestore(selector) {
	$(selector).focus(function(){
		var def = $(this)[0].defaultValue;
		var cur = $(this).val();
		if (def==cur) {
			$(this).attr('value','');
		}
	});
	$(selector).blur(function(){
		var def = $(this)[0].defaultValue;
		var cur = $(this).val();
		if (def==cur || cur=='') {
			$(this).attr('value',def);
			$(this).removeClass('ok');
		}
		else {
			$(this).addClass('ok');
		}
	});	
}

function isEmail(email) {
	email = email.replace(/[ ]/g, '');
	var regEmail = /^([a-zA-Z0-9._-]{1,})@([a-zA-Z0-9._-]{1,})\.([a-zA-Z]{2,4})$/;
	if (!regEmail.test(email)) return false;
	else return true;
}


$(document).ready(function() {
	
	defaultValueRestore('input.default');
	validation('form.validation_enabled');
	
	var hash = (window.location.hash).replace("#", "");
	if (hash!='' && hash!=undefined) {
		var val = hash.match(/^JS:([0-9A-Za-z_-]+)$/);
		if (val[1]!=null && val[1]!=undefined) {
			anchor(val[1]);
		}
	}
	
	// mutiple galleries
	$("a.LB").attr('rel','prettyPhoto[gal1]');
	// regex allowing to use classes like pp-GALLERY_TAG_HERE to merge images
	// into galleries w/out need to use incorrect rel tagging 
	$("a:regex(class, pp-.*)").each(function(){
		var cl=$(this).attr('class');
		var clexp = explode(' ',cl);
		for (key in clexp) {
			var val = clexp[key];
			var matches = val.match(/^pp-(.*)/);
			if (matches) {
				$(this).removeClass(matches[0]);
				$(this).attr('rel','prettyPhoto['+matches[1]+']');
			}
		}
	});
	$("a[rel^='prettyPhoto']").prettyPhoto({hideflash:true, social_tools:false, deeplinking: false});
	
	// single images
	$("a.LB2").prettyPhoto({hideflash:true, social_tools:false, deeplinking: false, allow_resize: false});
	
	/*
	$("input.date").dynDateTime({
		showsTime: false,
		ifFormat :"%Y-%m-%d",
		align :"TL",
		electric :true,
		singleClick :false,
		button :".(this)",
		range : new Array(min, max)
	});
	*/
	
});

function newsletter_add() {
	var mail = $('.newsletter [name=email]').val();
	var disabled = $('.newsletter [name=email]').attr('disabled');
	if (disabled == "disabled") { return false; }
	if (isEmail(mail)) {
		$.ajax({
			type: "GET",
			url: "/ajax/newsletter/add/",
			cache: true,
			data: {
				"row": mail
			},
			timeout: 5000, // 5 sec
			error: function() {
				alert('Błąd przetwarzania żądania. Spróbuj wysłać formularz ponownie. Jeżeli sytuacja się powtórzy - proszę skontaktuj się z nami.');
			},
			success: function(info) {
				if (info && info=="OK") {
					$('.newsletter [name=email]').val('Adres został dodany');
					$('.newsletter [name=email]').attr('disabled','disabled');
					$('.newsletter [name=email]').css({background: 'white'});
				}
				else if (info && info=="ALREADY-IN-DATABASE") {
					// not gonna happen
				}
				else {
					alert('Błąd przetwarzania żądania. Spróbuj wysłać formularz ponownie. Jeżeli sytuacja się powtórzy - proszę skontaktuj się z nami.');
				}
	         } // success
		});// ajax
	}
	else {
		alert('Podaj poprawny adres e-mail.');
	}
}


/**
 * Waliduje formularze
 * @param id - [atrybut html] id formularza 
 * @return bool - jezeli wszystko ok to true
 * TODO przepisac
 */
function validacja_formy(id, or_ok) {
	var blad='';
	$('#'+id+' .req_text').each (function () {
		var def = $(this)[0].defaultValue;
		var cur = $(this).val();
		if (cur=='' || cur==def) {
			blad += "- " + $(this).attr('title') + ".\n";
		}
	});
	$('#'+id+' .req_mail').each (function () {
		if (!isEmail($(this).attr('value'))) {
			blad += "- " + $(this).attr('title') + "\n";
		}
	});
	$('#'+id+' .type_mail').each (function () {
		if (!isEmail($(this).attr('value')) && ($(this).attr('value')!='')) {
			blad += "- Niepoprawny " + $(this).attr('title') + "\n";
		}
	});
	$('#'+id+' .req_checkbox').each (function () {
		if (!$(this).attr('checked')) {
			blad += "- " + $(this).attr('title') + "\n";
		}
	});
	
	if (or_ok != undefined) {
		or_ok = false;
		dodaj_txt = "Podaj ";
		$('#'+id+' .req_or').each (function () {
			dodaj_txt += $(this).attr('title')+" lub ";
			if ($(this).attr('value')!='') {
				or_ok=true;
			}
		});
		dodaj_length=dodaj_txt.length;
		dodaj_txt=dodaj_txt.substring(0, dodaj_length-5)+'.';
		
		if (or_ok==false) {
			blad += "- "+dodaj_txt+"\n";
		}
	}
	

	if (blad != '') {
		alert(blad);
		return false;
	}
	else {
		return true;
	}
}

$(document).ready (function (){
	$('#menu li a').hover(function(){
		$(this).closest('li').addClass('hover');
	},function(){
		$(this).closest('li').removeClass('hover');
	});
});



/********************************
 * 
 * VALIDATION STUFF
 * 
 ********************************/
var validation_triggered=false;
function validation(selector) {
	$(selector).submit(function(e){
		var rules = $(this).find('.rules').html();

		var arr = Array();
		$(selector).find('input[type=text],input[type=password],input[type=radio]:checked,input[type=checkbox]:checked,textarea,select').each(function(){
			//var type=$(this).attr('type');
			var name=$(this).attr('name');
			var val=$(this).val();
			arr[name]=val;
		});
		
		if (!validation_triggered) {
			$(selector).find('input[type=text],input[type=password],input[type=radio]:checked,input[type=checkbox]:checked,textarea,select').blur(function(){
				$(selector).trigger('submit');
			});
			$(selector).find('input[type=text],input[type=password],input[type=radio]:checked,input[type=checkbox]:checked,textarea,select').click(function(){
				$(selector).trigger('submit');
			});
		}

		validation_triggered=true;
		var result = validateArray(arr, rules);
		if (result===false) {
			alert("Niepoprawne reguły"); return false;
		}
		else if (result===true) {
			$(selector).find('.error').removeClass('error');
			$(selector).find('.errorbox').html('');
			if (e.originalEvent) {
		        return true;
		    } else {
		    	return false;
		    };  
		}
		else {
			$(selector).find('.error').removeClass('error');
			$(selector).find('.errorbox').html('');
			var errs = 0;
			for(var prop in result) {
				if ($(this).find('[name='+prop+']').is(':visible')) {
					errs++;
			        $(this).find('[name='+prop+']').addClass('error');
			        for (err in result[prop]) {
			        	var msg = result[prop][err];
			        	var item1 = $(this).find('[name='+prop+']').parent().parent().children('td:last');
			        	if (item1.length==0) {
			        		item1 = $(this).find('[name='+prop+']').closest('label').find('.errorbox');
			        		$(item1).append('<span>'+msg+'</span>');
			        	}
			        	else {
			        		$(item1).append('<li>'+msg+'</li>');
			        	}
			        	
			        }
			        $(this).find('[name='+prop+']').parent('div').addClass('error');
				}
			}
			if (errs==0) {
				return true;
			}
			else {
				return false;
			}
		}
	});
}
function validateArray($arr, $rules) {
	$rules=str_replace(Array("\r\n", "\r"), "\n", $rules);
	var $aRules = explode("\n",$rules);
	var $aNames = Array();
	
	if (is_array($aRules)) {
		for (i in $aRules) {
			var $rule=$aRules[i];
			
			$rule = trim($rule);
			if (!empty($rule)) {
				var exp = explode(',',$rule,5);
				var $name = exp[0];
				var $type = exp[1];
				var $matching = exp[2];
				var $fullname = exp[3];
				var $addional = exp[4];
				$aNames[$name]=$fullname;
			}
		}
		
		var $err=Array();
		
		for (i in $aRules) {
			var $rule=$aRules[i];
			$rule = trim($rule);
			if (!empty($rule)) {
				var exp = explode(',',$rule,5);
				var $name = exp[0];
				var $type = exp[1];
				var $matching = exp[2];
				var $fullname = exp[3];
				var $addional = exp[4];
				// $aNames.$name=$fullname;
				
				var $val = $arr[$name];
				if ($val==undefined) { $val=''; } // incorrect rule
				
				switch ($type) {
					case 'int':
						var exp = explode('-', $addional);
						var $vMin = exp[0];
						var $vMax = exp[1];
						if ($val==undefined || !$val.match(/^[0-9-]+$/)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" nie jest liczbą");
						}
						else {
							$val = parseInt($val);
							if (($vMax && $val>$vMax) || ($vMin && $val<$vMin)) {
								if ($err[$name]==undefined) { $err[$name]=Array(); }
								$err[$name].push("Wartość pola "+$fullname+" nie mieści się w dopuszczalnym zakresie");
							}
						}
						break;
					case 'regexp':
						$addional = new RegExp($addional);
						if ($val==undefined || !$val.match($addional)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" jest w niepoprawnym formacie");
						}
						break;
					case 'string':
						var exp = explode('-', $addional);
						var $lMin = exp[0];
						var $lMax = exp[1];
						var $iLength = $val.length;
						if ($val==undefined || ($lMax && $iLength>$lMax) || ($lMin && $iLength<$lMin)) {
							var add1='';
							if ($lMin && !$lMax) {
								add1=' (minimum '+$lMin+' znaków)';
							}
							else if (!$lMin && $lMax) {
								add1=' (maksimum '+$lMax+' znaków)';
							}
							else {
								if ($lMin==$lMax) {
									add1=' (wymagane dokładnie: '+$lMin+' znaków)';
								}
								else {
									add1=' (przedział: '+$lMin+'-'+$lMax+' znaków)';
								}
							}
							
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" jest niepoprawnej długości"+add1);
						}
						break;
					case 'enum':
						var $accepted = explode('|',$addional);
						if ($val==undefined || !in_array($val, $accepted)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Pole "+$fullname+" zawiera niedozwoloną wartość");
						}
						break;
					case 'mail':
						var $regexp = new RegExp('^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$','i');
						if ($val==undefined || !$val.match($regexp)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" nie jest poprawnym adresem e-mail");
						}
						break;
					case 'date':
						var $regexp = new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2}$');
						if ($val==undefined || !$val.match($regexp)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" nie jest w spodziewanym formacie daty");
						}
						break;
					case 'datetime':
						var $regexp = new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2}\ [0-9]{2}:[0-9]{2}:[0-9]{2}$');
						if ($val==undefined || !$val.match($regexp)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" nie jest w spodziewanym formacie daty i czasu");
						}
						break;
					case 'alphanum':
						var $regexp = new RegExp('^[a-zA-Z0-9_-]*$');
						
						var exp = explode('-', $addional);
						var $lMin = exp[0];
						var $lMax = exp[1];
						var $iLength = $val.length;
						
						if ($val==undefined || !$val.match($regexp)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Pole "+$fullname+" może zawierać tylko znaki a-z i cyfry");
						}
						else if (($lMax && $iLength>$lMax) || ($lMin && $iLength<$lMin)) {
							var add1='';
							if ($lMin && !$lMax) {
								add1=' (minimum '+$lMin+' znaków)';
							}
							else if (!$lMin && $lMax) {
								add1=' (maksimum '+$lMax+' znaków)';
							}
							else {
								if ($lMin==$lMax) {
									add1=' (wymagane dokładnie: '+$lMin+' znaków)';
								}
								else {
									add1=' (przedział: '+$lMin+'-'+$lMax+' znaków)';
								}
							}
							
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" jest niepoprawnej długości"+add1);
						}
						break;
					case 'float':
						if ($addional) { $addional=preg_quote($addional,'/'); }
						else { $addional='.'; }
						
						var $regexp = new RegExp('^[0-9]+['+$addional+']?[0-9]*$');
						if ($val==undefined || !$val.match($regexp)) {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Wartość pola "+$fullname+" nie jest liczbą zmiennoprzecinkową");
						}
						break;
					case 'check':
						if ($val=='') {
							if ($err[$name]==undefined) { $err[$name]=Array(); }
							$err[$name].push("Zaznacz pole "+$fullname);
						}
						break;
					default:
						break;
				}
				if ($matching) {
					if ($val!=$arr[$matching]) {
						if ($err[$name]==undefined) { $err[$name]=Array(); }
						$err[$name].push("Wartość pola "+$fullname+" różni się od wartości pola "+$aNames[$matching]);
					}
				}
			}
		}
		
		if (!empty($err)) {
			return $err;
		}
		else {
			return true;
		}
	}
	else { return false; }
}


/*
$(document).ready(function(){
	if (readCookie('eighteen')=='ok') { }
	else {
		dimAndBox();
		scrolled();
		$('#dim_enter').live('click',hideDim);
		showDim();
	}
});



function scrolled() {
	var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();
	var viewportWidth = window.innerWidth ? window.innerWidth : $(window).width();
	dimAndBox(viewportWidth, viewportHeight, $(window).scrollTop());
}

function dimAndBox(vw_, vh_, st_) {
	var h_ = $('#main_container').outerHeight();
	$('#dim').height(h_);
	if (vh_) {
		var bh_ = $('#dimbox').height();
		var bw_ = $('#dimbox').width();
		var posTop = (vh_-bh_)/2;		
		var posLeft = (vw_-bw_)/2;
		$('#dimbox').css({top:(posTop+st_)+'px',left:posLeft+'px'});
	}
}

function copyContents(from, to) {
	$('#'+to).html('<div id="closedim">X</div>');
	$('#'+from).clone(true).appendTo('#'+to);
}

function showDim(showClose) {
	$(window).scroll(scrolled);
	$(window).resize(scrolled);
	scrolled();
	$('#dim, #dimbox').fadeIn(500);
	if (showClose) {
		$('#closedim').fadeIn(500);
	}
	//$('#dimbox').children().removeClass('din');
	scrolled();
}
function hideDim() {
	createCookie('eighteen', 'ok', 7);
	$('#dim, #dimbox').fadeOut(500);
	$(window).unbind('scroll');
	$(window).unbind('resize');
}
*/


function getURLParam(strParamName, strHref) {
	var strReturn = "";
	if (strHref==undefined || strHref=='' || strHref==null) {
		strHref = window.location.href;
	}
	if (strHref.indexOf("?") > -1) {
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for (var iParam = 0; iParam < aQueryString.length; iParam++) {
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1) {
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return decodeURIComponent(strReturn);
}
