var FiatActie = {};

window.addEvent('domready', function() {
    new FiatActie.DropdownOffer;

    if ($('testaanvraag')) {
        var myFormValidator = new Form.Validator($('testaanvraag'), {
            onFormValidate: function(success, el, event) {
                if (success) {
                    $('errorfield').fade(0);
                } else {
                    $('errorfield').fade(1);
                }
            },
            useTitles: true
        });


        if ($('errorfield')) {
            $('errorfield').fade('hide');
        }
    }

});


FiatActie.DropdownOffer = new Class(
{
	options: {
		elWrapper: false,
		elTitle: false,
		elItem: false
	},
	Implements: Options,
	
	initialize: function(options)
	{
		this.setOptions(options);
		
		if ($('header').getElement('div.select'))
		{
			this.options.elWrapper = $('header').getElement('div.select');
			this.options.elTitle = this.options.elWrapper.getElement('a');
			this.options.elItem = this.options.elWrapper.getElement('ul');
			
			this.addEvents();
		}
		else
		{
			return;
		}
	},
	
	addEvents: function()
	{
		this.options.elTitle.addEvent('click', function(e) { e.stop(); });
		this.options.elWrapper.addEvents(
		{
			mouseenter: function()
			{
				this.options.elItem.show();
			}.bind(this),
			mouseleave: function()
			{
				this.options.elItem.hide();
			}.bind(this)
		});
	}
});

// Element Implements
Element.implement(
{
	hasEvent: function(eventType,fn)
	{
		var myEvents = this.retrieve('events');
		return myEvents && myEvents[eventType] && (fn == undefined || myEvents[eventType].keys.contains(fn));
	},
	show: function()
	{
		this.setStyle('display','block');
	},
	inline: function()
	{
		this.setStyle('display','inline');
	},
	hide: function()
	{
		this.setStyle('display','none');
	}
});

Form.Validator.add('required', {
    test: function(field) {
        field.getPrevious('label').removeClass('error');
        if (field.value == "") {
            field.getPrevious('label').addClass('error');
        }

        return (field.value != "");
    }
});


Form.Validator.add('validate-telephone', {
    test: function(field) {
        var strValue = field.value;
        var result = false;

        if (strValue.test(/^\d{3}-\d{7}$/)) {
            result = true;
        }

        else if (strValue.test(/^\d{4}-\d{6}$/)) {
            result = true;
        }
        else if (strValue.test(/^06-\d{8}$/)) {
            result = true;
        }
        else if (strValue.test(/^\d{10}$/)) {
            result = true;
        }

        if (result) {
            field.getPrevious('label').removeClass('error');
        } else {
            field.getPrevious('label').addClass('error');
        }

        return result;
    }
});

Form.Validator.add('validate-postcode', {
    test: function(field) {
        var strValue = field.value;

        var numbers = $('zipcode-b').value;

        if (strValue.test(/^\d{4}$/) && numbers.toUpperCase().test(/^[A-Z]{2}$/)) {
            field.getPrevious('label').removeClass('error');
            return true;
        }

        field.getPrevious('label').addClass('error');
        return false;
    }
});

Form.Validator.add('validate-email', {
    test: function(field) {
        var strValue = field.value;

        if (strValue.toUpperCase().test(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/)) {
            field.getPrevious('label').removeClass('error');
            return true;
        }

        field.getPrevious('label').addClass('error');
        
        return false;
    }
});

