/*
 Class Contacts (Singleton)
*/

var oContacts = function()
{

    var openFlags = new Array();
    var storage = new Array();
    
       var publicObject = {

        sendForm: function(formId, theEndText) {
			var messg  = '';
			var err = '';
			var id='';
            if(storage[formId]) { return; };

            this.blockForm(formId);

            var form = $('#' + formId);

            form.ajaxSubmit({
                url: '/jcontroller/index.php',
                success: function(response) {

                    eval('var formFields = ' + response + ';');
                    form.find('.invalid').removeClass("invalid");
					 form.find('.hint').hide();
					  form.find("div[class*='hint']").hide();
					 
                  //  form.find('.formContainer INPUT[type=text],.formContainer INPUT[type=radio], .formContainer textarea').removeAttr('class');

                    if( formFields['error']!==undefined && formFields['error'].length == 0) {
                        var cover = storage[formId]['cover'];
                        var loading = storage[formId]['loading'];
                        var anchor = $(document.createElement('a'));
                        var another = $(document.createElement('div'));
                        storage[formId]['another'] = another;

                        anchor.attr('href', 'javascript:void(0);')
                              .css('color', '#fff')
                              .css('text-decoration', 'underline');
                        anchor.html($('#send_another_one').html());
                        anchor.click(function() {
                            oContacts.unblockForm(formId);
                            form.resetForm();
                            another.remove();
                        });

                        offset = form.offset();
                        loading.hide();

                        another.css('position', 'absolute')
                               .css('z-index', 1115)
                               .css('width',  form.find('table:first').attr('width')+'px')
                               .css('top', offset.top + (form.height() / 2) - 20)
                               .css('left', offset.left)
                               .css('text-align', 'center')
                               .css('font-size', '16px')
                               .css('color', '#fff');
                        
                        if(theEndText) {
                            another.html(theEndText);
                        } else {
                            another.html($('#message_sent').html()+'<br/>');
                        }
                        another.append(anchor);
                        another.appendTo(form);
						setTimeout(	function(){
											 form.resetForm();
           									another.remove();
											storage[formId]['cover'].fadeOut('slow');
											oContacts.unblockForm(formId)},5000);
                    } else {
                    	oContacts.unblockForm(formId);

	                    for(var i in formFields['error']) {
                            var field = form.find('input[name="' + i + '"],textarea[name="' + i + '"],select[name="' + i + '"]'); 
							var td = form.find('input[name="' + i + '"],textarea[name="' + i + '"],select[name="' + i + '"]').parent();
                        //   alert(formFields['error'][i]);
							td.find('#'+formFields['error'][i]+'.hint').show();
							td.find('.hint'+formFields['error'][i]).show();
						//	err = td.find('#'+formFields['error'][i]+'.hint').html();
						//	if (err!='') messg += i + ' - '+td.find('#'+formFields['error'][i]+'.hint').html()+'\n';
						//	if (err!='') alert(err);
						//	alert(messg);
                            field.addClass('invalid');
                        }
					//	if (messg!='') alert(messg);
                    }
                }
            });

        },

        blockForm: function(formId) {

            var form = $('#' + formId);
            var offset = form.offset();
            var cover = $(document.createElement('div'));
            var loading = $(document.createElement('img'));

            var submitButton = form.find('.submit');

            submitButton.attr('disabled', 'disabled');
//alert(form.find('table:first').attr('width'));
            cover.css('position', 'absolute')
                 .css('z-index', 1114)
                 .css('left', offset.left)
                 .css('top', offset.top)
                 .css('width', form.find('table:first').attr('width')+'px')
                 .css('height', form.height())
                 .css('background', '#000')
                 .css('opacity', 0.8);


            loading.attr('src', '/images/white-loader.gif')
                   .attr('width', 24)
                   .attr('height', 24)
                   .attr('alt', 'Loading');

            loading.css('position', 'absolute')
                   .css('z-index', 1115)
                   .css('left', offset.left + 268)
                   .css('top', offset.top + (form.height() / 2) - 12);

            $(form).append(cover);
            $(form).append(loading);

            storage[formId] = new Array();
            storage[formId]['cover'] = cover;
            storage[formId]['loading'] = loading;
            storage[formId]['submit'] = submitButton;
        },

        unblockForm: function(formId)
		{
            storage[formId]['cover'].remove();
			storage[formId]['loading'].remove();
            storage[formId]['submit'].removeAttr('disabled');
       	    delete(storage[formId]);
        },

        renderFormHiders: function() {
            for(var i in storage) {
                var form = $('#' + i);
                if(form.parent().is(':visible') && form.parent().parent().is(':visible')) {
                    var offset = form.offset();

                    storage[i]['cover'].css('left', offset.left)
                                       .css('top', offset.top);

                    storage[i]['loading'].css('left', offset.left + 268)
                                         .css('top', offset.top + (form.height() / 2) - 12);

                    if(storage[i]['another']) {
                        storage[i]['another'].css('top', offset.top + (form.height() / 2) - 20)
                                             .css('left', offset.left);
                    }
                } else if(storage[i]) {
                    form.resetForm();
                    storage[i]['cover'].remove();
                    storage[i]['loading'].remove();
                    storage[i]['another'].remove();
                    delete(storage[i]);
                }

            }
        }

    };

    $(document).ready(function() {
		$(".luc .formContainer:not(:first)").hide();
		if(String(window.location).indexOf("#")!=-1)
		{
			var len = String(window.location).length;
			var pos = String(window.location).indexOf("#");
			var anhor = String(window.location).substr(pos, len - pos);
			if (anhor!=='#')
				$(anhor).next(".formContainer").slideToggle("fast").siblings(".formContainer:visible").slideUp("slow");
		}

		if(String(window.location).indexOf("openForm=")!=-1)
		{
			var len = String(window.location).length;
			var pos = String(window.location).indexOf("openForm=");
			var anhor = String(window.location).substr(pos+9, len - pos - 9);
			$(".formContainer").hide();
			$('#'+anhor).next(".formContainer").slideToggle("fast").siblings(".formContainer:visible").slideUp("slow");
			//alert($(form).next("form > input[type=text]:first").attr('name'));
		//	var form = $('#'+anhor+" .formContainer" );
			//alert($(form).attr('class'));
		//	$(form).next("form > input:first").focus();
		}
			
		$(".luc").click(function(){
				$(this).next(".formContainer").slideToggle("fast").siblings(".formContainer:visible").slideUp("slow");
				return false;
 		});
    });


    return publicObject;

}();