Array.prototype.contains = function (element) 
{
    for (var i = 0; i < this.length; i++) 
    {
        if (this[i] == element) 
        {
            return true;
        }
    }
    return false;
};
  

YAHOO.namespace( 'ezfeaturecomparison' );
YAHOO.ezfeaturecomparison.Helpers = function () 
{
    var _cookieName = 'comparison-material';
    var _objectIDs = new Array();
    var Cookie = YAHOO.util.Cookie;
    var Dom = YAHOO.util.Dom;
    var Connect = YAHOO.util.Connect ;
    
    // public methods
    return {
        init : function ( cookieName ) 
        {
            if ( typeof( cookieName ) != 'undefined' && cookieName != '' )
            {
                _cookieName = cookieName;
            }
            
            // read the cookie's value.
            var value = Cookie.get( _cookieName );
            if ( value == null || value == '' )
            {
                return false;
            }
                
            var cookieValue = new String( value );
            _objectIDs = cookieValue.split( "-" );
        },
        
        build : function ( arguments ) 
        {
            if ( _objectIDs.contains( arguments.object_id ) )
            {
                var lir = Dom.get( arguments.remove_from_element_id );
                Dom.setStyle( lir , 'display' , 'block' );
                var lia = Dom.get( arguments.add_to_element_id );
                Dom.setStyle( lia , 'display' , 'none' );
            }
        },
        
        buildComparisonWidget : function ( arguments )
        {
            var divID = arguments.divID;
            var nodeID = arguments.nodeID;
            var baseURL = arguments.baseURL + '/' + nodeID;
            var connectionErrorMessage = arguments.connectionErrorMessage;
            
            var args = { 
                         divID: divID,
                         connectionErrorMessage: connectionErrorMessage 
                       };
            
            var responseSuccess = function(o){
                if( o.responseText !== undefined )
                {
                    var div = Dom.get( o.argument.divID );
                    div.innerHTML = o.responseText;
                }             
            };
            
            var responseFailure = function(o)
            {
                if( o.responseText !== undefined )
                {            
                    var div = Dom.get( o.argument.divID );
                    div.innerHTML = '<p>' + o.argument.connectionErrorMessage + '</p>';
                }
            }
            
            var callback =
            {
              success:responseSuccess,
              failure:responseFailure,
              cache:false,
              argument:args
            };
            
            var request = Connect.asyncRequest( 'GET', baseURL, callback );
        }
    }
}(); // Execute the function, returning the object literal
