/* **************************************************

	Javascript functions for the web implementation
	of KongresMaster/CongressMaster
	
	Copyright 2005 - 2010 Rabbe Consult a/s
	All Rights Reserved

************************************************** */

/*  Global variables */

var wsCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

/*
	Date Functions in Javascript
*/

function updateDate(form, dir)
{
	var theday = form.elements[dir + '_day'].value;
	var themonth = form.elements[dir + '_month'].value;
	var theyear = form.elements[dir + '_year'].value;
	
	var thefield = ''
	var thevalue = themonth + '/' + theday + '/' + theyear;
	
	var thedate = new Date(theyear, themonth - 1, theday);
	
	var realday = thedate.getDate();
	var realmonth = thedate.getMonth() + 1;
	var realyear = thedate.getFullYear();
	
	thevalue = realmonth + '/' + realday + '/' + realyear;
	
	if( dir == 'arr' )
	{
		thefield = 'HotelArrivalDate';
	}
	else
	{
		thefield = 'HotelDepartureDate';
	}

	form.elements[thefield].value = thevalue;
	
	setList(form, dir + '_day', realday);
	setList(form, dir + '_month', realmonth);
	setList(form, dir + '_year', realyear);
}

function setList(form, listname, thevalue)
{
	var theoptions = form.elements[listname].options;
	
	for( i = 0; i < theoptions.length; i++ )
	{
		if( theoptions[i].value == thevalue )
		{
			theoptions[i].selected = true;
			break;
		}
	}
}

function trim(value)
{
	var temp = value;
	var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
	if (obj.test(temp))
	{
		temp = temp.replace(obj, '$2');
	}
	var obj = / +/g;
	temp = temp.replace(obj, " ");
	if (temp == " ")
	{
		temp = "";
	}
	return temp;
}

