wkn = {
	util: {
		/**
		 * Register classes
		 */
		registerClasses : function (){
			$("input.clear-on-focus").each(wkn.util.clearOnFocus);
			$("input.focus-class").each(wkn.util.focusClass);
			$('input.date-pick').each(wkn.util.datePicker);
			$("form.validate").each(function (i,e){
				$(e).validate();
			});
			$("input.splitted-date-hour").each(wkn.util.splittedDateHour);
			$("select.select-sizer").selectSizer();
		},
		
		datePicker : function (i,e){
			$(e).datePicker($(e).metadata());
		},
		
		splittedDateHour : function (i,e){
			field = $(e);
			date = Date.fromString(field.val(),"yyyy-mm-dd hh:ii:ss");
			fieldId = field.attr('id');
			dateField = $("#"+fieldId+"_date");
			if (dateField.attr('type') == 'hidden'){
				pickerField = $("#"+fieldId+"_picker");
				pickerField.data('dateField',dateField);
				pickerField.datePicker({
					inline: true
				}).bind('dateSelected',function (e, selectedDate, $td){
					$(this).data('dateField').val(selectedDate.asString('dd/mm/yyyy')).change();
				}).dpSetSelected(date.asString('dd/mm/yyyy'));
				
			}
			hourField = $("#"+fieldId+"_hour");
			minuteField = $("#"+fieldId+"_minute");
			dateField.data('field_id',fieldId);
			hourField.data('field_id',fieldId);
			minuteField.data('field_id',fieldId);
			callback = function (){
				id = $(this).data('field_id');
				dateField = $("#"+id+"_date");
				hourField = $("#"+id+"_hour");
				minuteField = $("#"+id+"_minute");
				date = Date.fromString(dateField.val());
				date.setHours(hourField.val());
				date.setMinutes(minuteField.val());
				$('#'+id).val((date.asString('yyyy-mm-dd hh:ii:ss')));
			};
			dateField.change(callback);
			$("#"+fieldId+"_picker").val(dateField.val()).trigger('change');
			hourField.change(callback);
			minuteField.change(callback);
			if (field.val()){
				date = Date.fromString(field.val(),"yyyy-mm-dd hh:ii:ss");
				dateField.val(date.asString());
				hourField.val(date.getHours());
				minuteField.val(date.getMinutes());
			}
			
		},
	
		
		
		/**
		 * Class "clear-on-focus" : when a field is click, his value is removed
		 */
		clearOnFocus: function(i,e){
			field = $(e);
			field.data('initialValue',field.val());
			field.blur(function(){
				field = $(this);
				if (field.val() == '')
				{
					field.val(field.data('initialValue'));
				}
			});
			field.focus(function() {
				field = $(this);
				if (field.val() == field.data('initialValue'))
				{
					field.val('');
				}
			});
		},

		/**
		 * A class "focus" is available
		 */
		focusClass: function(i,e){
			field = $(e);
			field.blur(function(){
				$(this).removeClass('focus');
			});
			field.focus(function() {
				$(this).addClass('focus');
			});
		},

		/**
		 * Highlight messages
		 */
		MessagesHighlight : function (){
			$("ul.messages li.warning").animate({
				borderBottomColor:'#B5811D',
				borderTopColor:'#B5811D',
				borderRightColor:'#B5811D',
				borderLeftColor:'#B5811D',
				backgroundColor: '#ffeebb'
			},2000);
			$("ul.messages li.error").animate({
				borderBottomColor:'#E25E52',
				borderTopColor:'#E25E52',
				borderRightColor:'#E25E52',
				borderLeftColor:'#E25E52',
				backgroundColor: '#ffd8b1'
			},2000);
			$("ul.messages li.success").animate({
				borderBottomColor:'#277823',
				borderTopColor:'#277823',
				borderRightColor:'#277823',
				borderLeftColor:'#277823',
				backgroundColor: '#caffaf'
			},2000);
			$("ul.messages li.information").animate({
				borderBottomColor:'#6189B7',
				borderTopColor:'#6189B7',
				borderRightColor:'#6189B7',
				borderLeftColor:'#6189B7',
				backgroundColor: '#ddeeff'
			},2000);

			removeMessages = function(){
				$("ul.messages li").animate({
					backgroundColor:'#F1EEE5',
					borderBottomColor:'#F1EEE5',
					borderTopColor:'#F1EEE5',
					borderRightColor:'#F1EEE5',
					borderLeftColor:'#F1EEE5'
				},
				1000);
			};

			setTimeout(removeMessages,5000);
		},
		
		popup: function (element,width,height){
			window.open($(element).attr('href'),'_blank','width='+width+', height='+height+', menubar=no, scrollbars=yes');
			return false;
		}
	},
	
	validator: {
		/**
		 * Register the default method for validating
		 */
		registerDefault: function (){
			$.validator.setDefaults({
				wrapper: 'ul class="error_list"',
				errorElement: "li",
				errorPlacement: function (label,element) {
					if (element.attr('type') == 'checkbox' && element.next().is('label'))
					{
						element = element.next();
					}
					label.insertAfter(element);
				}
			});
		}
	}
	
};

$(window).load(function (){
	wkn.validator.registerDefault();
	wkn.util.registerClasses();
	wkn.util.MessagesHighlight();
	
	// Launch contact
	$("#contact-form-with-message").validate();
	$("#header-login").validate();
	$("select.sizer").selectSizer();
	
	if ($("#banner-video-flash").length == 1){
		$("#banner-video-flash").flash({
			src: '/swf/video.swf',
			width: 257,
			height: 189,
			wmode: 'transparent'
		});
	}
});
