
/**
 * Lädt ein Html-Fragment und injiziert es in 
 * den DOM
 * @param options
 * @return
 */
function loadPane(options){

	
	var target = options.target;
	var url = options.url;
	var callback = options.callback;

	$.ajaxSetup({cache:false});

	// Loader-Gif anzeigen
	$(target).html("<img src='@rooturl.image@/ajax-loader.gif'>");
	
	// Pane laden
	if(typeof callback =="function"){
		$(target).load(url, callback);
	}
	else {
		$(target).load(url);
	}
}

function loadInLayer(url){
	platform.layer({href: url, width: 550, height: 700, close: 'X', scrolling: false});
}


function closeLayer(){
	$.fn.colorbox.close();
}

function closeLayerAndReloadPage(){
	$.fn.colorbox.close();
	setTimeout("window.location.reload(true)", 500);
}

/**
 * Shortcut um eine Url in einen TabContainer zu laden
 * @param url
 * @return
 */
function loadTab(url){
	loadPane({
		target: '#loadContainer',
		url: url
		});
}

/**
 * Ein Kontakt-Formular wird submitted
 * Diese Methode ist in der Regel in FormDescriptions als onSubmitAction
 * im JavaCode angegeben
 * 
 * Das Target ist die ID aus der Colorbox. Sollten wir diese 
 * einmal austauschen, müssen wir hier entsprechend die ID ändern
 * @param form
 * @param options
 * @return
 */
function submitContactForm(form, options){
	// Url der Seite in die Form einfügen
	// -------------------------------
	// find form field for url
	$(form).find("[name='pageUrl']").attr("value", document.location.href);
	
	$(form).ajaxSubmit({
    	//target:'#cboxLoadedContent', 
		url:options.fdSubmitUrl,
		dataType:'html',
		error: function(xhr, cause, ex){alert("Es ist ein Fehler aufgetreten! "+cause);},
		success:function(response, status, xhr, form){
			$("#cboxLoadedContent").html(response);
			// colorbox in der hoehe anpassen
			$.fn.colorbox.resize();
	}
	}); 
return false; 
}

/**
 * Ein Empfehlungs-Formular wird submitted
 * Diese Methode ist in der Regel onSubmitAction
 * des recommendationforms gesetzt
 * 
 * Das Target ist die ID aus dem form renderer. Sollten wir diese 
 * einmal austauschen, müssen wir hier entsprechend die ID ändern
 * @param form
 * @param options
 * @return
 */
function submitRecommendationForm(form, options){
	// if the submit was successful it might take a while till the mail was sent and so on
	// so better hide the form to prevent multiple submits by the user
	$("#be_weiterempfehlen_container_inner").hide(); 
	$("#be_weiterempfehlen_container_inner_loading").show();
	$(form).ajaxSubmit({
    	//target:'#be_weiterempfehlen_container', 
		url:options.fdSubmitUrl,
		dataType:'html',
		error: function(xhr, cause, ex){alert("Es ist ein Fehler aufgetreten! "+cause);},
		success:function(response, status, xhr, form){
			$("#bds_recommendation_result_container").html(response);
			//$.fn.colorbox.resize();
	}
	}); 
return false; 
}

/**
 * Ein Pinbiard-Entry wird gemeldet
 * Diese Methode ist in der Regel in FormDescriptions als onSubmitAction
 * im JavaCode angegeben
 * 
 * Das Target ist das Element oberhalb des umschliessenden
 * Form-Containers
 * @param form
 * @param options
 * @return
 */
function submitReportForm(form, options){
	// Url der Seite in die Form einfügen
	// -------------------------------
	// find form field for url
	$(form).find("[name='pageUrl']").attr("value", document.location.href);
	
	var loadTarget= $(form).parents('.pinboardReportAbuseContainer').first();
	
	$(form).ajaxSubmit({
    	//target:'#cboxLoadedContent', 
		url:options.fdSubmitUrl,
		dataType:'html',
		error: function(xhr, cause, ex){loadTarget.html("Es ist ein Fehler aufgetreten! "+cause);},
		success:function(response, status, xhr, form){
			loadTarget.html(response);
		}
	}); 
	return false; 
}


/**
 * Schliesst die Report-PinboardEntry-Form
 * Element muss ein Element innerhalb der Form sein
 * @param element
 * @return
 */
function closeReportForm(element){
	// Button leiste wieder anzeigen
	// (muss vor dem remove stehen)
	showPinboardEntryButtons(element);

	var container= $(element).parents('.pinboardReportAbuseContainer').first();
	container.empty();
	
}

function loadReportForm(element, url){
	hidePinboardEntryButtons(element);
	loadTarget = $(element).parents(".markerCombineFormsAndLinks").first().find(".pinboardReportAbuseContainer").first();
	loadPane({target:loadTarget, url:url});
}
function hidePinboardEntryButtons(elementInside){
	// Button leiste verbergen
	$(elementInside).parents(".markerCombineFormsAndLinks").first().find(".markerReportForm").removeClass("hide");
	$(elementInside).parents(".markerButtonRow").first().addClass("hide");
	
}
function showPinboardEntryButtons(elementInside){
	// Button leiste wieder zeigen
	$(elementInside).parents(".markerCombineFormsAndLinks").first().find(".markerButtonRow").removeClass("hide");
}


/**
Submit eines PinboardEntries
*/
function submitPinboardForm(form, url){
	/**
	 * Das LoadTarget ist der direkte Parent des die Form
	 * umgebenden Elementes mit der Klasse ".pinboardFormContainer".
	 * (das Element 'pinboardFormContainer' ist das Erste, dass
	 * vom pinboardFormTag gerendert wird.
	 */
	var loadTarget= $(form).parents('.pinboardFormContainer').first().parent();
	
	/**
	 * Ohne Url kein Submit
	 */
	if(url== null || url.length == 0){
		loadTarget.html("Es ist ein Fehler aufgetreten: missing url");
	}
	else {
		$(form).ajaxSubmit({
			url:url,
			dataType:'html',
			error: function(xhr, cause, ex){
				loadTarget.html("Es ist ein Fehler aufgetreten! "+cause);
			},
			success:function(response, status, xhr, form){
				loadTarget.html(response);
				
				// Bisschen hacky, aber ganz flexibel.
				// wenn irgendwo der afterSubmitHook implementiert worden ist
				// dann führen wir den jetzt aus.
				if(typeof(onAfterNewPinboardMessageSubmitted == "function")){
					onAfterNewPinboardMessageSubmitted();
				}
			}
		});
	}
}

/**
 * Lädt 
 */
function loadIntoParent(element, url){
	var target = $(element).parent();//s().first();
	loadPane({target:target, url: url});
}

/**
GeoEncoding für eine FanclubForm vor dem
Submit
*/
function doGeoEncoding(form){
	//alert("doGeoEncoding");
	setCoordsFromAddress(form);
	return true; // proceed with form submission

}

function setDefaultCartBtn() {
	$('#shoppingCartIcon').attr('src', imageRoot+'icon/warenkorb_postit.png');
}

function addToCart(book) {
	var bookLink = 'http://www.carlsen.de/web/shop/getPotterCartTotalPrice?book=' + book;
	jQuery('#cart2').attr('src', bookLink);
	$('#shoppingCartIcon').attr('src', imageRoot+'icon/warenkorb_postit_glow.png');
	window.setTimeout("setDefaultCartBtn()", 1000);
}


