// scrollTo plugin {* http://flesler.blogspot.com/2007/10/jqueryscrollto.html *}
(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

$(function($) {
	
	// DETAIL IMAGES - scroll handling
	if ($('div.galerie').length > 0) {
		
	  var scrollBox = $("div.galerie")
	  scrollBox.data('position',0);	// ads position data to remember the position of scrolled elements
	  scrollBox.each(function() {
		  $(this).scroll_arrows(4);
	  });

	  $(".galerie .go").click(function(event){
			event.preventDefault();
			var scrollbox = $(this).parents('.galerie').find('div.inside');
			$(this).scroll_variants(scrollbox,4,'go');
	  });
	  /*
	  $("#detail_left .skladove_variace .go").mouseenter(function(event){
		  var item = $(this);
		  setTimeout(function(item){
			    var scrollbox = item.parents('.skladove_variace').find('div.variace');
				$(this).scroll_variants(scrollbox,3,'go');
		      }, 500 );
      });*/

	  $(".galerie .back").click(function(event){
			event.preventDefault();
			var scrollbox = $(this).parents('.galerie').find('div.inside');
			$(this).scroll_variants(scrollbox,4);
	  });
	  /*
	  $("#detail_left .skladove_variace .variace .images .width a").click(function(event){
			event.preventDefault();
			$(this).hide();
			$('#shop_image_reload_href').change_image();
	  });*/
	}
	
	// end on document ready actions
});


//DETAIL - GALLERY - fn to make variation image open gallery
$.fn.change_image = function() {
	//var imagelink = image.next('img').attr('href');
	this.data('link',this.attr('href'));
	this.attr('href','#TB_inline?width=800&amp;height=635&amp;inlineId=gallery'); // addClass('displaygallery')
};


// FUNCTION TO SHOW/HIDE ARROWS FOR SCROLLBOX
$.fn.scroll_arrows = function(maxitems) {
	var count = this.find('a').not(':hidden').size();
	var position = this.data('position');
	if (maxitems < (count-position))
	{
		this.parent().find('a.go').show();
	} else {
		this.parent().find('a.go').hide();
	}
	if (position > 0)
	{
		this.parent().find('a.back').show();
	} else {
		this.parent().find('a.back').hide();
	}	
};	


// FUNCTION TO SCROLL
$.fn.scroll_variants = function(scrollbox,maxitems,direction) {
//	var posmax = scrollbox.find('a').size()-3;
	var count = scrollbox.find('a').not(':hidden').size();
	var position = scrollbox.data('position') == undefined ? 0 : scrollbox.data('position');
	if (direction == 'go')
	{
		if (maxitems < (count-position)) position++;
	} else {
		if (position > 0) position--;
	}
	scrollbox.data('position',position);
	scrollbox.scrollTo(scrollbox.find('a:eq('+position+')'));
	scrollbox.scroll_arrows(maxitems);
};	


//BASKET - display correct payment method
$.fn.recalculate_delivery = function() {
	if ($(this).attr('name') == 'transport')
	{
		var $delivery = $("input[name='transport']:checked + label").attr('class').split(' ');
		$('#total_wdelivery').text((parseFloat($('#total_price').text()) + parseFloat($delivery[0])) + ',-');
	}
};


//BASKET - display correct payment method
$.fn.correct_payment = function() {
	if ($(this).attr('name') == 'transport')
	{
		var classes = $(this).attr('class').split(' ');
		if (classes[1])
		{
		  var payments = classes[1].split('_');
		  $("input[name='payment']").attr('disabled',true).next('label').css('color','#999');
		  for ( var i in payments )
		  {
		    $("input[name='payment'][value='"+payments[i]+"']").removeAttr("disabled").next('label').css('color','#000');
		  }
		  //recalculate delivery cost
		  $("input[name='payment']").each(function() {
			//$(this).recalculate_cod();
			var $costs = $("input[name='transport']:checked + label").attr('class').split(' ');
			var $price = '(+'+$costs[1]+' '+$('#currency').text()+')';
			var $label = $(this).next('label');
			if ($label.attr('class')=='1')
			{
				if ($label.text().match(/\(+.*\)+/))
				{
					// remove parenthesis if there are ones
					$label.text($label.text().replace(/\(+.*\)+/,''));
				}
				$label.text($label.text() + $price);
			}
			if ($(this).attr('disabled')) $(this).removeAttr('checked');
		  });
		}
	}
	var delivery = 0;
	if ($("input[name='transport']:checked + label").length != 0)
	{
	  var deliveryText = $("input[name='transport']:checked + label").attr('class').split(' ');
	  delivery = (deliveryText[0]) ? parseFloat(deliveryText[0]) : 0;
	}
	var codText = $("input[name='payment']:checked + label").text().split('+');
	var cod = (codText[1]) ? parseFloat(codText[1]) : 0;
	var total_price_with_delivery = parseFloat($('#total_price').text()) + delivery + cod;
	$('#total_wdelivery').text(total_price_with_delivery.toFixed(2)  + ',- ');
};

//USER REG/PROFILE FORM
function verifyProfile()
{
	var error = false;
	error = !$("#regform input[name='login']").check_form('Zadejte e-mail','^.+@.+\..{2,4}$') || error;
	error = !$("#regform input[name='pass_aa']").check_form('Zadejte heslo') || error;
	error = !$("#regform input[name='pass_check']").check_form('Zopakujte heslo') || error;
	
	error = !$("#regform input[name='first_name']").check_form('Zadejte jméno') || error;
	error = !$("#regform input[name='last_name']").check_form('Zadejte přijmení') || error;
	error = !$("#regform input[name='phone']").check_form('Zadejte telefon') || error; // '^\+?[0-9 ]+$'
	error = !$("#regform input[name='street']").check_form('Zadejte ulici','^.+[ ].+$') || error;
	error = !$("#regform input[name='city']").check_form('Zadejte město') || error;
	if (($("#regform input[name='agreement']").length != 0) && !$("#regform input[name='agreement']").attr('checked')) {
		error = 1;
		$("#regform input[name='agreement']").next('label').css('color','#f00');
	}
	error = !$("#regform input[name='psc']").check_form('Zadejte PSČ') || error;
	if ($("form[class='register']").length != 0)
	{
		error = !$("#regform input[name='pass_aa']").check_form('Zadejte heslo') || error;
		error = !$("#regform input[name='pass_check']").check_form('Zopakujte heslo') || error;
	}
	// company records
	if ($("#regform input[name='company_record']").attr('checked')){
		error = !$("#regform input[name='company']").check_form('Zadejte název firmy') || error;
		error = !$("#regform input[name='ic']").check_form('Zadejte IČ') || error;
		error = !$("#regform input[name='dic']").check_form('Zadejte DIČ') || error;
	}
	// delivery adress
	if ($("#regform input[name='next_delivery_address']").attr('checked')){
		error = !$("#regform input[name='delivery_street']").check_form('Zadejte ulici','^.+[ ].+$') || error;
		error = !$("#regform input[name='delivery_city']").check_form('Zadejte město') || error;
		error = !$("#regform input[name='delivery_psc']").check_form('Zadejte PSČ') || error;
	}
	if (error)
	{
		$("#regformfill").show();
	}
	return error;
}

	$.fn.check_form = function(errmsg,rule) {
		if (typeof rule != "undefined") var regrule = new RegExp(rule);
		//$(this).next('span').remove();
		if (($(this).attr('value') == '')||((typeof rule != "undefined")&&(!regrule.test($(this).attr('value')))))
		{
			//$(this).addClass('errorinput');
			//$(this).after('&nbsp;<span class="error">'+errmsg+'<\/span>');
			$(this).next("span").addClass('errorinput');
			return false;
		} else {
			$(this).next("span").removeClass('errorinput');
		};
		return true;
	};
	
	function round(num, decimals) {
		  var multiplier = Math.pow(10, decimals);
		  if (typeof(num) != "number") {
		    return null;
		  }
		  if (typeof(decimals) != "number") {
		    var decimals = -1;
		  }
		  if (decimals > 0) {
		    return Math.round(num * multiplier) / multiplier;
		  } else if (decimals == 0) {
		    return Math.round(num);
		  } else {
		    return num;
		  }
		}
