/* package-version: 2010-07-19-A-axa-direct-2.2 */
function contactForm(config)
{
    var _config = config;
    var _form   = $(_config.form);
    var _submit = $(_config.submit);

    if(_config.file != undefined) {
        var _file   = $(_config.file);
    }

    function _init()
    {
		
        _config.validateOptions.submitHandler = _beforeSubmit;
        _config.validateOptions.messages      = customMessages;
        _initValidator(_form, _config.validateOptions);

        if(_file != undefined) {
            var date = new Date();
            var formHash = date.getTime();

            _config.uploadOptions.onChange   = function(file, extension){};
            _config.uploadOptions.onSubmit   = function(file, extension){};
            _config.uploadOptions.onComplete = _uploadResponse;
            _config.uploadOptions.data = {'FF_HASH' : formHash}

            _initUpload(_file, _config.uploadOptions);

            _addUploadMessageBox();
            _submit.after(_getFileHash(formHash));
        }
        _form.show();
        _submit.unbind();
        _submit.click(function(){
            $('.formsResponseMessages').text('');
            return true;
        });
    }

    function _initValidator(form, options)
    {
        $.validator.addMethod('validname', validname, 'Podane imię i nazwisko nie jest poprawne.');
        //$.validator.addMethod('validdate', validdate, '');
		//$.validator.addMethod('validdate', validdate, 'Data nie jest poprawna lub podano datę z przeszłości. Poprawny format daty to dd/mm/rrrr.');
		$.validator.addMethod('validdate', validdate, 'Proszę wybrać datę kontaktu');
        $.validator.addMethod('validphone', validphone, 'Podany numer telefonu nie jest poprawny.');
        $.validator.addMethod('validpostcode', validpostcode, 'Podany kod pocztowy nie jest poprawny.');
        $.validator.addMethod('customquired', customrequired, 'Proszę podać numer telefonu lub adres e-mail.');
        $(form).validate(options);
    }

    function _initUpload(file, options)
    {
        new Ajax_upload(file, options);
    }

    function _uploadResponse(file, response) {
        $('.formsResponseMessages').text('');
        var status = $(response).find('status')[0].firstChild.nodeValue;

        var message = null;

        if('OK' == status) {
            message = file;
            _submit.after(_getHiddenField(file));
            $('<li class="attachedInfo"></li>').appendTo($(_config.form + ' .files')).text(message);
        } else {
            message = $(response).find('error')[0].firstChild.nodeValue;
            $('.formsResponseMessages').text(message);
        }
    }

    function _response(response, status)
    {
        var status = $(response).find('status')[0].firstChild.nodeValue;
        var message = ('OK' == status)
                    ? _config.successMessage
                    : _config.failureMessage;
        $(_config.form + "Messages").text(message);

        if('OK' == status) {
            _form.clearForm();

            $(":checkbox").each(function(i){
                var box = $(this).parent();

                box.addClass('jsIRbgCheck_checkbox');
                box.addClass('jsIRbgCheck');
                box.removeClass('jsIRbgCheckActive');
            });

            $('.attachedFile').remove();
            $('.attachedInfo').remove();
        } else {
            // zmiana formatu daty spowrotem z mm/dd/yyyy na dd/mm/yyyy
            _contactDateFormatChange();
        }
    }

    function _getHiddenField(name)
    {
        return '<input type="hidden" name="FILE_ATTACHMENT[]" class="attachedFile" value="' + name + '"/>';
    }

    function _addUploadMessageBox()
    {
        $(_config.form + ' .uploadMessageBox').append('<ol class="files"></ol>');
    }

    function _getFileHash(hash)
    {
        return '<input type="hidden" name="FF_HASH" class="fileHash" value="' + hash + '"/>';
    }

    function _beforeSubmit(form)
    {
		popup1();

		if(form.name=='2') {
			pageTracker._trackEvent("Zamów rozmowę", "2.html Potwierdzenie");
		}
		else if(form.name=='3') {
			pageTracker._trackEvent("Zamów rozmowę", "3.html Potwierdzenie");
		}
		else {
			if(form.id=='communicationsInsuranceForm') {
				pageTracker._trackEvent("Zamów rozmowę", "Zawarcie umowy ubezpieczenia komunikacyjnego Potwierdzenie");
			}
			if(form.id=='contractSupportForm') {
				pageTracker._trackEvent("Zamów rozmowę", "Obsługa polisy Potwierdzenie");
			}
			if(form.id=='insuranceRenewalForm') {
				pageTracker._trackEvent("Zamów rozmowę", "Przedłużenie umowy ubezpieczenia Potwierdzenie");
			}
			if(form.id=='reclamationForm') {
				pageTracker._trackEvent("Zamów rozmowę", "Reklamacja Potwierdzenie");
			}
			if(form.id=='damageNotificationForm') {
				pageTracker._trackEvent("Zamów rozmowę", "Zgłoszenie szkody Potwierdzenie");
			}
		
			if(form.id=='communicationsInsurance2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Zawarcie umowy ubezpieczenia komunikacyjnego Potwierdzenie");
			}
			if(form.id=='contractSupport2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Obsługa polisy Potwierdzenie");
			}
			if(form.id=='insuranceRenewal2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Przedłużenie umowy ubezpieczenia Potwierdzenie");
			}
			if(form.id=='damageDisposal2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Likwidacja szkody Potwierdzenie");
			}
			if(form.id=='reclamation2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Reklamacja Potwierdzenie");
			}
			if(form.id=='recrutationForm') {
				pageTracker._trackEvent("Wyślij wiadomość", "Rekrutacja Potwierdzenie");
			}
			if(form.id=='autoSellNotificationForm') {
				pageTracker._trackEvent("Wyślij wiadomość", "Zgłoszenie sprzedaży pojazdu Potwierdzenie");
			}
			if(form.id=='damageNotification2Form') {
				pageTracker._trackEvent("Wyślij wiadomość", "Zgłoszenie szkody Potwierdzenie");
			}
			if(form.id=='othersForm') {
				pageTracker._trackEvent("Wyślij wiadomość", "Inne Potwierdzenie");
			}
		
		}
		//alert(form.id);
		//alert(form.name);
		
        // zmiana formatu daty z dd/mm/yyyy na mm/dd/yyyy
		_contactDateFormatChange();

        var ajaxOptions = {
            method:   'post',
            success:  _response,
            dataType: 'xml'
        };
        _form.ajaxSubmit(ajaxOptions);
    }	

    /**
     * Każdorazowe wywołanie tej funkcji zmienia format daty oddzwonienia w polu FF_CONTACT_DATE
     *
     */
    function _contactDateFormatChange()
    {
		//alert('jestem tu');
        var contactDateInput = _form.find("input[name=FF_CONTACT_DATE]");
        if(undefined == contactDateInput.val()) {
            return;
        }
        var contactDate = contactDateInput.val().split('/');
        if(contactDate.length == 3) {
            //contactDate = contactDate[1] + '/' + contactDate[0] + '/' + contactDate[2];
            //contactDateInput.val(contactDate);
        }
    }

    // konstruktor
    _init();
}


