var area_pretendida;
//=======================================================================================================//
var ZFadeGallery = new Class({
	Implements: [Options, Events],
	options: {
		fadeSelector: '',
		markSelector: '',
		autoInterval: 4500,
		fadeOutTime: 500,
		fadeInTime: 800,
		autoFade: 0
	},
	initialize: function(container, options){
		this.container = $(container);
		this.setOptions(options);
		
		if(!this.container){
			return;
		}
		
		var fadeElms = this.container.getElements(this.options.fadeSelector),
			markElms = this.container.getElements(this.options.markSelector),
			fAutoFade = function(){},
			fadeTimer = null,
			displayIdx = 0;
		
		if(fadeElms.length < 2){
			return;
		}
		
		fadeElms[0].setStyle('opacity', 1).store('fx', new Fx.Tween(fadeElms[0], { property: 'opacity', link: 'cancel' }));
		
		if(fadeElms.length > 1){
			for(var i = 1; i < fadeElms.length; i++){
				fadeElms[i].setStyle('opacity', 0).removeClass('hide').store('fx', new Fx.Tween(fadeElms[i], { property: 'opacity', link: 'cancel' }));
			}
			
			if(this.options.autoFade){
				fAutoFade = function(){
					fadeElms[displayIdx].setStyle('zIndex', 1).retrieve('fx').setOptions({duration: this.options.fadeOutTime}).start(0);
					markElms[displayIdx].removeClass('current');
					
					displayIdx = (displayIdx < fadeElms.length - 1) ? (displayIdx + 1) : 0;
					
					fadeElms[displayIdx].setStyle('zIndex', 7).retrieve('fx').setOptions({duration: this.options.fadeInTime}).start(1);
					markElms[displayIdx].addClass('current');
				}.bind(this);
				
				fadeTimer = setInterval(fAutoFade, this.options.autoInterval);
			}
		}
		
		markElms.each(function(mark, index){
			mark.addEvent('mouseenter', function(e){
				if(e){
					e.stop();
				}
				
				if(index != displayIdx){
					fadeElms[displayIdx].setStyle('zIndex', 1).retrieve('fx').setOptions({duration: this.options.fadeOutTime}).start(0);
					markElms[displayIdx].removeClass('current');
					
					displayIdx = index;
				
					fadeElms[displayIdx].setStyle('zIndex', 7).retrieve('fx').setOptions({duration: this.options.fadeInTime}).start(1);
					markElms[displayIdx].addClass('current');
					
					if(this.options.autoFade){
						clearInterval(fadeTimer);
						fadeTimer = setInterval(fAutoFade, this.options.autoInterval);
					}
				}
			}.bind(this));	
		}.bind(this));
	}
});

var ZSimpleFadeTab = new Class({
	Implements: [Options, Events],
	options: {
		triggerSelector: '',
		contentSelector: '',
		fadeInTime: 800
	},
	
	initialize: function(container, options){
		this.container = $(container);
		this.setOptions(options);
		
		if(!this.container){
			return;
		}
		
		this.initTabs();
	},	
	
	initTabs: function(){
		var trigElms = this.container.getElements(this.options.triggerSelector),
			contElms = this.container.getElements(this.options.contentSelector);
		
		if(trigElms.length != contElms.length){
			return;
		}
		
		var displayIdx = 0;
		for(var i = 0, il = contElms.length; i < il; i++){
			if(trigElms[i].hasClass('current')){
				displayIdx = i;
			}else{
				contElms[i].setStyles({display: 'none', opacity: 0.3}).removeClass('none');
			}
			
			contElms[i].store('fx', new Fx.Tween(contElms[i], {property: 'opacity', duration: this.options.fadeInTime, link: 'cancel'}));
		}
		
		trigElms.each(function(trigElm, index){
			trigElm.addEvent('click', function(e){
				if(e){
					e.stop();
				}
				
				trigElms[displayIdx].removeClass('current');
				contElms[displayIdx].setStyles({display: 'none', opacity: 0.3});
				displayIdx = index;
				trigElm.addClass('current');
				contElms[displayIdx].setStyle('display', 'block').retrieve('fx').start(1);
			});
		});
	}
});