function verifyPersonForm(the_form, with_pass)
{
//	alert("First check");

	var error = false;
//	var the_form = document.forms[0];
	
//	alert("Checking form, Firstname.value = '" + the_form.Firstname.value + "'");
	
	if( trim(the_form.Firstname.value) == '' )
	{
	//	alert("Firstname wasn't properly written");
		
		document.getElementById('Firstnamestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Firstnamestar').style.color = "black";
	}
	
	if( trim(the_form.Lastname.value) == '' )
	{
		document.getElementById('Lastnamestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Lastnamestar').style.color = "black";
	}
	
	var obj = /(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}/;
	if( trim(the_form.eMail.value) == '' || !(obj.test(the_form.eMail.value)) )
	{
	//	alert("email wasn't correct");
		document.getElementById('eMailstar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('eMailstar').style.color = "black";
	}
	
	if( with_pass )
	{
		if( trim(the_form.password.value) == '' )
		{
			document.getElementById('passwordstar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('passwordstar').style.color = "black";
		}

		if( trim(the_form.confirm_pass.value) == '' )
		{
			document.getElementById('confirmstar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('confirmstar').style.color = "black";
		}
		
		var pass = true;
		
		if( the_form.password.value != the_form.confirm_pass.value )
		{
			pass = false;
		}
	}
	
	if( trim(the_form.Address1.value) == '' )
	{
		document.getElementById('Address1star').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Address1star').style.color = "black";
	}
	
	if( trim(the_form.Postcode.value) == '' )
	{
		document.getElementById('Postcodestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Postcodestar').style.color = "black";
	}
	
	if( trim(the_form.City.value) == '' )
	{
		document.getElementById('Citystar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Citystar').style.color = "black";
	}
	
	if( trim(the_form.Country.value) == '' )
	{
		document.getElementById('Countrystar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Countrystar').style.color = "black";
	}
	
	if( trim(the_form.Phone.value) == '' )
	{
		document.getElementById('Phonestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Phonestar').style.color = "black";
	}
	
//	alert('Before checking StatusCode, length = ' + the_form.StatusCode.length);
	
	var statuscodevalue = '';
	
	if( typeof(the_form.StatusCode.length) == 'undefined' )
	{
		if( the_form.StatusCode.checked )
		{
			statuscodevalue = the_form.StatusCode.value;
		}
	}
	else
	{
		for (i=0;i<the_form.StatusCode.length;i++)
		{
			if (the_form.StatusCode[i].checked)
			{
				statuscodevalue = the_form.StatusCode[i].value;
				break;
			}
		}
	}

//	alert("statuscodevalue = " + statuscodevalue);
	
	if( trim(statuscodevalue) == '' )
	{
		document.getElementById('Statuscodestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Statuscodestar').style.color = "black";
	}
	
//	alert('got past the checks, error = ' + error);
	
	if( error == true )
	{
		alert("Alle de obligatoriske felter skal være udfyldt\nFelter som mangler er markeret med en rød stjerne.");
	//	window.event.returnValue = false;
		return false;
	}
	
	if( with_pass )
	{
		if( pass == false )
		{
			alert("De to felter 'Kodeord' og 'Bekræft Kodeord' skal indeholde det samme kodeord.");
			return false;
		}
	}
	
	return true;
}

function verifyPersonFormL(the_form, full_form, extended_form, with_pass, with_company, with_country, with_memberno, msg1, msg2)
{
//	alert("First check: '" + with_country + "'");

	var error = false;
	var selectindex = 0;
//	var the_form = document.forms[0];
	
//	alert("Checking form, Firstname.value = '" + the_form.Firstname.value + "'");
	
	if( trim(the_form.Firstname.value) == '' )
	{
	//	alert("Firstname wasn't properly written");
		
		document.getElementById('Firstnamestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Firstnamestar').style.color = "black";
	}
	
	if( trim(the_form.Lastname.value) == '' )
	{
		document.getElementById('Lastnamestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Lastnamestar').style.color = "black";
	}
	
	var obj = /(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}/;
	if( trim(the_form.eMail.value) == '' || !(obj.test(the_form.eMail.value)) )
	{
	//	alert("email wasn't correct");
		document.getElementById('eMailstar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('eMailstar').style.color = "black";
	}
	
	if ( with_memberno )
	{
		if( trim(the_form.Memberno.value) == '' )
		{
			document.getElementById('membernostar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('membernostar').style.color = "black";
		}
	}
	
	if( with_pass )
	{
		if( trim(the_form.password.value) == '' )
		{
			document.getElementById('passwordstar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('passwordstar').style.color = "black";
		}

		if( trim(the_form.confirm_pass.value) == '' )
		{
			document.getElementById('confirmstar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('confirmstar').style.color = "black";
		}
		
		var pass = true;
		
		if( the_form.password.value != the_form.confirm_pass.value )
		{
			pass = false;
		}
	}
	
	if ( with_company )
	{
		if( trim(the_form.Company.value) == '' )
		{
			document.getElementById('Companystar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Companystar').style.color = "black";
		}

	}
	
	if ( full_form )
	{
		if( trim(the_form.Address1.value) == '' )
		{
			document.getElementById('Address1star').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Address1star').style.color = "black";
		}
		
		if( trim(the_form.Postcode.value) == '' )
		{
			document.getElementById('Postcodestar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Postcodestar').style.color = "black";
		}
		
		if( trim(the_form.City.value) == '' )
		{
			document.getElementById('Citystar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Citystar').style.color = "black";
		}
		
		if( with_country && !extended_form )
		{
			if( trim(the_form.Country.value) == '' )
			{
				document.getElementById('Countrystar').style.color = "red";
				error = true;
			}
			else
			{
				document.getElementById('Countrystar').style.color = "black";
			}
		}
	}
	
	if ( extended_form )
	{
		selectindex = the_form.Gender.selectedIndex;
		if( trim(the_form.Gender.options[selectindex].value) == '' )
		{
			document.getElementById('Genderstar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Genderstar').style.color = "black";
		}

		selectindex = the_form.Age.selectedIndex;
		if( trim(the_form.Age.options[selectindex].value) == '' )
		{
			document.getElementById('Agestar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Agestar').style.color = "black";
		}

		selectindex = the_form.CompanyType.selectedIndex;
		if( trim(the_form.CompanyType.options[selectindex].value) == '' )
		{
			document.getElementById('Companytypestar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Companytypestar').style.color = "black";
		}

		selectindex = the_form.Country.selectedIndex;
		if( trim(the_form.Country.options[selectindex].value) == '' )
		{
			document.getElementById('Countrystar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Countrystar').style.color = "black";
		}

	}	
		
	if( trim(the_form.Phone.value) == '' )
	{
		document.getElementById('Phonestar').style.color = "red";
		error = true;
	}
	else
	{
		document.getElementById('Phonestar').style.color = "black";
	}
		

//	alert('Before checking StatusCode, length = ' + the_form.StatusCode.length);
	
	if ( full_form )
	{
		var statuscodevalue = '';
		
		if( typeof(the_form.StatusCode.length) == 'undefined' )
		{
			if( the_form.StatusCode.checked )
			{
				statuscodevalue = the_form.StatusCode.value;
			}
		}
		else
		{
			for (i=0;i<the_form.StatusCode.length;i++)
			{
				if (the_form.StatusCode[i].checked)
				{
					statuscodevalue = the_form.StatusCode[i].value;
					break;
				}
			}
		}
	
	//	alert("statuscodevalue = " + statuscodevalue);
		
		if( trim(statuscodevalue) == '' )
		{
			document.getElementById('Statuscodestar').style.color = "red";
			error = true;
		}
		else
		{
			document.getElementById('Statuscodestar').style.color = "black";
		}
	}
	
//	alert('got past the checks, error = ' + error);
	
	if( error == true )
	{
		alert( msg1 );
	//	window.event.returnValue = false;
		return false;
	}
	
	if( with_pass )
	{
		if( pass == false )
		{
			alert( msg2 );
			return false;
		}
	}
	
	return true;
}

function verifyCookie(value)
{
	if( value == '0' )
	{
		window.location = '/fmi/xsl/km/home.xsl';
	}

	var dc = document.cookie;
	var s = '';
	
//	alert("dc = '" + dc + "'");
	
	var prefix = 'kmweb=';
	var begin = dc.indexOf('; ' + prefix);
	if (begin == -1)
	{
		begin = dc.indexOf(prefix);
		if (begin != 0)
		{
			s = '-1';
		}
	}
	else
	{
		begin += 2;
	}
	
	if( s == '' )
	{
		var end = dc.indexOf(';', begin);
		if (end == -1)
		{
			end = dc.length;
		}
		
		s = dc.substring(begin + prefix.length, end);
	}
	
	if( s != value )
	{
		window.location = '/fmi/xsl/km/home.xsl';
	}
}

function verifyCookieL(value, language)
{
	if( value == '0' )
	{
		window.location = '/fmi/xsl/km/' + language +'/home.xsl';
	}

	var dc = document.cookie;
	var s = '';
	
//	alert("dc = '" + dc + "'");
	
	var prefix = 'kmweb=';
	var begin = dc.indexOf('; ' + prefix);
	if (begin == -1)
	{
		begin = dc.indexOf(prefix);
		if (begin != 0)
		{
			s = '-1';
		}
	}
	else
	{
		begin += 2;
	}
	
	if( s == '' )
	{
		var end = dc.indexOf(';', begin);
		if (end == -1)
		{
			end = dc.length;
		}
		
		s = dc.substring(begin + prefix.length, end);
	}
	
	if( s != value )
	{
		window.location = '/fmi/xsl/km/' + language + '/home.xsl';
	}
}

function reallyCancel(cn)
{
	if( confirm("er du sikker på at du vil annullere din tilmelding til " + cn + "?") )
	{
		document.forms['cancelform'].submit();
	}
}

function reallyCancelL(cn, msg)
{
	if( confirm(msg + cn + "?") )
	{
		document.forms['cancelform'].submit();
	}
}

function verifyChange(sel)
{
//	alert("sel.selectedIndex = " + sel.selectedIndex + ", sel.length = " + sel.length);
	if( sel.selectedIndex == -1 )
	{
		sel.selectedIndex = sel.length - 1;
	}
}

function verifyDateSelL(the_form, no_of_dates, total_dates, msg1, msg2)
{
	var no_selected = 0
	
	for ( var i = 0; i < total_dates; ++i )
	{
		if (the_form.date[i].checked)
			++no_selected
	}
	if( no_selected != no_of_dates )
	{
		alert( msg1 + no_of_dates + msg2 );
		return false;
	}

	return true;
}


document.getElementsByClassName = function(cl) {
 var retnode = [];
 var myclass = new RegExp('\\b'+cl+'\\b');
 var elem = this.getElementsByTagName('*');
 for (var i = 0; i < elem.length; i++) 
 {
	var classes = elem[i].className;
	if (myclass.test(classes)) retnode.push(elem[i]);
 }
 return retnode;
 } 
 
 
function verifyEventFormL(the_form, min_no, max_no, values, msg1, msg2, msg3, msg4, msg5, msg6 )
{

	var error = false;
	var countchecked = 0;
	var marked_events = new Array();
	var events_priority = new Array();
	var events_value = new Array();
	var abstract_value = new Array();
	var id_no = /\.\d+$/;
	var id_match;
	
	// Check for no of selected events
	marked_events = document.getElementsByClassName("marked");
	 	
	for ( i=1; i < 10; i++ )
	{
		var check = new RegExp ( i );
		if ( check.test(values) )
		{
			if ( wsCount[i] < min_no || wsCount[i] > max_no )
			{
				if ( max_no > 0 )
				{
					alert ( msg1 + min_no + msg2 + max_no + msg3 );
				}
				else
				{
					alert ( msg1 + min_no + msg3 );
				}
				return false;
			}
		}
	}
	
	// Check for no of selected events
	// marked_events = document.getElementsByClassName("marked");
	/* for ( i=0; i < marked_events.length; i++ )
	{
		if ( marked_events[i].checked == true )
		{
			countchecked++;
		}
	} */
	
	/*if ( countchecked < min_no || ( max_no > 0 && countchecked > max_no ))
	{
		if ( max_no > 0 )
		{
			alert ( msg1 + min_no + msg2 + max_no + msg3 );
		}
		else
		{
			alert ( msg1 + min_no + msg3 );
	}
		return false;
	} */
	
	// Check for workshop priority selection
	events_priority = document.getElementsByClassName("workshop-priority");
	 	
	for ( i=0; i < events_priority.length; i++ )
	{
		if ( events_priority[i].value == '' )
		{
			id_match = id_no.exec( events_priority[i].name );
			if ( document.getElementById ( 'event' + id_match[0] ).checked == true )
			{
				alert ( msg4 );
				return false;
			}
		}
	}

	// Check for value selection
	events_value = document.getElementsByClassName("event-value");
	 	
	for ( i=0; i < events_value.length; i++ )
	{
		if ( events_value[i].value == '' )
		{
			id_match = id_no.exec( events_value[i].name );
			if ( document.getElementById ( 'event' + id_match[0] ).checked == true )
			{
				alert ( msg5 );
				return false;
			}
		}
	}

	// Check for abstract signup
	//abstract_value = document.getElementsByClassName("abstract-title");
	 	
	//for ( i=0; i < abstract_value.length; i++ )
	//{
		//if ( ! ( abstract_value[i].value == '' ) )
		//{
			//id_match = id_no.exec( abstract_value[i].name );
			
			//if ( document.getElementById ( 'abstractcheck' + id_match[0] ).checked == false )
			//{
				//document.getElementById ( "atitle." + id_match[0] ).value = '';
				//document.getElementById ( "abstracttext." + id_match[0] ).innerhtml = '';
			//} else
			//{
				//if ( ! ( document.getElementById ( 'event' + id_match[0] ).type == 'hidden' ) )
				//{
					//if ( ! ( document.getElementById ( 'event' + id_match[0] ).checked == true ) )
					//{
						//alert ( msg6 );
						//return false;
					//}
				//}
			//}
		//}
		
		
	abstract_value = document.getElementsByClassName("abstractcheck");
	 	
	for ( i=0; i < abstract_value.length; i++ )
	{
		if ( ( abstract_value[i].checked == true ) )
		{
			id_match = id_no.exec( abstract_value[i].name );
			
			if ( ! ( document.getElementById ( 'event' + id_match[0] ).type == 'hidden' ) )
			{
				if ( ! ( document.getElementById ( 'event' + id_match[0] ).checked == true ) )
				{
					alert ( msg6 );
					return false;
				}
			}
		}
		
		
		
		
	}

	return true;
}

function checkAbstract ( box, record, maxlength, msg1, msg2, msg3 )
{	
	if ( document.getElementById ( 'atitle.' + record ).value == '' )
	{
		document.getElementById ( 'atitle.' + record ).value = msg3;
	}
	
	if ( box.value.length > maxlength ) 
	{
		alert ( msg1 + maxlength + msg2 );
		return false;
	}
	return true;
}

function toogleNoAbstract ( AbstractCheckbox, toogleNo )
{	
	if ( AbstractCheckbox.checked == true )
	{
		document.getElementById ( "NoAbstract." + toogleNo ).style.display = 'block';
		if ( document.getElementById ( "event." + toogleNo ).type == 'hidden' )
		{
			document.getElementById ( "event." + toogleNo ).value = 'x';
		} else
		{
			document.getElementById ( "event." + toogleNo ).checked = true;
		}
	}
	else
	{
		document.getElementById ( "NoAbstract." + toogleNo ).style.display = 'none';
		if ( document.getElementById ( "event." + toogleNo ).type == 'hidden' )
		{
			document.getElementById ( "event." + toogleNo ).value = '';
		} else
		{
			document.getElementById ( "event." + toogleNo ).checked = false;
		}
	}
	
	return true;
}

function ShowPayDetail ( type )
{
	document.getElementById ( "pay_dk" ).style.display = 'none';
	document.getElementById ( "pay_cc" ).style.display = 'none';
	document.getElementById ( "pay_71" ).style.display = 'none';
	document.getElementById ( "pay_ean" ).style.display = 'none';
	document.getElementById ( "pay_invoice" ).style.display = 'none';
	
	switch ( type )
	{
		case "dk":
			document.getElementById ( "pay_dk" ).style.display = 'block';
			break;
		case "cc":
			document.getElementById ( "pay_cc" ).style.display = 'block';
			break;
		case "71":
			document.getElementById ( "pay_71" ).style.display = 'block';
			break;
		case "ean":
			document.getElementById ( "pay_ean" ).style.display = 'block';
			break;
		case "invoice":
			document.getElementById ( "pay_invoice" ).style.display = 'block';
			break;
	}
}

function SetStatusInputField( showhide, text1, text2 )
{

	if ( showhide == "show" )
	{
		document.getElementById ( "StatusInputHead" ).innerHTML = text1;
		document.getElementById ( "StatusInputTitle" ).innerHTML = text2;
		document.getElementById ( "StatusInput" ).style.display = 'block';
		document.getElementById ( "StatusNotePresent" ).value = 'show';
		document.getElementById ( "StatusNoteText" ).value = text2;
	}
	else
	{
		document.getElementById ( "StatusInput" ).style.display = 'none';
		document.getElementById ( "StatusNotePresent" ).value = 'hide';
		document.getElementById ( "StatusNoteText" ).value = '';
	}
}

function setSelection ( obj, recid, number, min, max, msg1, msg2, msg3 )
{
	if ( obj.value != '' )
	{
		if ( document.getElementById("event." + recid).checked == false )
		{
			if ( wsCount[number] + 1 > max && number > 0)
			{
				alert ( msg1 + min + msg2 + max + msg3 );
			}
			else
			{
				document.getElementById("event." + recid).checked = true;
				wsCount[number] = wsCount[number] + 1;
			}
		}
	}
}

function setSelectionPrio ( obj, recid )
{
	if ( obj.value != '' )
	{
		document.getElementById("event." + recid).checked = true;
	}
}

function countCheckboxes ( obj, number, min, max, msg1, msg2, msg3 )
{
	if ( obj.checked )
	{
		if ( wsCount[number] + 1 > max && number > 0 )
		{
			obj.checked = false;
			alert ( msg1 + min + msg2 + max + msg3 );
		}
		else
		{
			wsCount[number] = wsCount[number] + 1;
		}
	}
	else
	{
		if ( wsCount[number] > 0 )
		{
			wsCount[number] = wsCount[number] - 1;
		}
	}
}

function checkPaymentSelect(the_form, msg1, msg2, msg3, language)
{
		var payselectvalue = '';
		
		if( typeof(the_form.PaymentChoise.length) == 'undefined' )
		{
			if( the_form.PaymentChoise.checked )
			{
				payselectvalue = the_form.PaymentChoise.value;
			}
		}
		else
		{
			for (i=0;i<the_form.PaymentChoise.length;i++)
			{
				if (the_form.PaymentChoise[i].checked)
				{
					payselectvalue = the_form.PaymentChoise[i].value;
					break;
				}
			}
		}
	
	//	alert("statuscodevalue = " + statuscodevalue);
		
		if( trim(payselectvalue) == '' )
		{
			alert ( msg1 );
			return false;
		}
		else
		{
			if ( trim ( payselectvalue ) == 'ean' )
			{
				if ( trim( the_form.EANno.value ) == '' )
				{
					alert ( msg2 );
					return false;
				}
			}
			if ( trim ( payselectvalue ) == 'invoice' && language == 'dansk' )
			{
				if ( trim( the_form.VATno.value ) == '' )
				{
					alert ( msg3 );
					return false; 
				}
			}
			return true;
		}
}
