/* Helper functions */

function getCookie(key) {
	var results = document.cookie.match ( '(^|;) ?' + key + '=([^;]*)(;|$)' );

	if (results)
	  return (unescape(results[2]));
	else
	  return null;
}

function setCookie(key, value, exp_y, exp_m, exp_d, path, domain, secure ) {
	var string = key + "=" + escape(value);

	if (exp_y && exp_m && exp_d)
		string += "; expires=" + new Date(exp_y, exp_m, exp_d).toGMTString();
	if (path)
	  string += "; path=" + escape ( path );
	if (domain)
	  string += "; domain=" + escape ( domain );
	if (secure)
	  string += "; secure";

	document.cookie = string;
}

function resetSelectElement(sElement) {
  for (i = 0; i < sElement.length; i++)
    if (sElement.options[i].defaultSelected == true)
      sElement.options[i].selected = true;
}

/* Desktop Javascript functions */

function dtpForward(target) {
	document.location.href = target;
}

function dtpSubmit(formId, formAction, formParams) {
	var cForm = document.getElementById(formId);

	if (formAction)
		cForm.action = formAction;

	if (formParams) {
		for (var name in formParams) {
			if (cForm.elements[name]) {
				// option fields are not supported yet, so exclude them
				if (cForm.elements[name] instanceof Array)
					alert('Optionsfields are not supported by dtpSubmit');
				else
					cForm.elements[name].value = formParams[name];
			}
			else {
				var input = document.createElement("input");

				input.setAttribute("type", "hidden");
				input.setAttribute("name", name);
				input.setAttribute("value", formParams[name]);

				cForm.appendChild(input);
			}
		}
	}
	
	cForm.submit();
}

function dtpSubmitInto(formId, formAction, formParams) {
	var cForm = document.getElementById(formId);

	var oTarget = cForm.target;
	var oAction = cForm.action;

	cForm.target = 'modalWindow';
	if (formAction)
		cForm.action = formAction;

	if (formParams) {
		for (var name in formParams) {
			if (cForm.elements[name]) {
				// option fields are not supported yet, so exclude them
				if (cForm.elements[name] instanceof Array)
					alert('Optionsfields are not supported by dtpSubmit');
				else
					cForm.elements[name].value = formParams[name];
			}
			else {
				var input = document.createElement("input");

				input.setAttribute("type", "hidden");
				input.setAttribute("name", name);
				input.setAttribute("value", formParams[name]);

				cForm.appendChild(input);
			}
		}
	}

	// Open modal window and submit form into iframe when complete
	$.fdialog.open(null, {url: 'about:blank',
							showTitleBar: false,
							showCloseButton: false,
							postOpen: function() {
								cForm.submit();
								cForm.target = oTarget;
								cForm.action = oAction;
							}
	});
}

function dtpConfirm(text) {
	if (confirm(text))
		return true;

	return false;
}

function dtpPrompt() {
	alert("Not implemented.");
}

function dtpOpen(target) {
	$.fdialog.open(null, {url: target, showTitleBar: false, showCloseButton: false});
}

function dtpClose() {
	if (parent)
		context = parent.document;
	else
		context = document;

	try {
		$('#desktop-fdialog-container', context).fadeOut('fast', function(){
			$(this).remove();
		});
		$('#desktop-fdialog-overlay', context).fadeOut('fast', function(){
			$(this).remove();
		});
	}
	catch (e) {
		$('#desktop-fdialog-big_iframe, #desktop-fdialog-overlay, #desktop-fdialog-container', context).remove();
	}
}

function dtpDispatch(formId, formAction, formParams) {
	var cForm = parent.document.getElementById(formId);

	if (formAction)
		cForm.action = formAction;

	if (formParams) {
		for (var name in formParams) {
			var input = parent.document.createElement("input");

			input.setAttribute("type", "hidden");
			input.setAttribute("name", name);
			input.setAttribute("value", formParams[name]);

			cForm.appendChild(input);
		}
	}

	cForm.submit();
}

function dtpTransfer(params) {
	var input;
	for (var name in params) {
		input = parent.document.getElementById(name);
		if (input)
			input.setAttribute("value", params[name]);
	}
}

	function rearrange(container) {
		$(container).find("tr").each(function(i){
			$(this).find("input, select").each(function() {
				var name = $(this).attr("name");
				alert(name);
				if (name.lastIndexOf("[") != -1) {
					var s = name.substr(0, name.lastIndexOf("["))+"[#"+(i - 1)+"]";
					$(this).attr("name", s);
					alert(s);
				}
			});
		});
	}

$(document).ready(function() {
	var rem = function() {
		$(this).closest("tr").remove();

		if ($(this).closest("tr").size() <= 2)
			$(this).closest("tr").find("img.remove").hide();

		//rearrange($(this).closest(".arcontainer"));
	}

	var add = function() {
		var row = $(this).closest("tr");

		// Copy current row
		var clone = $(row).clone(true).insertAfter(row);

		// Reactivate remove button
		$(clone).find("img.remove").show().click(rem);

		// Clear all fields in this row
		$(clone).find("input").each(function() {
			$(this).attr("value", "");
		});

		//rearrange($(this).closest(".arcontainer"));
	}



	// Apply rem to all remove buttons except the first one
	$(".arcontainer").each(function() {
		$(this).find("img.remove").each(function(i){
			if (i == 0)
				$(this).hide();
			else
				$(this).click(rem);
		});
	});

	// Apply add to all add button
	$(".arcontainer img.add").each(function() {
		$(this).click(add);
	});

	/*
	 * Autoresponder function for class "autocomplete"
	 * Used in CInput
	 */

	$(".autocomplete").each(function() {
		var responder = $(this).attr("responder")
		var len = $(this).attr("responderminimum")
		$(this).autocomplete({
                minLength: len,    
                source: function(request, response) {
                    $.ajax({
                        url: responder,
                        data: {term: request},
                        dataType: 'json',
                        type: 'POST',
                        success: function(data){
                            response(data);
                        }
                    });
                }
                });
	});
	
	$(".thetooltip").tooltip({relative:true, predelay:200, delay:30});
	
	$("#ui-datepicker-div").addClass("jqueryBeam");
	$(".datetimepicker").datetimepicker({
		timeFormat: 'hh:mm',
		separator: ' ',
		dateFormat: 'dd.mm.yy'
	});
	
	$(".googleMap").each(function() {
		initMap();
	});

});