(function(global, $){

	var Meio = global.Meio || {};

	// credits to Jan Kassens
	Object.append(Element.NativeEvents, {
		'paste': 2, 'input': 2
	});
	Element.Events.paste = {
		base : (Browser.Platform.ios || Browser.opera || (Browser.firefox && Browser.version < 3))? 'input': 'paste',
		condition: function(e){
			this.fireEvent('paste', e, 1);
			return false;
		}
	};

	Meio.Mask = new Class({

		Implements: [Options, Events],

		options: {
			autoTab: false

			//onInvalid: function(){},
			//onValid: function(){},

			//REVERSE MASK OPTIONS
			//autoSetSize: false,
			//autoEmpty: false,
			//alignText: true,
			//symbol: '',
			//precision: 2,
			//decimal: ',',
			//thousands: '.',
			//maxLength: 18

			//REPEAT MASK OPTIONS
			//mask: '',
			//maxLength: 0 // 0 for infinite

			//REGEXP MASK OPTIONS
			//regex: null
		},

		initialize: function(options){
			this.setOptions(options);
			this.ignore = false;
			this.bound = {focus: 0, blur: 0, keydown: 0, keypress: 0, paste: 0};
		},

		link: function(element){
			element = $(element);
			if (element.get('tag') != 'input') return;
			if (this.element) this.unlink();
			this.element = element;
			return this.attach();
		},

		unlink: function(){
			return this.detach();
		},

		attach: function(){
			var self = this;
			if (this.maxlength == null) this.maxlength = this.element.get('maxLength');
			this.element.removeAttribute('maxLength');
			for (var evt in this.bound){
				this.bound[evt] = (function(onMask, func){
					return function(e) {
						return onMask.call(self, e, func);
					}
				})(this.onMask, this[evt]);
				this.element.addEvent(evt, this.bound[evt]);
			}
			var elementValue = this.element.get('value');
			if (elementValue != '') this.element.set('value', this.mask(elementValue));
			return this;
		},

		detach: function(){
			var maxlength = this.maxlength;
			if (maxlength != null) this.element.set('maxlength', maxlength);
			for (var evt in this.bound){
				this.element.removeEvent(evt, this.bound[evt]);
				this.bound[evt] = 0;
			}
			this.element = null;
			return this;
		},

		dettach: function(){ this.detach(); }, // deprecated (incorrect syntax, sorry), use detach instead

		onMask: function(e, func){
			if (this.element.get('readonly')) return true;
			var o = {}, event = e.event, keyCode = (e.type == 'paste') ? null : event.keyCode;
			o.range = this.element.getSelectedRange();
			o.isSelection = (o.range.start !== o.range.end);
			// 8 == backspace && 46 == delete && 127 == iphone's delete
			o.isDelKey = (keyCode == 46 && (event.type != 'keypress' || ((Browser.firefox || Browser.opera) && !event.which)));
			o.isBksKey = (keyCode == 8 || (Browser.Platform.ios && e.code == 127));
			o.isRemoveKey = (o.isBksKey || o.isDelKey);
			func && func.call(this, e, o);
			return true;
		},

		keydown: function(e, o){
			this.ignore = (Meio.Mask.ignoreKeys[e.code] && !o.isRemoveKey) || e.control || e.meta || e.alt;
			if (this.ignore || o.isRemoveKey){
				var keyRepresentation = Meio.Mask.ignoreKeys[e.code] || '';
				this.fireEvent('valid', [this.element, e.code, keyRepresentation]);
			}
			return (Meio.Mask.onlyKeyDownRepeat && o.isRemoveKey) ? this.keypress(e, o) : true;
		},

		keypress: function(e, o){
			if (this.options.autoTab && this.shouldFocusNext()){
				var nextField = this.getNextInput();
				if (nextField){
					nextField.focus();
					if (nextField.select) nextField.select();
				}
			}
			return true;
		},

		focus: function(e, o){
			var element = this.element;
			element.store('meiomask:focusvalue', element.get('value'));
		},

		blur: function(e, o){
			var element = this.element;
			if (e && element.retrieve('meiomask:focusvalue') != element.get('value')){
				element.fireEvent('change');
			}
		},

		getCurrentState: function(e, o){
			var _char = String.fromCharCode(e.code),
				elValue = this.element.get('value');
			var start = o.range.start, end = o.range.end;
			if (o.isRemoveKey && !o.isSelection) o.isDelKey ? end++ : start--;
			return {value: elValue.substring(0, start) + (o.isRemoveKey ? '' : _char) + elValue.substring(end),
				_char: _char, start: start, end: end};
		},

		setSize: function(){
			if (!this.element.get('size')) this.element.set('size', this.maskArray.length);
		},

		shouldFocusNext: function(){
			var maxLength = this.options.maxLength;
			return maxLength && this.element.get('value').length >= maxLength;
		},

		getNextInput: function(){
			var fields = Array.from(this.element.form.elements), field;
			for (var i = fields.indexOf(this.element) + 1, l = fields.length; i < l; i++){
				field = fields[i];
				if (this.isFocusableField(field)) return $(field);
			}
			return null;
		},

		isFocusableField: function(field){
			return (field.offsetWidth > 0 || field.offsetHeight > 0) // is it visible?
				&& field.nodeName.toLowerCase() != 'fieldset';
		},

		isFixedChar: function(_char){
			return !Meio.Mask.matchRules.contains(_char);
		},

		mask: function(str){
			return str;
		},

		unmask: function(str){
			return str;
		}

	});

	Meio.Mask.extend({

		matchRules: '',

		rulesRegex: new RegExp(''),

		rules: {},

		setRule: function(ruleKey, properties){
			this.setRules({ruleKey: properties});
		},

		setRules: function(rulesObj){
			Object.append(this.rules, rulesObj);
			var rulesKeys = [];
			for (rule in rulesObj) rulesKeys.push(rule);
			this.matchRules += rulesKeys.join('');
			this.recompileRulesRegex();
		},

		removeRule: function(rule){
			delete this.rules[rule];
			this.matchRules = this.matchRules.replace(rule, '');
			this.recompileRulesRegex();
		},

		removeRules: function(){
			var rulesToRemove = Array.flatten(arguments);
			for (var i=rulesToRemove.length; i--;) this.removeRule(rulesToRemove[i]);
		},

		recompileRulesRegex: function(){
			this.rulesRegex.compile('[' + this.matchRules.escapeRegExp() + ']', 'g');
		},

		createMasks: function(type, masks){
			type = type.capitalize();
			for (mask in masks){
				this[type][mask.camelCase().capitalize()] = new Class({
					Extends: this[type],
					options: masks[mask]
				});
			}
		},

		// credits to Christoph Pojer's (cpojer) http://cpojer.net/
		upTo: function(number){
			number = '' + number;
			return function(value, index, _char){
				if (value.charAt(index-1) == number[0])
					return (_char <= number[1]);
				return true;
			};
		},

		// http://unixpapa.com/js/key.html
		// if only the keydown auto-repeats
		// if you have a better implementation of this detection tell me
		onlyKeyDownRepeat: !!(Browser.ie || Browser.chrome || (Browser.safari && Browser.version >= 4))

	}).extend(function(){
		var ignoreKeys;
		var desktopIgnoreKeys = {
			8		: 'backspace',
			9		: 'tab',
			13		: 'enter',
			16		: 'shift',
			17		: 'control',
			18		: 'alt',
			27		: 'esc',
			33		: 'page up',
			34		: 'page down',
			35		: 'end',
			36		: 'home',
			37		: 'left',
			38		: 'up',
			39		: 'right',
			40		: 'down',
			45		: 'insert',
			46		: 'delete',
			224		: 'command'
		},
		iphoneIgnoreKeys = {
			10		: 'go',
			127		: 'delete'
		};

		if (Browser.Platform.ios){
			ignoreKeys = iphoneIgnoreKeys;
		} else {
			// f1, f2, f3 ... f12
			for (var i=1; i<=12; i++) desktopIgnoreKeys[111 + i] = 'f' + i;
			ignoreKeys = desktopIgnoreKeys;
		}
		return {ignoreKeys: ignoreKeys};
	}())
	.setRules((function(){
		var rules = {
			'z': {regex: /[a-z]/},
			'Z': {regex: /[A-Z]/},
			'a': {regex: /[a-zA-Z]/},
			'*': {regex: /[0-9a-zA-Z]/},
			'@': {regex: /[0-9a-zA-ZçáàãâéèêíìóòõôúùüñÇÁÀÃÂÉÈÊÍÌÓÒÕÔÚÙÜÑ]/}, // 'i' regex modifier doesnt work well with unicode chars
			'h': {regex: /[0-9]/, check: Meio.Mask.upTo(23)},
			'd': {regex: /[0-9]/, check: Meio.Mask.upTo(31)},
			'm': {regex: /[0-9]/, check: Meio.Mask.upTo(12)}
		};
		for (var i=0; i<=9; i++) rules[i] = {regex: new RegExp('[0-' + i + ']')};
		return rules;
	})());

	global.Meio = Meio;

})(this, document.id);

