/* CMM3 - Scripts */

function CMM3_sendMailForm(formID,sendMode)
	{
	// V 1.0 first Rerlease
	// V 1.1 some recodes
	// V 1.2 check extended for Select / Radio / Checkbox
	// V 1.3 check against value

	// get required fields
	var formErrorFields = '';
	var formDataFields = $('#'+formID+' input[name=CMM_mailFormFields]').val().split(',');
	var formRequiredFields = $('#'+formID+' input[name=CMM_mailFormFieldsRequired]').val().split(',');
	var errorMessage = $('#CMM_JSerrorMessage').text();

	// define checkType patterns
	var regexMail = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	var regexUrl = /([a-z0-9]+)(:\/\/)([a-z0-9\/?=&\-.]+)/;
	var regexPhone = /^[0-9\/\+-]+$/;
	var regexInt = /^[0-9]+$/;
	var regexDouble = /^[0-9\.,]+$/;

	// check if all data-fields are even available in the form
	for(i=0;i<formDataFields.length;i++)
		{
		currentFieldName = formDataFields[i];

		var currentFieldDefined = false;
		if($('#'+formID+' input[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		else if($('#'+formID+' textarea[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		else if($('#'+formID+' select[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		if(currentFieldDefined == false)
			{ alert('Achtung: Daten-Feld "'+currentFieldName+'" nicht vorhanden!') }
		}


	// validate required fields
	for(i=0;i<formRequiredFields.length;i++)
		{
		// Feldname und Pruefung (leer) definieren
		var currentFieldName = formRequiredFields[i];
		var currentField = '';

		// get CheckValue
		var currentFieldCheckValue = '';
		var currentFieldCheckType = '';
		if(currentFieldName.indexOf('=') >= 1)
			{
			// replace the check-criteria (fieldname:check)
			currentFieldNameTemp = currentFieldName.split('=');
			// Feldname und Pruefung (real) definieren
			currentFieldName = currentFieldNameTemp[0];
			currentFieldCheckType = 'value';
			currentFieldCheckValue = currentFieldNameTemp[1];
			}
		// get CheckType
		else if(currentFieldName.indexOf(':') >= 1)
			{
			// replace the check-criteria (fieldname:check)
			currentFieldNameTemp = currentFieldName.split(':');
			// Feldname und Pruefung (real) definieren
			currentFieldName = currentFieldNameTemp[0];
			currentFieldCheckType = currentFieldNameTemp[1];
			// add field2 for captcha
			if(currentFieldCheckType == 'captcha')
				{ formDataFields[formDataFields.length] = currentFieldName+'2'; }
			}


		// check if all required-fields are even available in the form
		var currentFieldDefined = false;
		if($('#'+formID+' input[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		else if($('#'+formID+' textarea[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		else if($('#'+formID+' select[name='+currentFieldName+']').length > 0)
			{ currentFieldDefined = true; }
		if(currentFieldDefined == false)
			{ alert('Achtung: Pflicht-Feld "'+currentFieldName+'" nicht vorhanden!') }


		// get input and value
		if($('#'+formID+' input[name='+currentFieldName+']').val() != undefined)
			{
			currentField = $('#'+formID+' input[name='+currentFieldName+']');
			currentFieldValue = currentField.val();
			// subtype checkbox
			if(currentField.attr('type') == 'checkbox')
				{
				// if checked, get checked value, else empty
				if(currentField.attr('checked') == false)
					{ currentFieldValue = ''; }
				}
			// subtype radio
			if(currentField.attr('type') == 'radio')
				{
				// if checked, get checked value, else empty
				currentFieldValue = '';
				currentField.each(function() {
					if($(this).attr('checked') == true)
						{ currentFieldValue = $(this).val(); }
					})
				}
			}
		// get textarea and content
		else if($('#'+formID+' textarea[name='+currentFieldName+']').val() != undefined)
			{
			currentField = $('#'+formID+' textarea[name='+currentFieldName+']');
			currentFieldValue = currentField.val();
			}
		// get select and selected value
		else if($('#'+formID+' select[name='+currentFieldName+']').val() != undefined)
			{
			currentField = $('#'+formID+' select[name='+currentFieldName+']');
			currentFieldValue = currentField.val();
			}


		// Check if empty
		if(currentFieldCheckType=='' || currentFieldCheckType=='captcha')
			{
			if(currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// Check against Value
		else if(currentFieldCheckType == 'value')
			{
			if(currentFieldValue != currentFieldCheckValue || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// CheckType email/mail
		else if(currentFieldCheckType=='email' || currentFieldCheckType=='mail')
			{
			if(regexMail.test(currentFieldValue) == false || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// CheckType URL
		else if(currentFieldCheckType=='url')
			{
			if(regexUrl.test(currentFieldValue) == false || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// CheckType phone/fax
		else if(currentFieldCheckType=='phone' || currentFieldCheckType=='fax')
			{
			if(regexPhone.test(currentFieldValue) == false || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// CheckType int/integer
		else if(currentFieldCheckType=='int' || currentFieldCheckType=='integer')
			{
			if(regexInt.test(currentFieldValue) == false || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		// CheckType double/float
		else if(currentFieldCheckType=='double' || currentFieldCheckType=='float')
			{
			if(regexDouble.test(currentFieldValue) == false || currentFieldValue == '')
				{ currentField.parent().addClass('CMM_formFieldError'); formErrorFields+= "- "+formRequiredFields[i]+"<br />\n"; }
			else
				{ currentField.parent().removeClass('CMM_formFieldError'); }
			}
		}


	// additional error message
	if(formErrorFields != '')
		{
		if(errorMessage != '')
			{ alert(errorMessage); }
		}


	// catch all fields an send form
	if(formErrorFields == '')
		{
		// senden per ajax
		if(sendMode=='ajax')
			{
			// get data fields
			var formData = '';
				formData+=  'CMM_mail1subject='+$('#'+formID+' input[name=CMM_mail1subject]').val();
				formData+= '&CMM_mail2subject='+$('#'+formID+' input[name=CMM_mail2subject]').val();
				formData+= '&CMM_m1s='+$('#'+formID+' input[name=CMM_m1s]').val();
				formData+= '&CMM_m2s='+$('#'+formID+' input[name=CMM_m2s]').val();
				formData+= '&CMM_m3s='+$('#'+formID+' input[name=CMM_m3s]').val();
				formData+= '&CMM_mailFormFieldsRequired='+$('#'+formID+' input[name=CMM_mailFormFieldsRequired]').val();
				formData+= '&CMM_mailFormFields='+$('#'+formID+' input[name=CMM_mailFormFields]').val();
				formData+= '&CMM_mailTemplate='+$('#'+formID+' input[name=CMM_mailTemplate]').val();
				formData+= '&CMM_submit='+$('#'+formID+' input[name=CMM_submit]').val();
	
			// get data fields by fields list from hidden_sort
			for(i=0;i<formDataFields.length;i++)
				{
				currentFieldName = formDataFields[i];
	
				// get input and value
				if($('#'+formID+' input[name='+currentFieldName+']').val() != undefined)
					{
					var currentField = $('#'+formID+' input[name='+currentFieldName+']');
					var currentFieldValue = currentField.val();
					// subtype checkbox
					if(currentField.attr('type') == 'checkbox')
						{
						// if checked, get checked value, else empty
						if(currentField.attr('checked') == false)
							{ currentFieldValue = ''; }
						}
					// subtype radio
					if(currentField.attr('type') == 'radio')
						{
						// if checked, get checked value, else empty
						currentFieldValue = '';
						currentField.each(function() {
							if($(this).attr('checked') == true)
								{ currentFieldValue = $(this).val(); }
							})
						}
					}
				// get textarea and content
				else if($('#'+formID+' textarea[name='+currentFieldName+']').val() != undefined)
					{
					var currentField = $('#'+formID+' textarea[name='+currentFieldName+']');
					var currentFieldValue = currentField.val();
					}
				// get select and selected value
				else if($('#'+formID+' select[name='+currentFieldName+']').val() != undefined)
					{
					var currentField = $('#'+formID+' select[name='+currentFieldName+']');
					var currentFieldValue = currentField.val();
					}

				formData+= '&'+currentFieldName+'='+currentFieldValue;
				}
			//alert(formData);

			// send message
			$('#'+formID).parent().slideUp(1000, function() {
				$.ajax({
					type: "POST",
					url: 'CMM/incl/ajax-mailer.php',
					data: formData,
					success: function(data) {
						$('#'+formID).parent().html(data).slideDown(1000);
						}
				
				//	success: function() {
				//		$('#'+formID+' .CMM_formContent').html('<b>Vielen Dank f&uuml;r Ihre Nachricht!</b><br /> Wir melden uns umgehend bei Ihnen.').show(500);
				//		}
				
					});
				});
			}
		// normal senden
		else
			{
			$('#'+formID).submit();
			}
		}
	}


///////////////////////////////////////////////////////////////////////


// decrypt spam-protected emails
function CMM3_uncryptMailto(s)
	{
	location.href = CMM3_decryptString(s,-2);
	}
// decrypt string
function CMM3_decryptString(enc,offset)
	{
	var dec = "";
	var len = enc.length;
	for(var i=0; i < len; i++)
		{
		var n = enc.charCodeAt(i);
		// 0-9 . , - + / :
		if(n >= 0x2B && n <= 0x3A)
			{ dec += CMM3_decryptCharcode(n,0x2B,0x3A,offset); }
		// A-Z @
		else if(n >= 0x40 && n <= 0x5A)
			{ dec += CMM3_decryptCharcode(n,0x40,0x5A,offset); }
		// a-z
		else if(n >= 0x61 && n <= 0x7A)
			{ dec += CMM3_decryptCharcode(n,0x61,0x7A,offset); }
		else
			{ dec += enc.charAt(i); }
		}
	return dec;
	}
// decrypt helper function
function CMM3_decryptCharcode(n,start,end,offset)
	{
	n = n + offset;
	if(offset > 0 && n > end)
		{ n = start + (n - end - 1); }
	else if(offset < 0 && n < start)
		{ n = end - (start - n - 1); }

	return String.fromCharCode(n);
	}


///////////////////////////////////////////////////////////////////////


function CMM3_openWindow(url,w,h)
	{
	l = screen.width/2-50;
	t = screen.height/2-150;
	w = eval(w) + 16;
	options = "width="+w+",height="+h+",left="+l+",top="+t+",menubar=yes,resizable=yes,scrollbars=yes,status=yes";
	Druckwindow = window.open(url,'Details',options);
	Druckwindow.focus();
	}


///////////////////////////////////////////////////////////////////////


// Funktion zum Setzen einer Bookmark / eines Favoriten
function CMM3_createBookmarkLink(url,title)
	{
	//url = "Webpage URL";
	//title = "Webpage Title";
	if(window.sidebar)
		{
		// Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
		}
	else if(window.external)
		{ // IE Favorite
		window.external.AddFavorite( url, title);
		}
	else if(window.opera && window.print)
		{ // Opera Hotlist
		return true;
		}
	}


///////////////////////////////////////////////////////////////////


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


///////////////////////////////////////////////////////////////////


function toogleTeaserFoot(teaserToogleElement)
	{
	teaserToggle = $(teaserToogleElement);
	teaserFoot = $(teaserToogleElement).prev();
	if(teaserFoot.is(':hidden'))
		{
		teaserFoot.slideDown();
		teaserToggle.text('weniger anzeigen');
		}
	else
		{
		teaserFoot.slideUp();
		teaserToggle.text('mehr anzeigen');
		}

	}

