var nfcGmap = null;
chooseProofr = null;
window.addEvent('domready',function(){	
	var ajaxurl = 'index.php?id=60&type=777&no_cache=1';
	var form = $(document).getElement('form[name=proofrsearch]');
	var map = $('nfcGmap');
	//adress wich will be set after ajax request...
	var adressMarker = null;

	var listSliderButton = $('proofr-map-togglelist');	
	if($defined(listSliderButton)){
		listSliderButton.setStyle('display','none');
		listSliderButton.addEvent('click',function(){
			var listSlideContent = $(document).getElement('div.form-result-box');
			listSlideContent.fxSlider.toggle();
		});
	}
	
	var activateListItem = function(id){
		var proofrItem = $('proofr-'+id);
		proofrItem.fireEvent('openslider');
	}
	
	var validateForm = function(form){
		var valid = true;
		var required = $(form).getElements('input.val-required');
		required.each(function(el){
			if($chk($(el).get('value'))==false){
				$(el).addClass('error');
				valid=false;
			}else{
				$(el).removeClass('error');
			}
		})
	return valid;
	}
	
	chooseProofr = function(el){
		var proofrID= parseInt($(el).getProperty('name'));
		var addproofr = new Request.JSON({
			async:true,
			url: ajaxurl,
			onSuccess:function(result){
				if(result.state =='ok'){
					window.location = result.nextStep; 
				}
			}
		}).post({'a':'chpfr','proofr':proofrID});
	}
	
	var loadProoferNearAddress= function(address,map){		
		var proofParams = {
				a:'gpfr',
				address:address
		}
	
		var proofr = new Request.JSON({
			async:true,
			url: ajaxurl,
			onSuccess:function(result){
				var resultBox = $(document).getElement('div.form-result-box').setStyle('display','block');
				resultBox.set('html',result.list);
				//display button and add slider to box..
				$(listSliderButton).setStyle('display','block');
				if(!$defined(resultBox.fxSlider)){
					resultBox.fxSlider = new Fx.Slide(resultBox);
				}
				resultBox.fxSlider.slideIn();
				var marker = result.marker;
				var markerStore = new gMarkerStore({
					mode:'local',
					markers:marker,
					icons:{
						proofr:'http://'+window.location.host+'/typo3conf/ext/nfcproofmanagement/res/images/proofr.png'
					}
				});
				map.setMarkerStore(markerStore);
				map.populateMarker();
				map.setCenter(address.long,address.lat,'10');
				
				//make slideablelistitems
				var slider = new domMSlider('.proofr-maplist-head',{
					content:'.proofr-maplist-content',
					button:{
						position:'top',
						text:''
					}
				}) 
				//choose proofr link
				var proofrLinks = $(resultBox).getElements('a[class="choose-proofr"]');
				proofrLinks.each(function(el,index){
					el.addEvent('click',function(ev){
						ev.preventDefault();
						ev.stopPropagation();
						chooseProofr(el);
					});
				});
				//listen when markers are clicked
				markerStore.addEvent('markerclicked',function(marker){
					activateListItem(marker.myElement.uid);
				});
			}
		}).post(proofParams);
	}
	
	//only interacte in map view
	if($defined(map)){
		nfcGmap = new domMap('nfcGmap',{
			center:[48.770902,9.166350],
			zoom:4,
			size:[965,578]
	   	});	
		if($defined(form)){			
			var container = $(form).getParent('div.proofrsearch');
			var messageBox = $(container).getNext('div.form-message-box');
			var resultBox = $(container).getNext('div.form-result-box');
			messageBox.setStyle('display','none');
			resultBox.setStyle('display','none');
			container.fx = new Fx.Morph(container, {duration: 'short', transition: Fx.Transitions.Sine.easeOut});
			form.addEvents({
				'submit':function(ev){
					if($defined(ev)) ev.preventDefault();
					if(validateForm(this)){
						var params = {
								a:'vad',
								company:$(this).getElement('input[name="tx_nfcproofmanagement_pi1[company]"]').get('value'),
								street:$(this).getElement('input[name="tx_nfcproofmanagement_pi1[street]"]').get('value'),
								city:$(this).getElement('input[name="tx_nfcproofmanagement_pi1[city]"]').get('value'),
								zip:$(this).getElement('input[name="tx_nfcproofmanagement_pi1[zip]"]').get('value'),
								country:$(this).getElement('select[name="tx_nfcproofmanagement_pi1[country]"]').get('value')
						}
						var request = new Request.JSON({
							secure:true,
							async:false,
							url: ajaxurl,
							onSuccess:function(result){	
								if($defined(result) && $defined(result.state)){
									switch(result.state){
									case 'ok':
										if(adressMarker != null){
											nfcGmap.getMap().removeOverlay(adressMarker);
										}
										var icon = new GIcon(G_DEFAULT_ICON);
										icon.iconSize = new GSize(77,49);
										icon.imageMap = [7,2,10,3,33,4,37,5,40,6,40,7,40,8,40,9,40,10,40,11,41,12,63,13,68,14,70,15,70,16,71,17,70,18,70,19,69,20,68,21,67,22,66,23,65,24,64,25,63,26,62,27,61,28,60,29,59,30,58,31,57,32,56,33,55,34,54,35,53,36,52,37,51,38,50,39,49,40,15,41,15,42,15,43,15,44,14,45,13,46,11,47,2,47,1,46,0,45,0,44,1,43,1,42,2,41,4,40,4,39,4,38,4,37,4,36,4,35,4,34,4,33,4,32,4,31,4,30,4,29,4,28,4,27,4,26,4,25,4,24,4,23,4,22,4,21,4,20,4,19,4,18,4,17,4,16,4,15,4,14,4,13,4,12,4,11,4,10,4,9,4,8,4,7,4,6,4,5,4,4,4,3,4,2];
										icon.image = 'fileadmin/templates/graphics/target.png';
										adressMarker =  new GMarker(new GLatLng(result.address.lat,result.address.long),icon);
										nfcGmap.getMap().addOverlay(adressMarker);
										loadProoferNearAddress(result.address,nfcGmap);
										form.fireEvent('hideform',result.address);
										break;
									case 'error':
										$(form).fireEvent('showform',result.message);
										break;
									}
								}
							}
						}).post(params);
					}
				},
				'hideform':function(){
					container.fx.start({
						'opacity':0,
						'height':0,
						'display':'none'
					});
					$(this).getElement('input[name="tx_nfcproofmanagement_pi1[street]"]').set('value',arguments[0].street);
					$(this).getElement('input[name="tx_nfcproofmanagement_pi1[city]"]').set('value',arguments[0].city);
					$(this).getElement('input[name="tx_nfcproofmanagement_pi1[zip]"]').set('value',arguments[0].zip);
					$(this).getElement('select[name="tx_nfcproofmanagement_pi1[country]"]').getElement('option[value='+arguments[0].countryuid+']').setProperty('selected','selected');
					if($defined(messageBox)){
						var addNode = new Element('p',{
							'html':arguments[0].address,
							'class':'google-address'
						});
						var change = new Element('a',{
							href:'#',
							html:'new search'
						});
						change.addEvent('click',function(ev){
							ev.preventDefault();
							container.fx.start({
								'opacity':1,
								'height':138,
								'display':'block'
							});
							$(this).destroy();
							messageBox.empty().setStyle('display','none');
							resultBox.empty().setStyle('display','none');
						});
						messageBox.empty().setStyle('display','block');
						addNode.inject(messageBox,'top');
						change.inject(messageBox,'bottom');
					}
				},
				'showform':function(){					
					container.fx.start({
						'opacity':1,
						'height':120
					});
					if($defined(messageBox)){
						var addNode = new Element('div',{
							'html':arguments[0],
							'class':'google-address-error'
						});
						messageBox.empty().setStyle('display','block');
						resultBox.empty().setStyle('display','none');
						addNode.inject(messageBox,'top');
					}
				}
			});
			form.fireEvent('submit');
		}				
	}else{
		//validate form even form is on an other site...
		if($defined(form)){
			form.addEvent('submit',function(ev){
				if($defined(ev)) ev.preventDefault();
				if(validateForm(this)){
					$(this).submit();
				}
			});
		}
	}
});
