/**
 * Community.
 *
 * Description:
 * JS functionality for community ajax actions.
 *
 * Require YUI:
 * - YAHOO.util.Dom	(yahoo-dom-event.js)
 * - YAHOO.util.Event (yahoo-dom-event.js)
 * - YAHOO.util.Element (element-min.js)
 * - YAHOO.util.SimpleDialog (container-min.js)
 * - YAHOO.util.Connect (connection-min.js)
 *
 * - YAHOO.webfact.MsgFeedback (wfMsgFeedback.js)
 *
 * @author S.Wille <s.wille@e-media.de>
 * @version $Id$
 * @package Mediabiz
 * @subpackage Modules.Community
 */
(function() {

	YAHOO.namespace("Emv.Community");
	YAHOO.Emv.Community = function(attributes) {

		this.init(attributes);
	};

	var Event   = YAHOO.util.Event,
    	Dom     = YAHOO.util.Dom,
    	Connect = YAHOO.util.Connect;

	YAHOO.Emv.Community.NAME = 'Community';

	YAHOO.Emv.Community.prototype = {

		/**
		 * Initialize.
		 */
		init: function(attributes) {

			this.attributes = attributes || {};

            if (typeof YAHOO.webfact != "undefined") {

                var feedbackId  = this.attributes.feedbackId ? this.attributes.feedbackId : 'FeedbackBox';
                this.rMsg_green = new YAHOO.webfact.MsgFeedback(feedbackId);
                this.rMsg_red   = new YAHOO.webfact.MsgFeedback(feedbackId, {mode:'red'});
            }
		},

        /**
         * Auto-complete overlay for companies.
         * Used in forms for community access.
         * Populates company name as well as anr, if possible.
         *
         * @param string    Name of input field
         * @param string    Name of output field
         * @param string    Name of anr field
         * @return string   Result list
         */
        companyAutoComplete: function(inputFieldName, outputFieldName, anrFieldName) {

            var oDS = new YAHOO.util.XHRDataSource('/account/get-companies-ajax');
            var oAC = new YAHOO.widget.AutoComplete(inputFieldName, outputFieldName, oDS);

    		// Response preset
    		oDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
    		oDS.responseSchema = {
    			resultsList : 'ResultSet.Result',
    			fields : ['name', 'city', 'id', 'anr']
    		};
            oDS.maxCacheEntries = 10;

            // Autocomplete preset
    		oAC.maxResultsDisplayed = 10;
            oAC.resultTypeList      = false;

            // Result formatting
    		oAC.formatResult = function(oResultData, sQuery, sResultMatch) {

    		    var sRegExp = new RegExp(sQuery, 'i');
    			var sMatch = sResultMatch.match(sRegExp);

    			var sReplace = '<strong>' + sMatch + '</strong>';
    			var cName = sResultMatch.replace(sRegExp, sReplace);
    			if( oResultData.city != '' ) {

    			    var cCity = ' (' + oResultData.city + ')';
    			} else {

    			    var cCity = '';
    			}
    			return cName + cCity;
    		};

            // Action to be fired on select of item: populate hidden anr field
            itemSelectHandler = function(sType, aArgs) {

            	var oData = aArgs[2];
            	Dom.get(anrFieldName).value = oData.anr;
            	return false; // Stop processing to avoid form sending here on 'enter' press!
            };
            oAC.itemSelectEvent.subscribe(itemSelectHandler);

            return oAC;
        }
	};
}());