var version = $().jquery;
var isVersion16 = (version.indexOf("1.6.") != -1 || version.indexOf("1.4.") != -1) ? true : false;

var finalSubmit = "";
var ajxForm = false;
var sent = false;

function submitAjaxForm(paramFormId, validationURL)
{
	ajxForm = true;	
	validationURLs[paramFormId] = validationURL;	
	submitForm(paramFormId);

	
	return false;	
}

function submitForm(paramFormId)
{
	if(sent == true)
		return false;
	
	sent = true;
	/**
	 * Wenn eine System-Nachricht noch offen ist, kann kein Formular validiert/abgeschickt werden
	 */
	openSystemMessages = (typeof( window[ 'openSystemMessages' ] ) == "undefined") ? false : openSystemMessages;
	
	if(openSystemMessages != undefined)
	{
		if(openSystemMessages == true)
		{
			//systemMessage(SystemMessageId, SystemMessageType);
			$('#systemMessage_'+ SystemMessageId).dialog('open');
			
			return false;
		}
	}
	
	
	var fid = paramFormId; //(paramFormId != "") ? paramFormId : formId;
	
	var f = $("#"+fid);
	var paramString = "";

	f.find("input[type='radio'][checked], input[type='checkbox'][checked], input[type='text'], input[type='hidden'], input[type='password'], input[type='file'], input[type='submit'], select, textarea")
	.each(function()
	{
		paramString += this.name || this.id || this.parentNode.name || this.parentNode.id;
		paramString += "=" + proofValue(this.value) +"&";
	});

	validationURL = validationURLs[fid];
	sendRequest(paramString, validationURL, fid);
	
	return false;
}

function proofValue(val)
{
	val = val.replace("&", "_und_");
	val = val.replace("?", "_frag_");
	
	return val;
}



function sendRequest(paramString, validationURL, formId)
{
	$('.errorHint').remove();
	$('#errorsDiv').hide();

	$.ajax({
		type: "POST",
		url: validationURL,
		data: paramString,
		success: function(responseText)
		{
			sent = false;
			responseArray = responseText.split("|");
			if(responseArray[1] == "ok")
			{
				/**
				 * Muss nur noch abgeschickt werden, wenn es sich nicht um ein Ajax-Form handelt.
				 * Ajax-Forms werden gleich eingetragen, wenn die Daten valide sind. Dazu wird dann
				 * eine Nachricht und ein Ziel zum Anzeigen (html-id) rückgegeben.
				 */
				if(ajxForm == true)
				{	
					ajxForm = false;
					// Den Standard wieder herstellen
					
					/**
					 * Das Formular wurde gespeichert, nun die Meldung aus dem System anzeigen.
					 */
					if(responseArray[2] != "")
						$('#' + responseArray[2]).show();
					if(responseArray[3] != "")
						$('#' + responseArray[3]).hide();
					
					/**
					 * Bei News-Kommentaren wird dann einer aufaddiert
					 */
					if($('#numNewsComments').length > 0)
					{
						v = $('#numNewsComments').html();
						v++;
						$('#numNewsComments').html(v);
					}
					
				}
				else
				{
					cookieSave();
					
					formName = '<input type="hidden" name="formname" value="'+ formId +'" />';					
					$('#'+formId).append(formName);
					
					if(isVersion16)
					{
						$('#'+formId).removeAttr("onsubmit");
						document.getElementById(formId).submit();
					}
					else
					{
						$('#'+formId).submit();
					}					
				}
			}
			else
			{
				if(responseArray[0] != "" && responseArray[0] != "<ul></ul>")
				{
					window.scrollTo(0, 0);
					$('#errorsDiv').html(responseArray[0]).show();
				}
				
				if(responseArray.length > 1)
				{
					selectivesArray = responseArray[1].split("@@");				

					for(i=0; i<selectivesArray.length; i++)
					{
						var arr = selectivesArray[i].split("=");
						if(arr[0] != "" && $('#'+arr[0]).length > 0)
						{
							if(arr[0] == 'tripleopt_email')
							{
								$('#divTripleOpt').show();
				        		$('#divTripleOptMailChk').show();
							}
							
							var code = '<div class="errorHint"><div class="hintText">'+ arr[1] +'</div></div>'; 
							$('#'+arr[0]).after(code);
						}
					}
				}				
			}
			
			if(responseText.indexOf("showTripleOpt") != -1)
			{
				if($('#divTripleOpt').length > 0)
				{
					document.getElementById('divTripleOpt').style.border="0px dashed red";
					document.getElementById('divTripleOpt').style.borderBottom="0";
					document.getElementById('divTripleOptMailChk').style.border="0px dashed red";
					document.getElementById('divTripleOptMailChk').style.borderTop="0";
				}
			}
			else
			{
				if($('#divTripleOpt').length > 0)
				{
					document.getElementById('divTripleOpt').style.border="0px dashed #ccc";
					document.getElementById('divTripleOpt').style.borderBottom="0";
					document.getElementById('divTripleOptMailChk').style.border="0px dashed #ccc";
					document.getElementById('divTripleOptMailChk').style.borderTop="0";
				}
			}
		}
	});		
}


