$(document).ready(function(){
	initSelect();
	initContactForm();
	productPriceUpdate();
	catFilter();
	sortFilter();
});

function initSelect() 
{	
	$('div.select span').each(function(i){
		var curRel=$(this).parents('div.select').find('ul li a:first').text();
		$(this).html(curRel);
	});	
		
	$('div.select span').click(function(){
		closeAll($(this));
		var curPosition = $(this).parents('div.select').css('position');
		$(this).parents('div.select').css('position', (curPosition=='static')? 'relative':'static' );
		$(this).parents('div.select').find('ul').toggle();
	});

	$("div.select ul li").hover(
		function(){ $(this).addClass('hover'); },
		function(){ $(this).removeClass('hover');}
	);
	$('div.select ul li a').click(function(e){
		e.preventDefault();
		var curText = $(this).text();
		var curValue = $(this).attr('rel');
		$(this).parents('div.select').css('position','static');
		$(this).parents('div.select').find('input').attr('value',curValue);
		$(this).parents('div.select').find('span').html(curText);
		$(this).parents('div.select').find('ul').hide();
	});

	$(document).click(function(e){
		var trgt = $(e.target);
		if (!trgt.parents().hasClass('select')){
			$('div.select ul').hide();
			$('div.select').css('position','static');
		}
	});

}

function closeAll(obj)
{
	var els = $('div.select span').not(obj);
	els.parents('div.select').css({'position':'static'}).find('ul').hide();
}

function catFilter() 
{
	$("div.select ul.cat li").click(function(){
		window.location.assign($(this).children().attr('href'));
		return false;
	});

	$('div.cat span').each(function(i){
		var curRel=$(this).parents('div.cat').find('ul li.active a:first').text();
		$(this).html(curRel);
	});
}

function sortFilter() 
{
	$("div.select ul.sortby li").click(function(){
		window.location.assign($(this).children().attr('href'));
		return false;
	});
	$('div.sortby span').each(function(i){
		var curRel=$(this).parents('div.sortby').find('ul li.active a:first').text();
		$(this).html(curRel);
	});
}

var currency = '';
var price = '';
var opt_price = '';

function productPriceUpdate() 
{
	if($('form[name="addtobasket"]').get(0))
	{
		//base price
		var priceVal = $('#saleprice').val();
		currency = priceVal.substr(0,1);
		price = priceVal.substr(1);
		price = parseFloat(price);

		// Default value
		var amount = $('#quan').val();
		price = parseFloat(price)*amount;
		
		$('#price').html(currency+price.toFixed(2));
		
		// Options event
		$('div.select ul li').click(function(){
			
			productPriceRecalculate(price, currency);
		
		});
		// Quantity event
		$('#quan').keyup(function(){			
			var amount = $('#quan').val();
			var total = parseFloat(price)*amount;			
			$('#price').html(currency+total.toFixed(2));
		});
	}
}

function productPriceRecalculate(price, currency)
{
	//Selected options additionals
	var options = $('input[name^="productOptions"]');
	$.each(options, function(i,option){	
		if($(option).val() != '')
		{
			var option_link = $('a[rel="'+$(option).val()+'"]');
			if($(option_link).attr('href') != 'undefined' && $(option_link).attr('href') != '')
			{
				var addon_price = $(option_link).attr('href').substr(1);
				if(addon_price != '')
				{
					var sign = addon_price.substr(0,1);
					var addon_price = addon_price.substr(1);
					
					if(sign == '+')
					{
						price = price+parseFloat(addon_price);
						opt_price = parseFloat(addon_price);
					}
					else if(sign == '-')
					{
						price = price-parseFloat(addon_price);
						opt_price = parseFloat(addon_price);
					}
				}
			}
		}	
	});	
	
	var amount = $('#quan').val();
	price = price*amount;
		
	$('#price').html(currency+price.toFixed(2));
}

function initContactForm()
{
	if ($('#contactform').get(0)){
	
		$('#contactform').submit(function(){
			
			var name = $('#contactform input[name="name"]');
			var email = $('#contactform input[name="email"]');
			var phone = $('#contactform input[name="phone"]');
			var message = $('#contactform textarea[name="message"]');
	
			
			//validation
			if (!name.val()) {
				alert('Please enter your Name');
				name.focus();
				return false;
			}			
			
			if (!email.val()) {
				alert('Please enter your E-mail');
				email.focus();
				return false;
			}
			
			if (!is_email(email.val())) {
				alert('Please enter valid E-mail');
				email.focus();
				return false;
			}
			
			if (!message.val()){
				alert('Please enter your Message');
				message.focus();
				return false;
			}	
			
			var form_values = $("#contactform").serialize();
			var form_action = $("#contactform").attr('action');
			
			$.ajax({
				type: "POST",
				url: form_action,
				data: form_values,
				success: function(response){
					if(response == 'ok')
					{
						alert('Thank you for contacting us.');
					}
					else if(response == 'error')
					{
						alert('Email send error. Please try one more time.');
					}
					else
					{
						alert('Error ajax responce');
					}
				}
			});

			
			return false;
		});
	
	}
}

function is_email(address){
	if(!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/i.test(address)){
		return false;
	} else {
		return true;
	}	
}

function pa( obj )
{
   if(!obj || typeof(obj) != 'object') {
      var _type = typeof(obj);
      if(_type == 'undefined') {
         alert("["+_type+"]");
      }
      else {
         var _output = "[" + _type + "] => `" + obj + "`";
         alert(_output);
      }
      return;
   }
   
   var
      _output = "\t OBJECT PROPERTIES: \n";
      separator = "";
      spacer = "";
      i = 0;
   
   try{
      for( var _key in obj ) {
         if((i % 2) == 1){ separator = "\n"; spacer = "\t\t"; }
         else{ separator = ""; spacer = ""; };
         
         _output += spacer + "[" + _key + '] => `' + obj[_key] + '`' + separator;
         ++i;
      }
   }
   catch(err){
      _output += "Can't get properties for: " + obj;
   }
   
   alert(_output);
} 


