var dialogs = new Array();
var current_dialog = new Array();
var update_blocks = new Array();
var update_callbacks = new Array();

function openDialog(block, dynamic_id, hide_header, effect)
{
	if (dynamic_id === undefined)
	{
		dynamic_id = 0;
	}

	if (hide_header === undefined)
	{
		hide_header = false;
	}

	if (effect === undefined)
	{
		effect = 'clip';
	}

	var container = block.split(/\?|#|&/)[0];
	dialogs.push(container);

	$('#'+container).remove();
	$('body').append('<div id="'+container+'"></div>');
	
	var url = location.href.split(/\?|#/)[0];
	$('#'+container).load(url+"?block="+block, {edit_id: dynamic_id}, function()
	{
		var d_title  = $('div:first-child', this).attr('title');
		var d_width  = parseInt($('div:first-child', this).css('width'));
		var d_height = parseInt($('div:first-child', this).css('height'));
		//$(".tabs").tabs().show();
		$('#'+container).attr('title', d_title);
		//$('#'+container).show();

		$('#'+container).dialog(
		{
			modal: true,
			autoOpen: false,
			width: d_width+40,
			height: d_height+55,
			zIndex: 4000,
			hide: effect,
			open: function(event, ui) 
			{
				$(this).parent().hide();
				$(this).parent().show(effect);
				//$("body").animate({opacity: 1.0},0);
				//$("body").fadeTo(0, 1.0);

						
				//$('#loading_in_progress').hide();
						
				
				$('#'+container).css('minHeight', 0);
				$('#'+container).css('overflow','hidden');
				$("span.ui-dialog-title").text(d_title);
				
				if (hide_header)
				{
					$(".ui-widget-content").css("background","none");
					$(".ui-widget-header").css("background","none");
					$(".ui-widget-header").css("display","none");
					$(".ui-widget-header").css("border","none");
					$(".ui-dialog-titlebar-close").css("color","transparent");
					$(".ui-dialog-titlebar-close").css("background","none");
					$(".ui-resizable-handle").css("display","none");
					$(".ui-icon-closethick").css("display","none");
				}
				showInputExamples();

			},
			close: function(event, ui) 
			{
				if (dialogs.length > 0)
				{
					while ((current_dialog != container) && (dialogs.length != 0))
					{
						current_dialog = dialogs.pop();
					}
				
					if (dialogs.length != 0)
					{
						while ((current_dialog == container) && (dialogs.length > 0))
						{
							last_dialog = dialogs.pop();
						}
						dialogs.push(last_dialog);
					}

					if (next_dialog = dialogs.pop())
					{
						var next_title  = $('#'+next_dialog+' div:first-child').attr('title');
						//alert("Nächster Titel:"+next_title);
						$("span.ui-dialog-title").text(next_title);
						dialogs.push(next_dialog);
					}
					else
					{
						$("span.ui-dialog-title").text('');
					}
					
					//alert("Container to close:"+container);
					if (update_blocks[container])
					{
						while (update_blocks[container].length > 0)
						{
							var src = update_blocks[container].pop();
							var dst = update_blocks[container].pop();
							//alert('Update '+src+' > '+dst);
							//$("+"+dst).css('background-color', '#FFFFFF');
							//$("#"+dst).fadeTo(300, 0.5);
							//$("#"+dst).prepend($('#reloading_in_progress').html());
							
							$("#"+dst).load(url+"?block="+src+"&override_url_interpretation=1", function()
							{
								$(this).fadeTo(0, 1.0);
							});
						}
					}
					
					if (update_callbacks[container])
					{
						while (update_callbacks[container].length > 0)
						{
							var cb = update_callbacks[container].pop();
							eval(cb+'()');
						}
					}
					$('#'+container).remove();
				}
			}
		});
		
		$('#'+container).dialog('open');
	});
}

function closeDialog()
{
	if (block = dialogs.pop())
	{
		dialogs.push(block);
		$('#'+block).dialog("close");
	}
}

function submitDialog(me, block, container)
{
	$('input,textarea', $(me).parents('form')).each(function()
	{
    	if ($(this).val() == $(this).attr('title'))
    	{
    		$(this).val('');
    	}
	} );
	url = location.href.split(/\?|#/)[0];
	
	if (container === undefined)
	{
		container = block.split(/\?|#|&/)[0];
	}
	
	/*	if (show_progressbar)
	{
		$('#'+container).html($('#loading_in_progress').html());
	}
	*/

	//$('#dialog_container form').ajaxSubmit
	$(me).parents('form').ajaxSubmit({ 
        target:        '#'+container,   // target element(s) to be updated with server response 
        // other available options: 
        url:       url+'?block='+block,
        beforeSubmit:	preworkSubmittedData,// override for form's 'action' attribute 
        success:	postworkSubmittedData// override for form's 'action' attribute 
    });

	return false;
}

function submitDialogConfirmed(me, block, confirm_var)
{
	if (confirm_var === undefined)
	{
		confirm_var = 'delete';
	}

	last_submit_object 		= me;
	last_submit_parameters 	= block+'&'+confirm_var+'=1';
	submitDialog(last_submit_object, last_submit_parameters);
}


function reloadBlock(dst, src)
{
	var url = location.href.split(/\?|#/)[0];

	$("#"+dst).load(url+"?block="+src+"&override_url_interpretation=1", function()
	{
		$(this).fadeTo(0, 1.0);
	});
}


function preworkSubmittedData(formData, jqForm, options)
{
	//showRequest(formData, jqForm, options);
}

function showRequest(formData, jqForm, options) { 
    // formData is an array; here we use $.param to convert it to a string to display it 
    // but the form plugin does this for you automatically when it submits the data 
    var queryString = $.param(formData); 
 
    // jqForm is a jQuery object encapsulating the form element.  To access the 
    // DOM element for the form do this: 
    // var formElement = jqForm[0]; 
 
    alert('About to submit: \n\n' + queryString); 
 
    // here we could return false to prevent the form from being submitted; 
    // returning anything other than false will allow the form submit to continue 
    return true; 
} 

function postworkSubmittedData(formData, jqForm, options) 
{
	//$(".tabs").tabs().show();
	showInputExamples();
	//$('#loading_in_progress').hide();
	return true;
}

function setUpdateBlocks(block)
{
	var argv = setUpdateBlocks.arguments;
	var argc = argv.length;
	var url = location.href.split(/\?|#/)[0];
	
	// first param is the dialog/block we're using
	update_blocks[block] = new Array();
	for (var i = 1; i < argc; i++)
	{
		update_blocks[block].push(argv[i]);
	}
}

function mysqlTimeStampToDate(timestamp) 
{
    //function parses mysql datetime string and returns javascript Date object
    //input has to be in this format: 2007-06-05 15:26:02
    var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
    var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
    return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}

function multiplyPrice(me, factor, container)
{
	var result = $(me).val() * factor;

	$('#'+container).text('$'+result.toFixed(2));
}

function subPrice(me, first, second, container)
{
	var result = $("#price").val() - $("#discount").val();
	var discount = ($("#discount").val() / $("#price").val())*100;
	
	$('#'+container).text('$'+result.toFixed(2));
	$('#discountpct').text(discount.toFixed(0)+'%');
}

function copyIfEmpty(me, container)
{
	if (($(me).val() != "") && $('#'+container).val() == $('#'+container).attr("title"))
	{
		$('#'+container).removeClass("embedded_default_text");
		$('#'+container).val($(me).val());
	}
}

function showInputExamples()
{
	$("input,textarea").labelify({labelledClass: "embedded_default_text"});
}

function gmLoad()
{
	if (gm_script_exec !== undefined)
	{
		document.body.appendChild(gm_script_exec);
	}
	
	$(window).unload( function () { GUnload(); } );
}

function getIndexUrl()
{
	return location.protocol+"//"+location.host+"/";
}

function loginFacebook()
{
	//var url = location.href.split(/\?|#/)[0];
	var url = getIndexUrl();
	$.ajax({
		  url: url+"ajax?func=checkFacebookLogin",
		  success: function(data) 
		  {
		  }
		});	/*
	$(document).load(url+"ajax?func=checkFacebookLogin", {edit_id: 0}, function()
	{
	});
	*/
}

function logoutFacebook()
{
	//var url = location.href.split(/\?|#/)[0];
	var url = getIndexUrl();

	$.ajax({
		  url: url+"ajax?func=logout",
		  success: function(data) 
		  {
		  }
		});	/*
	
	$(document).load(url+"ajax?func=logout", {edit_id: 0}, function()
	{
	});*/
}

//session : fb_session, // don't refetch the session when PHP already has it
window.fbAsyncInit = function() 
{
	FB.init({	appId : fb_app_id,
				status : true, // check login status
				cookie : true, // enable cookies to allow the server to access the session
				xfbml : true // parse XFBML
			});

	// whenever the user logs in, we refresh the page
	FB.Event.subscribe('auth.login', function(response) 
	{
		loginFacebook();

		var url = getIndexUrl();
		$('#header').load(url+"?block=header", {edit_id: 0}, function()
		{
		});
	});

	FB.Event.subscribe('auth.logout', function(response) 
	{
		logoutFacebook();

		var url = getIndexUrl();
		$('#header').load(url+"?block=header", {edit_id: 0}, function()
		{
		});
	});
};

function confirmSubmit()
{
	var agree=confirm("Are you sure you wish to continue?");
	if (agree)
	return true ;
	else
	return false ;
}


$(document).ready(function() 
{
	$('.togglescope a.toggletrigger').click(function() 
	{
		var element_to_show = $(this).attr('name');
		$('.togglescope .toggleelement').hide();
		$('#'+element_to_show).show();
		
		return false;
	})
	
	showInputExamples();
	$().maxlength();

	$(".tabs").tabs().show();
	
	if (gm_script !== undefined)
	{
		document.body.appendChild(gm_script);
	}
	
	$("a.tooltip").cluetip({splitTitle: '|'});

	Cufon.replace('.rockwell');
});
