$(function(){
	var Career = {
		url: CalcunConfig.basePath + 'Plugins/Career/index.php',
		init: function() {
			$('.Career_jobList .TreeViewPagerElement a').die('click').live('click', function(){
				var url = $(this).attr('href');
				$.ajax({ 
					url: url,
			 		method: 'ajax',
					success: function(data) {
						var $data = $(data);
						
						$('.Career_jobList').html($data.html());
						Career.init();
					}
				});
				return false;
			});
			if($('.ApplicantForm').length) {
				this.activateForm();
			
			}
		},
		
		activateForm: function() {
			
			$('.datepicker').datepicker ({
			'constrainInput': true,
			'dateFormat': 'yy. mm. dd.',
			'defaultDate': '0'
		
		});
			
			$('.ApplicantForm').validate();
			$('.ApplicantForm').submit(function(){
				if(!$('#uploadCV .queue .item').length()) {
					jcAlert('Önéletrajz feltöltése kötelező', 'Info');
				}
			});
			$('select.rate').each(function() {
				var $select = $(this);
				var $rater = $('<div class="rater"></div>');
				$select.find('option').each(function(){
					var $option = $(this);
					var $optionSpan = $('<span>' + $option.text() + '</span>');
					if($option.attr('selected')) {
						$optionSpan.addClass('selected');
					}
					$rater.append($optionSpan);
				});
				var $hidden = $('<input class="rateValue" type="hidden" />').addClass($select.attr('class'));
				$hidden.attr('name', $select.attr('name')).val($select.find('option:selected').val());
				if($select.attr('id')) {
					$hidden.attr('id', $select.attr('id'));
				}
				$select.attr('name', 'original_' + $select.attr('name')).attr('class', '').before($rater).after($hidden).hide();
				$('span', $rater).click(function(){
					var $span = $(this);
					$('span', $rater).removeClass('selected');
					//$select.next('.rateValue').val();
					$span.addClass('selected');
					$select.find('option').each(function() {
						var $option = $(this);
						if($option.text() == $span.text()) {
							$option.attr('selected', true);
							var $hidden = $select.next('.rateValue');
							$hidden.val($option.val());
							$select.after($hidden);
							return;
						} 
					});
				}).hover(
					function() { $(this).addClass('hover'); },
					function() { $(this).removeClass('hover'); }
				);	
				
			
			});
			
			$experienceSet = $('fieldset.experiences');
			$experienceCheckbox = $experienceSet.find('input[name=has_experience]');
			$experienceFields = $experienceSet.find('.experience').last();
			
			function checkExperienceCheckbox() {
				if($experienceCheckbox.is(':checked')) {
					$experienceFields.show();
					$('.addExperienceContainer').show();
				} else {
					$experienceFields.hide();
					$('.addExperienceContainer').hide();
				}
			}
			checkExperienceCheckbox();
			$experienceCheckbox.change(function(){
				checkExperienceCheckbox();
			});
			$experienceSet.find('.addExperience').live('click', function() {
				$experienceFields = $experienceSet.find('.experience').last();
				var $newFields = $experienceFields.clone();
				$newFields = $newFields.last();
				$newFields.find('input[name=cancelExperience]').remove();
				$newFields.find(':input').each(function() {
					$(this).val('').html('').attr('checked', false);
					var patt = /\[([0-9]+)\]/;
					var oldNum = $(this).attr('name').match(patt);
					if(oldNum) {
						oldNum = oldNum[1];
						$(this).attr('name', $(this).attr('name').replace(oldNum, parseInt(oldNum)+1));	
					}
				});
				var $cancelButton = $('<div class="input delete button"><input class="cancelButton" type="submit" name="cancelExperience" value="TĂ¶rĂ¶l" /></div>');
				$cancelButton.click(function() {
						var $element = $(this);
						jcConfirm('sure_to_del', 'confirm', function(r) {
			 			 	if(r) {
								$element.closest('.experience').remove();
							}
						});
						return false;
				});
				$newFields.append($cancelButton);
				$experienceFields.after($newFields);
				return false;
			})
			
			$studySet = $('fieldset.studies');
			$studyFields = $studySet.find('.study');
			$studySet.find('.addStudy').live('click', function(){
				$studyFields = $studySet.find('.study').last();
				var $newFields = $studyFields.clone();
				$newFields = $newFields.last();
				$newFields.find('input[name=cancelStudy]').remove();
				$newFields.find(':input').each(function() {
					$(this).val('').attr('checked', false);
					var patt = /\[([0-9]+)\]/;
					var oldNum = $(this).attr('name').match(patt);
					if(oldNum) {
						oldNum = oldNum[1];
						$(this).attr('name', $(this).attr('name').replace(oldNum, parseInt(oldNum)+1));
					}
				});
				var $cancelButton = $('<div class="input delete button"><input class="cancelButton" type="submit" name="cancelStudy" value="TĂ¶rĂ¶l" /></div>');
				$cancelButton.click(function() {
					var $element = $(this);
					jcConfirm('sure_to_del', 'confirm', function(r) {
		 			 	if(r) {
							$element.closest('.study').remove();
						}
					});
					return false;
				});
				$newFields.append($cancelButton);
				$studyFields.after($newFields);
				return false;
			});
			
			$langSet = $('fieldset.languages');
			
			$langSet.find('.addLanguage').live('click', function(){
				$langFields = $langSet.find('.language').last();
				var $newFields = $langFields.clone();
				$newFields = $newFields.last();
				$newFields.find('input[name=cancelLanguage]').remove();
				$newFields.find(':input').each(function() {
					$(this).attr('selected', false);
					var patt = /\[([0-9]+)\]/;
					var oldNum = $(this).attr('name').match(patt);
					if (oldNum) {
						oldNum = oldNum[1];
						$(this).attr('name', $(this).attr('name').replace(oldNum, parseInt(oldNum)+1));
					}
				});
				var $cancelButton = $('<input class="cancelButton" type="submit" name="cancelLanguage" value="TĂ¶rĂ¶l" />');
				$cancelButton.click(function() {
					var $element = $(this);
					jcConfirm('sure_to_del', 'confirm', function(r) {
		 			 	if(r) {
							$element.closest('.language').remove();
						}
					});
					return false;
				});
				$newFields.append($cancelButton);
				$langFields.after($newFields);
				return false;
			});
			
			this.uploader('#uploadPhoto', {
				file_queue_limit: 1,
				single: true
			});
			this.uploader('#uploadAttachment', {
				file_queue_limit: 1,
				file_types : '*.doc;*.docx;*.xls;*.xlsx;*.rtf;*.pdf,*.txt;*.jpg;*.gif;*.png;*.pdf',
	 			file_types_description : "Dokumentum- Ă©s kĂ©pfileok"
			});
			this.uploader('#uploadCV', {
				file_queue_limit: 1,
				file_types : '*.doc;*.docx;*.xls;*.xlsx;*.rtf;*.pdf,*.txt;*.jpg;*.gif;*.png;*.pdf',
	 			file_types_description : "Dokumentum- Ă©s kĂ©pfileok"
			});
			
			jQuery.validator.addMethod("requiredIfShown", function(value, element) {
				if($(element).val() || $(element).is(':hidden')) {
					return true;
				}
			}, 'A mezĹ‘t kĂ¶telezĹ‘ kitĂ¶lteni');
		},
		uploader: function(container, params) {
			var self = this;
 			var $container = $(container);
 			
 			var upload = $container.find('input[type=file]').attr('name');
 			$container.find('input[type=file]').hide();
 			
 			var settings = {
 				upload_url: self.url,
	 			post_params: {
					view: 'upload',
					action: 'upload',
					method: 'swfu'
				},
				file_post_name: upload,
	 			file_size_limit : 1024,
	 			file_types : '*.jpg;*.gif;*.png',
	 			file_types_description : "KĂ©pfileok",
	 			file_upload_limit : 0,
	 			flash_url : CalcunConfig.basePath+'Library/Js/swfupload/swfupload.swf',
	 			button_image_url : CalcunConfig.basePath+'Library/Js/swfupload/upload_button_insert.png',
	 			button_width : 66,
	 			button_height : 20,
	 			button_placeholder : $('.uploadButton', $container)[0],
	 			debug: false,
	 			single: false
			};
 			$.extend(settings, params);
 			
 			
  			$('.uploadButton', $container).attr('disabled',true);
  			
 			$(container).swfupload(settings)
 			.bind('fileQueued', function(event, file){
 				var listitem='<div id="'+file.id+'" class="item">'+
 					'<em>'+file.name+'</em> ('+Math.round(file.size/1024)+' KB) <span class="progressvalue" ></span>'+
 					'<div class="progressbar" ><div class="progress" ></div>'+
 					'<span class="status" >VĂˇrakozĂˇs</span>'+
 					'</div>'+
 					'<span class="cancel" >MĂ©gsem</span>'+
 					'</div>';
 				//$('.queue', $container).append(listitem);
 				if(settings.single === true) {
					$container.find('.queue').html(listitem);
				} else {
	 				$container.find('.queue').append(listitem);
	 			}
 				$('#'+file.id+' .cancel').bind('click', function(){
 					var swfu = $.swfupload.getInstance(container);
 					swfu.cancelUpload(file.id);
 					$('#'+file.id).slideUp('fast');
 				});
 				var swfu = $.swfupload.getInstance(container);
 				$(container).find(':input').not('[type=file]').each(function(){
					swfu.addPostParam($(this).attr('name'), $(this).val());	
				});
 				
 				// start the upload since it's queued
 				$(this).swfupload('startUpload');
 			})
 			.bind('fileQueueError', function(event, file, errorCode, message){
 				var swfu = $.swfupload.getInstance(container);
 				switch(errorCode) {
					case swfu.INVALID_FILETYPE:
						jInfo('Nem megengedett fileformĂˇtum!', 'Ă‰rtesĂ­tĂ©s');
						break;
					case swfu.QUEUE_LIMIT_EXCEEDED:
						jInfo('Nem tĂ¶lthet fel tĂ¶bb file-t!', 'Ă‰rtesĂ­tĂ©s');
						break;
					case swfu.FILE_EXCEEDS_SIZE_LIMIT:
						jInfo('A file ('+file.name+') mĂ©rete meghaladja a megengedett maximumot','Ă‰rtesĂ­tĂ©s');
						break;
					case swfu.ZERO_BYTE_FILE:
						jInfo('HibĂˇs file!', 'Ă‰rtesĂ­tĂ©s');
						break;
				}
 			})
 			.bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
 				// $('#queuestatus').text('KivĂˇlasztott kĂ©pek: '+numFilesSelected+' / VĂˇrĂłlistĂˇn: '+numFilesQueued);
 			})
 			.bind('uploadStart', function(event, file){
 				$('.inputSubmit', $container).attr('disabled',true);
 				$('.queue #'+file.id, $container).find('.status').text('FeltĂ¶ltĂ©s...');
 				$('.queue #'+file.id, $container).find('span.progressvalue').text('0%');
 				$('.queue #'+file.id, $container).find('span.cancel').hide();
 			})
 			.bind('uploadProgress', function(event, file, bytesLoaded){
 				//Show Progress
 				var percentage=Math.round((bytesLoaded/file.size)*100);
 				$('.queue #'+file.id, $container).find('div.progress').css('width', percentage+'%');
 				$('.queue #'+file.id, $container).find('span.progressvalue').text(percentage+'%');
 				if(percentage == 100) {
	 				$('.queue #'+file.id, $container).find('.status').text('File feltĂ¶ltve. FeldolgozĂˇs alatt...');
	 			}
 			})
 			.bind('uploadSuccess', function(event, file, serverData){
 				var item=$('.queue #'+file.id, $container);
 				item.empty();
 				var $serverData = $(serverData);
 				
 				item.html($serverData);
 				item.find('input[type=hidden]').each(function(){
 					var $input = $(this);
					$input.closest('form').find(':input[name=' + $input.attr('name') + ']').each(function() {
						$(this).val($input.val());
					});
				});
 				$('.inputSubmit').removeAttr('disabled');
 				var swfu = $.swfupload.getInstance(container);
 			//	swfu.removePostParam('id');
			//	swfu.addPostParam('id',$('input[name=id]').last().val());
 			})
 			.bind('uploadComplete', function(event, file){
 				// upload has completed, try the next one in the queue
 				$(this).swfupload('startUpload');
 			})
 		}
 		
	};
	Career.init();

});

