public bool Open(Settings.Documentation target)
        {
			
			// TODO : THIS REALLLY REALLY NEEDS CLEANING UP
            if ((PropertyService.Get<bool>("Unity.Base.Documentation.ForceLocal", false) ||
                !PropertyService.Get<bool>("Unity.Connection", false) )

                &&

                (PropertyService.Get<string>("Unity.Base.Path", "") != "" ||
                PropertyService.Get<string>("Unity.iPhone.Path", "") != ""))
            {
				if ( Helpers.WhatOS() == Helpers.OS.Mac )
				{
					switch ( PropertyService.Get<string>("Unity.DocumentationPreference") ) {
					case "Unity iPhone":
						 switch (target)
	                		{
		                    case Settings.Documentation.Manual:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.iPhone.Path") +
		                            Settings.MAC_VIEW_MANUAL);
		                    case Settings.Documentation.Reference:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.iPhone.Path") +
		                            Settings.MAC_VIEW_REFERENCE);
		                    case Settings.Documentation.ScriptReference:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.iPhone.Path") +
		                            Settings.MAC_SEARCH_SCRIPT_REFERENCE);
	                		}
						break;
					case "Unity":
					default:
						switch (target)
		                {
		                    case Settings.Documentation.Manual:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
		                            Settings.MAC_VIEW_MANUAL);
		                    case Settings.Documentation.Reference:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
		                            Settings.MAC_VIEW_REFERENCE);
		                    case Settings.Documentation.ScriptReference:
		                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
		                            Settings.MAC_SEARCH_SCRIPT_REFERENCE);
		                }
						break;
					}
	               
				}
				else if (Helpers.WhatOS() == Helpers.OS.Windows)
				{
					switch (target)
	                {
	                    case Settings.Documentation.Manual:
	                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
	                            Settings.WIN_VIEW_MANUAL);
	                    case Settings.Documentation.Reference:
	                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
	                            Settings.WIN_VIEW_REFERENCE);
	                    case Settings.Documentation.ScriptReference:
	                        return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
	                            Settings.WIN_SEARCH_SCRIPT_REFERENCE);
	                }
				}

            }
            else
            {
                switch (target)
                {
                    case Settings.Documentation.Manual:
                        return this.Open(Settings.REMOTE_VIEW_MANUAL);
                    case Settings.Documentation.Reference:
                        return this.Open(Settings.REMOTE_VIEW_REFERENCE);
                    case Settings.Documentation.ScriptReference:
                        return this.Open(Settings.REMOTE_VIEW_SCRIPT_REFERENCE);
                }
            }
            return false;
        }
        public bool Open(Settings.Documentation target, string query)
        {
            // Searching
            if (query != null && query.Length > 0)
            {
                if ((PropertyService.Get<bool>("Unity.Base.Documentation.ForceLocal", false) ||
                    !PropertyService.Get<bool>("Unity.Connection", false) )

                    &&

                    (PropertyService.Get<string>("Unity.Base.Path", "") != "" ||
                     PropertyService.Get<string>("Unity.iPhone.Path", "") != ""))
                {
                    switch (target)
                    {
                        case Settings.Documentation.ScriptReference:
							if ( Helpers.WhatOS() == Helpers.OS.Mac )
							{
								if( PropertyService.Get<string>("Unity.DocumentationPreference") == "Unity iPhone" ) {
								return this.Open("file://" + PropertyService.Get<string>("Unity.iPhone.Path") +
                                Settings.MAC_SEARCH_SCRIPT_REFERENCE +
                                System.Web.HttpUtility.UrlEncode(query));
								}
								else{
								return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
                                Settings.MAC_SEARCH_SCRIPT_REFERENCE +
                                System.Web.HttpUtility.UrlEncode(query));
								}
							    
							}
							else if ( Helpers.WhatOS() == Helpers.OS.Windows)
							{
							    return this.Open("file://" + PropertyService.Get<string>("Unity.Base.Path") +
                                 Settings.WIN_SEARCH_SCRIPT_REFERENCE +
                                System.Web.HttpUtility.UrlEncode(query));
							}
							break;

                    }
                }
                else
                {
                    switch (target)
                    {
                        case Settings.Documentation.Manual:
                            return this.Open(Settings.REMOTE_SEARCH_MANUAL + System.Web.HttpUtility.UrlEncode(query));
                        case Settings.Documentation.Reference:
                            return this.Open(Settings.REMOTE_SEARCH_REFERENCE + System.Web.HttpUtility.UrlEncode(query));
                        case Settings.Documentation.ScriptReference:
                            return this.Open(Settings.REMOTE_SEARCH_SCRIPT_REFERENCE + System.Web.HttpUtility.UrlEncode(query));
                    }
                }
            }
            return false;
        }