Meio.Mask.Fixed = new Class({

	Extends: Meio.Mask,

	options: {
		autoSetSize: false,
		placeholder: '_',
		removeIfInvalid: false, // removes the value onblur if the input is not valid
		removeInvalidTrailingChars: true
	},

	initialize: function(options){
		this.parent(options);
		this.slice = Array.prototype.slice;
		this.maskArray = this.options.mask.split('');
		this.maskMold = this.options.mask.replace(Meio.Mask.rulesRegex, this.options.placeholder).split('');
		this.maskMoldEmpty = this.slice.call(this.maskMold);
		this.validIndexes = [];
		this.maskArray.each(function(c, i){
			if (!this.isFixedChar(c)) this.validIndexes.push(i);
		}, this);
		this.createUnmaskRegex();
	},

	link: function(element){
		this.parent(element);
		var elementValue = this.element.get('value');
		if (elementValue != ''){
			var maskedValue = this.mask(elementValue);
			for (var i = maskedValue.length; i--;){
				this.maskMold[i] = maskedValue.charAt(i);
			}
		}
		if (this.options.autoSetSize) this.setSize();
		return this;
	},

	focus: function(e, o){
		var elementValue = this.maskMold.join('');
		this.element.set('value', elementValue);
		this.focusTimeout = this.element.setCaretPosition.delay(0, this.element, [this.getLastValidIndex(elementValue)]);
		this.parent(e, o);
	},

	blur: function(e, o){
		this.parent(e, o);
		clearTimeout(this.focusTimeout);
		var elementValue = this.element.get('value');
		if (this.options.removeIfInvalid){
			if (elementValue.contains(this.options.placeholder)){
				this.maskMold = this.slice.call(this.maskMoldEmpty, 0);
				this.element.set('value', '');
			}
			return true;
		}
		if (this.options.removeInvalidTrailingChars) this.element.set('value', this.removeInvalidTrailingChars(elementValue));
		return true;
	},

	keypress: function(e, o){
		if (this.ignore) return true;
		e.preventDefault();

		var c = String.fromCharCode(e.code),
			maskArray = this.maskArray,
			start, i, returnFromTestEntry;

		if(!o.isSelection){
			// no text selected
			var finalRangePosition;
			if (o.isBksKey){
				do {
					start = this.validIndexes.indexOf(--o.range.start);
				} while (start == -1 && o.range.start >= 0);
				finalRangePosition = this.validIndexes[start] || 0;
			} else {
				do {
					start = this.validIndexes.indexOf(o.range.start++);
				} while (start == -1 && o.range.start < maskArray.length);
				finalRangePosition = (start == -1) ? this.maskMold.length : this.validIndexes[start + 1];
			}

			i = this.validIndexes[start];
			if (!(returnFromTestEntry = this.testEvents(i, c, e.code, o.isRemoveKey))) return true;
			if (typeof returnFromTestEntry == 'string') c = returnFromTestEntry;
			this.maskMold[i] = (o.isRemoveKey) ? this.options.placeholder : c;

			var newCarretPosition = (finalRangePosition == null) ? this.maskMold.length : finalRangePosition;
			this.element.set('value', this.maskMold.join(''))
				.setCaretPosition(newCarretPosition);

		} else {

			var rstart = o.range.start,
				rend = o.range.end,
				end;

			// text selected
			do {
				start = this.validIndexes.indexOf(o.range.start++);
			} while(start == -1 && o.range.start < maskArray.length);
			do {
				end = this.validIndexes.indexOf(o.range.end++);
			} while(end == -1 && o.range.end < maskArray.length);

			// if  you select a fixed char it will ignore your input
			if (!(end - start)) return true;

			// removes all the chars into the range
			for (i=rstart; i<rend; i++){
				this.maskMold[i] = this.maskMoldEmpty[i];
			}

			if (!o.isRemoveKey){
				i = this.validIndexes[start];
				if (!(returnFromTestEntry = this.testEvents(i, c, e.code, o.isRemoveKey))) return true;
				if (typeof returnFromTestEntry == 'string') c = returnFromTestEntry;
				this.maskMold[i] = c;
				start++;
			}

			this.element.set('value', this.maskMold.join(''));
			this.element.setCaretPosition(this.validIndexes[start]);
		}
		return this.parent();
	},

	paste: function(e, o){
		var retApply = this.applyMask(this.element.get('value'), o.range.start);
		this.maskMold = retApply.value;
		this.element.set('value', this.maskMold.join(''))
			.setCaretPosition(retApply.rangeStart);
		return true;
	},

	getLastValidIndex: function(elementValue){
		var lastValidIndex = elementValue.length,
			placeholder = this.options.placeholder,
			i = elementValue.length - 1,
			cont;
		while (i >= 0){
			cont = false;
			while (this.isFixedChar(elementValue.charAt(i)) && elementValue.charAt(i) !== placeholder){
				if (i == 0) lastValidIndex = 0;
				cont = true;
				i--;
			}
			while (elementValue.charAt(i) === placeholder){
				lastValidIndex = i;
				cont = true;
				i--;
			}
			if (!cont) break;
		}
		return lastValidIndex;
	},

	removeInvalidTrailingChars: function(elementValue){
		return elementValue.substring(0, this.getLastValidIndex(elementValue));
	},

	testEvents: function(index, _char, code, isRemoveKey){
		var maskArray = this.maskArray,
			rule = Meio.Mask.rules[maskArray[index]],
			returnFromTestEntry;
		if (!isRemoveKey){
			var args = [this.element, code, _char];
			if (!rule || !(returnFromTestEntry = this.testEntry(this.element.get('value'), index, _char))){
				this.fireEvent('invalid', args);
				return false;
			}
			this.fireEvent('valid', args);
		}
		return (returnFromTestEntry != null) ? returnFromTestEntry : true;
	},

	shouldFocusNext: function(){
		return this.unmask(this.element.get('value')).length >= this.validIndexes.length;
	},

	createUnmaskRegex: function(){
		var fixedCharsArray = [].combine(this.options.mask.replace(Meio.Mask.rulesRegex, '').split(''));
		var chars = (fixedCharsArray.join('') + this.options.placeholder).escapeRegExp();
		this.unmaskRegex = chars ? new RegExp('[' + chars + ']', 'g') : null;
	},

	testEntry: function(str, index, _char){
		var maskArray = this.maskArray,
			rule = Meio.Mask.rules[maskArray[index]],
			ret = (rule && rule.regex.test(_char));
		return (rule.check && ret) ? rule.check(str, index, _char) : ret;
	},

	applyMask: function(str, newRangeStart){
		var strArray = str.split(''),
			maskArray = this.maskArray,
			maskMold = this.maskMold,
			rules = Meio.Mask.rules,
			eli = 0,
			returnFromTestEntry;

		while (eli < maskMold.length){
			if (!strArray[eli]){
				strArray[eli] = maskMold[eli];
			} else if (rules[maskArray[eli]]){
				if (!(returnFromTestEntry = this.testEntry(str, eli, strArray[eli]))){
					strArray.splice(eli, 1);
					continue;
				} else {
					if (typeof returnFromTestEntry == 'string') strArray[eli] = returnFromTestEntry;
				}
				newStartRange = eli;
			} else if (maskArray[eli] != strArray[eli]){
				strArray.splice(eli, 0, maskMold[eli]);
			} else {
				strArray[eli] = maskMold[eli];
			}
			eli++;
		}

		return {value: strArray.slice(0, this.maskMoldEmpty.length), rangeStart: newRangeStart + 1};
	},

	mask: function(str){
		str = this.applyMask(str).value.join('');
		if (this.options.removeInvalidTrailingChars) str = this.removeInvalidTrailingChars(str);
		return str;
	},

	unmask: function(str){
		return this.unmaskRegex ? str.replace(this.unmaskRegex, '') : str;
	}

});

