var dtCh= ".";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
	return true
}


function SubmitStep1(){
	f = document.getElementById('frmStep1');
	errs = '';
	SetErrors('');
	if(f){
		if(f.insurance.value == 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte w&auml;hlen Sie Ihre aktuelle Krankenversicherung.';
		} 
		if(!isDate(f.birthdate.value)){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie ein g&uuml;ltiges Geburtsdatum ein.';
		}
		if(f.plz_id.value <= 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte selektieren Sie Ihren Wohnort.';
		}
		SetErrors(errs);
		if(errs.length == 0){
			f.submit();
		}
	}
}
function SubmitStep2(){
	f = document.getElementById('frmStep2');
	errs = '';
	SetErrors('');
	if(f){
		if(f.first_name.value.length == 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie Ihren Vornamen an.';
		} 
		if(f.last_name.value.length == 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie Ihren Nachnamen an.';
		} 
				if(f.phone.value.length == 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie Ihre Telefonnummer an.';
		}else if (f.phone.value.replace(/ /g,'').length != 10 || !isInteger(f.phone.value.replace(/ /g,''))){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie eine g&uuml;ltige Telefonnummer an.';
		}
				if(!document.getElementById('chkterms').checked){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte best&auml;tigen Sie, dass Sie mit den Teilnahmebedingungen einverstanden sind.';
		}
		SetErrors(errs);
		if(errs.length == 0){
			f.submit();
		}
	}
}
function SubmitCallBack(){
	f = document.getElementById('frmCallBack');
	errs = '';
	SetErrorsTel('');
	if(f){
		if(f.callback_tel.value.length == 0){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie Ihre Telefonnummer an.';
		}else if (f.callback_tel.value.replace(/ /g,'').length != 10 || !isInteger(f.callback_tel.value.replace(/ /g,''))){
			if(errs.length > 0) errs += '<br>';
			errs += 'Bitte geben Sie eine g&uuml;ltige Telefonnummer an.';
		}
		SetErrorsTel(errs);
		if(errs.length > 0){
			return false;
		}
	}
	return true;
}
function SetErrors(errs){
	div = document.getElementById('divErrors');
	if(div){
		div.innerHTML = errs;
		if(errs.length > 0) 
			div.style.display = 'block';
		else
			div.style.display = 'none';
	}
}
function SetErrorsTel(errs){
	div = document.getElementById('divErrorsTel');
	if(div){
		div.innerHTML = errs;
		if(errs.length > 0) 
			div.style.display = 'block';
		else
			div.style.display = 'none';
	}
}

function BirthdateOnFocus(){
	el = document.getElementById("birthdate");
	if(el && el.value == 'TT.MM.JJJJ'){
		el.value = '';
	}
}
function BirthdateOnBlur(){
	el = document.getElementById("birthdate");
	if(el && el.value == ''){
		el.value = 'TT.MM.JJJJ';
	}
}
function CityOnKeyUp(){
	el = document.getElementById("city");
	if(el && el.value.substr(0,4) != ''){
		el.value = '';
	}
}


// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// -----------------------------------------------------------------------------
// Version check based upon the values entered above in "Globals"
//var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);


function DoOnLoad(){
	if (hasReqestedVersion){
		//flash is available
	}else{
		document.getElementById('divFlash').style.display='none';
		document.getElementById('divNoFlash').style.display='block';
	}
}
function Invite(){
	if(document.frmInvite.lead_referal1.value.length == 0){
		alert('Bitte geben Sie mindestens eine E-Mail Adresse ein!');	
	}else{
		document.frmInvite.submit();	
	}
}

function emailveri(email) {
	return (email.test(/^[\w\d!#$%&'*+-<\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]*[a-z]$/));
}

function CheckJahrgangVal()
{
	var value = trim($('Agedate').getFirst().get('value'));
    var strSPlit = value.split('.');
    if(strSPlit.length != 3)
    {
       return false;
    }
   if(strSPlit[2].length <4)
   {
       return false;
   }
   var rx = /^((((0?[1-9]|[12]\d|3[01])[\.](0?[13578]|1[02])[\.]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.](0?[13456789]|1[012])[\.]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.]0?2[\.]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.]0?2[\.]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))((\s+)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])($|(\s+$))|($|(\s+$)))/;


   var matches = rx.exec(value);
   var retVal = (matches != null && value == matches[0])
   if(retVal)
   {
    //Check Date is smaller or equal than today
      var now = new Date();
      var dayToday = now.getDate();
      var monthToday = now.getMonth() + 1;
      var yearToday = now.getFullYear();
      var DateSplit = value.split('.');
      if(parseInt(DateSplit[2],10)> parseInt(yearToday,10 ))
      {
        retVal = false;
      }
      else if(parseInt(DateSplit[2],10)== parseInt(yearToday,10 ))
      {
        if(parseInt(DateSplit[1],10)> parseInt(monthToday,10))
        {
          retVal = false;
        }
        else if(parseInt(DateSplit[1],10)== parseInt(monthToday,10))
        {
          if(parseInt(DateSplit[0],10)> parseInt(dayToday,10 ))
          {
            retVal = false;
          }
        }
      }
   }
  return retVal;
}



function errorcleanup()
{
	$$('.errorindicator').each(function(ele){ ele.innerHTML='';});
	$('yellowbox').addClass('hidden');
	$('yellowbox').getElements('li').dispose();
}