function placeErrors(responseArray)
{
	if(responseArray[0] != "" && responseArray[0] != "<ul></ul>")
	{
		window.scrollTo(0, 0);
		$('#errorsDiv').html(responseArray[0]).show();
	}
	
	if(responseArray.length > 1)
	{
		selectivesArray = responseArray[1].split("@@");				

		for(i=0; i<selectivesArray.length; i++)
		{
			var arr = selectivesArray[i].split("=");
			if(arr[0] != "" && $('#'+arr[0]).length > 0)
			{
				var code = '<div class="errorHint"><div class="hintText">'+ arr[1] +'</div></div>'; 
				$('#'+arr[0]).after(code);
			}
		}
	}	
}


function cookieSave()
{
	for(i=0;i<formIds.length; i++)
	{
		if(formIds[i] == 'Login')
		{
			if($('#save_pwd').attr('checked'))
			{
				$.cookie('username', $('#username').val(), { expires: 30 });
				$.cookie('pwd', $('#pwd').val(), { expires: 30 });
			}
			else
			{
				$.cookie('username', '', { expires: -1 });
				$.cookie('pwd', '', { expires: -1 });
			}
			break;
		}
	}
}

/**
 * FormHints: von users functions hier her, weil es alle formulare benutzen könn(t)en
 */
//'slow'
function showHint(field)
{
	$('.errorHint').remove();
	$('#errorsDiv').hide();	
	$('.inputHint').hide();
	$('#hint_'+field).show('normal');
}

function hideHint(field)
{
	$('.inputHint').hide('normal');
}


function reloader()
{
	location.reload(true);
}


$(document).ready(function()
{
	$('#captcha').remove();
	$('.inputHint').wrapInner("<div class='hintText'></div>");
	
	for(i=0;i<formIds.length; i++)
	{	
		if(formIds[i] == 'Login')
		{
			$('#username').val( $.cookie('username') );
			$('#pwd').val( $.cookie('pwd') );
		}
	}
	
	if( $('#captcha-id').length > 0)
	{
		window.setTimeout("reloader()", 600000);

		if(
				(validationURLs["New"] != undefined && validationURLs["New"].indexOf('contact') != -1) ||
				(validationURLs["Vote"] != undefined && validationURLs["Vote"].indexOf('poll') != -1)
		)
		{

			var txt = $('#divCaptcha label').html();
			$("#divCaptcha").prepend('<div class="captchaTxt">'+txt);
			$('#divCaptcha label').hide();

			$("#divCaptcha").append('</div><div class="clearer"></div>');
		}
		else
		{
			/**
			 * QuickFix - @TODO: Die Captchas müssen mit Label ausgeliefert werden
			 */
			$("#divCaptcha").prepend('<div class="captchaTxt">Grafische Sicherheitsprüfung:<br />'
					+'Bitte gib die 6 Zeichen, die in der nebenstehenden Grafik dargestellt sind, in das Textfeld.');
	
			$("#divCaptcha").append('</div><div class="clearer"></div>');
		}
		
	}
	
});


var datepickerOptions = {
		dateFormat: 'dd.mm.yy', 
		dayNamesShort:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
		dayNamesMin:['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
		dayNames:['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
		monthNames:['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
    };

$(function() {
	$("#calendar_date").datepicker(datepickerOptions);
	$("#alt_calendar_date").datepicker(datepickerOptions);
});


