// CALLBACK funkcije za ajax klice na strežnik za dodajanje/odstranjevanje naslova za dostavo

// callback za dodajanje naslova za dostavo
// če vrne false se dodajanje novega naslova za dostavo ne izvrši
//
// 	Arguments:
//		forma_data - polje objektov => { name:"ime vnosnega polja obrazca", value:"vrednost obrazca" }
//
//	Return values:
//		vrne true - če je dodajanje naslova npr. preko ajaxa v tem callbacku bilo uspešno
//		vrne false - če je prišlo do napake v callbacku in iz kateregakoli razloga naslov za račun ni bil dodan
function onAddShippingAddress_callback(form_data,action) {
	var d=0;
	$.ajax({
		  type: 'POST',
		  url: action,
		  data: form_data,
		  success: function(data){
			  d=data;
		  },
		  async: false
		});
	try{
		d=parseInt(d);
		if(d>0) return d;
		else return 0;
	}
	catch(e){return 0;}
}
// callback funkcija za odstranjevanje naslova za dostavo - vrne enako kot zgoraj onAddShippingAddress_callback
// če vrne false se brisanje naslova ne izvrši
function onRemoveShippingAddress_callback(id) {
	$.ajax({
		  type: 'GET',
		  url: globals['shopurl']+"?group=controlpanel&section=addresses&ajax&deleteAddress="+id,
		  success: function(data){
			  d=data;
		  },
		  async: false
		});
	try{
		d=parseInt(d);
		return true ? d==1 : false;
	}
	catch(e){return false;}
}
function editShippingAddress_callback(form_data,action) {
	var d=0;
	$.ajax({
		  type: 'POST',
		  url: action,
		  data: form_data,
		  success: function(data){
			  d=data;
		  },
		  async: false
		});
	return d;
}
// validiranje novega dodanega naslova
function validateNewShippingAddress(fd) {
	var result = true,
		errors = new Array();
	
	for (var i=0; i<fd.length; i++) {
		if (typeof fd[i].value != 'undefined'){
			if (fd[i].value != '' && fd[i].value !== null) {
				
			}
			else
				errors.push(fd[i].name);
		}
		else
			errors.push(fd[i].name);
	}
	
	if (errors.length > 0)
		return errors;
	
	return result;
}

