
var website = {
	
	baseUrl: '',
	uploadCounter: 0,
	uploadStatusUrl: [],
	uploadProgressCheckTimer: [],
	uploadProgressData: [],
	
	searchFormWrapperHeight: '0',
	
	regionSelectId: '',

	init: function(){
		
	 
		website.baseUrl = 'http://' + document.domain + '/';
		
		website.eventSetup();
		
		
	},
	
	eventSetup: function() {
		var accountTypeSelectorPersonal = $$('#accountTypeSelector input[value="personal"]').pop();
		var accountTypeSelectorCommercial = $$('#accountTypeSelector input[value="commercial"]').pop();
		var commercialDataInput = $$('#accountDetails .commercial');
		var topRegionSelect = $('topRegion');
		var subRegionSelect = $('subRegion');
		var subRegionCitySelect = $('subRegionCity');
		var uploadForms = $$('.uploadForm');
		var autoForm = $('autoForm');	
		
		var	searchFormWrapper = $$('.searchFormWrapper').pop();
		var showForm = $$('.searchFormWrapperMenu a.showForm').pop();
		var hideForm = $$('.searchFormWrapperMenu a.hideForm').pop();
		
		var groupActionLinks = $$('.groupActionLink');
		var advListForm = $('advListForm');
		
		var contactDetailsSelectorYes = $$('#accountContactDetailsSelector input[value="yes"]').pop();
		var contactDetailsSelectorNo = $$('#accountContactDetailsSelector input[value="no"]').pop();
		var contactDetails = $('accountContactDetails');
		
		var createInvoiceCheckbox = $('createInvoiceCheckbox');
		var invoiceDataList = $$('ul.invoiceDataList input, ul.invoiceDataList select');
		
		var imageBlock = $$('#advPreview .imageBlock').pop();
		
		var imageUploadForm = $$('.imageUploadForm').pop();
		var imageUploadStatus = $$('.imageUploadStatus').pop();
		


		if(imageUploadForm) {
			imageUploadForm.addEvents({
				'submit': function(event){
					var targetElement = event.target;
					imageUploadStatus.setStyle('display', 'block');
					targetElement.submit();
					return false;
				}
			});
		}
		
		if(imageBlock) {
			var thumbnailList = imageBlock.getElements('.thumbnailList');
			thumbnailList.getElements('li a img').each(
				function(element) {
					element.addEvents({
						'click': function(event){
							var targetElement = event.target;
							
							targetSrc = targetElement.getProperty('src');
							
							var myRegExp = /.*\/image\/([0-9]+)\-/;
							var regArray = myRegExp.exec(targetSrc);
							if(regArray && regArray[1]) {
								var imageId = regArray[1];
							}
							var mainImage = imageBlock.getElements('.mainImage img').pop();
							
							if(imageId) {
								
								var newSrc = website.baseUrl + 'image/' + imageId + '-250-250-ffffff-ntr.jpg';
							} else {
								var newSrc = website.baseUrl + 'images/add-estate-big-250.png';
							}
							
							mainImage.get(
									'tween',
									{
										property: 'opacity',transition: 'cubic:out', onComplete: function(){
											var newImage = new Asset.image(
												newSrc, 
												{
													'onload': function(){
														this.setStyle('opacity', 0);
														newImage.replaces(mainImage).get(
															'tween',
															{
																property: 'opacity',
																transition: 'cubic:in'
															}
														).start(1);
														
													}
												}
											);
										}
									}
							).start(0);
							
							return false;
						}
					});
				}
			);
		}
		
		
		if(createInvoiceCheckbox) {
			
			createInvoiceCheckbox.addEvents({
				'click': function(event) {
					if( !event.target.get('checked') && invoiceDataList.length) {
						invoiceDataList.each(
							function(element) {
							
								element.set('disabled', 'disabled');
								element.addClass('disabled');
							}
						);
					} else { 
						invoiceDataList.each(
							function(element) {
								
								element.set('disabled', '');
								element.removeClass('disabled');
							}
						);
					}
					
				}
			});
			
			if(!createInvoiceCheckbox.get('checked') ) {
				invoiceDataList.each(
					function(element) {
						
							element.set('disabled', 'disabled');
							element.addClass('disabled');
					}
				);
			}
		}
		
		if(contactDetailsSelectorYes) {
			if(contactDetails) {
				contactDetailsSelectorYes.addEvents({
					'click' : function(event){
						contactDetails.getElements('input, select').each(
							function(element) {
								element.set('disabled', '');
								element.removeClass('disabled');
							}
						)
					}
				});
			}
			
			if(contactDetailsSelectorYes.get('checked')) {
				contactDetailsSelectorYes.fireEvent('click');
				
			}
		}
		
		if(contactDetailsSelectorNo) {
			if(contactDetails) {
				contactDetailsSelectorNo.addEvents({
					'click' : function(event){
						contactDetails.getElements('input, select').each(
							function(element) {
								element.set('disabled', 'disabled');
								element.addClass('disabled');
								
							}
						)
					}
				});
			}
				
			if(contactDetailsSelectorNo.get('checked')) {
				contactDetailsSelectorNo.fireEvent('click');
			}
		}
		
		
		
		if(accountTypeSelectorPersonal) {
			if(accountTypeSelectorPersonal.getProperty('checked')) {
				accountTypeSelectorPersonal.fireEvent('click');
				
			}
		}
		
		if(groupActionLinks.length && advListForm) {
			groupActionLinks.each(
				function(element){
					element.addEvents({
						'click': function(event){
							var targetElement = event.target;
							
							linkTarget = targetElement.get('href');
							advListForm.set('action', linkTarget);
							advListForm.submit();
							
							return false;
						}
					});	
				}
			);
		}
		
		if(autoForm) {
			//var formForwardLoaderImage = $$('#formForwardLoaderImage').pop();
			
			//formForwardLoaderImage.setStyle('display', 'none');
			
			
			window.setTimeout(function() {
				var formForwardLoaderImage = $$('#formForwardLoaderImage').pop();
				formForwardLoaderImage.setStyle('display', 'block');
				var imageSource = formForwardLoaderImage.src;
				formForwardLoaderImage.src = imageSource + '?i=1';
				
			}, 500);
			

			autoForm.submit();
			
			
		}
		
		if(searchFormWrapper) {
			website.searchFormWrapperHeight = searchFormWrapper.getStyle('height');
			searchFormWrapper.setStyles({
				'height': '65px'
			});
		}
		
		
		
		if(showForm && website.searchFormWrapperHeight) {
			showForm.addEvents({
				'click': function(){
					searchFormWrapper.setStyles({
						'height': (parseInt(website.searchFormWrapperHeight) + 20) + 'px'
					});
					return false;
				}	
			});
		}
		
		
		
		if(hideForm && website.searchFormWrapperHeight) {
			hideForm.addEvents({
				'click': function(){
					searchFormWrapper.setStyles({
						'height': '65px'
					});
					return false;
				}	
			});
		}
		
		
		
		if(accountTypeSelectorPersonal) {
			accountTypeSelectorPersonal.addEvents({
				'click': function(){
					
					commercialDataInput.setStyles({
						'display': 'none'
					});
					
				}	
			});
		}
		
		if(accountTypeSelectorCommercial) {
			accountTypeSelectorCommercial.addEvents({
				'click': function(){
					
					commercialDataInput.setStyles({
						'display': 'block'
					});
					
				}	
			});
		}
		
		
		if(accountTypeSelectorPersonal) {
			if(accountTypeSelectorPersonal.getProperty('checked')) {
				accountTypeSelectorPersonal.fireEvent('click');
				
			}
			
			if(accountTypeSelectorCommercial.getProperty('checked')) {
				accountTypeSelectorCommercial.fireEvent('click');
			}
		}
			
		if(topRegionSelect) {
			topRegionSelect.addEvents({
				'change': function(event) {
					website.regionDataCleaning('subRegionCity');
					website.regionDataRequest(event, 'subRegion');
					
				}
			});
		}
		
		if(subRegionSelect) {
			subRegionSelect.addEvents({
				'change': function(event) {
					website.regionDataRequest(event, 'subRegionCity');
				}
			});
		}
		
		if(uploadForms) {
			uploadForms.each(
				function(element) {
					element.addEvents({
						'submit': function(event) {
							var target = event.target;
							website.sendFile(event);
							return false;
						}	
					});
				}
			)
		}
		
		
		
		
	},
	
	randToken: function(length) {
		var token="";
		for(i=0;i<length;i++) {
			choice = Math.floor(Math.random() * 3);
			switch(choice % 3) {
				case 0:
					min = 48;
					max = 57;
					break;
				case 1:
					min = 65;
					max = 90;
					break;
				case 2:
					min = 97;
					max = 122;
					break;
					
			}
			
			nextChar = String.fromCharCode(min + Math.floor( (max + 1 - min) * Math.random() ) );
			
			token += nextChar;
		}
		return token;
	},
	
	sendFile: function(event) {
		var form = event.target;
		var fileElement = form.getElements('.file').pop();
		var fileTokenElement = form.getElements('.fileToken').pop();
		var fileToken = fileTokenElement.get('value');
		var sessid = form.getElements('.sessid').pop().get('value');
		var uploadStatus = $('uploadStatus');
		var newToken = website.randToken(32);
		var extension = '';
		var myRegExp = /\.([^.]+)$/;
		
		var regArray = myRegExp.exec(fileElement.get('value'));
		if(regArray && regArray[1]) {
			extension = regArray[1];
		}
		
		if(fileElement.get('value')) {
			form.submit();
			website.uploadCounter++;
			var newUploadId =  website.uploadCounter;
			website.uploadStatusAdd(newUploadId);
			
			fileTokenElement.set('value',newToken );
			fileElement.set('value','');
			
			
			website.uploadStatusUrl[newUploadId] = website.baseUrl + 'upload-progress.php?token=' + fileToken  + '&sessid=' + sessid + '&extension=' + extension;
			
			var progressCheckTimer = website.statusUpdate.periodical(1000,null,newUploadId);
			website.uploadProgressCheckTimer[newUploadId] = progressCheckTimer;
			website.uploadProgressData[newUploadId] = { 'status': '', 'unknown_count': 0   };
			
		}
	},
	
	statusUpdate: function(uploadId) {
		
		var jsonRequest = new Request.JSON({
			'url': website.uploadStatusUrl[uploadId],
			onComplete: function(jsonData) {
				
				
				
				if(jsonData['status'] == 'finished' ) {
					website.uploadStatusUrl[uploadId] = null;
					$clear(website.uploadProgressCheckTimer[uploadId]);
					website.uploadProgressData[uploadId] = null;
					//last refresh
					var percent = ((jsonData['size']/jsonData['full_size']) * 100) ;
					website.uploadStatusRefresh(uploadId, {
						'percent': percent
					});
					//remove
					website.uploadStatusRemove(uploadId);
					
					//show new small image
				}
				
				if(jsonData['status'] == 'working' ) {
					var percent = ((jsonData['size']/jsonData['full_size']) * 100) ;
					website.uploadStatusRefresh(uploadId, {
						'percent': percent
					});
					
				}
				
				if(jsonData['status'] == 'error') {
					$clear(website.uploadProgressCheckTimer[uploadId]);
				}
				
				if(jsonData['status'] == 'unknown' ) {
					website.uploadProgressData[uploadId].unknown_count++;
					
					if(website.uploadProgressData[uploadId].unknown_count == 20) {
						$clear(website.uploadProgressCheckTimer[uploadId]);
						
					} 
					
					
				}
				
			}
		}).get();
	},
	
	uploadStatusAdd: function(uploadId) {
		var newStatusObj = $('fileStatus').clone();
		var uploadInfoBox = $('uploadInfoBox');
		
		newStatusObj.set('id','fileStatus_' + uploadId);
		newStatusObj.setStyles({
			'display': 'block'
		});
		uploadInfoBox.adopt(newStatusObj);
	},
	
	uploadStatusRefresh: function(uploadId,progressData) {
		var percent = progressData.percent;
		var statusObj = $('fileStatus_' + uploadId);
		if(statusObj) {
			var percentElement = statusObj.getElements('span.percent').pop();
			percentElement.set('html', percent + '%');
		}
	},
	
	/*uploadStatusDisplayError: function() {
		var statusObj = $('fileStatus_' + uploadId);
		if(statusObj) {
			statusObj.get('tween', {
				'duration': 'long',
				'property': 'opacity',
				onComplete: function() {
					
					errorObj.get('tween', {
						'duration': 'long',
						'property': 'opacity',
						onComplete: function() {
						
						}
					}.start(100);
					statusObj.dispose();	
				}
			}).start(0);
			
		}
	},*/ 
	
	uploadStatusRemove: function(uploadId) {
		var statusObj = $('fileStatus_' + uploadId);
		if(statusObj) {
			statusObj.get('tween', {
				'duration': 'long',
				'property': 'opacity',
				onComplete: function() {
					statusObj.dispose();	
				}
			}).start(0);
			
		}
	},
	
	
	regionDataRequest: function(event, elementId) {
		var subRegionSelect = $(elementId);
		var regionId = event.target.getSelected().get('value');
		
		if(regionId > 0) {
			subRegionSelect.setStyles({
				'display': 'none'
			});
			
			var imageUrl = website.baseUrl + 'images/ajax-loader-input.gif';
			
			var loaderContainer = new Element('div', {
				'id': (elementId + 'Loader'),
				'class': 'input text'
			});
			
			var loaderImage = new Element('img',{
				'src':	imageUrl
			});
			
			
			loaderImage.inject(loaderContainer);
			
			loaderContainer.inject(subRegionSelect, 'before');
			
			var url = website.baseUrl + 'region/' + regionId  + '/';
			website.regionSelectId = elementId;			
			var jsonRequest = new Request.JSON({
				'url': url,
				onComplete: function(jsonData) {
					
					website.regionSelectSetup(jsonData);
					
				}
			}).get();
		} else {
			return false;
		}
	},
	
	regionSelectSetup: function(jsonData) {
		
		var elementId = website.regionSelectId;
		var subRegionSelect = $(elementId);
		var subRegionLoader = $((elementId +'Loader'));	
		var options = subRegionSelect.getElements('option');
		
		options = [];
		separator = new Element('option',{
			'value': "",
			'html': "---(wybierz)---"
		});
		options.push(separator);
		
		jsonData.each(function(item, index){
			newObject = new Element('option',{
				'value': item.id,
				'html': item.title
			});
			options.push(newObject);
		});
		
		subRegionSelect.empty();
		subRegionSelect.adopt(options);
		if(subRegionLoader) {
			subRegionLoader.dispose();
		}
		subRegionSelect.setStyles({
			'display': 'block'
		});
	},
	
	regionDataCleaning: function(elementId) {
		$(elementId).empty();
		var newOption = new Element('option',{
			'value': '',
			'html': '--------------'
		});
		
		newOption.inject($(elementId));
		
	}
	
	

};


window.addEvent('domready', website.init);
