var panel_contestant =
{
	companyKey: 0,
    companyID : 0,
	companyName: '',

    nextPopupContactKey: 0,
    
	
	highLightCompany: false,
	highLightContact: false,
	
	popupIsNewContact:false,
	
	initialize: function()
	{
		$('#contact_search_panel').hide();
        $('#contact_add_panel').hide();
        
		$('#contestant_next_step img, #btn_step1NextStepPopup_nextstep, #btn_step1NextStepPopup_nextstep_2,  #btn_step1NextStepPopup_nextstep_3').click(panel_contestant.contestantNextStepClicked);
		$('#btn_step1NextStepPopup_add, #btn_step1NextStepPopup_add_2, #btn_step1NextStepPopup_add_3').click($.unblockUI);
		$('#contact_search_panel input').attr('readonly',true);

		$("#input_company_search").autocomplete(	page.SERVERPATH+'/ajax/searchcompany/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey,
													{
														onItemSelect: panel_contestant.companyResultClicked,
														minChars: 	2,
														width	: 450,
														multiple: 	false,
														mustMatch: 	true,
														isJSON:		true,
														loadingClass: 'loading'
													}
												);

		$("#input_contact_search").autocomplete(	page.SERVERPATH+'/ajax/searchcontact/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey,
														{
												   			onItemSelect: panel_contestant.contactResultClicked,
															minChars	: 2,
															width		: 450,
															multiple	: false,
															mustMatch	: true,
															isJSON		: true,
															loadingClass: 'loading'
														}
													);
        

		$('#btn_company_add').click(panel_contestant.btnCompanyAddClicked);
		$('#btn_contact_add').click(panel_contestant.btnContactAddClicked);
		
		$("#input_company_search").click(panel_contestant.companySearchClicked);
		$("#input_contact_search").click(panel_contestant.contactSearchClicked);
		
		$('[id^="contact_"] img.deleteContact').click(panel_contestant.contactDelete);
		$('[id^="company_"] img.delete').click(panel_contestant.companyDelete);
		
		$('[id^="contact_"] span.contact').click(panel_contestant.contactClicked);
		$('[id^="company_"] span.company').click(panel_contestant.companyClicked);
		$('[id^="company_"] img.companyAddQuick').click(panel_contestant.companyAddQuickClicked);
		
		
		$('#contestants img[alt="error"], #contestants img[alt="toevoegen"]').bt({
                                    trigger: 'hover',
									positions: ['left'],				  
									fill: 'rgba(255, 255, 255, 1)',
									cornerRadius: 10,
									strokeWidth: 2,
									strokeStyle: '#a0d0ff'
								});
		$('input[title]').bt({
                            trigger: 'click',
							positions: ['top'],				  
							fill: 'rgba(255, 255, 255, 1)',
							cornerRadius: 10,
							strokeWidth: 2,
							strokeStyle: '#a0d0ff'
						});
	
		if(page.eventEntriesMax > 0 && $('#contestants li[id^=contact_]').length >= page.eventEntriesMax)
		{		
			$('#searchPanel').hide();
			$('#maxReachedPanel').show();
		}

        if(panel_contestant.companyKey != 0)
        {
            
            panel_contestant.companyKey = 0;
        }
		panel_contestant.validate();		
		return true;
	},

    contactSearch_setExtraParams:function()
    {
        if(page.restrictionGender != 'false')
        {
            $("#input_contact_search")[0].autocompleter.setExtraParams(
                                                                        {
                                                                            contactGender:page.restrictionGender,
                                                                            companyID:panel_contestant.companyID}
                                                                    );
        }else{
            $("#input_contact_search")[0].autocompleter.setExtraParams(
                                                                        {
                                                                            companyID:panel_contestant.companyID
                                                                        }
                                                                    );
        }
    },

	btnCompanyAddClicked: function(event)
	{
		$.getJSON(	page.SERVERPATH+'/ajax/addcompany/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
						{PHPSESSID: page.PHPSESSID, type: 'custom'},
						panel_contestant.companyAddNewRecieved
					);		
	},
	
	btnContactAddClicked:function(event)
	{
		$.getJSON(	page.SERVERPATH+'/ajax/addcontestant/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
				{companyID: panel_contestant.companyID, PHPSESSID: page.PHPSESSID, type: 'custom'},
				panel_contestant.contactAddNewRecieved
			);		
	},
	
	companyAddNewRecieved: function(data)
	{		
		page.activePopup = 'companyNew';
		page.loadPopup(page.SERVERPATH+'/popup/company/companyKey/'+data.companyKey+'/new/true');
	},
	
	contactAddNewRecieved:function(data)
	{
		if(data.message != 'error'){
            panel_contestant.popupIsNewContact = true;
			page.activePopup = 'contactNew';
			page.loadPopup(page.SERVERPATH+'/popup/contact/contactKey/'+data.contactKey+'/new/true');
		}
	},
	
	companySearchClicked: function(event)
	{
		$('#contact_search_panel').fadeOut('fast');	
		$('#contact_add_panel').fadeOut('fast');
		$('#input_company_search').val('');
		$('#input_contact_search').val('');
		$('#input_contact_search').attr('readonly',true);
	},
	
	companyResultClicked:function(data)
	{
        if(data.id != '')
		{
            if(panel_contestant.companyInList(data.id) === false)
            {
                $.getJSON(	page.SERVERPATH+'/ajax/addexistingcompany/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey,
                    {companyID: data.id, PHPSESSID: page.PHPSESSID},
                    panel_contestant.companyAddNewRecieved
                );
            }

            if(data.id > 100000)
            {
                panel_contestant.companyID = data.id;
    			panel_contestant.companyName = data.innerHTML;
                $('#contact_add_panel').fadeIn('fast');
            }else{
                panel_contestant.companyID = data.id;
    			panel_contestant.companyName = data.innerHTML;
                $('#input_contact_search').attr('readonly',false);
                panel_contestant.contactSearch_setExtraParams();
                $('#contact_search_panel').fadeIn('fast');
            }
		}else{
			$('#input_company_search').val('');			
		}
	},

    companyInList:function(companyID)
    {
        if($('[id^=company_][id$="_ID"][value="'+companyID+'"]').length > 0)
        {
            companyID = $('[id^=company_][id$="_ID"][value="'+companyID+'"]').attr('id');
            return companyID.replace('company_','').replace('_ID','');
        }
        return false;
    },
	
	contactSearchClicked: function(event)
	{
		$('#input_contact_search').val('');
			
	},
	
	contactResultClicked: function(data)
	{
		$('#input_contact_search').val('');
		if(data.id != '')
		{
            if($('#contact'+data.id).length == 0)
            {
                $.getJSON(	page.SERVERPATH+'/ajax/addcontestant/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey,
                                {companyID: panel_contestant.companyID, contactID: data.id, PHPSESSID: page.PHPSESSID, type: 'auto'},
                                panel_contestant.contestantAddFromDatabaseRecieved
                            );
            }
		}else{
			$('#input_contact_search').val('');			
		}
	},
	
	contestantAddFromDatabaseRecieved: function(data)
	{
		if(data.message == 'success')
		{
            if(panel_contestant.companyInList(panel_contestant.companyID) === false)
            {
                panel_contestant.popupIsNewContact = true;
			    panel_contestant.nextPopupContactKey = data.contactKey;
                page.activePopup = 'companyNew';
                page.loadPopup(page.SERVERPATH+'/popup/company/companyID/'+panel_contestant.companyID);
            }else{
                panel_contestant.popupIsNewContact = true;

                page.activePopup = 'contactNew';
                page.loadPopup(page.SERVERPATH+'/popup/contact/contactKey/'+data.contactKey);
            }
		}else{
			switch(data.error){
				case 'exists':
					alert('De persoon die je wilt opgeven is al reeds ingeschreven.');
					break;
				case 'added':
					alert('De persoon die je wilt opgeven staat al in jouw deelnemerslijst.');
					break;
			}
			panel_contestant.contestantPanelRefresh();
		}
	},
	
	contestantPanelRefresh:function()
	{
		$.get(	page.SERVERPATH+'/panel/contestantlist/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
			  	{PHPSESSID: page.PHPSESSID},
				panel_contestant.contestantPanelRecieved
			);
	},
	
	contestantPanelRecieved:function(data)
	{
		$('#contestants').html(data);
		$('img[alt="error"]').css('display','none');
		
		$('[id^="contact_"] img.deleteContact').click(panel_contestant.contactDelete);
		$('[id^="company_"] img.delete').click(panel_contestant.companyDelete);
		
		$('[id^="contact_"] span.contact').click(panel_contestant.contactClicked);
		$('[id^="company_"] span.company').click(panel_contestant.companyClicked);
		$('[id^="company_"] img.companyAddQuick').click(panel_contestant.companyAddQuickClicked);
		
				
		if(panel_contestant.highLightCompany != false)
		{
			$('#'+li.id).highlightFade({color:'#fdff74',speed:2000,iterator:'sinusoidal'}); 
		}
		
		if(panel_contestant.highLightContact != false)
		{
			$('#contact_'+panel_contestant.highLightContact).highlightFade({color:'#fdff74',speed:2000,iterator:'sinusoidal'}); 
			panel_contestant.highLightContact = false;
		}	
		
		
		$('#contestants img[alt="error"], #contestants img[alt="toevoegen"]').bt({
                                    trigger:'hover',
									positions: ['left'],				  
									fill: 'rgba(255, 255, 255, 1)',
									cornerRadius: 10,
									strokeWidth: 2,
									strokeStyle: '#a0d0ff'
								});
		

		if(page.eventEntriesMax > 0 && $('#contestants li[id^=contact_]').length >= page.eventEntriesMax)
		{		
			$('#searchPanel').hide();
			$('#maxReachedPanel').show();
		}else{
			$('#searchPanel').show();
			$('#maxReachedPanel').hide();
		}
		
		panel_contestant.validate();
		
	},
	
	validate:function()
	{
		$.getJSON(	page.SERVERPATH+'/ajax/validateall/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
								{PHPSESSID: page.PHPSESSID},
								panel_contestant.validateallRecieved
							);		
	},
	
	validateallRecieved:function(data)
	{
        $('#nextstepInfo').hide();
		$('#contestants li *').removeClass('error');
		$('img[alt="error"]').css('display','none');
		if(data.message == 'error')
		{
			if(data.companies != undefined)
			{
				$.each(data.companies, function(i,item)
								{	
									$('#'+i+' img[alt="error"]:first').css('display','block');
									$('#'+i+' span:first').addClass('error');
								}
				);
			}
			if(data.contestants != undefined)
			{

                $.each(data.contestants, function(i,item)
									{
										$('#'+i+' img[alt="error"]').css('display','block');									
										$('#'+i+' span:first').addClass('error');
									}
					);
			}
			page.menuItemEnable('btn_otherinformation',false);
			page.menuItemEnable('btn_check',false);
			page.menuItemEnable('btn_payment',false);
		}else
		{
            if($('#contestants li[id^=contact_]').length < page.eventEntriesMin)
            {
            	page.menuItemEnable('btn_otherinformation',false);
                page.menuItemEnable('btn_check',false);
                page.menuItemEnable('btn_payment',false);
            }else{
                if($('#btn_otherinformation').length > 0){
                    page.menuItemEnable('btn_otherinformation',true);
                }else if($('#btn_check').length > 0){
                    page.menuItemEnable('btn_check',true);
                }
            }
		}

        if(page.restrictionCompany == 'true' && $('#contestants li[id^=company_]').length > 0)
        {
            panel_contestant.companyID = $('#'+($('#contestants li[id^=company_]').attr('id'))+'_ID').val();
            $('#company_search_panel').hide();
            $('#contact_search_panel').show();
            $('#input_contact_search').attr('readonly',false);
            panel_contestant.contactSearch_setExtraParams();
        }else{
            $('#company_search_panel').show();
        }

        if($('#contestants li[id^=contact_]').length > 0 && $('.error').length == 0)
        {

            if(panel_contestant.popupIsNewContact == true)
            {
               if(page.eventType == 'single' && page.eventEntriesMin == 0 && page.eventEntriesMax == 0)
               {
                   $.blockUI({
                                message: $('#step1RecievedContestant'),
                                css: { padding: '10px'} });
                   panel_contestant.popupIsNewContact = false;
                   $('#nextstepInfo').hide();
               }else if($('#contestants li[id^=contact_]').length < page.eventEntriesMin)
               {
                   $('#entriesRemaining').html(page.eventEntriesMin-$('#contestants li[id^=contact_]').length);
                   $('#entriesMax').html(page.eventEntriesMax);
                   $.blockUI({
                                message: $('#step1RepeatEntry'),
                                css: { padding: '10px'} });
                   panel_contestant.popupIsNewContact = false;
                   $('#nextstepInfo').hide();
               }else if($('#contestants li[id^=contact_]').length == page.eventEntriesMax){
                   $.blockUI({
                                message: $('#step1ForceNextstep'),
                                css: { padding: '10px'} });
                   panel_contestant.popupIsNewContact = false;
                   $('#nextstepInfo').show();
               }else{
                   $.blockUI({
                                message: $('#step1NextStepPopup'),
                                css: { padding: '10px'} });
                   panel_contestant.popupIsNewContact = false;
                   $('#nextstepInfo').show();
               }
            }
        }
	},
	
	companyDelete:function(event)
	{
		companyKey = event.target.parentNode.id.replace('company_','');
		if(confirm('Weet je zeker dat je het bedrijf wilt verwijderen? Alle opgegeven personen van het bedrijf worden automatisch ook verwijderd.') == true)
		{
			panel_contestant.companyDeleteAction(companyKey);
		}
	},
	
	companyDeleteAction:function(companyKey){
		$.get(	page.SERVERPATH+'/ajax/deletecompany/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
					{companyKey: companyKey, PHPSESSID: page.PHPSESSID},
					panel_contestant.deleteRecieved
				);	
	},
	
	contactDelete:function(event)
	{
		contactKey = event.target.parentNode.id.replace('contact_','');
		if(confirm('Weet je zeker dat je deze persoon wilt verwijderen?') == true)
		{
			panel_contestant.contactDeleteAction(contactKey);
		}
	},
	
	contactDeleteAction:function(contactKey)
	{
		$.get(	page.SERVERPATH+'/ajax/deletecontestant/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
					{contestantKey: contactKey, PHPSESSID: page.PHPSESSID},
					panel_contestant.deleteRecieved
				);
	},
	
	deleteRecieved:function(data)
	{
		panel_contestant.contestantPanelRefresh();
	},
	
	
	companyClicked:function(event)
	{
		event.stopPropagation();
		page.activePopup = 'company';
		id = event.target.parentNode.id.replace('company_','');
		page.loadPopup(page.SERVERPATH+'/popup/company/companyKey/'+id);
	},
	
	companyAddQuickClicked:function(event)
	{
		companyKey = event.target.parentNode.parentNode.id.replace('company_','');
		panel_contestant.quickadd(companyKey);
	},
	
	quickadd:function(key)
	{
		$.getJSON(	page.SERVERPATH+'/ajax/getcompanyinformation/eventID/'+page.eventID+'/registrationkey/'+page.registrationKey, 
					{companyKey: key, PHPSESSID: page.PHPSESSID},
					panel_contestant.quickAddRecieved
				);			
	},
	
	quickAddRecieved:function(data)
	{
		if(data.message != 'error')
		{
			$('#input_company_search').val(data.company.companyName);
			panel_contestant.companyID = data.company.companyID;
			panel_contestant.companyName = data.company.companyName;
            if(data.company.companyID > 100000)
            {
                panel_contestant.btnContactAddClicked();
                $('#contact_search_panel').hide();
			}else{
                $('#contact_search_panel').fadeIn('fast');
                $('#contact_search_panel').highlightFade({color:'#fdff74',speed:2000,iterator:'sinusoidal'});
			    $('#input_contact_search').attr('readonly',false);
                $("#input_contact_search")[0].autocompleter.setExtraParams({companyID:panel_contestant.companyID});
                $('#input_contact_search').focus();
            }
		}
	},
	
	contactClicked:function(event)
	{
		id = event.target.parentNode.id.replace('contact_','').replace('contact_','');
		page.activePopup = 'contact';
		page.loadPopup(page.SERVERPATH+'/popup/contact/contactKey/'+id);
	},
	
	contestantNextStepClicked:function()
	{
		if($('#contestants span.error').length > 0)
		{
			alert('Je hebt nog niet alle gegevens correct ingevuld. Klik op de in het rood aangegevens bedrijfs- en/of persoonsnaam om de ontbrekende gegevens in te vullen.');
			return false;
		}else{
			if(page.eventEntriesCustom != '' && page.eventEntriesCustom.contains($('#contestants li[id^=contact_]').length) == false)
			{
				alert('Je dient '+page.eventEntriesCustom.join(",")+' deelnemer(s) op te geven');
				return false;	
			}

			if($('#contestants li[id^=contact_]').length < page.eventEntriesMin )
			{
				alert('Je dient minimaal '+page.eventEntriesMin+' deelnemer(s) op te geven');
				return false;
			}else if($('#contestants li[id^=contact_]').length == 0 &&  page.eventEntriesMin == 0)
			{
				alert('Je dient minimaal 1 deelnemer op te geven');	
			}
			
			if(page.eventEntriesMax > 0 && $('#contestants li[id^=contact_]').length > page.eventEntriesMax)
			{
				alert('Je kunt maximaal '+page.eventEntriesMin+' deelnemer(s) op te geven');
				return false;	
			}

			if($('#btn_otherinformation').length > 0){
				$('#btn_otherinformation').trigger('click');
			}else if($('#btn_check').length > 0){
				$('#btn_check').trigger('click');	
			}
		}
        $.unblockUI();
	}
	
}