Meio.Mask.createMasks('Fixed', {
	'Phone'		: {mask: '(99) 9999-9999'},
	'PhoneUs'	: {mask: '(999) 999-9999'},
	'Cpf'		: {mask: '999.999.999-99'},
	'Cnpj'		: {mask: '99.999.999/9999-99'},
	'Date'		: {mask: '3d/1m/9999'},
	'DateUs'	: {mask: '1m/3d/9999'},
	'Cep'		: {mask: '99999-999'},
	'Time'		: {mask: '2h:59'},
	'Cc'		: {mask: '9999 9999 9999 9999'}
});

(function(){

	var meiomask = 'meiomask';
	
	var upperCamelize = function(str){
		return str.camelCase().capitalize();
	};
	
	var getClassOptions = function(a1, a2, opts){
		var klass;
		if (typeOf(a1) == 'string'){
			if (typeOf(a2) != 'string'){
				opts = a2;
				a1 = a1.split('.');
				a2 = a1[1];
				a1 = a1[0];
			}
			klass = Meio.Mask[upperCamelize(a1)];
			if (a2) klass = klass[upperCamelize(a2)];
		} else {
			klass = a1;
			opts = a2;
		}
		return {klass: klass, options: opts || {}};
	};
	
	var executeFunction = function(functionName, args){
		var co = getClassOptions.apply(null, args); 
		return new co.klass(co.options)[functionName](this);
	};

	String.implement({
		meiomask: function(){
			return executeFunction.call(this, 'mask', arguments);
		},
		meiounmask: function(){
			return executeFunction.call(this, 'unmask', arguments);
		}
	});

	Element.Properties.meiomask = {
		set: function(args){
			args = getClassOptions.apply(null, args), mask = this.retrieve(meiomask);
			if (mask){
				mask.unlink();
				mask = null;
			}
			return this.store(meiomask, new args.klass(args.options).link(this));
		},
		// returns the mask object
		get: function(){
			return this.retrieve(meiomask);
		},
		// removes completely the mask from this input
		erase: function(){
			var mask = this.retrieve(meiomask);
			if (mask) mask.unlink();
			return this;
		}
	};
	
	Element.Properties[meiomask + ':value'] = {
		// sets the value but first it applyes the mask (if theres any)
		set: function(value){
			var mask = this.retrieve(meiomask);
			if (mask) value = mask.mask(value);
			return this.set('value', value);
		},
		
		// gets the unmasked value
		get: function(){
			var mask = this.retrieve(meiomask);
			var value = this.get('value');
			return (mask) ? mask.unmask(value) : value;
		}
	};

	Element.implement({
		meiomask: function(mask, type, options){
			return this.set(meiomask, [mask, type, options]);
		}
	});
	
})();