function validname(value, element, params)
{
	//if(document.getElementById("komunikat-time")==null){}
	//else {
	//	document.getElementById('komunikat-time1').style.display = "block";
	//}
    var pattern = new RegExp("^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ -]+$");
    return pattern.test(value);
}

function validdate(value, element, params)
{
/*
	if ( value!='Wybierz datę z listy' ) {
		return true;
	} else {
		return false;
	}
*/
    var pattern       = new RegExp("^(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/[0-9]{4}$");
    if(pattern.test(value)) {
        var dateArray = value.split('/');
        var userDate  = new Date();

        var year  = dateArray[2];
        var month = dateArray[0] - 1;
        var day   = dateArray[1];

        userDate.setYear(year);
        userDate.setMonth(month);
        userDate.setDate(day);

        var today     = new Date();
        if(today > userDate) {
            return false;
        } else {
            return true;
        }
	}
    return false;
}

function validphone(value, element, params)
{
    var pattern = new RegExp("^$|^[0-9\-() ]{9}$");
    return pattern.test(value);
}

function validpostcode(value, element, params)
{
    var pattern = new RegExp("^$|^[0-9]{2}-[0-9]{3}$");
    return pattern.test(value);
}

function customrequired(value, element, params)
{
    return (value.length > 0);
}

var customMessages = {
    'FF_NAME'          : {
        'required'  : 'Proszę podać imię i nazwisko.',
        'validname' : 'Podane imię i nazwisko nie jest poprawne.',
        'maxlength' : 'Podane imię i nazwisko jest dłuższe niż 250 znaków.'
    },
    'FF_NAME_CLIENT' : {
        'required'  : 'Proszę podać imię i nazwisko.',
        'validname' : 'Podane imię i nazwisko nie jest poprawne.',
        'maxlength' : 'Podane imię i nazwisko jest dłuższe niż 250 znaków.'
    },
    'FF_EMAIL'          : {
        'required'  : 'Proszę podać adres e-mail.',
        'email'     : 'Podany adres e-mail nie jest poprawny.',
        'maxlength' : 'Podany adres e-mail jest dłuższy niż 250 znaków.'
    },
    'FF_PHONE'        :{
        'required'  : 'Proszę podać numer telefonu.',
        'validphone': 'Podany numer telefonu nie jest poprawny. Numer powinien składać się z 9 cyfr, zgodnie z przykładem: 225999000'
    },
    'FF_PHONE_CLIENT' :{
        'required'  : 'Proszę podać numer telefonu.',
        'validphone': 'Podany numer telefonu nie jest poprawny. Numer powinien składać się z 9 cyfr, zgodnie z przykładem: 225999000'
    },
    'FF_PESEL' :{
        'required'  : 'Proszę podać numer PESEL.',
        'number': 'Podany PESEL nie jest poprawny.',
        'maxlength' : 'Podany PESEL jest za długi.',
        'minlength' : 'Podany PESEL jest za krótki.'
    },
    'FF_STREET'     : 'Proszę podać ulicę i numer domu.',
    'FF_POSTCODE'     :{
        'required'       : 'Proszę podać kod pocztowy.'
    },
    'FF_CITY'       : 'Proszę podać Miasto.',
    'FF_CONTRACT_NO'  :{
        'required'  : 'Proszę podać numer polisy.',
        'number'    : 'Podany numer polisy nie jest poprawny.'
    },
    'FF_CONTACT_DATE' :{
        'required'  : 'Proszę wprowadzić datę kontaktu.',
        'date'      : 'Wprowadzona data nie jest poprawna.'
    },
    'FF_CONTACT_TIME' :{
		'required'  : 'Proszę wybrać godzinę kontaktu.'
	},
    'FF_cpaUwagiTA'   : {
        'required'  : 'Proszę wpisać uwagi.',
        'minlength' : 'Wpisany komentarz jest za krótki.'
    },
    'FF_COMMENTS'     : {
        'required'  : 'Proszę wpisać uwagi.',
        'maxlength' : 'Wpisany komentarz jest dłuższy niż 750 znaków.'
        },
    'FF_Data_Sprzedazy'     : {
        'required'  : 'Proszę wybbrać datę z kalendarza'
        },
    'FILE_ATTACHMENT' : 'Proszę załączyć dokument.',
    'FF_AGREEMENTS'   : 'Proszę wyrazić zgodę na przetwarzanie danych osobowych.'
}