function printErrorMessage(msg,id)
{
	if ($('li-'+id)) return;
	
	var li = new Element('li',{'id':'li-'+id,'class':'errorboxli'});
	li.innerHTML='- '+msg;
	li.inject($('yellowbox'));

	if (typeof $('yellowbox').getElements('li') != 'undefined')
	{
		$('yellowbox').removeClass('hidden');
	}
}

function printErrorMessage2()
{
	$('yellowbox').removeClass('hidden');
}

function validateform()
{
	f = document.getElementById('frmStep1');
	var error = false;

	errorcleanup();
	
	for (fieldname in required_fields)
	{
		if (typeof [fieldname] != undefined)
		{
			if (f[fieldname].value=='')
			{
				printErrorMessage(required_fields[fieldname], fieldname);
				$(f[fieldname]).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
				error = true;
			}
		}
	}

	// check birthdate
	if(!isDate(f.birthdate.value) || !CheckJahrgangVal(f.birthdate.value)){
		printErrorMessage(required_fields.birthdate, 'birthdate');
		f.birthdate.getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';	
		error = true;	
	}
	
	
	// check phone
	// format: 000 000 00 00
	// if (!isInteger(f.phone.value.replace(/ /g,'')) || f.phone.value.replace(/ /g,'').length != 10) {
	// !f.phone.value.match(/^\d\d\d \d\d\d \d\d \d\d$/g)
	if (!isInteger(f.phone.value.replace(/ /g,'')) || f.phone.value.replace(/ /g,'').length != 10) {
		printErrorMessage(required_fields.phone, 'phone');
		f.phone.getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
		error = true;	
	}
	
	if (!f.accept_terms.checked)
	{
//		$(f.accept_terms).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
		printErrorMessage(error_terms, 'terms');
		error = true;
	}

	if ($('interest').get('value')=='kranken' && (f.aktuelle_kranken.selectedIndex==0 || f.aktuelle_kranken.value==''))
	{
		$(f.aktuelle_kranken).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
		error = true;
	}
	
	if ($('interest').get('value')=='haushalt' && f.aktuelle_haushalt.selectedIndex==0)
	{
		$(f.aktuelle_haushalt).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
		error = true;
	}
	
	if ($('interest').get('value')=='fahrzeug')
	{
		if (f.aktuelle_fahrzeug.selectedIndex==0)
		{
			$(f.aktuelle_fahrzeug).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
			error = true;
		}
		if (f.fahrzeugmarke.selectedIndex==0)
		{
			$(f.fahrzeugmarke).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
			error = true;
		}
		if (f.fahrzeugtyp.value=="")
		{
			$(f.fahrzeugtyp).getParent('tr').getElement('.errorindicator').innerHTML='<img src="images/error.png" />';
			error = true;
		}
	}
	
	return !(error);
}

function validateform2(){
	errorcleanup();
	var error = false;
	f = document.getElementById('frmStep2');
	
	var intfield1=document.getElementById('interest2haushalt');
	var intfield2=document.getElementById('interest2kranken');
	var intfield3=document.getElementById('interest2fahrzeug');
	
	var intok1=false;
	var intok2=false;
	var intok3=false;
	
	if (typeof intfield1 != "undefined" && intfield1)
		if (intfield1.checked==true && f.aktuelle_haushalt.selectedIndex>0)
		intok1=true;
	
	if (typeof intfield2 != "undefined" && intfield2)
		if (intfield2.checked==true && f.aktuelle_kranken.selectedIndex>0)
		intok2=true;
	
	if (typeof intfield3 != "undefined" && intfield3)
	if (intfield3.checked==true && f.fahrzeugmarke.selectedIndex>0 && f.fahrzeugtyp.value!="")
		intok3=true;

	if (!intok1 && !intok2 && !intok3)
	{
		printErrorMessage2();
		error=true;
	}
	return !(error);
}

function validateforminvite()
{
	errorcleanup();
	var error = false;
	f = document.getElementById('formempfehlen');
	
	var edmail1=document.getElementById('mail1');
	var edmail2=document.getElementById('mail2');
	
	if (edmail1.value=="" && edmail2.value=="")
	{
		printErrorMessage2();
		error=true;
	}
	if (edmail1.value!="" && !emailveri(edmail1.value))
	{
		printErrorMessage2();
		error=true;
	}
	if (edmail2.value!="" && !emailveri(edmail2.value))
	{
		printErrorMessage2();
		error=true;
	}
	if (!error)
	{
		$('formempfehlen').submit();
	}
}

function footerbox_cleanup()
{
	$('footerbox').addClass('hidden');
	$('footerbox2').removeClass('hidden');
	$('footerbox').getElements('ul').addClass('hidden');
}
function footerbox_set(box)
{
	if (!$('ul-'+box)) return;
	
	$('footerbox2').addClass('hidden');
	$('footerbox').removeClass('hidden');
	$('ul-'+box).removeClass('hidden');
}

function edfields_cleanup()
{
	$$('.dynir').addClass('hidden');
}

function edfields_set(box)
{
	if (!$$('.ir'+box)) return;
	
	$$('.ir'+box).removeClass('hidden');
	OverText.update();
}

function dropdownbox_change(dropdown)
{
		footerbox_cleanup();
		footerbox_set(dropdown.value);
		edfields_cleanup();
		edfields_set(dropdown.value);
}

function trim (str) {
  return str.replace (/^\s+/, '').replace (/\s+$/, '');
}

function disable_interest_dropdown(box)
{
	var el = new Element('input',{
		name: 'interest',
		type:'hidden',
		value: box.get('value')
	});
	
	el.inject($('frmStep1'));
	box.set('disabled','disabled');
}