	
	//	Common funcs
	
	//	draw required fields class
	function drawRequired(validOptions) {
		reqEl = 'li';
		reqClass = 'mandatory';
		// inpEl = 'input[@name='+key+']';
		
		for (var key in validOptions)
		{
			curClass = '';
			curAttr = validOptions[key].required;
			if ( $(curAttr).size() && typeof(curAttr)!== 'undefined' ) curClass = reqClass;
			$('input, select, textarea').filter('[@name='+key+']').parents( reqEl ).removeClass( reqClass ).addClass( curClass );
		}
	}
	
	//	A "validation" modal window with server responce 
	function drawErrors( resp ) {
		rW = $('#responce');
		rW.removeClass('errorWindow');
		var fullText = '';
		if ( resp.text ){
			fullText += (resp.text) ? '<p>' + resp.text + '</p>' : '';
			}
		if ( resp.error ) { 
			rW.addClass('errorWindow');
			fullText += '<p class="error">' + resp.error + '</p>';
			}
		if ( !resp.error && !resp.text ) {
			fullText += '<p class="error">Erreur inconnue</p>';
			}
		if ( fullText )
			{
			$('.jqmbody', rW).html( fullText );
			}
		rW.jqmShow();
	}
	
	//	A "validation" modal window for sending forms from modals with ajax
	function formErrors(h) {
		$('form', h.w).submit( function (event) {
			event.preventDefault();
			var queryArr = [];
			
			$('input', this).each ( function () { 
				queryArr.push( this.name + '=' + this.value );
			});
			query = queryArr.join('&');
			
			$.ajax ({
				type: this.method,
				url: this.action,
				dataType: 'json',
				data: query,
				error: drawErrors,
				success: drawErrors
			});
	
		});
	}

$(function () {

	jQuery.fn.extend({

		//	JQ funcs
		ieHover: function() {
			if($.browser.msie) { 
				$(this).hover(
					function(){ $(this).addClass("hover"); },
					function(){ $(this).removeClass("hover"); }
				);
			}
		},
		
		//	Conditional form field hiding
		hideExFields: function() {
			onlys = $('.only');
			onlys.show();
			onlys.not('.' + this.attr('id')).hide();
			return this;
		},
		
		//	enable/disable some form fields
		disableButton: function (bText) { 
			this
			.attr('disabled', 'disabled')
			.addClass('disabled')
			.text( bText ? bText : this.text() );
			},
		
		enableButton: function (bText) {			
			this
			.removeAttr('disabled', 'disabled')
			.removeClass('disabled')
			.text( bText ? bText : this.text() );
			},
			
		disableTextarea: function () {
			this
			.attr('readonly', 'readonly')
			.addClass('disabled');
			},
			
		enableTextarea: function () {
			this
			.removeAttr('readonly')
			.removeClass('disabled');
			},
		
		//	Sending a href with ajax
		urlBatch: function(  ) {
			this.click( function() {
				$.ajax({
					url: this.href,
					dataType: 'json',
					error: drawErrors,
					success: drawErrors
				});
				return false;
			});

		}


	});

	
	//	Other
	
	//	ie Hover
	$('#menu li').ieHover();
	$('.crealist li').ieHover();
	$('.people li').ieHover();
	
	// Overlabels	
	$('.overlabel label').addClass('isoverlabel').filter( function () {
	return $('input#'+$(this).attr('for')).val().length > 0;
	}).hide();
	
	$('.overlabel').addClass('isoverlabel');
	$('.isoverlabel input')
		.focus( function () { $('label[@for='+ this.id +']', '.isoverlabel').hide(); })
		.blur( function () { if(!this.value) $('label[@for='+ this.id +']', '.isoverlabel').show(); });
		
	//	Modal windows
	if($.fn.jqm) {
		
		//	responce window on any form
		responceHtml =	['<div class="jqmWindow" id="responce">',
						 '<div class="jqmhead"><a class="remove">x<span></span></a></div>',
						 '<div class="jqmbody"></div>',
						 '<div class="jqmfoot"><div class="buttons"><a class="remove button">Fermer</a></div></div>',
						 '</div>'].join('');
		$('body').append( responceHtml );
		$('#responce').jqm({
			trigger: false,
			closeClass: 'remove',
			toTop: true,
			onHide: function (h) {
				h.o.remove();
				h.w.hide();
				if ( !h.w.hasClass('errorWindow') ) { $('div.jqmWindow').jqmHide() };
			}
		});	
		
		//	Creative windows
		creas = '.crealist .crea a';
		
		// if($('.crealist').length) {
			$('body').append('<div class="jqmWindow" id="creative"></div>');
			creaModalOptions = {
				ajax: '@href', 
				trigger: creas,
				closeClass: 'remove',
				onLoad: function (h) {
					$('.favorite a', h.w).urlBatch();
					$('div.jqmbody').scrollTo(0);

				}
			}
			$('#creative').jqm( creaModalOptions );
		// }
		
		//	Remind password window
		remindA = $('.enter .remind a');
		if ( remindA.length ) {
			
	
			$('body').append('<div class="jqmWindow" id="remind"></div>');
			
			$('#remind').jqm({
				ajax: '@href', 
				trigger: remindA,
				closeClass: 'remove',
				onLoad: formErrors
			});
			
		}
		
	}

    $('.favorite a').urlBatch();	

});
