/* -------------------------------------------------------------------------
 * $Id: p3ajax.js 34268 2009-01-27 12:58:51Z jahn.tore.skaaland $
 * -------------------------------------------------------------------------
 * p3ajax.js - Ajax wrapper-functions for P3-Community
 *
 * Depends on prototype.js
 *
 * @author Thomas Malt <thomas.malt@linpro.no>
 *
 *
 */

/**
 * H?ndterer fylling av innhold i en formbox som henter innhold via ajax.
 * Skal virke for alle bokser som henter ting via ajax.
 */
function handle_ajax_formbox(callerid, url, pars) {
 	
 	if (!pars) pars="";
 	//alert("got call: " + document.body + ", url: " + url + ", params: " + pars);
 	var pos = get_position(callerid);

 	var formbox = document.createElement("div");

 	formbox.setAttribute('id', 'ajaxformbox');
 	formbox.setAttribute('class', 'ajaxregbox');

	// alert("document: " + document.width);
 	formbox.style.position = "absolute";
 	formbox.style.top = (pos.top-50)+"px";

	/*
 	if (navigator.userAgent.match(/win/i)) {
 		// Document.offsetWidth.toString()
 		var temptall = 450 - 120;
 	} else {
 	 	var temptall = document.width - pos.left - 120;
 	}
 	*/
 	
 	var temptall = 160;
 	var tempstreng = temptall+"px";
 	//alert (tempstreng);
 	
 	formbox.style.right = tempstreng;
	
	// document.width fungerer ikke i ie
	// formbox.style.right = document.width - pos.left - 120;

	formbox.style.zIndex= "100";
 	formbox.style.display= "none";
 	
 	//formbox.style.zIndex= 100;
 	
	// set_draggable(formbox);
 	document.body.appendChild(formbox);

	
 	// Skjul flasher hvis vi er p? Linux.
 	if (navigator.platform.match(/linux/i)) {
 		// alert("Yes, we're on linux: " + navigator.platform);
 		swap_flash_for_image();
 	}
 	
 	ajax = new Ajax.Updater({success: 'ajaxformbox'},url,
 	                        {method: 'get', parameters: pars, onFailure: handle_formbox_error});

	Effect.Appear(formbox, {duration: 0.4});
	
	
	
 	// alert("Done: foo: " + navigator.userAgent);
}

function display_ajax_formbox(req) {
 	alert("Got data: " + req.responseText);
 	var formbox = $('ajaxformbox');

 	formbox.appendChild(document.createTextNode(req.responseText));
 	alert("Done");
}

function handle_formbox_error(req) {
	alert("Det har dessverre oppst?tt en feil i h?ndteringen av skjema");
}

/**
 * Skrur deler av registration_form av og p?.
 * Brukt i registration_form.tpl.
 */
function toggle_regform_visibility(caller, id) {
	caller = $(caller);
	// alert("Value: " + caller.checked);
	if (caller.checked) {
		Effect.BlindUp(id);
	} else {
		Effect.BlindDown(id);
	}
}

/**
 * Siden vi trenger ? gj?re submit via ajax m? vi h?ndtere det p? en
 * elegant m?te.
 */
function handle_regform_submit(id) {
	form = $(id);
	url = form.action;
	formbody = Form.serialize(form);
	// alert("Doing submit for: " + id +"\nformbody: " + formbody +"\nurl: " + url);

	ajax = new Ajax.Updater({success: 'ajaxformbox'}, url,
	                        {method: 'post', postBody: formbody,
	                         onFailure:handle_formbox_error,
	                         onSuccess:display_regform_result});
}

/**
 * Spesiell h?ndtering av valideringskode.
 */
 /*
function handle_validation_submit(id) {
 	alert("Doing validation submit");

 	form = $(id);
 	data = Form.serialize(form);
 	ajax = new Ajax.Updater({  success: 'ajaxformbox'}, form.action,
 	                        {   method: 'post',
 	                          postBody: data,
 	                         onFailure: handle_formbox_error,
 	                         onSuccess: handle_validation_result});
 }
*/

function display_regform_result(req) {
	// alert("fikk feil fra regform: " + req.responseText);
	Effect.Appear('ajaxformbox');
}
