/**
 * Ajax profile updates.
 *
 * @author EMV
 * @version $Id$
 * @package Video
 * @subpackage Modules.Community
 */
Emv.VideodeProfile = {

    Dom:     YAHOO.util.Dom,
    Connect: YAHOO.util.Connect,
    fwdUri:  '/community/profil/',

    /**
     * Submit the form.
     *
     * @param object formObject
     * @param string type
     * @return boolean false
     */
	updateSubmit: function(formObject, type) {

	    switch(type) {
	        case 'registration':
                var submitUri  ='/community/ajax/registration-teaser/';
                var flyoutHook = 'registrationSubmit';
                this.fwdUri    = '/community/registrierung-danke/';
	           break;

	        case 'completion':
    	       var submitUri  = '/community/ajax/completion-main/';
	           var flyoutHook = 'completionSave';
	           break;

	        case 'personal':
    	       var submitUri  = '/community/ajax/personal-main/';
	           var flyoutHook = 'personalUpdateSubmit';
	           break;

	        case 'signature':
    	       var submitUri  = '/community/ajax/signature-main/';
	           var flyoutHook = 'signatureUpdateSubmit';
	           break;

	        case 'interests':
    	       var submitUri  = '/community/ajax/interests-main/';
	           var flyoutHook = 'interestsUpdateSubmit';
	           break;

            case 'email':
        	    var submitUri  = '/community/ajax/emailupdate-main/';
        	    var flyoutHook = 'emailUpdateSubmit';
        	    break;

        	case 'password':
        	    var submitUri  = '/community/ajax/pwupdate-main/';
        	    var flyoutHook = 'pwUpdateSubmit';
        	    break;

        	case 'forgotten':
        	    var submitUri  = '/community/ajax/pwforgotten-main/';
        	    var flyoutHook = 'pwForgottenSubmit';
        	    break;

	        case 'newsletter':
    	       var submitUri  = '/community/ajax/newsletter-main/';
	           var flyoutHook = 'newsletterUpdateSubmit';
	           break;
	    }

		var callbackUpdate = {

			success: function(o) {

                // Process the response
                var data = YAHOO.lang.JSON.parse(o.responseText);

                if (typeof(data.status) == 'undefined') {

                    // Invalid status return!
                    Emv.VideodeJsoverlay.get(flyoutHook).show('Es ist ein Fehler aufgetreten', 'Status-Fehler beim Senden des Formulars');
                    return;
                }

                if (data.status != 'success') {

                    // User/form error!
                    if ("undefined" !== typeof(data.errorMessage)) {

                        Emv.VideodeJsoverlay.get(flyoutHook).show('Es ist ein Fehler aufgetreten', data.errorMessage);
                    } else {

                        Emv.VideodeJsoverlay.get(flyoutHook).show('Fehler bei der Datenvervollst&auml;ndigung', 'Undefinierter Fehler beim Senden des Formulars');
                    }
                    return;
                } else {

                    // Everything is fine
                    formObject.reset();
                    Emv.VideodeJsoverlay.get(flyoutHook).show('Update erfolgreich', 'Deine Daten wurden erfolgreich aktualisiert, bitte warte...');

                    // Do we have a new redirect uri in call?
                    if( "undefined" !== typeof(data.fwdUri) && data.fwdUri != '' ) {

                        this.fwdUri = data.fwdUri;
                    }

                    if( "undefined" !== typeof(this.fwdUri) && this.fwdUri != '' ) {

                        window.location.href = this.fwdUri;
                    }
                }
            },
            failure: function() {

                // asyncRequest failure
                Emv.VideodeJsoverlay.get(flyoutHook).show('Es ist ein Fehler aufgetreten', 'Fehler beim Senden des Formulars');
            },
            scope: this
		};

		this.Connect.setForm(formObject.id);
		var _uri = submitUri + '?format=json';
		this.Connect.asyncRequest('POST', _uri, callbackUpdate);

	    return false;
    },

    resizeBox: function(current) {

        var openLis = this.Dom.getElementsByClassName('opened', 'li');

        if( openLis.length>=1 ) {

            for( i=0; i<openLis.length; i++ ) {

                if(current != openLis[i].id) {

                   this.Dom.removeClass(openLis[i].id, 'opened');
                }
                this.Dom.addClass(current, 'opened');
            }
            this.Dom.removeClass('profileBox', 'height-grid3');
            this.Dom.addClass('profileBox', 'height-grid5');
        } else {

            this.Dom.removeClass('profileBox', 'height-grid5');
            this.Dom.addClass('profileBox', 'height-grid3');
        }
    },

    cityAutocomplete: function() {

        var oDS = new YAHOO.util.XHRDataSource("/community/ajax/cities-autocomplete/");

        oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
        oDS.responseSchema = {
            recordDelim: "\n",
            fieldDelim: "\t"
        };

        oDS.maxCacheEntries = 10;

        var oAC = new YAHOO.widget.AutoComplete("userCity", "cityContainer", oDS);

        return {
            oDS: oDS,
            oAC: oAC
        };
    },

    mobileAutocomplete: function() {

        var oDS = new YAHOO.util.XHRDataSource("/community/ajax/mobiles-autocomplete/");

        oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
        oDS.responseSchema = {
            recordDelim: "\n",
            fieldDelim: "\t"
        };

        oDS.maxCacheEntries = 10;

        var oAC = new YAHOO.widget.AutoComplete("userMobileType", "mobileContainer", oDS);

        return {
            oDS: oDS,
            oAC: oAC
        };
    }

}