function setDefaultAddress(id){
    $.get(globals['shopurl']+"?group=controlpanel&section=addresses&ajax&setDefaultAddress="+id);
}
$(document).ready(function(){

	$("div#my-account div.shipping-address span.radio").live("click",function(){
		setDefaultAddress($(this).closest("div.shipping-address").find("input[name=addressid]").val());
		$("div.shipping-addresses div.shipping-address span.remove-address").show();
		$(this).closest("div.shipping-address").find("span.remove-address").hide();
	});
	//$("shipping-addresses div.shipping-address span.remove-address").show();
	// vedno počistimo polja v formi za dodajanje naslova za dostavo
	$("form#addShippingAddressForm input:text").val('');
	
	// po default je obkljukan naslov za dostavo v računu
	//$("input#account-address").attr('checked', true);
		
	// klik handler za gumb DODAJ NASLOV ZA DOSTAVO	
	$("div#my-account a#add-shipping-address").live("click",function(){
		// dialog je potrebno postavit na center zaslona
		var $dialog = $("div#dialog-add-shipping-address"),
		top = (($(window).height() - $dialog.outerHeight()) / 2) + $(window).scrollTop() + "px", 
		left = (($(window).width() - $dialog.outerWidth()) / 2) + $(window).scrollLeft() + "px";
		// pridobi se višina/širina za trenutno odprto okno v klientu in se izračuna odmik od vrha/levega roba okna

		// dialog je privzeto po CSS-u postavljen na left:-9999px da ni viden na zaslonu zato se ga najprej skrije
		// in potem se ga centrira na zaslon
		$dialog.hide()
			   .css('left', left)
			   .css('top', top);
		
		// v BODY tag se doda div za prikrivno ozadje dialoga - overlay
		$dialog.after('<div class="sveterotike-dialog-overlay"></div>');
		var $overlay = $('div.sveterotike-dialog-overlay');
		
		// animirano prikažemo dialog in prekrivno ozadje
		$overlay.fadeIn('fast');
		$dialog.fadeIn('fast');

		// klik handler za prekrivno ozadje
		$overlay.click(function(){
			// zapremo in odstranemo overlay in dialog postavimo na left:-9999px in ga na koncu prikažemo
			$overlay.fadeOut('fast', function(){
				$overlay.remove();
			});
			// dialog mora imeti CSS nastavljen parameter display:block, 
			// saj se mu le tako da v javascriptu pridobiti Višino/Širino
			$dialog.fadeOut('fast', function() {
				$dialog.css('left', '-9999px').show();
			});
			
			$("form#addShippingAddressForm input:text").val('');
			$("div.error-messages", $dialog).remove();
		});
		
		
	});
	$("div#my-account button#add-new-shipping-address-button").live("click",function(){
		
		try {
			var fd = $("form#addShippingAddressForm").serializeArray(),
				$overlay = $('div.sveterotike-dialog-overlay'),
				$dialog = $("div#dialog-add-shipping-address"),
				action= $("form#addShippingAddressForm").attr("action");
			
			
			if (true===validateNewShippingAddress(fd)) {
				$("form#addShippingAddressForm input:text").val('');
				$("div.error-messages", $dialog).remove();
				
				$overlay.fadeOut('fast', function(){
					$overlay.remove();
				});
				$dialog.fadeOut('fast', function() {
					$dialog.css('left', '-9999px').show();
				});
				var newAddressid=onAddShippingAddress_callback(fd,action);
				if (newAddressid>0) {
					var removeTxt = 'odstrani',
						//addressName = 'address name',
						//count = $("div#my-account div.shipping-addresses div.shipping-address").length,
						inputs='';
					
					for (var i=0; i<fd.length; i++) {
						/*if (fd[i].name == 'name') {
							addressName = fd[i].value;
						}*/
						inputs += '<input type="hidden" name="'+fd[i].name+'" value="'+fd[i].value+'" />';
					}
					$("div#my-account div.shipping-addresses a#add-shipping-address").before('<div class="shipping-address" style="display:none"><div class="shipping-address-nameW"><div><input class="styled" type="radio" id="shipping-address-'+newAddressid+'" name="shipping-address" value="shipping-address'+newAddressid+'" /></div><div class="shipping-address-name"><label>'+fd[1]['value']+' ('+fd[2]['value']+')</label></div></div><span class="remove-address">'+removeTxt+'</span>'+inputs+'</div>');
					$("div.shipping-address input[name=addressid]").val(newAddressid);
					Custom.init();
					
					$("div#my-account div.shipping-addresses a#add-shipping-address")
						.prev("div.shipping-address")
						.slideDown('slow');
				}
			}
			// validation failed
			else {
				var MSG = 'NAPAKA: Vsa polja so obvezna',
					$error_msg_h4 = $(document.createElement('h4')).text(MSG),
					$error_msg_div = $(document.createElement('div')).addClass('error-messages').append($error_msg_h4);
								
				if ($('div.error-messages', $dialog).length > 0) {
					$error_msg_h4.hide();
					$('div.error-messages', $dialog).append($error_msg_h4);
					$error_msg_h4.slideDown('normal');
				}
				else {
					$error_msg_div.hide().prependTo("div#dialog-add-shipping-address").slideDown('normal');
				}
			}
		}
		catch(e) {
			return false;
		}
		
		return false;
	});
	$("div#my-account div.shipping-addresses div.shipping-address label").live("click",function(){
		var data=$(this).closest("div.shipping-address");
		$("input[type=hidden]",data).each(function(){
			$("div#dialog-edit-shipping-address input[name="+$(this).attr("name")+"]").val($(this).val())
		});
		// dialog je potrebno postavit na center zaslona
		var $dialog = $("div#dialog-edit-shipping-address"),
		top = (($(window).height() - $dialog.outerHeight()) / 2) + $(window).scrollTop() + "px", 
		left = (($(window).width() - $dialog.outerWidth()) / 2) + $(window).scrollLeft() + "px";
		// pridobi se višina/širina za trenutno odprto okno v klientu in se izračuna odmik od vrha/levega roba okna

		// dialog je privzeto po CSS-u postavljen na left:-9999px da ni viden na zaslonu zato se ga najprej skrije
		// in potem se ga centrira na zaslon
		$dialog.hide()
			   .css('left', left)
			   .css('top', top);
		
		// v BODY tag se doda div za prikrivno ozadje dialoga - overlay
		$dialog.after('<div class="sveterotike-dialog-overlay"></div>');
		var $overlay = $('div.sveterotike-dialog-overlay');
		
		// animirano prikažemo dialog in prekrivno ozadje
		$overlay.fadeIn('fast');
		$dialog.fadeIn('fast');

		// klik handler za prekrivno ozadje
		$overlay.click(function(){
			// zapremo in odstranemo overlay in dialog postavimo na left:-9999px in ga na koncu prikažemo
			$overlay.fadeOut('fast', function(){
				$overlay.remove();
			});
			// dialog mora imeti CSS nastavljen parameter display:block, 
			// saj se mu le tako da v javascriptu pridobiti Višino/Širino
			$dialog.fadeOut('fast', function() {
				$dialog.css('left', '-9999px').show();
			});
			
			$("form#addShippingAddressForm input:text").val('');
			$("div.error-messages", $dialog).remove();
		});
	});
	$("div#my-account button#edit-shipping-address-button").live("click",function(){
		
		try {
			var fd = $("form#editShippingAddressForm").serializeArray(),
				$overlay = $('div.sveterotike-dialog-overlay'),
				$dialog = $("div#dialog-edit-shipping-address"),
				action= $("form#editShippingAddressForm").attr("action");
			
			if (true===validateNewShippingAddress(fd)) {
				//$("form#editShippingAddressForm input:text").val('');
				$("div.error-messages", $dialog).remove();
				
				$overlay.fadeOut('fast', function(){
					$overlay.remove();
				});
				$dialog.fadeOut('fast', function() {
					$dialog.css('left', '-9999px').show();
				});
				var addressid=editShippingAddress_callback(fd,action);
				if (addressid>0) {
					var curraddr=$("div.shipping-address input#shipping-address-"+addressid).closest("div.shipping-address");
					for (var i=0; i<fd.length; i++)
						$("input[name="+fd[i].name+"]",curraddr).val(fd[i].value)
					$("label",curraddr).text($("input[name=address_name]",curraddr).val()+" ("+$("input[name=address_address1]",curraddr).val()+")")
				}
			}
			// validation failed
			else {
				var MSG = 'NAPAKA: Vsa polja so obvezna',
					$error_msg_h4 = $(document.createElement('h4')).text(MSG),
					$error_msg_div = $(document.createElement('div')).addClass('error-messages').append($error_msg_h4);
								
				if ($('div.error-messages', $dialog).length > 0) {
					$error_msg_h4.hide();
					$('div.error-messages', $dialog).append($error_msg_h4);
					$error_msg_h4.slideDown('normal');
				}
				else {
					$error_msg_div.hide().prependTo("div#dialog-add-shipping-address").slideDown('normal');
				}
			}
		}
		catch(e) {
			return false;
		}
		
		return false;
	});
	// eventi za gumb odstrani naslov za dostavo
	$("div#my-account span.remove-address")
		.live('mouseover mouseout', function(ev){
			if (ev.type == 'mouseover') {
                $(this).addClass('hover');
            }
            if (ev.type == 'mouseout') {
                $(this).removeClass("hover");
            }
		})
	// onClick handler za odstranjevanje naslova za dostavo
		.live('click', function(){
			/*var data=new Array();
			$("input[type='hidden']", $(this).parent()).each(function(){
				var name = $(this).attr('name').replace("shipping-address-", ''),
					tmp = name.split("-");
				data.push({ name: tmp[1], value: $(this).val() });
			});*/
			if (true===onRemoveShippingAddress_callback($(this).parent().find("input[name=addressid]").val())) {
				$(this).parent().slideUp('normal', function(){
					$(this).remove();
				});
			}
		});
	
	
});
