// Die formHelpers2 wird auch gebraucht,
// weil 2 Funktionen dorthin ausgelagert wurden, sonst
// zeigt der Avira Antivir einen 'HTML/Crypted.Gen' Fehler, der gar nicht existiert

/**
 * Funktion, mit der mittels onclick die Box geöffnet wird
 */
openBox = function(title, href) {
	tb_show(title, href, false, 'content');
	//this.blur();
	return false;
};

openBoxLink = function(title, href) {
	tb_show(title, href, false, 'content');
};

openBoxLinkAndStyle = function(title, href,stylehref) {
	// Ajaxgewinnspiel haben unterschiedliche Designs, davon ist auch der Titelbalken betroffen
	// daher hier das stylesheet im template dynamisch eintragen
	$("#ajax_gewinnspiel_css").attr("href",stylehref);
	tb_show(title, href, false, 'content');
};

/**
 * Für das Setzen des eTracker Codes
 */

function utf8_decode ( str_data ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Norman "zEh" Fuchs
    // +   bugfixed by: hitwork
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: utf8_decode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;

    str_data += '';

    while ( i < str_data.length ) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }

    return tmp_arr.join('');
};
function rawurlencode( str ) {
    // URL-encodes string
    //
    // version: 901.1411
    // discuss at: http://phpjs.org/functions/rawurlencode
    // +   original by: Brett Zamir
    // *     example 1: rawurlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin van Zonneveld%21'
    // *     example 2: rawurlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: rawurlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

    var histogram = {}, tmp_arr = [];
    var ret = str.toString();

    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };

    // The histogram is identical to the one in urldecode.
    histogram["'"]   = '%27';
    histogram['(']   = '%28';
    histogram[')']   = '%29';
    histogram['*']   = '%2A';
    histogram['~']   = '%7E';
    histogram['!']   = '%21';

    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);

    // Restore spaces, converted by encodeURIComponent which is not rawurlencode compatible
    ret = replacer('%20', ' ', ret); // Custom replace. No regexing

    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }

    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });

    return ret;
};
/**
 * Funktionen für das Pauschalenanfrageformular
 */
selectItem = function(saison_id, hauptzeilen_id, konto_id, sprachen_id, konto_sprachen_id) {
	/**
	 * Daten holen
	 */


	/*
	$.getJSON("/ajax/pauschalenanfrage/getData.php", {
		saison_id			: saison_id,
		hauptzeilen_id		: hauptzeilen_id,
		konto_id			: konto_id,
		sprachen_id			: sprachen_id,
		konto_sprachen_id	: konto_sprachen_id
	}, function(data) {
	*/
		/**
		 * Ladebild entfernen und Content anzeigen
		 */
		$("img#formLoader").remove();
		$("div#gewFormSubContainer").show();

		/**
		 * Daten ins Formular klatschen
		 */
		//setFormData(data.form);
	//});
};
prepareForBox = function(showIt) {

	try {
		if(showIt) {
			tb_setMenuFrameLayer();
			$(document.body).css("overflow", "hidden"); //scrollbars weg
		} else {
			tb_setMenuFrameLayer(true, false);
			$(document.body).css("overflow", "auto");
		}
	} catch(e) { }
};
_checkFormBoxDone = function(inputObj) {
	var allDone = true;
	$(inputObj).parent().parent().parent().find("input.checkBeforeSubmission").each(function(i) {
		//alert(i);
		if( !$(this).val() )
			allDone = false;
	});

	if(allDone) {
		$(inputObj).parents().find("a#formBox").addClass("complete");
	} else {
		$(inputObj).parents().find("a#formBox").removeClass("complete");
	}
};
validEmail = function(addr) {
	var a = false;
	var res = false;
	if(typeof(RegExp) == 'function')
	{
		var b = new RegExp('abc');
		if(b.test('abc') == true){a = true;}
	}

	if(a == true)
	{
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
					   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
					   '(\\.)([a-zA-Z]{2,4})$');
		res = (reg.test(addr));
	}
	else
	{
		res = (addr.search('@') >= 1 &&
			 s.lastIndexOf('.') > addr.search('@') &&
			 s.lastIndexOf('.') >= addr.length-5)
	}
	return res;
};