var ZForm = new Class({
	Implements: [Events, Options],	
	options: {		
		data: null,
		errorClass: 'zformErrorLayer',
		errorSelector: 'zformErrorId',
		zIndex: 9999,
		autoHideTime: 3000,
		offset: null,
		
		reAlpha: /^[a-z ._-]+$/i,
		reAlphanumeric: /^[a-z0-9 ._-]+$/i,
		reDigit: /^[-+]?[0-9]+$/,
		reNumber: /^[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?$/,
		reEmail: /^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i,
		rePhone: /^\+?1?([- ()\.]{0,3}\d){7,16}( *(x|ext)\.? *(\d{1,10}))?$/,
		reUrl: /^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i
	},
	initialize: function(form, options){
		this.setOptions(options);
		
		this.formElm = $(form) || $(document.forms[form]);
		if(!this.formElm){
			return;
		}
		
		this.initErrorLayer();
		this.initFormBehavior();
	},
	initErrorLayer: function(){
		this.errorMsg = $(this.options.errorSelector);
		if(!this.errorMsg){
			this.errorMsg = new Element('div', {
				id: this.options.errorSelector,
				'class': this.options.errorClass,
				'html': '<p class="message"></p>',
				
				styles: {
					top: -5000,
					opacity: 0,
					zIndex: this.options.zIndex
				}
			}).inject(document.body);
			
			this.errorMsg.store('fx', new Fx.Tween(this.errorMsg, {property: 'opacity', link: 'cancel', duration: 350}));
		}
	},
	initFormBehavior: function(){
		var form = this.formElm,
			data = this.options.data;
			
		for(var i = 0, il = data.length; i < il; i++){
			this.initFieldBehavior($(form[data[i].name]), data[i]);
		}
		
	    form.removeEvents().addEvent('submit', function(e){
			if (this.validateForm()){
				this.fireEvent('submit', [form, e]);
			}else{
				if(e){
					e.stop();
				}
			}
	    }.bind(this));
		
		var resetBtn = form.getElement('input[type=reset]');
		if(resetBtn){
			resetBtn.addEvent('click', function(){
				this.resetForm();
				this.resetInputs();
			}.bind(this));
		}
		
		$(document.body).addEvent('click', this.hideError.bind(this));
	},
	validateForm: function(){
		var form = this.formElm,
			data = this.options.data;
			
		for(var i = 0; i < data.length; i++){			
			var field = form[data[i].name];
			if(field && field.name == data[i].name){
				if (!this.validateField(field)) {
					return false;
				}
			}
		}
		
	    return true;
	},	
	resetForm: function(){
		this.hideError();
		this.formElm.reset();
	},
	resetInputs: function(){
		var arrData = this.options.data,
			form = this.formElm;
			
		for(var i = 0, il = arrData.length; i < il; i++){
			var data = arrData[i];
			
			 if(data.alterval){
				var field = this.formElm[data.name];
				
				switch(field.type){
					case 'text':
					case 'textarea':
					case 'password':
						field.value = data.alterval;
						break;
						
					case 'select-one':
					case 'select-multiple':
						field.selectedIndex = data.alterval;
						break;
						
					case 'radio':					
					case 'checkbox':
						this.formElm[field.name][data.alterval].checked = true;
				}
			}
		}
	},
	initFieldBehavior: function(field, data){
		field.store('validateData', data);
		
	    if(data.alterval){
			switch(field.type){
				case 'text':
				case 'textarea':
				case 'password':
					field.value = data.alterval;
					field.addEvents({
						focus: function(){
			                if(this.value.trim() == this.retrieve('validateData').alterval){
			                    this.value = '';
			                }
						},
						blur: function(){
			                if(this.value.trim() == ''){
			                    this.value = this.retrieve('validateData').alterval;
			                }
			            }
					});
					break;
					
				case 'select-one':
				case 'select-multiple':
					field.selectedIndex = data.alterval;
					break;
					
				case 'radio':					
				case 'checkbox':
					this.formElm[field.name][data.alterval].checked = true;
			}
	    }
		
		if (data.maxLength){
			switch(field.type){
				case 'text':
				case 'password':
					field.set('maxLength', data.maxLength);
					break;
				case 'textarea':
					field.addEvents({
						keypress: function(e){
							var code = typeof(e.event.charCode) != 'undefined' ? e.event.charCode : e.event.keyCode,
								maxLength = this.retrieve('validateData').maxLength;
								
							if(this.value.trim().length >= maxLength && code != 0){ 
								if(e) e.stop(); 
							}
						},
						change: function(e){
							var maxLength = this.retrieve('validateData').maxLength;
							if(this.value.trim().length >= maxLength){ 
								this.value = this.value.trim().substring(0, maxLength);
							}
						}
					});
					break;
			}
		}
		
		if (data.restrict){
			switch(field.type){
				case 'text':
				case 'password':					
				case 'textarea':					
					field.addEvent('keypress', function(e){
						var code = typeof(e.event.charCode) != 'undefined' ? e.event.charCode : e.event.keyCode,
							key = (code == 0) ? '' : String.fromCharCode(code),
							re = new RegExp(this.retrieve('validateData').restrict);
							
						if(key != '' && !re.test(key)){
							if(e){
								e.stop();
							}
						}
					});
					break;
			}
		}
		
		if(data.mask){
			switch(field.type){
				case 'text':
				case 'password':					
				case 'textarea':					
					field.meiomask('fixed', {mask: data.mask, autoTab: true, removeIfInvalid: true});
					break;
			}
		}
		
		field.addEvent('click', function(e){
			this.hideError();
		}.bind(this));
	},
	validateField: function(field){
		var data = field.retrieve('validateData'),
			valids = data.valid.split('|'),
			errmsgs = data.errmsg.split('|');
		
		for(var i = 0; i < valids.length; i++){
			if(!data.depend || data.depend.apply(this.formElm)){
				if(!this.validate(field, valids[i])){
					this.showError(data.placeholder || field, errmsgs[i], this.options.offset);
					return false;
				}
			}
		}
		
		return true;
	},
	validate: function(field, valid){
		var data = field.retrieve('validateData'),
			value = (field.value || '').trim(),
			defaultValidated = value == (data.alterval || '');
			
		switch(valid){
			case 'required':
				switch(field.type){
					case 'text':
					case 'hidden':
					case 'textarea':
					case 'password':
					case 'file':
						return value.length > 0 && value != (data.alterval || '');
				}								
				break;
			case 'alpha':
				switch(field.type){
					case 'text':
					case 'textarea':
					case 'password':
						return defaultValidated || this.options.reAlpha.test(value);
				}								
				break;
			case 'alphanumeric':
				switch(field.type){
					case 'text':
					case 'textarea':
					case 'password':					
						return defaultValidated || this.options.reAlphanumeric.test(value);
				}								
				break;
			case 'digit':
				switch(field.type){
					case 'text':
					case 'textarea':
					case 'password':
						return defaultValidated || this.options.reDigit.test(value);
				}				
				break;
			case 'number':
				switch(field.type){
					case 'text':
					case 'textarea':
					case 'password':
						return defaultValidated || this.options.reNumber.test(value);
				}				
				break;
			case 'email':
				switch(field.type){
					case 'text':
					case 'textarea':
						return defaultValidated || this.options.reEmail.test(value);
				}				
				break;		
			case 'url':
				switch(field.type){
					case 'text':
					case 'textarea':
						return defaultValidated || this.options.reUrl.test(value);
				}				
				break;
			case 'checked':
				switch(field.type){
					case 'checkbox':
					case 'radio':
						var group = field.form[field.name];
						if(!group.length){
							return group.checked;
						}else{
							for(var i = 0; i < group.length; i++){
								if(group[i].checked){
									return true;
								}
							}
						}
						return false;
				}
				break;
			case 'selected':
				switch(field.type){
					case 'select-one':							
						return field.selectedIndex != (data.init || (field.size == 0) ? 0 : -1);
					case 'select-multiple':							
						return field.selectedIndex != (data.init || -1);
				}
				break;
		}
		return true;
	},
	showError: function(field, message, offset){
		var offs = {x: 0, y: 0};
			
		for(var p in offset){
			offs[p] = offset[p];
		}
		
		this.errorMsg.setStyle('width', 'auto');
		
		var fieldCoords = field.getCoordinates(),
			errorCoords = this.errorMsg.getCoordinates();
			
		if(fieldCoords.left + errorCoords.width > window.getWidth()){
			this.errorMsg.setStyle('width', window.getWidth() - fieldCoords.left);
		}
		
		this.errorMsg.getElement('p.message').set('html', message);
		this.errorMsg.setStyles({
			top: fieldCoords.top + fieldCoords.height + offs.y,
			left: fieldCoords.left + offs.x,
			width: Math.max(0, Math.max(fieldCoords.width, this.errorMsg.getCoordinates().width))
		});		
		
		if(field.type){
			switch(field.type){
				case 'select-one':
				case 'select-multiple':
					field.focus();
				break;
				
				default:
					field.select();
					field.focus();
				break;
			}
		}
		
		this.errorMsg.retrieve('fx').start(1);
		this.errorMsg.store('show', 1);
		
		clearTimeout(this.options.errorTimer);
		this.options.errorTimer = this.hideError.delay(this.options.autoHideTime, this);
	},
	hideError: function(){
		if(this.errorMsg.retrieve('show', 1)){
			clearTimeout(this.options.errorTimer);
			this.errorMsg.retrieve('fx').start(0);
			this.errorMsg.store('show', 0);
		}
	}
});

var ZSelect = new Class({	
	Implements: [Events, Options],	
	options: {	
		selectClass: 'customSelect',
		optionClass: 'customOption',
		optionSelected: 'selected',
		optionShow: 6,
		paddingLeft: 10,	
		offsetWidth: 10,
		offsetOptWidth: 0,
		maxWidth: 0,
		selectHeight: 22,	
		fx:{
			duration: 200,
			link: 'cancel'
		}
	},	
	initialize: function(selector, options){
		this.setOptions(options);
		this.setup($(selector));		
	},	
	setup: function(selector){
		if(!selector) return;
		selector.store('size', selector.getSize());
		selector.addClass('hide');
		if(selector.get('tag') != 'select') return;
		var that = this;	
		var closeFn = function(){		
			var selects = $$('ul.' + that.options.optionClass);
			selects.each(function(selector){				
				selector.retrieve('fx').set({
					'height': 0,
					'opacity': 0
				});					
			});
		};	
		var showFn = function(e){
			var thisOption = (typeOf(e) == 'event' ? ($(e.target).get('tag') != 'li' ? $(e.target).getParent('li') : $(e.target)) : e) || selected;		
			if(selectOptions.getStyle('visibility') == 'visible'){
				hideFn(thisOption);
			}
			else{	
				if(focused){
					focused.removeClass(that.options.optionSelected);	
				}
				focused = selected = thisOption;
				focused.addClass(that.options.optionSelected);
				var fixTop = container.getCoordinates().top + selectText.getCoordinates().height;			
				if(container.getCoordinates().top + Math.min(heightShow, optionHeight) - window.getScrollHeight() > 0){
					fixTop = container.getCoordinates().top - Math.min(heightShow, optionHeight);
				}					
				selectOptions.retrieve('fx').set({
					'top': fixTop - 1,
					'left': container.getCoordinates().left,
					'height': 0			
				});				

				if(heightShow > optionHeight){
					heightShow =  optionHeight
				}
				selectOptions.retrieve('fx').start({
					'height': heightShow,
					'opacity': 1
				});		
				selectText.focus();			
				this.fireEvent('show', thisOption);
				showing = true;			
			}
		};		
		var hideFn = function(e){
			var thisOption = (typeOf(e) == 'event' ? ($(e.target).get('tag') != 'li' ? $(e.target).getParent('li') : $(e.target)) : e);		
			selectOptions.retrieve('fx').start({
				'height': 0,
				'opacity': 0
			});					
			selectText.setStyle('border', 'none');
			if(focused){
				focused.removeClass(that.options.optionSelected);
			}
			showing = focused = false;
			this.fireEvent('hide', thisOption);		
		};
		var overFn = function(e){		
			showing = true;
			var thisOption = ($(e.target).get('tag') != 'li' ? $(e.target).getParent('li') : $(e.target));
			if(focused){
				focused.removeClass(that.options.optionSelected);		
			}
			focused = thisOption;
			if(focused){
				focused.addClass(that.options.optionSelected);		
			}
			this.fireEvent('over', thisOption);
		};	
		var selectFn = function(e){		
			var thisOption = (typeOf(e) == 'event' ? ($(e.target).get('tag') != 'li' ? $(e.target).getParent('li') : $(e.target)) : e);		
			if(focused){
				focused.removeClass(that.options.optionSelected);
			}
			if(showing){
				selected = focused = thisOption;			
				focused.addClass(that.options.optionSelected);						
			} 
			else{
				selected = thisOption;
			}					
			selectElement.value = selected.retrieve('text');			
			selectValue.value = selected.retrieve('value');	
			
			area_pretendida=selectValue.value;
			if(selectValue.value=="Mão de Obra"){
				$j('.contContact').css('width','1109px');
				$j('#contato_coluna2').css('visibility','visible');
				initValidForm2();
			}else if(selectValue.value=="Selecione" || selectValue.value=="Atendimento" || selectValue.value=="Planejamento" || selectValue.value=="Criação" || selectValue.value=="Produção" || selectValue.value=="Operações" || selectValue.value=="Casting" || selectValue.value=="Relatórios" || selectValue.value=="Financeiro"){
				$j('.contContact').css('width','709px');
				$j('#contato_coluna2').css('visibility','hidden');
				initValidForm1();
			}
			selectTextSpan.set('text', selected.get('text'));
			this.fireEvent('select', [selected, selector, selected.retrieve('text'), selected.retrieve('value')]);
			hideSelector(selected);
		};
		var hideSelector = function(e){
			var thisOption = (typeOf(e) == 'event' ? ($(e.target).get('tag') != 'li' ? $(e.target).getParent('li') : $(e.target)) : e);		
			selectOptions.retrieve('fx').start({
				'height': 0,
				'opacity': 0
			});	
			selectText.setStyle('border', 'none');
			selectOptions.scrollTop = 0;		
			if(focused){
				focused.removeClass(that.options.optionSelected);
			}
			showing = focused = false;
			this.fireEvent('hide', thisOption);		
		};
		var timer = null;	
		var container = new Element('div', {
			'class': this.options.selectClass,
			'styles': {
				'width': selector.retrieve('size').x + this.options.offsetWidth + this.options.paddingLeft,
				'height': this.options.selectHeight
			},
			'events': {
				'mouseleave': function(e){
					timer = hideFn.delay(200, this, e);
				}
			}
		}).inject(selector, 'after');
		var selectIcon = new Element('a', {
			'href': 'javascript:void(0);',
			'class': 'icon',
			'html': '&nbsp;',
			'styles': {
				'height': this.options.selectHeight,
				'line-height': this.options.selectHeight
			},
			'events': {
				'click': showFn.bind(this)				
			}
		}).inject(container);
		var selectText = new Element('a', {
			'href': 'javascript:void(0);',
			'class': 'text',
			'styles': {
				'width': selector.retrieve('size').x - selectIcon.getCoordinates().width + this.options.offsetWidth,
				'height': this.options.selectHeight,
				'line-height': this.options.selectHeight,
				'padding-left': this.options.paddingLeft				
			},
			'events': {
				'click': showFn.bind(this)				
			}			
		}).inject(container);
		
		var selectTextSpan = new Element('span', {			
			'html': '&nbsp;',
			'styles': {
				'height': this.options.selectHeight,
				'line-height': this.options.selectHeight
			}
		}).inject(selectText);
				
		var selectOptions = new Element('ul', {
			'class': this.options.optionClass,
			'styles': {
				'top': -10000,
				'opacity': 0,
				'position': 'absolute',
				'overflow-x': 'hidden'
			},
			'events': {
				'mouseenter': function(e){
					clearTimeout(timer);
					overFn.apply(this, [e]);
				},
				'mouseleave': hideFn.bind(this)
			}
		}).inject(document.body);			
		
		selectOptions.store('fx', new Fx.Morph(selectOptions, this.options.fx));	
		var selectElement = new Element('input', {
			'type': 'hidden',			
			'name': selector.get('name') + 'Name',
			'id': selector.get('name') + 'Name'			
		}).inject(selector, 'after');	
		var selectValue = new Element('input', {
			'type': 'hidden',			
			'name': selector.get('name') + 'Value',
			'id': selector.get('name') + 'Value'		
		}).inject(selectElement, 'after');			
		selector.getElements('option').each(function(opt){
			var newOption = new Element('li', {				
				'events': {
					'mouseover': overFn.bind(this),				
					'mousedown': selectFn.bind(this)				
				}
			}).adopt(new Element('span', {
				'html': opt.get('text'),
				'styles':{				
					'padding-left': this.options.paddingLeft,
					'height': this.options.selectHeight
				}
			}));	
			if(opt.selected){
				newOption.addClass(this.options.optionSelected);
				selectElement.value = opt.get('text');
				selectValue.value = opt.get('value');
			}
			newOption.store('text', opt.get('text'));
			newOption.store('value', opt.get('value')).inject(selectOptions);
			if(newOption.getElement('span').getCoordinates().width > this.options.maxWidth){
				this.options.maxWidth = newOption.getElement('span').getCoordinates().width;
			}			
		}.bind(this));
		
		var selected = selectOptions.getElement('li.' + this.options.optionSelected);		
		var widthOne = selected.getCoordinates().width;
		var heightShow = this.options.selectHeight * this.options.optionShow;
		var optionsLength = selectOptions.getElements('li').length;
		var optionHeight = optionsLength * this.options.selectHeight;		
		var focused = selected;
		var showing = false;
		var forceShow = false;
		
		selectTextSpan.set('text', selected.get('text'));		

		if(heightShow > optionHeight){
			selectOptions.setStyle('overflow', 'hidden');
		}
		if(this.options.maxWidth < container.getCoordinates().width){
			this.options.maxWidth = container.getCoordinates().width;
		}		
		selectOptions.setStyle('width', this.options.maxWidth + this.options.offsetOptWidth);
		selectOptions.getElements('span').each(function(item){			
			item.setStyle('width', this.options.maxWidth - this.options.paddingLeft - this.options.offsetWidth);
		}.bind(this));
	}
});
//===============================================================================================//

var ZLayer = new Class({	
	Implements: [Options, Events],	
	options: {		
		zIndex: 19999,
		opacity: 0.4,
		paddingTop: 0,
		closeButtonClass: ['close'],
		autoClose: false,
		noOverlay: false,
		dockPanel: false //1 = top left, 2 = top right, 3 = bottom left, 4 = bottom right, default = center
		/*,
		onShow: $empty,
		onHide: $empty*/
	},	
	initialize: function(selector, options){		
		this.setOptions(options);
		this.setup($(selector));
	},	
	setup: function(selector){
		if(!selector) return;
		var that = this;
		
		if(!that.options.noOverlay){
			var overlay = $('overlay');
			if(!overlay){
				overlay = new Element('div', {
					'id': 'overlay',
					'styles':{
						'display': 'block',
						'visibility': 'visible',
						'position': 'absolute',
						'top': 0,
						'left': 0,
						'width': window.getScrollSize().x,
						'height': window.getScrollSize().y,
						'zIndex': that.options.zIndex,
						'backgroundColor': '#000',
						'opacity': 0
					}
				}).inject(document.body);	
			}
			overlay.store('fx', new Fx.Tween(overlay, {
				property: 'opacity',
				duration: Browser.ie? 200: 400
			}));
			overlay.retrieve('fx').start(that.options.opacity);
			
			selector.inject(overlay, 'after');
		}
		
		var pos = that.rePosition(selector);
		selector.setStyles({
			'opacity': 0,
			'position': 'fixed',
			'top': pos.top,
			'left': pos.left,
			'zIndex': that.options.zIndex + 1
		});
		
		selector.store('fx', new Fx.Tween(selector, {
			property: 'opacity',
			duration: 400			
		}));
		
		that.fireEvent('show', selector);
		selector.store('isShow', 1);
		
		if(Browser.ie && Browser.version < 9){
			selector.retrieve('fx').set(1);
		}else{
			selector.retrieve('fx').start(1);
		}
		
		var scrollTop = window.getScrollTop();
		var scrollFn = function(){
			if(window.getHeight() < selector.getCoordinates().height || window.getWidth() < selector.getCoordinates().width){
				selector.setStyles({
					'position': 'absolute',
					'top': scrollTop
				});
				return true;
			}
			else {
				if(selector.getStyle('position') != 'fixed'){
					var newpos = that.rePosition(selector);
					
					selector.setStyles({
						'top': newpos.top
					});
				}
			}
		};
		window.addEvent('scroll', scrollFn);
		var resizeFn = function(e){
			var cssPos = (window.getHeight() < selector.getCoordinates().height || window.getWidth() < selector.getCoordinates().width) ? 'absolute' : 'fixed';
			var newpos = that.rePosition(selector);
			selector.setStyles({
				'position': cssPos,
				'top': newpos.top,
				'left': newpos.left
			});	
			
			if(overlay){
				overlay.setStyles({	
					'width': window.getScrollSize().x,
					'height': window.getScrollSize().y 
				});
			}
		};
		window.addEvent('resize', resizeFn);
		var closeBtn = selector.getElement('.' + that.options.closeButtonClass[0]);
		if(closeBtn){
			closeBtn.removeEvents('click').addEvent('click', function(e){
				if(e) e.stop();
				
				that.fireEvent('hide', selector);
				selector.store('isShow', 0);
				
				clearTimeout(that.options.timerClose);
				
				if(Browser.ie && Browser.version < 9){
					selector.retrieve('fx').set(0);
					selector.setStyle('top', -5000);
				}else{
					selector.retrieve('fx').start(0).chain(function(){
						selector.setStyle('top', -5000);
					});
				}
				
				if(overlay){
					overlay.retrieve('fx').start(0).chain(function(){
						overlay.destroy();
						window.removeEvent('scroll', scrollFn);
						window.removeEvent('resize', resizeFn);
					});
				}
			});
			
			for (var i = 1; i < that.options.closeButtonClass.length; i++){
				var addcloseBtn = selector.getElement('#' + that.options.closeButtonClass[i]);
				if(addcloseBtn){
					addcloseBtn.removeEvents().addEvent('click', function(e){
						if(e) e.stop();
						closeBtn.fireEvent('click');
					});
				}
			}
			
			if(that.options.autoClose){
				that.options.timerClose = setTimeout(function(){
					closeBtn.fireEvent('click');
				}, 5000);
			}
		}
	},
	rePosition: function(layer){
		var winSize = window.getSize();
		var layerSize = layer.getSize();
		var top = Math.max(0, (winSize.y - layerSize.y)/2 - this.options.paddingTop);
		var left = Math.max(0, (winSize.x - layerSize.x)/2);
		
		if(this.options.dockPanel){
			switch (this.options.dockPanel){
				case 1: //top left
					top = 15;
					left = 15;
				break;
				
				case 2: //top right
					top = 15;
					left = Math.max(0, winSize.x - layerSize.x - 15);
				break;
				
				case 3: //bottom left
					top = Math.max(0, winSize.y - layerSize.y - 15);
					left = 15;
				break;
				
				case 4: //bottom right
					top = Math.max(0, winSize.y - layerSize.y - 15);
					left = Math.max(0, winSize.x - layerSize.x - 15);
				break;
				
				default: //same as center
				break;
			}
		}
		
		return {top: top, left: left};
	},
	forceHide: function(elm){
		clearTimeout(this.options.timerClose);
		elm.store('isShow', 0);
		elm.retrieve('fx').cancel().set(0);
		elm.setStyle('top', -5000);
	}
});

function initValidForm1(){
	var frmContact = $('frmContact');
	if(frmContact){
		
		new ZForm(frmContact, {
			data: [{
				name: 'txtNome',
				valid: 'required',
				errmsg: 'Please enter your name'
			},{
				name: 'txtData',
				valid: 'required',
				mask: '99/99/9999',
				errmsg: 'Please enter your birthday'
			},{
				name: 'txtNaturalidade',
				valid: 'required',
				errmsg: 'Please enter your birthplace'
			},{
				name: 'selMaritalValue',
				valid: 'required',
				alterval: '0',
				placeholder: $('selMaritalValue').getNext(),
				errmsg: 'Please select your marital status'
			},{
				name: 'txtEndereco',
				valid: 'required',
				errmsg: 'Please enter your address'
			},{
				name: 'txtBairro',
				valid: 'required',
				errmsg: 'Please enter your neighborhood'
			},{
				name: 'txtCidade',
				valid: 'required',
				errmsg: 'Please enter your city'
			},{
				name: 'selUFValue',
				valid: 'required',
				alterval: '0',
				placeholder: $('selUFValue').getNext(),
				errmsg: 'Please enter your city'
			},{
				name: 'txtCep',
				valid: 'required',
				mask: '99999-999',
				errmsg: 'Please enter your cep'
			},{
				name: 'txtFone',
				valid: 'required|number',
				restrict: '[0-9 \(\)-]',
				errmsg: 'Please enter your residential phone number|Please enter correct your residential phone number'
			},{
				name: 'txtEmail',
				valid: 'required|email',
				errmsg: 'Please enter your email|Please enter a valid email address'
			},{
				name: 'txtEscolaridade',
				valid: 'required',
				errmsg: 'Please enter your education'
			}],
			
			onSubmit: function(form, e){
				if(e){
					e.stop();
				}
				
				var thankPopup = $('thankPopup'),
					timeout = 0;
					
				if(thankPopup){
					new ZLayer(thankPopup);
					timeout = 5000;
				}
				
				setTimeout(function(){
					form.submit();
				}, timeout);
			}
		});
	}
}


function initValidForm2(){
	var frmContact = $('frmContact');
	if(frmContact){
		
		new ZForm(frmContact, {
			data: [{
				name: 'txtNome',
				valid: 'required',
				errmsg: 'Please enter your name'
			},{
				name: 'txtData',
				valid: 'required',
				mask: '99/99/9999',
				errmsg: 'Please enter your birthday'
			},{
				name: 'txtNaturalidade',
				valid: 'required',
				errmsg: 'Please enter your birthplace'
			},{
				name: 'selMaritalValue',
				valid: 'required',
				alterval: '0',
				placeholder: $('selMaritalValue').getNext(),
				errmsg: 'Please select your marital status'
			},{
				name: 'txtEndereco',
				valid: 'required',
				errmsg: 'Please enter your address'
			},{
				name: 'txtBairro',
				valid: 'required',
				errmsg: 'Please enter your neighborhood'
			},{
				name: 'txtCidade',
				valid: 'required',
				errmsg: 'Please enter your city'
			},{
				name: 'selUFValue',
				valid: 'required',
				alterval: '0',
				placeholder: $('selUFValue').getNext(),
				errmsg: 'Please enter your city'
			},{
				name: 'txtCep',
				valid: 'required',
				mask: '99999-999',
				errmsg: 'Please enter your cep'
			},{
				name: 'txtFone',
				valid: 'required|number',
				restrict: '[0-9 \(\)-]',
				errmsg: 'Please enter your residential phone number|Please enter correct your residential phone number'
			},{
				name: 'txtEmail',
				valid: 'required|email',
				errmsg: 'Please enter your email|Please enter a valid email address'
			},{
				name: 'txtEscolaridade',
				valid: 'required',
				errmsg: 'Please enter your education'
			},{
				name: 'txtCor',
				valid: 'required',
				errmsg: 'Please enter your eye color'
			},{
				name: 'txtDos',
				valid: 'required',
				errmsg: 'Please enter your hair color'
			},{
				name: 'txtAltura',
				valid: 'required',
				restrict: '[0-9,]',
				errmsg: 'Please enter your height'
			},{
				name: 'txtCalcado',
				valid: 'required',
				restrict: '[0-9]',
				errmsg: 'Please enter your shoe size'
			},{
				name: 'txtManequim',
				valid: 'required',
				restrict: '[0-9]',
				errmsg: 'Please enter your Manequim'
			},{
				name: 'txtPeso',
				valid: 'required',
				restrict: '[0-9,]',
				errmsg: 'Please enter your weight'
			},{
				name: 'selPositionValue',
				valid: 'required',
				alterval: '0',
				placeholder: $('selPositionValue').getNext(),
				errmsg: 'Please select you desired position'
			}],
			
			onSubmit: function(form, e){
				if(e){
					e.stop();
				}
				
				var thankPopup = $('thankPopup'),
					timeout = 0;
					
				if(thankPopup){
					new ZLayer(thankPopup);
					timeout = 5000;
				}
				
				setTimeout(function(){
					form.submit();
				}, timeout);
			}
		});
	}
}

function initScrollPage(){
	var innerMain = $$('.innerMain')[0];
	if(innerMain){
		
		var smoothScroll = new Fx.Scroll(document, {
			offset: { x: -180, y: 0 },
			duration: 1500,
			axes: 'x'//,
			//transition: Fx.Transitions.Circ.easeOut
		});
		
		var activeMenu = null;
		innerMain.getElements('h1 a, .nav li a, .movecli').each(function(linkTo, idx){
			if(idx == 0){
				activeMenu = linkTo;
			}
			
			linkTo.addEvent('click', function(e){
				if(e){
					e.stop();
				}
				
				if(activeMenu){
					activeMenu.removeClass('current');
				}
				
				activeMenu = this.addClass('current');
				
				var pageTo = $(this.get('href').substr(1));
				if(pageTo){
					smoothScroll.toElement(pageTo, 'x');
				}
			});
		});		
	}
};

function initScrollPage2(){
	var innerMain = $$('.contClients')[0];
	if(innerMain){
		
		var smoothScroll = new Fx.Scroll(document, {
			offset: { x: -180, y: 0 },
			duration: 1500,
			axes: 'x'//,
			//transition: Fx.Transitions.Circ.easeOut
		});
		
		var activeMenu = null;
		innerMain.getElements('.movecli').each(function(linkTo, idx){
			if(idx == 0){
				activeMenu = linkTo;
			}
			
			linkTo.addEvent('click', function(e){
				if(e){
					e.stop();
				}
				
				if(activeMenu){
					activeMenu.removeClass('current');
				}
				
				activeMenu = this.addClass('current');
				
				var pageTo = $(this.get('href').substr(1));
				if(pageTo){
					smoothScroll.toElement(pageTo, 'x');
				}
			});
		});		
	}
};

function initSelect(){
	$$('.customSelector').each(function(selector){
		new ZSelect(selector, {
			offsetOptWidth: -2
		});		
	});	
};

function initHoverFadeGallery(){
	$$('.listPhoto').each(function(fotoGal){
		new ZFadeGallery(fotoGal, {fadeSelector: '.fotoFade img', markSelector: 'ul.changePhoto li a'});
	});
	
	var infoProfile = $$('.infoProfile')[0];
	if(infoProfile){
		new ZFadeGallery(infoProfile, {fadeSelector: '.photo img', markSelector: 'ul.changePhoto li a', autoFade: 1, autoInterval: 5000});
	}
};

function initCenterScreen(){
	var container = $('container');
	window.addEvent('resize', function(){
		container.setStyles({
			paddingTop: '',
			paddingBottom: ''
		});
		
		var wndHeight = window.getHeight(),
			containerHeight = container.getHeight();
		
		container.setStyles({
			paddingTop: Math.max(0, (wndHeight - containerHeight -38) / 2),
			paddingBottom: Math.max(0, (wndHeight - containerHeight -38) / 2)
		});
		
		var coordinate = $('pageHome').getCoordinates(),
			leftMain = container.getElement('.leftMain'),
			bgdContainer = container.getElement('.bgdContainer');
			
		if(leftMain){
			leftMain.setStyle('top', coordinate.top - 29);
		}
		
		if(bgdContainer){
			bgdContainer.setStyle('top', -(bgdContainer.getHeight() - coordinate.top + 29) );
		}
		
	}).fireEvent('resize');
};

window.addEvent('domready', function(){
	initScrollPage();
	initScrollPage2();
	initSelect();
	initValidForm1();
	initHoverFadeGallery();
	initCenterScreen();
});


