﻿/**
 * swshop
 * Siteswift Standard Javascript for Shop
 */
var swshop = {
		checkminorder: function(amount, minorder, alertTxt) {
			if (parseInt(amount) >= parseInt(minorder)) {
				return true;
			} else {
				alert(alertTxt);
				return false;
			}
		},
		
		updateCart: function (loadUrl, loadTxt, errorTxt){
			$.ajax({
				url: loadUrl,
				cache: false,
				beforeSend: function(request, settings){
					beforeSendSubmit(false, loadTxt);
				},
				success: function(data, status, request){
					successSubmit(false, data);
				},
				error: function(request, status, error){
					errorSubmit(false, errorTxt);
				}
			});
		},
				
		optSubmit: function (optId, loadTxt, errorTxt, amount, minorder, alertTxt){
			var action = $("#addToCart_"+optId).attr("action");
			var $fields = $(".optOverlayText_"+optId).find(":input");
			
			if (swshop.checkminorder(amount, minorder, alertTxt)) {
				$.ajax({
					type: "POST",
					url: action,
					data: $fields.serialize(),
					beforeSend: function(request, settings){
						$.prettyPhoto.close();
						beforeSendSubmit(true, loadTxt);
					},
					success: function(data, status, request){
						successSubmit(true, data);
					},
					error: function(request, status, error){
						errorSubmit(true, errorTxt);
					}
				});
			}
		},
		
		normSubmit: function (optId, loadTxt, errorTxt, amount, minorder, alertTxt){
			var action = $("#addToCart_"+optId).attr("action");
			var $fields = $(".optOverlayText_"+optId).find(":input");
			
			if (swshop.checkminorder(amount, minorder, alertTxt)) {
				$.ajax({
					type: "POST",
					url: action,
					data: $fields.serialize(),
					beforeSend: function(request, settings){
						beforeSendSubmit(true, loadTxt);
					},
					success: function(data, status, request){
						successSubmit(true, data);
					},
					error: function(request, status, error){
						errorSubmit(true, errorTxt);
					}
				});
			}
		},
				
		plainSubmit: function (optId, loadTxt, errorTxt, amount, minorder, alertTxt){
			var action = $("#addToCart_"+optId).attr("action");
			var $fields = $("#addToCart_"+optId).find(":input");
			
			if (swshop.checkminorder(amount, minorder, alertTxt)) {
				$.ajax({
					type: "POST",
					url: action,
					data: $fields.serialize(),
					beforeSend: function(request, settings){
						beforeSendSubmit(true, loadTxt);
					},
					success: function(data, status, request){
						successSubmit(true, data);
					},
					error: function(request, status, error){
						errorSubmit(true, errorTxt);
					}
				});
			}
		},
		
		optChangeId: function (optId){
			var $elmId = $(".pp_content_container #optOverlay_"+optId).find("label, input[type='checkbox']").each(function(index){
				if ($(this).is(':checkbox')){
					$(this).attr('id', $(this).attr('id') + '_ov');
				} else {
					$(this).attr('for', $(this).attr('for') + '_ov');
				}
			});
		}
}

// --- FUNCTIONS ---------------------------------------------------
// -----------------------------------------------------------------

function beforeSendSubmit(showAlert, loadTxt) {
	// load icon
	// --- cartsummary ---
	$(".cartsummary").html("<span class='loading'>" + loadTxt + "</span>");
	// --- sidebar ---
	$(".cartSidebar #cartLoadstatusWrapper").removeClass("inactive").addClass("active").html("<span class='loading'>" + loadTxt + "</span>");
	// --- submitAlert ---
	if (showAlert) {
		$("body").append("<div id='submitAlert'><div class='content'>" + loadTxt + "<div class='loader'></div></div></div>");
		$("#submitAlert").animate({
			top: "0px",
			opacity: 1
		});
	}
}

function successSubmit(showAlert, data) {
	var $nDom = $("<div></div>");
	// inject the contents of the document in, removing the scripts
	// to avoid any 'Permission Denied' errors in IE
	$nDom.append(data.replace(/<script(.|\s)*?\/script>/g, ""));
	// --- cartsummary ---
	$(".cartsummary").html($nDom.find(".cartsummary").html());
	// --- stagenav ---
	$(".stagenav").html($nDom.find(".stagenav").html());
	// --- sidebar ---
	$(".cartSidebar").html($nDom.find(".cartSidebar").html());
	$(".cartSidebar #cartLoadstatusWrapper").removeClass("active").addClass("inactive").html("");
	// --- submitAlert ---
	if (showAlert) {
		$("#submitAlert").animate({
			top: "-200px",
			opacity: 0
		}, function() {
			$(this).remove();
		});
	}
}

function errorSubmit(showAlert, errorTxt) {
	// remove loading icon and throw error
	// --- cartsummary ---
	$(".cartsummary").html("<span class='error'>" + errorTxt + "</span>");
	// --- sidebar ---
	$(".cartSidebar #cartLoadstatusWrapper").removeClass("active").addClass("inactive").html("<span class='error'>" + errorTxt + "</span>");
	// --- submitAlert ---
	if (showAlert) {
		$("#submitAlert").replaceWith("<div id='submitAlert' class='error'>" + errorTxt + "</div>");
	}
}