_preSubmitCheck = function(inputObj, errorMsg, sprachen_id, subthemen_active_id, navigation_rechts_id) {

	var numInvalid = 0;
	var errorMsg = '<img width="11px" height="11px" src="/ajax/gewinnspiel/error.gif" />';
	//var errorMsgSmall = '<img width="10px" height="10px" src="/ajax/pauschalenanfrage/error.gif" />'

	$(".checkBeforeSubmission").each(function(i) {
		if ($(this).attr("type")=="checkbox") {
			if ($(this).attr("checked")==true) {
				// Gewinnspiele (Teilnahmebedingungen akzeptieren)
			} else {
				numInvalid++;
					$(this)
						.parent()
						.next("td.ok")
						.html(errorMsg);
			}
		} else {
			if(
			   	!$(this).val()				||
				($(this).val() == "dummy")	||
				($(this).attr("class").indexOf("borderRed") !== -1) //für die date felder, da wird wenn ein falsches datum eingegeben wurde borderRed hinzugefügt -> auch hier dann den fehler anzeigen
			) {
				if (($(this).attr("id").indexOf('kinderanzahl')> -1) || $(this).attr("id").indexOf('kinderalter')> -1) {
					var suffix ="";
					// wenn, dann muessen beide eintraege pro zeile leer sein
					indexStart = $(this).attr("id").indexOf('[');
					indexEnd = $(this).attr("id").indexOf(']');
					suffix = "\\[" + ($(this).attr("id").substr(indexStart+1,indexEnd-indexStart-1)) + "\\]"; // fuer jquery die klammern maskieren!!
					if (!((trim($("#kinderanzahl" + suffix).val())== "" ) && (trim($("#kinderalter" + suffix).val())== "" ))) {
						// spezialfall kinderfelder, der errortext steht nicht in der naechsten spalte
						numInvalid++;
						$(this)
						.parent().parent().parent()
						.parent()
						.find("td.ok")
						.html(errorMsg);
					}
				} else {
					numInvalid++;
					// seit der umstellung auf die neue jquery-version geht 'highlight' nicht mehr
					//$(this).Highlight(800, "#cacaca", function() {
						$(this)
							.parent()
							.next("td.ok")
							.html(errorMsg);
					//});
				}
			}
		}

		//Email Feld extrig checken
		if( $(this).attr("name") == "Emailadresse" ) {
			if($(this).val() && !validEmail( $(this).val() )) {
				numInvalid++;
				// seit der umstellung auf die neue jquery-version geht 'highlight' nicht mehr
				//$(this).Highlight(800, "#cacaca", function() {
					$(this)
						.parent().next("td.ok").html(errorMsg);
				//});
			} else {
				$("input#cc").val( $(this).val() );
			}
		}
	});
	//answer Feld extrig checken
	if( $("input[name='answer']:checked").val() == undefined ) {
		$(".answerError").html(errorMsg);
		numInvalid++;
	} else {
		$(".answerError").html('&nbsp;');
	}

	if(numInvalid == 0) {
		//alert("wir sind fehlerfrei");
		//Formular abschicken

		var postURL		= $("form#anfrage").attr("action");
		var postData	= $(".postMe").fieldSerialize();
		postData 		= postData + '&charset=utf-8'; //(wegen jquery.serialize, fuer mailingliste.php)
		//var destURL		= $("input[name=erfolgseite]").val().toLowerCase();

		if(($("input[name=dest]").length == 0) && ($("input[name=Erfolgsmeldung]").length == 0)) {
			$("body").load(postURL + " #content", getJsonPar(".postMe"),function(ret) {
				//alert("Test");
			});

		} else {
			// kompatibilität zum alten Code, sollte nicht mehr notwendig sein
			$.post(postURL, postData, function(ret) {
				//prepareForBox(false);

				destURL = destURL + "?sprachen_id=" + sprachen_id;

				//etracker package name
				var et_tonr = "";
				//var et_tonr = $("#TB_ajaxWindowTitle", parent.document).html(); //geht im ie6 nicht...
				//et_tonr += " - ";
				et_tonr += $("input#headline").val();
				//destURL += "&et_tonr=" + et_tonr;
				/*
				 * 2009-03-25 lamprecht dietmar
				 * laut info von etracker muessen sonderzeichen
				 * unicode numeric kodiert und danach urlencoded werden
				 * weil etracker (noch) kein utf-8 kann
				 */
				et_tonr = htmlentitiesnumeric(et_tonr); //
				destURL += "&et_tonr=" + rawurlencode(et_tonr);

				//try {
					//parent.window.TB_iframeContent.location.href = destURL;
					window.location.href = destURL; //ergebnis im iFrame laden
				//} catch(e) { }
			});
		}
	} else {
		return false;
	}
};

/*
 * Hilfsfunktionen
 */
function trim (zeichenkette) {
	  // Erst führende, dann Abschließende Whitespaces entfernen
	  // und das Ergebnis dieser Operationen zurückliefern
	  return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
};

function getJsonPar(name)
{
	var pars = '';
	var felder = new Array(); // kommentar
	$(name).each(function() {
		if(this.type=="radio") {
			if (this.checked == true) {
				pars += ("'" + $(this).attr('name') + "':'" + $(this).val() + "',");
			}
		} else {
			if(this.type=="checkbox") {
				if (this.checked == true) {
					var fieldindex = 0;
					var fieldname = $(this).attr('name');
					if (fieldname.indexOf("[]") > -1) {
						// Feldnamen ohne [] extrahieren
						fieldname = fieldname.substr(0,fieldname.indexOf("[]"));
						if (typeof(felder[fieldname]) == "undefined") {
							// feldname ist noch nicht im feldarray verspeichert, also index = 0
							pars += ("'" + fieldname + "[" + fieldindex + "]':'" + $(this).val() + "',");
							felder[fieldname] = fieldindex;
						} else {
							// feldname ist bereits im feldarray,
							// index auslesen, verwenden, erhöhen und ins feldarray zurückschreiben
							fieldindex = felder[fieldname] + 1;
							pars += ("'" + fieldname + "[" + fieldindex + "]':'" + $(this).val() + "',");
							felder[fieldname] = fieldindex;
						}
					} else {
						// einzelne checkbox, also kein array
						pars += ("'" + $(this).attr('name') + "':'" + $(this).val() + "',");
					}
				}
			} else {
				// normales eingabefeld
				pars += ("'" + $(this).attr('name') + "':'" + $(this).val() + "',");
			}
		}
	});
	pars = pars.substr(0,pars.length-1);	// Letzter Beistrich raus
	return eval('({' + pars + '})');
};
