LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File Mono_ASP.NET_ClubWebSite-1.0.0.patch of Package Mono_ASP.NET_ClubWebSite (Project Mono:Community)

diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Code/DataSet.cs trunk/App_Code/DataSet.cs
--- vendor/App_Code/DataSet.cs	1969-12-31 19:00:00.000000000 -0500
+++ trunk/App_Code/DataSet.cs	2008-12-24 00:24:34.000000000 -0500
@@ -0,0 +1,1718 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.42
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+
+// 
+// This source code was auto-generated by xsd, Version=2.0.50727.42.
+// 
+
+
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+[Serializable()]
+[System.ComponentModel.DesignerCategoryAttribute("code")]
+[System.ComponentModel.ToolboxItem(true)]
+[System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")]
+[System.Xml.Serialization.XmlRootAttribute("DataSet")]
+[System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")]
+public partial class DataSet : System.Data.DataSet {
+    
+    private MemberInfoDataTable tableMemberInfo;
+    
+    private MemberInfo1DataTable tableMemberInfo1;
+    
+    private System.Data.SchemaSerializationMode _schemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public DataSet() {
+        this.BeginInit();
+        this.InitClass();
+        System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+        base.Tables.CollectionChanged += schemaChangedHandler;
+        base.Relations.CollectionChanged += schemaChangedHandler;
+        this.EndInit();
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected DataSet(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : 
+            base(info, context, false) {
+        if ((this.IsBinarySerialized(info, context) == true)) {
+            this.InitVars(false);
+            System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+            this.Tables.CollectionChanged += schemaChangedHandler1;
+            this.Relations.CollectionChanged += schemaChangedHandler1;
+            return;
+        }
+        string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
+        if ((this.DetermineSchemaSerializationMode(info, context) == System.Data.SchemaSerializationMode.IncludeSchema)) {
+            System.Data.DataSet ds = new System.Data.DataSet();
+            ds.ReadXmlSchema(new System.Xml.XmlTextReader(new System.IO.StringReader(strSchema)));
+            if ((ds.Tables["MemberInfo"] != null)) {
+                base.Tables.Add(new MemberInfoDataTable(ds.Tables["MemberInfo"]));
+            }
+            if ((ds.Tables["MemberInfo1"] != null)) {
+                base.Tables.Add(new MemberInfo1DataTable(ds.Tables["MemberInfo1"]));
+            }
+            this.DataSetName = ds.DataSetName;
+            this.Prefix = ds.Prefix;
+            this.Namespace = ds.Namespace;
+            this.Locale = ds.Locale;
+            this.CaseSensitive = ds.CaseSensitive;
+            this.EnforceConstraints = ds.EnforceConstraints;
+            this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
+            this.InitVars();
+        }
+        else {
+            this.ReadXmlSchema(new System.Xml.XmlTextReader(new System.IO.StringReader(strSchema)));
+        }
+        this.GetSerializationData(info, context);
+        System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+        base.Tables.CollectionChanged += schemaChangedHandler;
+        this.Relations.CollectionChanged += schemaChangedHandler;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.ComponentModel.Browsable(false)]
+    [System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)]
+    public MemberInfoDataTable MemberInfo {
+        get {
+            return this.tableMemberInfo;
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.ComponentModel.Browsable(false)]
+    [System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)]
+    public MemberInfo1DataTable MemberInfo1 {
+        get {
+            return this.tableMemberInfo1;
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.ComponentModel.BrowsableAttribute(true)]
+    [System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Visible)]
+    public override System.Data.SchemaSerializationMode SchemaSerializationMode {
+        get {
+            return this._schemaSerializationMode;
+        }
+        set {
+            this._schemaSerializationMode = value;
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
+    public new System.Data.DataTableCollection Tables {
+        get {
+            return base.Tables;
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
+    public new System.Data.DataRelationCollection Relations {
+        get {
+            return base.Relations;
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected override void InitializeDerivedDataSet() {
+        this.BeginInit();
+        this.InitClass();
+        this.EndInit();
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public override System.Data.DataSet Clone() {
+        DataSet cln = ((DataSet)(base.Clone()));
+        cln.InitVars();
+        cln.SchemaSerializationMode = this.SchemaSerializationMode;
+        return cln;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected override bool ShouldSerializeTables() {
+        return false;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected override bool ShouldSerializeRelations() {
+        return false;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected override void ReadXmlSerializable(System.Xml.XmlReader reader) {
+        if ((this.DetermineSchemaSerializationMode(reader) == System.Data.SchemaSerializationMode.IncludeSchema)) {
+            this.Reset();
+            System.Data.DataSet ds = new System.Data.DataSet();
+            ds.ReadXml(reader);
+            if ((ds.Tables["MemberInfo"] != null)) {
+                base.Tables.Add(new MemberInfoDataTable(ds.Tables["MemberInfo"]));
+            }
+            if ((ds.Tables["MemberInfo1"] != null)) {
+                base.Tables.Add(new MemberInfo1DataTable(ds.Tables["MemberInfo1"]));
+            }
+            this.DataSetName = ds.DataSetName;
+            this.Prefix = ds.Prefix;
+            this.Namespace = ds.Namespace;
+            this.Locale = ds.Locale;
+            this.CaseSensitive = ds.CaseSensitive;
+            this.EnforceConstraints = ds.EnforceConstraints;
+            this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
+            this.InitVars();
+        }
+        else {
+            this.ReadXml(reader);
+            this.InitVars();
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    protected override System.Xml.Schema.XmlSchema GetSchemaSerializable() {
+        System.IO.MemoryStream stream = new System.IO.MemoryStream();
+        this.WriteXmlSchema(new System.Xml.XmlTextWriter(stream, null));
+        stream.Position = 0;
+        return System.Xml.Schema.XmlSchema.Read(new System.Xml.XmlTextReader(stream), null);
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    internal void InitVars() {
+        this.InitVars(true);
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    internal void InitVars(bool initTable) {
+        this.tableMemberInfo = ((MemberInfoDataTable)(base.Tables["MemberInfo"]));
+        if ((initTable == true)) {
+            if ((this.tableMemberInfo != null)) {
+                this.tableMemberInfo.InitVars();
+            }
+        }
+        this.tableMemberInfo1 = ((MemberInfo1DataTable)(base.Tables["MemberInfo1"]));
+        if ((initTable == true)) {
+            if ((this.tableMemberInfo1 != null)) {
+                this.tableMemberInfo1.InitVars();
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    private void InitClass() {
+        this.DataSetName = "DataSet";
+        this.Prefix = "";
+        this.Namespace = "http://tempuri.org/DataSet.xsd";
+        this.EnforceConstraints = true;
+        this.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
+        this.tableMemberInfo = new MemberInfoDataTable();
+        base.Tables.Add(this.tableMemberInfo);
+        this.tableMemberInfo1 = new MemberInfo1DataTable();
+        base.Tables.Add(this.tableMemberInfo1);
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    private bool ShouldSerializeMemberInfo() {
+        return false;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    private bool ShouldSerializeMemberInfo1() {
+        return false;
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    private void SchemaChanged(object sender, System.ComponentModel.CollectionChangeEventArgs e) {
+        if ((e.Action == System.ComponentModel.CollectionChangeAction.Remove)) {
+            this.InitVars();
+        }
+    }
+    
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(System.Xml.Schema.XmlSchemaSet xs) {
+        DataSet ds = new DataSet();
+        System.Xml.Schema.XmlSchemaComplexType type = new System.Xml.Schema.XmlSchemaComplexType();
+        System.Xml.Schema.XmlSchemaSequence sequence = new System.Xml.Schema.XmlSchemaSequence();
+        xs.Add(ds.GetSchemaSerializable());
+        System.Xml.Schema.XmlSchemaAny any = new System.Xml.Schema.XmlSchemaAny();
+        any.Namespace = ds.Namespace;
+        sequence.Items.Add(any);
+        type.Particle = sequence;
+        return type;
+    }
+    
+    public delegate void MemberInfoRowChangeEventHandler(object sender, MemberInfoRowChangeEvent e);
+    
+    public delegate void MemberInfo1RowChangeEventHandler(object sender, MemberInfo1RowChangeEvent e);
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    [System.Serializable()]
+    [System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+    public partial class MemberInfoDataTable : System.Data.DataTable, System.Collections.IEnumerable {
+        
+        private System.Data.DataColumn columnaddress;
+        
+        private System.Data.DataColumn columnphone;
+        
+        private System.Data.DataColumn columnphoto;
+        
+        private System.Data.DataColumn columnfirstname;
+        
+        private System.Data.DataColumn columnlastname;
+        
+        private System.Data.DataColumn columnAvatarSize;
+        
+        private System.Data.DataColumn columnmemberid;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoDataTable() {
+            this.TableName = "MemberInfo";
+            this.BeginInit();
+            this.InitClass();
+            this.EndInit();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal MemberInfoDataTable(System.Data.DataTable table) {
+            this.TableName = table.TableName;
+            if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+                this.CaseSensitive = table.CaseSensitive;
+            }
+            if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+                this.Locale = table.Locale;
+            }
+            if ((table.Namespace != table.DataSet.Namespace)) {
+                this.Namespace = table.Namespace;
+            }
+            this.Prefix = table.Prefix;
+            this.MinimumCapacity = table.MinimumCapacity;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected MemberInfoDataTable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : 
+                base(info, context) {
+            this.InitVars();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn addressColumn {
+            get {
+                return this.columnaddress;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn phoneColumn {
+            get {
+                return this.columnphone;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn photoColumn {
+            get {
+                return this.columnphoto;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn firstnameColumn {
+            get {
+                return this.columnfirstname;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn lastnameColumn {
+            get {
+                return this.columnlastname;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn AvatarSizeColumn {
+            get {
+                return this.columnAvatarSize;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn memberidColumn {
+            get {
+                return this.columnmemberid;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Browsable(false)]
+        public int Count {
+            get {
+                return this.Rows.Count;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRow this[int index] {
+            get {
+                return ((MemberInfoRow)(this.Rows[index]));
+            }
+        }
+        
+        public event MemberInfoRowChangeEventHandler MemberInfoRowChanging;
+        
+        public event MemberInfoRowChangeEventHandler MemberInfoRowChanged;
+        
+        public event MemberInfoRowChangeEventHandler MemberInfoRowDeleting;
+        
+        public event MemberInfoRowChangeEventHandler MemberInfoRowDeleted;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void AddMemberInfoRow(MemberInfoRow row) {
+            this.Rows.Add(row);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRow AddMemberInfoRow(string address, string phone, int photo, string firstname, string lastname, int AvatarSize, string memberid) {
+            MemberInfoRow rowMemberInfoRow = ((MemberInfoRow)(this.NewRow()));
+            rowMemberInfoRow.ItemArray = new object[] {
+                    address,
+                    phone,
+                    photo,
+                    firstname,
+                    lastname,
+                    AvatarSize,
+                    memberid};
+            this.Rows.Add(rowMemberInfoRow);
+            return rowMemberInfoRow;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRow FindBymemberid(string memberid) {
+            return ((MemberInfoRow)(this.Rows.Find(new object[] {
+                        memberid})));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public virtual System.Collections.IEnumerator GetEnumerator() {
+            return this.Rows.GetEnumerator();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public override System.Data.DataTable Clone() {
+            MemberInfoDataTable cln = ((MemberInfoDataTable)(base.Clone()));
+            cln.InitVars();
+            return cln;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Data.DataTable CreateInstance() {
+            return new MemberInfoDataTable();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal void InitVars() {
+            this.columnaddress = base.Columns["address"];
+            this.columnphone = base.Columns["phone"];
+            this.columnphoto = base.Columns["photo"];
+            this.columnfirstname = base.Columns["firstname"];
+            this.columnlastname = base.Columns["lastname"];
+            this.columnAvatarSize = base.Columns["AvatarSize"];
+            this.columnmemberid = base.Columns["memberid"];
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitClass() {
+            this.columnaddress = new System.Data.DataColumn("address", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnaddress);
+            this.columnphone = new System.Data.DataColumn("phone", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnphone);
+            this.columnphoto = new System.Data.DataColumn("photo", typeof(int), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnphoto);
+            this.columnfirstname = new System.Data.DataColumn("firstname", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnfirstname);
+            this.columnlastname = new System.Data.DataColumn("lastname", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnlastname);
+            this.columnAvatarSize = new System.Data.DataColumn("AvatarSize", typeof(int), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnAvatarSize);
+            this.columnmemberid = new System.Data.DataColumn("memberid", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnmemberid);
+            this.Constraints.Add(new System.Data.UniqueConstraint("Constraint1", new System.Data.DataColumn[] {
+                            this.columnmemberid}, true));
+            this.columnaddress.MaxLength = 500;
+            this.columnphone.MaxLength = 50;
+            this.columnfirstname.MaxLength = 50;
+            this.columnlastname.MaxLength = 50;
+            this.columnAvatarSize.ReadOnly = true;
+            this.columnmemberid.AllowDBNull = false;
+            this.columnmemberid.Unique = true;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRow NewMemberInfoRow() {
+            return ((MemberInfoRow)(this.NewRow()));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Data.DataRow NewRowFromBuilder(System.Data.DataRowBuilder builder) {
+            return new MemberInfoRow(builder);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Type GetRowType() {
+            return typeof(MemberInfoRow);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowChanged(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowChanged(e);
+            if ((this.MemberInfoRowChanged != null)) {
+                this.MemberInfoRowChanged(this, new MemberInfoRowChangeEvent(((MemberInfoRow)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowChanging(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowChanging(e);
+            if ((this.MemberInfoRowChanging != null)) {
+                this.MemberInfoRowChanging(this, new MemberInfoRowChangeEvent(((MemberInfoRow)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowDeleted(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowDeleted(e);
+            if ((this.MemberInfoRowDeleted != null)) {
+                this.MemberInfoRowDeleted(this, new MemberInfoRowChangeEvent(((MemberInfoRow)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowDeleting(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowDeleting(e);
+            if ((this.MemberInfoRowDeleting != null)) {
+                this.MemberInfoRowDeleting(this, new MemberInfoRowChangeEvent(((MemberInfoRow)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void RemoveMemberInfoRow(MemberInfoRow row) {
+            this.Rows.Remove(row);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(System.Xml.Schema.XmlSchemaSet xs) {
+            System.Xml.Schema.XmlSchemaComplexType type = new System.Xml.Schema.XmlSchemaComplexType();
+            System.Xml.Schema.XmlSchemaSequence sequence = new System.Xml.Schema.XmlSchemaSequence();
+            DataSet ds = new DataSet();
+            xs.Add(ds.GetSchemaSerializable());
+            System.Xml.Schema.XmlSchemaAny any1 = new System.Xml.Schema.XmlSchemaAny();
+            any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+            any1.MinOccurs = new decimal(0);
+            any1.MaxOccurs = decimal.MaxValue;
+            any1.ProcessContents = System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+            sequence.Items.Add(any1);
+            System.Xml.Schema.XmlSchemaAny any2 = new System.Xml.Schema.XmlSchemaAny();
+            any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+            any2.MinOccurs = new decimal(1);
+            any2.ProcessContents = System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+            sequence.Items.Add(any2);
+            System.Xml.Schema.XmlSchemaAttribute attribute1 = new System.Xml.Schema.XmlSchemaAttribute();
+            attribute1.Name = "namespace";
+            attribute1.FixedValue = ds.Namespace;
+            type.Attributes.Add(attribute1);
+            System.Xml.Schema.XmlSchemaAttribute attribute2 = new System.Xml.Schema.XmlSchemaAttribute();
+            attribute2.Name = "tableTypeName";
+            attribute2.FixedValue = "MemberInfoDataTable";
+            type.Attributes.Add(attribute2);
+            type.Particle = sequence;
+            return type;
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    [System.Serializable()]
+    [System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+    public partial class MemberInfo1DataTable : System.Data.DataTable, System.Collections.IEnumerable {
+        
+        private System.Data.DataColumn columnavatar;
+        
+        private System.Data.DataColumn columnmemberid;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1DataTable() {
+            this.TableName = "MemberInfo1";
+            this.BeginInit();
+            this.InitClass();
+            this.EndInit();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal MemberInfo1DataTable(System.Data.DataTable table) {
+            this.TableName = table.TableName;
+            if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+                this.CaseSensitive = table.CaseSensitive;
+            }
+            if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+                this.Locale = table.Locale;
+            }
+            if ((table.Namespace != table.DataSet.Namespace)) {
+                this.Namespace = table.Namespace;
+            }
+            this.Prefix = table.Prefix;
+            this.MinimumCapacity = table.MinimumCapacity;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected MemberInfo1DataTable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : 
+                base(info, context) {
+            this.InitVars();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn avatarColumn {
+            get {
+                return this.columnavatar;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataColumn memberidColumn {
+            get {
+                return this.columnmemberid;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Browsable(false)]
+        public int Count {
+            get {
+                return this.Rows.Count;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1Row this[int index] {
+            get {
+                return ((MemberInfo1Row)(this.Rows[index]));
+            }
+        }
+        
+        public event MemberInfo1RowChangeEventHandler MemberInfo1RowChanging;
+        
+        public event MemberInfo1RowChangeEventHandler MemberInfo1RowChanged;
+        
+        public event MemberInfo1RowChangeEventHandler MemberInfo1RowDeleting;
+        
+        public event MemberInfo1RowChangeEventHandler MemberInfo1RowDeleted;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void AddMemberInfo1Row(MemberInfo1Row row) {
+            this.Rows.Add(row);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1Row AddMemberInfo1Row(byte[] avatar, string memberid) {
+            MemberInfo1Row rowMemberInfo1Row = ((MemberInfo1Row)(this.NewRow()));
+            rowMemberInfo1Row.ItemArray = new object[] {
+                    avatar,
+                    memberid};
+            this.Rows.Add(rowMemberInfo1Row);
+            return rowMemberInfo1Row;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1Row FindBymemberid(string memberid) {
+            return ((MemberInfo1Row)(this.Rows.Find(new object[] {
+                        memberid})));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public virtual System.Collections.IEnumerator GetEnumerator() {
+            return this.Rows.GetEnumerator();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public override System.Data.DataTable Clone() {
+            MemberInfo1DataTable cln = ((MemberInfo1DataTable)(base.Clone()));
+            cln.InitVars();
+            return cln;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Data.DataTable CreateInstance() {
+            return new MemberInfo1DataTable();
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal void InitVars() {
+            this.columnavatar = base.Columns["avatar"];
+            this.columnmemberid = base.Columns["memberid"];
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitClass() {
+            this.columnavatar = new System.Data.DataColumn("avatar", typeof(byte[]), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnavatar);
+            this.columnmemberid = new System.Data.DataColumn("memberid", typeof(string), null, System.Data.MappingType.Element);
+            base.Columns.Add(this.columnmemberid);
+            this.Constraints.Add(new System.Data.UniqueConstraint("Constraint1", new System.Data.DataColumn[] {
+                            this.columnmemberid}, true));
+            this.columnmemberid.AllowDBNull = false;
+            this.columnmemberid.Unique = true;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1Row NewMemberInfo1Row() {
+            return ((MemberInfo1Row)(this.NewRow()));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Data.DataRow NewRowFromBuilder(System.Data.DataRowBuilder builder) {
+            return new MemberInfo1Row(builder);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override System.Type GetRowType() {
+            return typeof(MemberInfo1Row);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowChanged(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowChanged(e);
+            if ((this.MemberInfo1RowChanged != null)) {
+                this.MemberInfo1RowChanged(this, new MemberInfo1RowChangeEvent(((MemberInfo1Row)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowChanging(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowChanging(e);
+            if ((this.MemberInfo1RowChanging != null)) {
+                this.MemberInfo1RowChanging(this, new MemberInfo1RowChangeEvent(((MemberInfo1Row)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowDeleted(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowDeleted(e);
+            if ((this.MemberInfo1RowDeleted != null)) {
+                this.MemberInfo1RowDeleted(this, new MemberInfo1RowChangeEvent(((MemberInfo1Row)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected override void OnRowDeleting(System.Data.DataRowChangeEventArgs e) {
+            base.OnRowDeleting(e);
+            if ((this.MemberInfo1RowDeleting != null)) {
+                this.MemberInfo1RowDeleting(this, new MemberInfo1RowChangeEvent(((MemberInfo1Row)(e.Row)), e.Action));
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void RemoveMemberInfo1Row(MemberInfo1Row row) {
+            this.Rows.Remove(row);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(System.Xml.Schema.XmlSchemaSet xs) {
+            System.Xml.Schema.XmlSchemaComplexType type = new System.Xml.Schema.XmlSchemaComplexType();
+            System.Xml.Schema.XmlSchemaSequence sequence = new System.Xml.Schema.XmlSchemaSequence();
+            DataSet ds = new DataSet();
+            xs.Add(ds.GetSchemaSerializable());
+            System.Xml.Schema.XmlSchemaAny any1 = new System.Xml.Schema.XmlSchemaAny();
+            any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+            any1.MinOccurs = new decimal(0);
+            any1.MaxOccurs = decimal.MaxValue;
+            any1.ProcessContents = System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+            sequence.Items.Add(any1);
+            System.Xml.Schema.XmlSchemaAny any2 = new System.Xml.Schema.XmlSchemaAny();
+            any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+            any2.MinOccurs = new decimal(1);
+            any2.ProcessContents = System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+            sequence.Items.Add(any2);
+            System.Xml.Schema.XmlSchemaAttribute attribute1 = new System.Xml.Schema.XmlSchemaAttribute();
+            attribute1.Name = "namespace";
+            attribute1.FixedValue = ds.Namespace;
+            type.Attributes.Add(attribute1);
+            System.Xml.Schema.XmlSchemaAttribute attribute2 = new System.Xml.Schema.XmlSchemaAttribute();
+            attribute2.Name = "tableTypeName";
+            attribute2.FixedValue = "MemberInfo1DataTable";
+            type.Attributes.Add(attribute2);
+            type.Particle = sequence;
+            return type;
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    public partial class MemberInfoRow : System.Data.DataRow {
+        
+        private MemberInfoDataTable tableMemberInfo;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal MemberInfoRow(System.Data.DataRowBuilder rb) : 
+                base(rb) {
+            this.tableMemberInfo = ((MemberInfoDataTable)(this.Table));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string address {
+            get {
+                try {
+                    return ((string)(this[this.tableMemberInfo.addressColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'address\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.addressColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string phone {
+            get {
+                try {
+                    return ((string)(this[this.tableMemberInfo.phoneColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'phone\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.phoneColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public int photo {
+            get {
+                try {
+                    return ((int)(this[this.tableMemberInfo.photoColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'photo\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.photoColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string firstname {
+            get {
+                try {
+                    return ((string)(this[this.tableMemberInfo.firstnameColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'firstname\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.firstnameColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string lastname {
+            get {
+                try {
+                    return ((string)(this[this.tableMemberInfo.lastnameColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'lastname\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.lastnameColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public int AvatarSize {
+            get {
+                try {
+                    return ((int)(this[this.tableMemberInfo.AvatarSizeColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'AvatarSize\' in table \'MemberInfo\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo.AvatarSizeColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string memberid {
+            get {
+                return ((string)(this[this.tableMemberInfo.memberidColumn]));
+            }
+            set {
+                this[this.tableMemberInfo.memberidColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsaddressNull() {
+            return this.IsNull(this.tableMemberInfo.addressColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetaddressNull() {
+            this[this.tableMemberInfo.addressColumn] = System.Convert.DBNull;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsphoneNull() {
+            return this.IsNull(this.tableMemberInfo.phoneColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetphoneNull() {
+            this[this.tableMemberInfo.phoneColumn] = System.Convert.DBNull;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsphotoNull() {
+            return this.IsNull(this.tableMemberInfo.photoColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetphotoNull() {
+            this[this.tableMemberInfo.photoColumn] = System.Convert.DBNull;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsfirstnameNull() {
+            return this.IsNull(this.tableMemberInfo.firstnameColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetfirstnameNull() {
+            this[this.tableMemberInfo.firstnameColumn] = System.Convert.DBNull;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IslastnameNull() {
+            return this.IsNull(this.tableMemberInfo.lastnameColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetlastnameNull() {
+            this[this.tableMemberInfo.lastnameColumn] = System.Convert.DBNull;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsAvatarSizeNull() {
+            return this.IsNull(this.tableMemberInfo.AvatarSizeColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetAvatarSizeNull() {
+            this[this.tableMemberInfo.AvatarSizeColumn] = System.Convert.DBNull;
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    public partial class MemberInfo1Row : System.Data.DataRow {
+        
+        private MemberInfo1DataTable tableMemberInfo1;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal MemberInfo1Row(System.Data.DataRowBuilder rb) : 
+                base(rb) {
+            this.tableMemberInfo1 = ((MemberInfo1DataTable)(this.Table));
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public byte[] avatar {
+            get {
+                try {
+                    return ((byte[])(this[this.tableMemberInfo1.avatarColumn]));
+                }
+                catch (System.InvalidCastException e) {
+                    throw new System.Data.StrongTypingException("The value for column \'avatar\' in table \'MemberInfo1\' is DBNull.", e);
+                }
+            }
+            set {
+                this[this.tableMemberInfo1.avatarColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public string memberid {
+            get {
+                return ((string)(this[this.tableMemberInfo1.memberidColumn]));
+            }
+            set {
+                this[this.tableMemberInfo1.memberidColumn] = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool IsavatarNull() {
+            return this.IsNull(this.tableMemberInfo1.avatarColumn);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public void SetavatarNull() {
+            this[this.tableMemberInfo1.avatarColumn] = System.Convert.DBNull;
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    public class MemberInfoRowChangeEvent : System.EventArgs {
+        
+        private MemberInfoRow eventRow;
+        
+        private System.Data.DataRowAction eventAction;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRowChangeEvent(MemberInfoRow row, System.Data.DataRowAction action) {
+            this.eventRow = row;
+            this.eventAction = action;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoRow Row {
+            get {
+                return this.eventRow;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataRowAction Action {
+            get {
+                return this.eventAction;
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    public class MemberInfo1RowChangeEvent : System.EventArgs {
+        
+        private MemberInfo1Row eventRow;
+        
+        private System.Data.DataRowAction eventAction;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1RowChangeEvent(MemberInfo1Row row, System.Data.DataRowAction action) {
+            this.eventRow = row;
+            this.eventAction = action;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1Row Row {
+            get {
+                return this.eventRow;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public System.Data.DataRowAction Action {
+            get {
+                return this.eventAction;
+            }
+        }
+    }
+}
+namespace DataSetTableAdapters {
+    
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.ComponentModel.ToolboxItem(true)]
+    [System.ComponentModel.DataObjectAttribute(true)]
+    [System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
+        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+    [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+    public partial class MemberInfoTableAdapter : System.ComponentModel.Component {
+        
+        private Npgsql.NpgsqlDataAdapter _adapter;
+        
+        private Npgsql.NpgsqlConnection _connection;
+        
+        private Npgsql.NpgsqlCommand[] _commandCollection;
+        
+        private bool _clearBeforeFill;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfoTableAdapter() {
+            this.ClearBeforeFill = true;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private Npgsql.NpgsqlDataAdapter Adapter {
+            get {
+                if ((this._adapter == null)) {
+                    this.InitAdapter();
+                }
+                return this._adapter;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal Npgsql.NpgsqlConnection Connection {
+            get {
+                if ((this._connection == null)) {
+                    this.InitConnection();
+                }
+                return this._connection;
+            }
+            set {
+                this._connection = value;
+                if ((this.Adapter.InsertCommand != null)) {
+                    this.Adapter.InsertCommand.Connection = value;
+                }
+                if ((this.Adapter.DeleteCommand != null)) {
+                    this.Adapter.DeleteCommand.Connection = value;
+                }
+                if ((this.Adapter.UpdateCommand != null)) {
+                    this.Adapter.UpdateCommand.Connection = value;
+                }
+                for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+                    if ((this.CommandCollection[i] != null)) {
+                        ((Npgsql.NpgsqlCommand)(this.CommandCollection[i])).Connection = value;
+                    }
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected Npgsql.NpgsqlCommand[] CommandCollection {
+            get {
+                if ((this._commandCollection == null)) {
+                    this.InitCommandCollection();
+                }
+                return this._commandCollection;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool ClearBeforeFill {
+            get {
+                return this._clearBeforeFill;
+            }
+            set {
+                this._clearBeforeFill = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitAdapter() {
+            this._adapter = new Npgsql.NpgsqlDataAdapter();
+            System.Data.Common.DataTableMapping tableMapping = new System.Data.Common.DataTableMapping();
+            tableMapping.SourceTable = "Table";
+            tableMapping.DataSetTable = "MemberInfo";
+            tableMapping.ColumnMappings.Add("address", "address");
+            tableMapping.ColumnMappings.Add("phone", "phone");
+            tableMapping.ColumnMappings.Add("photo", "photo");
+            tableMapping.ColumnMappings.Add("firstname", "firstname");
+            tableMapping.ColumnMappings.Add("lastname", "lastname");
+            tableMapping.ColumnMappings.Add("AvatarSize", "AvatarSize");
+            tableMapping.ColumnMappings.Add("memberid", "memberid");
+            this._adapter.TableMappings.Add(tableMapping);
+            this._adapter.DeleteCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.DeleteCommand.Connection = this.Connection;
+            this._adapter.DeleteCommand.CommandText = "DELETE FROM MemberInfo WHERE ((memberid = :Original_memberid))";
+            this._adapter.DeleteCommand.CommandType = System.Data.CommandType.Text;
+            Npgsql.NpgsqlParameter param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":Original_memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            param.SourceVersion = System.Data.DataRowVersion.Original;
+            this._adapter.DeleteCommand.Parameters.Add(param);
+            this._adapter.InsertCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.InsertCommand.Connection = this.Connection;
+            this._adapter.InsertCommand.CommandText = @"INSERT INTO MemberInfo (memberid, address, phone, firstname, lastname) VALUES (:memberid, :address, :phone, :firstname, :lastname);
+SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = :memberid)";
+            this._adapter.InsertCommand.CommandType = System.Data.CommandType.Text;
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":address";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "address";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":phone";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "phone";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":firstname";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "firstname";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":lastname";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "lastname";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            this._adapter.UpdateCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.UpdateCommand.Connection = this.Connection;
+            this._adapter.UpdateCommand.CommandText = @"UPDATE MemberInfo SET memberid = :memberid, address = :address, phone = :phone, firstname = :firstname, [lastname] = :lastname WHERE (([memberid] = :Original_memberid));
+SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = :memberid)";
+            this._adapter.UpdateCommand.CommandType = System.Data.CommandType.Text;
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":address";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "address";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":phone";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "phone";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":firstname";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "firstname";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":lastname";
+            param.DbType = System.Data.DbType.AnsiString;
+            param.IsNullable = true;
+            param.SourceColumn = "lastname";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":Original_memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            param.SourceVersion = System.Data.DataRowVersion.Original;
+            this._adapter.UpdateCommand.Parameters.Add(param);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitConnection() {
+            this._connection = new Npgsql.NpgsqlConnection();
+            this._connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitCommandCollection() {
+            this._commandCollection = new Npgsql.NpgsqlCommand[2];
+            this._commandCollection[0] = new Npgsql.NpgsqlCommand();
+            this._commandCollection[0].Connection = this.Connection;
+            this._commandCollection[0].CommandText = "SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSiz" +
+                "e FROM MemberInfo";
+            this._commandCollection[0].CommandType = System.Data.CommandType.Text;
+            this._commandCollection[1] = new Npgsql.NpgsqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT LENGTH(avatar) AS AvatarSize, address, firstname, lastname, memberid, phon" +
+                "e FROM MemberInfo WHERE (memberid = :id)";
+            this._commandCollection[1].CommandType = System.Data.CommandType.Text;
+            Npgsql.NpgsqlParameter param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":id";
+            param.Size = 16;
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._commandCollection[1].Parameters.Add(param);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
+        public virtual DataSet.MemberInfoDataTable GetMemberList() {
+            this.Adapter.SelectCommand = this.CommandCollection[0];
+            DataSet.MemberInfoDataTable dataTable = new DataSet.MemberInfoDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual DataSet.MemberInfoDataTable GetMember(string @__id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            if ((@__id == null)) {
+                throw new System.ArgumentNullException("__id");
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(@__id));
+            }
+            DataSet.MemberInfoDataTable dataTable = new DataSet.MemberInfoDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(DataSet.MemberInfoDataTable dataTable) {
+            return this.Adapter.Update(dataTable);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(DataSet dataSet) {
+            return this.Adapter.Update(dataSet, "MemberInfo");
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(System.Data.DataRow dataRow) {
+            return this.Adapter.Update(new System.Data.DataRow[] {
+                        dataRow});
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(System.Data.DataRow[] dataRows) {
+            return this.Adapter.Update(dataRows);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Delete, true)]
+        public virtual int Delete(string @__Original_memberid) {
+            if ((@__Original_memberid == null)) {
+                throw new System.ArgumentNullException("__Original_memberid");
+            }
+            else {
+                this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(@__Original_memberid));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
+            if (((this.Adapter.DeleteCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.DeleteCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.DeleteCommand.Connection.Close();
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
+        public virtual int Insert(string @__memberid, string @__address, string @__phone, string @__firstname, string @__lastname) {
+            if ((@__memberid == null)) {
+                throw new System.ArgumentNullException("__memberid");
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[0].Value = ((string)(@__memberid));
+            }
+            if ((@__address == null)) {
+                this.Adapter.InsertCommand.Parameters[1].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[1].Value = ((string)(@__address));
+            }
+            if ((@__phone == null)) {
+                this.Adapter.InsertCommand.Parameters[2].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[2].Value = ((string)(@__phone));
+            }
+            if ((@__firstname == null)) {
+                this.Adapter.InsertCommand.Parameters[3].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[3].Value = ((string)(@__firstname));
+            }
+            if ((@__lastname == null)) {
+                this.Adapter.InsertCommand.Parameters[4].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[4].Value = ((string)(@__lastname));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
+            if (((this.Adapter.InsertCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.InsertCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.InsertCommand.Connection.Close();
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
+        public virtual int Update(string @__memberid, string @__address, string @__phone, string @__firstname, string @__lastname, string @__Original_memberid) {
+            if ((@__memberid == null)) {
+                throw new System.ArgumentNullException("__memberid");
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(@__memberid));
+            }
+            if ((@__address == null)) {
+                this.Adapter.UpdateCommand.Parameters[1].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(@__address));
+            }
+            if ((@__phone == null)) {
+                this.Adapter.UpdateCommand.Parameters[2].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(@__phone));
+            }
+            if ((@__firstname == null)) {
+                this.Adapter.UpdateCommand.Parameters[3].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(@__firstname));
+            }
+            if ((@__lastname == null)) {
+                this.Adapter.UpdateCommand.Parameters[4].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(@__lastname));
+            }
+            if ((@__Original_memberid == null)) {
+                throw new System.ArgumentNullException("__Original_memberid");
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(@__Original_memberid));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
+            if (((this.Adapter.UpdateCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.UpdateCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.UpdateCommand.Connection.Close();
+                }
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.ComponentModel.ToolboxItem(true)]
+    [System.ComponentModel.DataObjectAttribute(true)]
+    [System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
+        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+    [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+    public partial class MemberInfo1TableAdapter : System.ComponentModel.Component {
+        
+        private Npgsql.NpgsqlDataAdapter _adapter;
+        
+        private Npgsql.NpgsqlConnection _connection;
+        
+        private Npgsql.NpgsqlCommand[] _commandCollection;
+        
+        private bool _clearBeforeFill;
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public MemberInfo1TableAdapter() {
+            this.ClearBeforeFill = true;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private Npgsql.NpgsqlDataAdapter Adapter {
+            get {
+                if ((this._adapter == null)) {
+                    this.InitAdapter();
+                }
+                return this._adapter;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        internal Npgsql.NpgsqlConnection Connection {
+            get {
+                if ((this._connection == null)) {
+                    this.InitConnection();
+                }
+                return this._connection;
+            }
+            set {
+                this._connection = value;
+                if ((this.Adapter.InsertCommand != null)) {
+                    this.Adapter.InsertCommand.Connection = value;
+                }
+                if ((this.Adapter.DeleteCommand != null)) {
+                    this.Adapter.DeleteCommand.Connection = value;
+                }
+                if ((this.Adapter.UpdateCommand != null)) {
+                    this.Adapter.UpdateCommand.Connection = value;
+                }
+                for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+                    if ((this.CommandCollection[i] != null)) {
+                        ((Npgsql.NpgsqlCommand)(this.CommandCollection[i])).Connection = value;
+                    }
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        protected Npgsql.NpgsqlCommand[] CommandCollection {
+            get {
+                if ((this._commandCollection == null)) {
+                    this.InitCommandCollection();
+                }
+                return this._commandCollection;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public bool ClearBeforeFill {
+            get {
+                return this._clearBeforeFill;
+            }
+            set {
+                this._clearBeforeFill = value;
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitAdapter() {
+            this._adapter = new Npgsql.NpgsqlDataAdapter();
+            System.Data.Common.DataTableMapping tableMapping = new System.Data.Common.DataTableMapping();
+            tableMapping.SourceTable = "Table";
+            tableMapping.DataSetTable = "MemberInfo1";
+            tableMapping.ColumnMappings.Add("avatar", "avatar");
+            tableMapping.ColumnMappings.Add("memberid", "memberid");
+            this._adapter.TableMappings.Add(tableMapping);
+            this._adapter.DeleteCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.DeleteCommand.Connection = this.Connection;
+            this._adapter.DeleteCommand.CommandText = "DELETE FROM MemberInfo WHERE ((memberid = :Original_memberid))";
+            this._adapter.DeleteCommand.CommandType = System.Data.CommandType.Text;
+            Npgsql.NpgsqlParameter param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":Original_memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            param.SourceVersion = System.Data.DataRowVersion.Original;
+            this._adapter.DeleteCommand.Parameters.Add(param);
+            this._adapter.InsertCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.InsertCommand.Connection = this.Connection;
+            this._adapter.InsertCommand.CommandText = "INSERT INTO MemberInfo (memberid, avatar) VALUES (:memberid, :avatar);\r\nSELECT me" +
+                "mberid, avatar FROM MemberInfo WHERE (memberid = :memberid)";
+            this._adapter.InsertCommand.CommandType = System.Data.CommandType.Text;
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":avatar";
+            param.DbType = System.Data.DbType.Binary;
+            param.IsNullable = true;
+            param.SourceColumn = "avatar";
+            this._adapter.InsertCommand.Parameters.Add(param);
+            this._adapter.UpdateCommand = new Npgsql.NpgsqlCommand();
+            this._adapter.UpdateCommand.Connection = this.Connection;
+            this._adapter.UpdateCommand.CommandText = "UPDATE MemberInfo SET memberid = :memberid, avatar = :avatar WHERE ((memberid = :" +
+                "Original_memberid));\r\nSELECT memberid, avatar FROM MemberInfo WHERE (memberid = " +
+                ":memberid)";
+            this._adapter.UpdateCommand.CommandType = System.Data.CommandType.Text;
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":avatar";
+            param.DbType = System.Data.DbType.Binary;
+            param.IsNullable = true;
+            param.SourceColumn = "avatar";
+            this._adapter.UpdateCommand.Parameters.Add(param);
+            param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":Original_memberid";
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            param.SourceVersion = System.Data.DataRowVersion.Original;
+            this._adapter.UpdateCommand.Parameters.Add(param);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitConnection() {
+            this._connection = new Npgsql.NpgsqlConnection();
+            this._connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        private void InitCommandCollection() {
+            this._commandCollection = new Npgsql.NpgsqlCommand[1];
+            this._commandCollection[0] = new Npgsql.NpgsqlCommand();
+            this._commandCollection[0].Connection = this.Connection;
+            this._commandCollection[0].CommandText = "SELECT memberid, avatar FROM MemberInfo WHERE (memberid = :memberid)";
+            this._commandCollection[0].CommandType = System.Data.CommandType.Text;
+            Npgsql.NpgsqlParameter param = new Npgsql.NpgsqlParameter();
+            param.ParameterName = ":memberid";
+            param.Size = 16;
+            param.IsNullable = true;
+            param.SourceColumn = "memberid";
+            this._commandCollection[0].Parameters.Add(param);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
+        public virtual DataSet.MemberInfo1DataTable GetData(string @__memberid) {
+            this.Adapter.SelectCommand = this.CommandCollection[0];
+            if ((@__memberid == null)) {
+                throw new System.ArgumentNullException("__memberid");
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(@__memberid));
+            }
+            DataSet.MemberInfo1DataTable dataTable = new DataSet.MemberInfo1DataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(DataSet.MemberInfo1DataTable dataTable) {
+            return this.Adapter.Update(dataTable);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(DataSet dataSet) {
+            return this.Adapter.Update(dataSet, "MemberInfo1");
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(System.Data.DataRow dataRow) {
+            return this.Adapter.Update(new System.Data.DataRow[] {
+                        dataRow});
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual int Update(System.Data.DataRow[] dataRows) {
+            return this.Adapter.Update(dataRows);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Delete, true)]
+        public virtual int Delete(string @__Original_memberid) {
+            if ((@__Original_memberid == null)) {
+                throw new System.ArgumentNullException("__Original_memberid");
+            }
+            else {
+                this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(@__Original_memberid));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
+            if (((this.Adapter.DeleteCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.DeleteCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.DeleteCommand.Connection.Close();
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
+        public virtual int Insert(string @__memberid, byte[] @__avatar) {
+            if ((@__memberid == null)) {
+                throw new System.ArgumentNullException("__memberid");
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[0].Value = ((string)(@__memberid));
+            }
+            if ((@__avatar == null)) {
+                this.Adapter.InsertCommand.Parameters[1].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.InsertCommand.Parameters[1].Value = ((byte[])(@__avatar));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
+            if (((this.Adapter.InsertCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.InsertCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.InsertCommand.Connection.Close();
+                }
+            }
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
+        public virtual int Update(string @__memberid, byte[] @__avatar, string @__Original_memberid) {
+            if ((@__memberid == null)) {
+                throw new System.ArgumentNullException("__memberid");
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(@__memberid));
+            }
+            if ((@__avatar == null)) {
+                this.Adapter.UpdateCommand.Parameters[1].Value = System.DBNull.Value;
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[1].Value = ((byte[])(@__avatar));
+            }
+            if ((@__Original_memberid == null)) {
+                throw new System.ArgumentNullException("__Original_memberid");
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(@__Original_memberid));
+            }
+            System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
+            if (((this.Adapter.UpdateCommand.Connection.State & System.Data.ConnectionState.Open) 
+                        != System.Data.ConnectionState.Open)) {
+                this.Adapter.UpdateCommand.Connection.Open();
+            }
+            try {
+                int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
+                return returnValue;
+            }
+            finally {
+                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
+                    this.Adapter.UpdateCommand.Connection.Close();
+                }
+            }
+        }
+    }
+}
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Code/DataSet.xsd trunk/App_Code/DataSet.xsd
--- vendor/App_Code/DataSet.xsd	2008-12-23 14:41:29.000000000 -0500
+++ trunk/App_Code/DataSet.xsd	1969-12-31 19:00:00.000000000 -0500
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema id="DataSet" targetNamespace="http://tempuri.org/DataSet.xsd" xmlns:mstns="http://tempuri.org/DataSet.xsd" xmlns="http://tempuri.org/DataSet.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
-  <xs:annotation>
-    <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
-      <DataSource DefaultConnectionIndex="0" GeneratorFunctionsComponentClassName="QueriesTableAdapter" GeneratorFunctionsComponentInterfaceName="IQueriesTableAdapter" GeneratorTypeConverterClassName="Converter" Modifier="AutoLayout, AnsiClass, Class, Public" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
-        <Connections>
-          <Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="ClubSiteDB" ConnectionStringObject="" IsAppSettingsProperty="True" Modifier="Assembly" Name="ClubSiteDB (Web.config)" ParameterPrefix="@" PropertyReference="&lt;SOAP-ENV:Envelope xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:SOAP-ENC=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:clr=&quot;http://schemas.microsoft.com/soap/encoding/clr/1.0&quot; SOAP-ENV:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;&#xD;&#xA;&lt;SOAP-ENV:Body&gt;&#xD;&#xA;&lt;a1:CodePropertyReferenceExpression id=&quot;ref-1&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-3&quot;/&gt;&#xD;&#xA;&lt;propertyName id=&quot;ref-4&quot;&gt;ConnectionString&lt;/propertyName&gt;&#xD;&#xA;&lt;parameters href=&quot;#ref-5&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePropertyReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeIndexerExpression id=&quot;ref-3&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-6&quot;/&gt;&#xD;&#xA;&lt;indices href=&quot;#ref-7&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeIndexerExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-5&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-8&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a1:CodePropertyReferenceExpression id=&quot;ref-6&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-9&quot;/&gt;&#xD;&#xA;&lt;propertyName id=&quot;ref-10&quot;&gt;ConnectionStrings&lt;/propertyName&gt;&#xD;&#xA;&lt;parameters href=&quot;#ref-11&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePropertyReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-7&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-12&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-8&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-13&quot;/&gt;&#xD;&#xA;&lt;_size&gt;0&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;0&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;a1:CodeTypeReferenceExpression id=&quot;ref-9&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;type href=&quot;#ref-14&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeTypeReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-11&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-15&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-12&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-16&quot;/&gt;&#xD;&#xA;&lt;_size&gt;1&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;1&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;SOAP-ENC:Array id=&quot;ref-13&quot; SOAP-ENC:arrayType=&quot;xsd:anyType[0]&quot;&gt;&#xD;&#xA;&lt;/SOAP-ENC:Array&gt;&#xD;&#xA;&lt;a1:CodeTypeReference id=&quot;ref-14&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;baseType id=&quot;ref-17&quot;&gt;System.Configuration.ConfigurationManager&lt;/baseType&gt;&#xD;&#xA;&lt;isInterface&gt;false&lt;/isInterface&gt;&#xD;&#xA;&lt;arrayRank&gt;0&lt;/arrayRank&gt;&#xD;&#xA;&lt;arrayElementType xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;typeArguments xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;referenceOptions&gt;0&lt;/referenceOptions&gt;&#xD;&#xA;&lt;needsFixup&gt;true&lt;/needsFixup&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeTypeReference&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-15&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-13&quot;/&gt;&#xD;&#xA;&lt;_size&gt;0&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;0&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;SOAP-ENC:Array id=&quot;ref-16&quot; SOAP-ENC:arrayType=&quot;xsd:anyType[4]&quot;&gt;&#xD;&#xA;&lt;item href=&quot;#ref-18&quot;/&gt;&#xD;&#xA;&lt;/SOAP-ENC:Array&gt;&#xD;&#xA;&lt;a1:CodePrimitiveExpression id=&quot;ref-18&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;value id=&quot;ref-19&quot; xsi:type=&quot;SOAP-ENC:string&quot;&gt;ClubSiteDB&lt;/value&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePrimitiveExpression&gt;&#xD;&#xA;&lt;/SOAP-ENV:Body&gt;&#xD;&#xA;&lt;/SOAP-ENV:Envelope&gt;&#xD;&#xA;" Provider="System.Data.SqlClient">
-          </Connection>
-        </Connections>
-        <Tables>
-          <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorName="MemberInfoTableAdapter" GeneratorDataComponentClassName="MemberInfoTableAdapter" GeneratorDataComponentInterfaceName="IMemberInfoTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" Name="MemberInfo" UserDataComponentName="MemberInfoTableAdapter" WebServiceAttribute="False">
-            <MainSource>
-              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetMemberList" GetMethodName="GetMemberList" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="False" UserGetMethodName="GetMemberList" UserSourceName="GetMemberList">
-                <DeleteCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>DELETE FROM [MemberInfo] WHERE (([memberid] = @Original_memberid))</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </DeleteCommand>
-                <InsertCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>INSERT INTO [MemberInfo] ([memberid], [address], [phone], [firstname], [lastname]) VALUES (@memberid, @address, @phone, @firstname, @lastname);
-SELECT memberid, address, phone, firstname, lastname, DATALENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = @memberid)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@address" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="address" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@phone" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="phone" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@firstname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="firstname" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@lastname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="lastname" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </InsertCommand>
-                <SelectCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="True">
-                    <CommandText>SELECT memberid, address, phone, firstname, lastname, DATALENGTH(avatar) AS AvatarSize FROM MemberInfo</CommandText>
-                    <Parameters>
-                    </Parameters>
-                  </DbCommand>
-                </SelectCommand>
-                <UpdateCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>UPDATE [MemberInfo] SET [memberid] = @memberid, [address] = @address, [phone] = @phone, [firstname] = @firstname, [lastname] = @lastname WHERE (([memberid] = @Original_memberid));
-SELECT memberid, address, phone, firstname, lastname, DATALENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = @memberid)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@address" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="address" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@phone" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="phone" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@firstname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="firstname" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@lastname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="lastname" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </UpdateCommand>
-              </DbSource>
-            </MainSource>
-            <Mappings>
-              <Mapping SourceColumn="address" DataSetColumn="address" />
-              <Mapping SourceColumn="phone" DataSetColumn="phone" />
-              <Mapping SourceColumn="photo" DataSetColumn="photo" />
-              <Mapping SourceColumn="firstname" DataSetColumn="firstname" />
-              <Mapping SourceColumn="lastname" DataSetColumn="lastname" />
-              <Mapping SourceColumn="AvatarSize" DataSetColumn="AvatarSize" />
-              <Mapping SourceColumn="memberid" DataSetColumn="memberid" />
-            </Mappings>
-            <Sources>
-              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetMember" GetMethodName="GetMember" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="True" UserGetMethodName="GetMember" UserSourceName="GetMember1">
-                <SelectCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="True">
-                    <CommandText>SELECT DATALENGTH(avatar) AS AvatarSize, address, firstname, lastname, memberid, phone FROM MemberInfo WHERE (memberid = @id)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="id" ColumnName="memberid" DataSourceName="[D:\Documents and Settings\samsp\Desktop\clubsite project\Club site\App_Data\clubsite.mdf].dbo.MemberInfo" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </SelectCommand>
-              </DbSource>
-            </Sources>
-          </TableAdapter>
-          <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorName="MemberInfo1TableAdapter" GeneratorDataComponentClassName="MemberInfo1TableAdapter" GeneratorDataComponentInterfaceName="IMemberImageTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" Name="MemberInfo1" UserDataComponentName="MemberInfo1TableAdapter" WebServiceAttribute="False">
-            <MainSource>
-              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetData" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="False" UserGetMethodName="GetData" UserSourceName="GetData">
-                <DeleteCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>DELETE FROM [MemberInfo] WHERE (([memberid] = @Original_memberid))</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </DeleteCommand>
-                <InsertCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>INSERT INTO [MemberInfo] ([memberid], [avatar]) VALUES (@memberid, @avatar);
-SELECT memberid, avatar FROM MemberInfo WHERE (memberid = @memberid)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@avatar" Precision="0" ProviderType="Image" Scale="0" Size="0" SourceColumn="avatar" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </InsertCommand>
-                <SelectCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="True">
-                    <CommandText>SELECT memberid, avatar FROM MemberInfo WHERE (memberid = @memberid)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="memberid" ColumnName="memberid" DataSourceName="[D:\Documents and Settings\samsp\Desktop\clubsite project\Club site\App_Data\clubsite.mdf].dbo.MemberInfo" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </SelectCommand>
-                <UpdateCommand>
-                  <DbCommand CommandType="Text" ModifiedByUser="False">
-                    <CommandText>UPDATE [MemberInfo] SET [memberid] = @memberid, [avatar] = @avatar WHERE (([memberid] = @Original_memberid));
-SELECT memberid, avatar FROM MemberInfo WHERE (memberid = @memberid)</CommandText>
-                    <Parameters>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@avatar" Precision="0" ProviderType="Image" Scale="0" Size="0" SourceColumn="avatar" SourceColumnNullMapping="False" SourceVersion="Current">
-                      </Parameter>
-                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
-                      </Parameter>
-                    </Parameters>
-                  </DbCommand>
-                </UpdateCommand>
-              </DbSource>
-            </MainSource>
-            <Mappings>
-              <Mapping SourceColumn="avatar" DataSetColumn="avatar" />
-              <Mapping SourceColumn="memberid" DataSetColumn="memberid" />
-            </Mappings>
-            <Sources>
-            </Sources>
-          </TableAdapter>
-        </Tables>
-        <Sources>
-        </Sources>
-      </DataSource>
-    </xs:appinfo>
-  </xs:annotation>
-  <xs:element name="DataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataSet" msprop:Generator_DataSetName="DataSet">
-    <xs:complexType>
-      <xs:choice minOccurs="0" maxOccurs="unbounded">
-        <xs:element name="MemberInfo" msprop:Generator_UserTableName="MemberInfo" msprop:Generator_TableClassName="MemberInfoDataTable" msprop:Generator_RowClassName="MemberInfoRow" msprop:Generator_RowEvArgName="MemberInfoRowChangeEvent" msprop:Generator_RowEvHandlerName="MemberInfoRowChangeEventHandler" msprop:Generator_TablePropName="MemberInfo" msprop:Generator_TableVarName="tableMemberInfo">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="address" msprop:Generator_UserColumnName="address" msprop:Generator_ColumnVarNameInTable="columnaddress" msprop:Generator_ColumnPropNameInRow="address" msprop:Generator_ColumnPropNameInTable="addressColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="500" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
-              <xs:element name="phone" msprop:Generator_UserColumnName="phone" msprop:Generator_ColumnVarNameInTable="columnphone" msprop:Generator_ColumnPropNameInRow="phone" msprop:Generator_ColumnPropNameInTable="phoneColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="50" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
-              <xs:element name="photo" msprop:Generator_UserColumnName="photo" msprop:Generator_ColumnVarNameInTable="columnphoto" msprop:Generator_ColumnPropNameInRow="photo" msprop:Generator_ColumnPropNameInTable="photoColumn" type="xs:int" minOccurs="0" />
-              <xs:element name="firstname" msprop:Generator_UserColumnName="firstname" msprop:Generator_ColumnPropNameInRow="firstname" msprop:Generator_ColumnVarNameInTable="columnfirstname" msprop:Generator_ColumnPropNameInTable="firstnameColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="50" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
-              <xs:element name="lastname" msprop:Generator_UserColumnName="lastname" msprop:Generator_ColumnPropNameInRow="lastname" msprop:Generator_ColumnVarNameInTable="columnlastname" msprop:Generator_ColumnPropNameInTable="lastnameColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="50" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
-              <xs:element name="AvatarSize" msdata:ReadOnly="true" msprop:Generator_UserColumnName="AvatarSize" msprop:Generator_ColumnPropNameInRow="AvatarSize" msprop:Generator_ColumnVarNameInTable="columnAvatarSize" msprop:Generator_ColumnPropNameInTable="AvatarSizeColumn" type="xs:int" minOccurs="0" />
-              <xs:element name="memberid" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="memberid" msprop:Generator_ColumnPropNameInRow="memberid" msprop:Generator_ColumnVarNameInTable="columnmemberid" msprop:Generator_ColumnPropNameInTable="memberidColumn" type="xs:string" />
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-        <xs:element name="MemberInfo1" msprop:Generator_UserTableName="MemberInfo1" msprop:Generator_TableClassName="MemberInfo1DataTable" msprop:Generator_RowClassName="MemberInfo1Row" msprop:Generator_RowEvArgName="MemberInfo1RowChangeEvent" msprop:Generator_RowEvHandlerName="MemberInfo1RowChangeEventHandler" msprop:Generator_TablePropName="MemberInfo1" msprop:Generator_TableVarName="tableMemberInfo1">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="avatar" msprop:Generator_UserColumnName="avatar" msprop:Generator_ColumnPropNameInRow="avatar" msprop:Generator_ColumnVarNameInTable="columnavatar" msprop:Generator_ColumnPropNameInTable="avatarColumn" type="xs:base64Binary" minOccurs="0" />
-              <xs:element name="memberid" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="memberid" msprop:Generator_ColumnPropNameInRow="memberid" msprop:Generator_ColumnVarNameInTable="columnmemberid" msprop:Generator_ColumnPropNameInTable="memberidColumn" type="xs:string" />
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-      </xs:choice>
-    </xs:complexType>
-    <xs:unique name="Constraint1" msdata:PrimaryKey="true">
-      <xs:selector xpath=".//mstns:MemberInfo" />
-      <xs:field xpath="mstns:memberid" />
-    </xs:unique>
-    <xs:unique name="MemberInfo1_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
-      <xs:selector xpath=".//mstns:MemberInfo1" />
-      <xs:field xpath="mstns:memberid" />
-    </xs:unique>
-  </xs:element>
-</xs:schema>
\ No newline at end of file
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Code/DataSet.xsd.disabled trunk/App_Code/DataSet.xsd.disabled
--- vendor/App_Code/DataSet.xsd.disabled	1969-12-31 19:00:00.000000000 -0500
+++ trunk/App_Code/DataSet.xsd.disabled	2008-12-24 00:24:34.000000000 -0500
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema id="DataSet" targetNamespace="http://tempuri.org/DataSet.xsd" xmlns:mstns="http://tempuri.org/DataSet.xsd" xmlns="http://tempuri.org/DataSet.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
+  <xs:annotation>
+    <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
+      <DataSource DefaultConnectionIndex="0" GeneratorFunctionsComponentClassName="QueriesTableAdapter" GeneratorFunctionsComponentInterfaceName="IQueriesTableAdapter" GeneratorTypeConverterClassName="Converter" Modifier="AutoLayout, AnsiClass, Class, Public" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+        <Connections>
+          <Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="ClubSiteDB" ConnectionStringObject="" IsAppSettingsProperty="True" Modifier="Assembly" Name="ClubSiteDB (Web.config)" ParameterPrefix="@" PropertyReference="&lt;SOAP-ENV:Envelope xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:SOAP-ENC=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:clr=&quot;http://schemas.microsoft.com/soap/encoding/clr/1.0&quot; SOAP-ENV:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;&#xD;&#xA;&lt;SOAP-ENV:Body&gt;&#xD;&#xA;&lt;a1:CodePropertyReferenceExpression id=&quot;ref-1&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-3&quot;/&gt;&#xD;&#xA;&lt;propertyName id=&quot;ref-4&quot;&gt;ConnectionString&lt;/propertyName&gt;&#xD;&#xA;&lt;parameters href=&quot;#ref-5&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePropertyReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeIndexerExpression id=&quot;ref-3&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-6&quot;/&gt;&#xD;&#xA;&lt;indices href=&quot;#ref-7&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeIndexerExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-5&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-8&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a1:CodePropertyReferenceExpression id=&quot;ref-6&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;targetObject href=&quot;#ref-9&quot;/&gt;&#xD;&#xA;&lt;propertyName id=&quot;ref-10&quot;&gt;ConnectionStrings&lt;/propertyName&gt;&#xD;&#xA;&lt;parameters href=&quot;#ref-11&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePropertyReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-7&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-12&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-8&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-13&quot;/&gt;&#xD;&#xA;&lt;_size&gt;0&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;0&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;a1:CodeTypeReferenceExpression id=&quot;ref-9&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;type href=&quot;#ref-14&quot;/&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeTypeReferenceExpression&gt;&#xD;&#xA;&lt;a1:CodeExpressionCollection id=&quot;ref-11&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;CollectionBase_x002B_list href=&quot;#ref-15&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeExpressionCollection&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-12&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-16&quot;/&gt;&#xD;&#xA;&lt;_size&gt;1&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;1&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;SOAP-ENC:Array id=&quot;ref-13&quot; SOAP-ENC:arrayType=&quot;xsd:anyType[0]&quot;&gt;&#xD;&#xA;&lt;/SOAP-ENC:Array&gt;&#xD;&#xA;&lt;a1:CodeTypeReference id=&quot;ref-14&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;baseType id=&quot;ref-17&quot;&gt;System.Configuration.ConfigurationManager&lt;/baseType&gt;&#xD;&#xA;&lt;isInterface&gt;false&lt;/isInterface&gt;&#xD;&#xA;&lt;arrayRank&gt;0&lt;/arrayRank&gt;&#xD;&#xA;&lt;arrayElementType xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;typeArguments xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;referenceOptions&gt;0&lt;/referenceOptions&gt;&#xD;&#xA;&lt;needsFixup&gt;true&lt;/needsFixup&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodeTypeReference&gt;&#xD;&#xA;&lt;a2:ArrayList id=&quot;ref-15&quot; xmlns:a2=&quot;http://schemas.microsoft.com/clr/ns/System.Collections&quot;&gt;&#xD;&#xA;&lt;_items href=&quot;#ref-13&quot;/&gt;&#xD;&#xA;&lt;_size&gt;0&lt;/_size&gt;&#xD;&#xA;&lt;_version&gt;0&lt;/_version&gt;&#xD;&#xA;&lt;/a2:ArrayList&gt;&#xD;&#xA;&lt;SOAP-ENC:Array id=&quot;ref-16&quot; SOAP-ENC:arrayType=&quot;xsd:anyType[4]&quot;&gt;&#xD;&#xA;&lt;item href=&quot;#ref-18&quot;/&gt;&#xD;&#xA;&lt;/SOAP-ENC:Array&gt;&#xD;&#xA;&lt;a1:CodePrimitiveExpression id=&quot;ref-18&quot; xmlns:a1=&quot;http://schemas.microsoft.com/clr/nsassem/System.CodeDom/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089&quot;&gt;&#xD;&#xA;&lt;value id=&quot;ref-19&quot; xsi:type=&quot;SOAP-ENC:string&quot;&gt;ClubSiteDB&lt;/value&gt;&#xD;&#xA;&lt;CodeObject_x002B_userData xsi:null=&quot;1&quot;/&gt;&#xD;&#xA;&lt;/a1:CodePrimitiveExpression&gt;&#xD;&#xA;&lt;/SOAP-ENV:Body&gt;&#xD;&#xA;&lt;/SOAP-ENV:Envelope&gt;&#xD;&#xA;" Provider="Npgsql">
+          </Connection>
+        </Connections>
+        <Tables>
+          <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorName="MemberInfoTableAdapter" GeneratorDataComponentClassName="MemberInfoTableAdapter" GeneratorDataComponentInterfaceName="IMemberInfoTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" Name="MemberInfo" UserDataComponentName="MemberInfoTableAdapter" WebServiceAttribute="False">
+            <MainSource>
+              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetMemberList" GetMethodName="GetMemberList" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="False" UserGetMethodName="GetMemberList" UserSourceName="GetMemberList">
+                <DeleteCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>DELETE FROM MemberInfo WHERE ((memberid = :Original_memberid))</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </DeleteCommand>
+                <InsertCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>INSERT INTO MemberInfo (memberid, address, phone, firstname, lastname) VALUES (:memberid, :address, :phone, :firstname, :lastname);
+SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = :memberid)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":address" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="address" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":phone" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="phone" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":firstname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="firstname" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":lastname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="lastname" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </InsertCommand>
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="True">
+                    <CommandText>SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSize FROM MemberInfo</CommandText>
+                    <Parameters>
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+                <UpdateCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>UPDATE MemberInfo SET memberid = :memberid, address = :address, phone = :phone, firstname = :firstname, [lastname] = :lastname WHERE (([memberid] = :Original_memberid));
+SELECT memberid, address, phone, firstname, lastname, LENGTH(avatar) AS AvatarSize FROM MemberInfo WHERE (memberid = :memberid)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":address" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="address" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":phone" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="phone" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":firstname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="firstname" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName=":lastname" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="lastname" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </UpdateCommand>
+              </DbSource>
+            </MainSource>
+            <Mappings>
+              <Mapping SourceColumn="address" DataSetColumn="address" />
+              <Mapping SourceColumn="phone" DataSetColumn="phone" />
+              <Mapping SourceColumn="photo" DataSetColumn="photo" />
+              <Mapping SourceColumn="firstname" DataSetColumn="firstname" />
+              <Mapping SourceColumn="lastname" DataSetColumn="lastname" />
+              <Mapping SourceColumn="AvatarSize" DataSetColumn="AvatarSize" />
+              <Mapping SourceColumn="memberid" DataSetColumn="memberid" />
+            </Mappings>
+            <Sources>
+              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetMember" GetMethodName="GetMember" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="True" UserGetMethodName="GetMember" UserSourceName="GetMember1">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="True">
+                    <CommandText>SELECT LENGTH(avatar) AS AvatarSize, address, firstname, lastname, memberid, phone FROM MemberInfo WHERE (memberid = :id)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="id" ColumnName="memberid" DataSourceName="[D:\Documents and Settings\samsp\Desktop\clubsite project\Club site\App_Data\clubsite.mdf].dbo.MemberInfo" DataTypeServer="text" DbType="String" Direction="Input" ParameterName=":id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
+          </TableAdapter>
+          <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorName="MemberInfo1TableAdapter" GeneratorDataComponentClassName="MemberInfo1TableAdapter" GeneratorDataComponentInterfaceName="IMemberImageTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" Name="MemberInfo1" UserDataComponentName="MemberInfo1TableAdapter" WebServiceAttribute="False">
+            <MainSource>
+              <DbSource ConnectionRef="ClubSiteDB (Web.config)" DbObjectName="dbo.MemberInfo" DbObjectType="Table" EnableWebMethods="False" GenerateMethods="Get" GeneratePagingMethods="False" GenerateShortCommands="True" GeneratorGetMethodName="GetData" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="False" UserGetMethodName="GetData" UserSourceName="GetData">
+                <DeleteCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>DELETE FROM MemberInfo WHERE ((memberid = :Original_memberid))</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </DeleteCommand>
+                <InsertCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>INSERT INTO MemberInfo (memberid, avatar) VALUES (:memberid, :avatar);
+SELECT memberid, avatar FROM MemberInfo WHERE (memberid = :memberid)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName=":avatar" Precision="0" ProviderType="Image" Scale="0" Size="0" SourceColumn="avatar" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </InsertCommand>
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="True">
+                    <CommandText>SELECT memberid, avatar FROM MemberInfo WHERE (memberid = :memberid)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="memberid" ColumnName="memberid" DataSourceName="[D:\Documents and Settings\samsp\Desktop\clubsite project\Club site\App_Data\clubsite.mdf].dbo.MemberInfo" DataTypeServer="text" DbType="String" Direction="Input" ParameterName=":memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+                <UpdateCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="False">
+                    <CommandText>UPDATE MemberInfo SET memberid = :memberid, avatar = :avatar WHERE ((memberid = :Original_memberid));
+SELECT memberid, avatar FROM MemberInfo WHERE (memberid = :memberid)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName=":avatar" Precision="0" ProviderType="Image" Scale="0" Size="0" SourceColumn="avatar" SourceColumnNullMapping="False" SourceVersion="Current">
+                      </Parameter>
+                      <Parameter AllowDbNull="False" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Input" ParameterName=":Original_memberid" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="memberid" SourceColumnNullMapping="False" SourceVersion="Original">
+                      </Parameter>
+                    </Parameters>
+                  </DbCommand>
+                </UpdateCommand>
+              </DbSource>
+            </MainSource>
+            <Mappings>
+              <Mapping SourceColumn="avatar" DataSetColumn="avatar" />
+              <Mapping SourceColumn="memberid" DataSetColumn="memberid" />
+            </Mappings>
+            <Sources>
+            </Sources>
+          </TableAdapter>
+        </Tables>
+        <Sources>
+        </Sources>
+      </DataSource>
+    </xs:appinfo>
+  </xs:annotation>
+  <xs:element name="DataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataSet" msprop:Generator_DataSetName="DataSet">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="MemberInfo" msprop:Generator_UserTableName="MemberInfo" msprop:Generator_TableClassName="MemberInfoDataTable" msprop:Generator_RowClassName="MemberInfoRow" msprop:Generator_RowEvArgName="MemberInfoRowChangeEvent" msprop:Generator_RowEvHandlerName="MemberInfoRowChangeEventHandler" msprop:Generator_TablePropName="MemberInfo" msprop:Generator_TableVarName="tableMemberInfo">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element name="address" msprop:Generator_UserColumnName="address" msprop:Generator_ColumnVarNameInTable="columnaddress" msprop:Generator_ColumnPropNameInRow="address" msprop:Generator_ColumnPropNameInTable="addressColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="500" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="phone" msprop:Generator_UserColumnName="phone" msprop:Generator_ColumnVarNameInTable="columnphone" msprop:Generator_ColumnPropNameInRow="phone" msprop:Generator_ColumnPropNameInTable="phoneColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="50" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="photo" msprop:Generator_UserColumnName="photo" msprop:Generator_ColumnVarNameInTable="columnphoto" msprop:Generator_ColumnPropNameInRow="photo" msprop:Generator_ColumnPropNameInTable="photoColumn" type="xs:int" minOccurs="0" />
+              <xs:element name="firstname" msprop:Generator_UserColumnName="firstname" msprop:Generator_ColumnPropNameInRow="firstname" msprop:Generator_ColumnVarNameInTable="columnfirstname" msprop:Generator_ColumnPropNameInTable="firstnameColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="50" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="lastname" msprop:Generator_UserColumnName="lastname" msprop:Generator_ColumnPropNameInRow="lastname" msprop:Generator_ColumnVarNameInTable="columnlastname" msprop:Generator_ColumnPropNameInTable="lastnameColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="50" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="AvatarSize" msdata:ReadOnly="true" msprop:Generator_UserColumnName="AvatarSize" msprop:Generator_ColumnPropNameInRow="AvatarSize" msprop:Generator_ColumnVarNameInTable="columnAvatarSize" msprop:Generator_ColumnPropNameInTable="AvatarSizeColumn" type="xs:int" minOccurs="0" />
+              <xs:element name="memberid" msdata:DataType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="memberid" msprop:Generator_ColumnPropNameInRow="memberid" msprop:Generator_ColumnVarNameInTable="columnmemberid" msprop:Generator_ColumnPropNameInTable="memberidColumn" type="xs:string" />
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+        <xs:element name="MemberInfo1" msprop:Generator_UserTableName="MemberInfo1" msprop:Generator_TableClassName="MemberInfo1DataTable" msprop:Generator_RowClassName="MemberInfo1Row" msprop:Generator_RowEvArgName="MemberInfo1RowChangeEvent" msprop:Generator_RowEvHandlerName="MemberInfo1RowChangeEventHandler" msprop:Generator_TablePropName="MemberInfo1" msprop:Generator_TableVarName="tableMemberInfo1">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element name="avatar" msprop:Generator_UserColumnName="avatar" msprop:Generator_ColumnPropNameInRow="avatar" msprop:Generator_ColumnVarNameInTable="columnavatar" msprop:Generator_ColumnPropNameInTable="avatarColumn" type="xs:base64Binary" minOccurs="0" />
+              <xs:element name="memberid" msdata:DataType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="memberid" msprop:Generator_ColumnPropNameInRow="memberid" msprop:Generator_ColumnVarNameInTable="columnmemberid" msprop:Generator_ColumnPropNameInTable="memberidColumn" type="xs:string" />
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+      </xs:choice>
+    </xs:complexType>
+    <xs:unique name="Constraint1" msdata:PrimaryKey="true">
+      <xs:selector xpath=".//mstns:MemberInfo" />
+      <xs:field xpath="mstns:memberid" />
+    </xs:unique>
+    <xs:unique name="MemberInfo1_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
+      <xs:selector xpath=".//mstns:MemberInfo1" />
+      <xs:field xpath="mstns:memberid" />
+    </xs:unique>
+  </xs:element>
+</xs:schema>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Code/ImageHandling.cs trunk/App_Code/ImageHandling.cs
--- vendor/App_Code/ImageHandling.cs	2008-12-23 14:41:29.000000000 -0500
+++ trunk/App_Code/ImageHandling.cs	2008-12-24 00:24:34.000000000 -0500
@@ -1,6 +1,7 @@
 using System;
 using System.Data;
-using System.Data.SqlClient; 
+using Npgsql;
+using NpgsqlTypes;
 using System.IO;
 using System.Drawing;
 using System.Configuration;
@@ -16,26 +17,26 @@ public class ImageUtils
         byte[] origImageData = new byte[length];
         data.Read(origImageData, 0, length);
 
-        SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
-        SqlCommand command = new SqlCommand("INSERT INTO Images (title, origimage, largeimage, thumbimage, album) VALUES ( @title, @origimage, @largeimage, @thumbimage, @albumid); select SCOPE_IDENTITY()", connection);
+        NpgsqlConnection connection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+        NpgsqlCommand command = new NpgsqlCommand("INSERT INTO Images (title, origimage, largeimage, thumbimage, album) VALUES ( :title, :origimage, :largeimage, :thumbimage, :albumid); select lastval()", connection);
 
-        SqlParameter param0 = new SqlParameter("@title", SqlDbType.VarChar, 50);
+        NpgsqlParameter param0 = new NpgsqlParameter(":title", NpgsqlDbType.Text, 50);
         param0.Value = title;
         command.Parameters.Add(param0);
 
-        SqlParameter param1 = new SqlParameter("@origimage", SqlDbType.Image);
+        NpgsqlParameter param1 = new NpgsqlParameter(":origimage", NpgsqlDbType.Bytea);
         param1.Value = origImageData;
         command.Parameters.Add(param1);
 
-        SqlParameter param2 = new SqlParameter("@largeimage", SqlDbType.Image);
+        NpgsqlParameter param2 = new NpgsqlParameter(":largeimage", NpgsqlDbType.Bytea);
         param2.Value = MakeThumb(origImageData, 350);
         command.Parameters.Add(param2);
 
-        SqlParameter param3 = new SqlParameter("@thumbimage", SqlDbType.Image);
+        NpgsqlParameter param3 = new NpgsqlParameter(":thumbimage", NpgsqlDbType.Bytea);
         param3.Value = MakeThumb(origImageData, 69, 69);
         command.Parameters.Add(param3);
 
-        SqlParameter param4 = new SqlParameter("@albumid", SqlDbType.Int);
+        NpgsqlParameter param4 = new NpgsqlParameter(":albumid", NpgsqlDbType.Integer);
         param4.Value = albumid;
         command.Parameters.Add(param4);
 
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Code/MemberDetails.cs trunk/App_Code/MemberDetails.cs
--- vendor/App_Code/MemberDetails.cs	2008-12-23 14:41:29.000000000 -0500
+++ trunk/App_Code/MemberDetails.cs	2008-12-24 00:24:34.000000000 -0500
@@ -17,7 +17,7 @@ public class MemberDetails
         foreach (MembershipUser user in Membership.GetAllUsers())
         {
             DataSet.MemberInfoRow member;
-            member = members.FindBymemberid((Guid)user.ProviderUserKey);
+            member = members.FindBymemberid(user.ProviderUserKey.ToString());
             if (member !=null)
             {
                 if (filter == null || filter == String.Empty || member.lastname.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase))
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Data/club-add.sql trunk/App_Data/club-add.sql
--- vendor/App_Data/club-add.sql	2008-12-23 14:41:27.000000000 -0500
+++ trunk/App_Data/club-add.sql	2008-12-24 02:23:43.000000000 -0500
@@ -1,427 +1,615 @@
-CREATE TABLE [Albums] (
-	[albumid] [int] IDENTITY (1, 1) NOT NULL ,
-	[title] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
-	[parentid] [int] NOT NULL ,
-	[private] [bit] NULL ,
-	[description] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[ownerid] [uniqueidentifier] NOT NULL 
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [Announcements] (
-	[id] [int] IDENTITY (1, 1) NOT NULL ,
-	[itemdate] [datetime] NOT NULL ,
-	[title] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
-	[description] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[staticURL] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[photo] [int] NOT NULL ,
-	[albumid] [int] NULL 
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [Events] (
-	[id] [int] IDENTITY (1, 1) NOT NULL ,
-	[starttime] [datetime] NOT NULL ,
-	[endtime] [datetime] NULL ,
-	[title] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
-	[description] [varchar] (800) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[staticURL] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[location] [int] NULL ,
-	[photo] [int] NOT NULL ,
-	[album] [int] NULL 
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [Locations] (
-	[id] [int] IDENTITY (1, 1) NOT NULL ,
-	[title] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
-	[description] [varchar] (800) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[linkURL] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[photo] [int] NOT NULL ,
-	[directions] [varchar] (800) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[address] [varchar] (300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
-) ON [PRIMARY]
-GO
-
-CREATE TABLE [MemberInfo] (
-	[address] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[phone] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[firstname] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[lastname] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[avatar] [image] NULL ,
-	[memberid] [uniqueidentifier] NOT NULL 
-) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-GO
-
-CREATE TABLE [images] (
-	[id] [int] IDENTITY (1, 1) NOT NULL ,
-	[title] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
-	[largeimage] [image] NOT NULL ,
-	[thumbimage] [image] NULL ,
-	[origimage] [image] NULL ,
-	[album] [int] NOT NULL ,
-	[notes] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
-) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-GO
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = off;
+SET check_function_bodies = true;
+SET client_min_messages = warning;
+SET escape_string_warning = off;
+-- PostgreSQL membership/role requiremets
+
+CREATE TABLE Users (
+        pId                                     character(36)           NOT NULL,
+        Username                                character varying(255)  NOT NULL,
+        ApplicationName                         character varying(255)  NOT NULL,
+        Email                                   character varying(128)  NOT NULL,
+        Comment                                 character varying(128)  NULL,
+        Password                                character varying(255)  NOT NULL,
+        PasswordQuestion                        character varying(255)  NULL,
+        PasswordAnswer                          character varying(255)  NULL,
+        IsApproved                              boolean                 NULL, 
+        LastActivityDate                        timestamptz             NULL,
+        LastLoginDate                           timestamptz             NULL,
+        LastPasswordChangedDate                 timestamptz             NULL,
+        CreationDate                            timestamptz             NULL, 
+        IsOnLine                                boolean                 NULL,
+        IsLockedOut                             boolean                 NULL,
+        LastLockedOutDate                       timestamptz             NULL,
+        FailedPasswordAttemptCount              integer                 NULL,
+        FailedPasswordAttemptWindowStart        timestamptz             NULL,
+        FailedPasswordAnswerAttemptCount        integer                 NULL,
+        FailedPasswordAnswerAttemptWindowStart  timestamptz             NULL,
+        CONSTRAINT users_pkey PRIMARY KEY (pId),
+        CONSTRAINT users_username_application_unique UNIQUE (Username, ApplicationName)
+);
+
+CREATE INDEX users_email_index ON Users (Email);
+CREATE INDEX users_islockedout_index ON Users (IsLockedOut);
+
+CREATE TABLE Roles (
+        Rolename                                character varying(255)  NOT NULL,
+        ApplicationName                         character varying(255)  NOT NULL,
+    CONSTRAINT roles_pkey PRIMARY KEY (Rolename, ApplicationName)
+);
+
+CREATE TABLE UsersInRoles (
+        Username                                character varying(255)  NOT NULL,
+        Rolename                                character varying(255)  NOT NULL,
+        ApplicationName                         character varying(255)  NOT NULL,
+        CONSTRAINT usersinroles_pkey PRIMARY KEY (Username, Rolename, ApplicationName),
+        CONSTRAINT usersinroles_username_fkey FOREIGN KEY (Username, ApplicationName) REFERENCES Users (Username, ApplicationName) ON DELETE CASCADE,
+        CONSTRAINT usersinroles_rolename_fkey FOREIGN KEY (Rolename, ApplicationName) REFERENCES Roles (Rolename, ApplicationName) ON DELETE CASCADE
+);
+
+CREATE TABLE Profiles (
+        pId                                     character(36)           NOT NULL,
+        Username                                character varying(255)  NOT NULL,
+        ApplicationName                         character varying(255)  NOT NULL,
+        IsAnonymous                             boolean                 NULL,
+        LastActivityDate                        timestamptz             NULL,
+        LastUpdatedDate                         timestamptz             NULL,
+        CONSTRAINT profiles_pkey PRIMARY KEY (pId),
+        CONSTRAINT profiles_username_application_unique UNIQUE (Username, ApplicationName),
+        CONSTRAINT profiles_username_fkey FOREIGN KEY (Username, ApplicationName) REFERENCES Users (Username, ApplicationName) ON DELETE CASCADE
+);
+
+CREATE INDEX profiles_isanonymous_index ON Profiles (IsAnonymous);
+
+CREATE TABLE ProfileData (
+        pId                                     character(36)           NOT NULL,
+        Profile                                 character(36)           NOT NULL,
+        Name                                    character varying(255)  NOT NULL,
+        ValueString                             text                    NULL,
+        ValueBinary                             bytea                   NULL,
+        CONSTRAINT profiledata_pkey PRIMARY KEY (pId),
+        CONSTRAINT profiledata_profile_name_unique UNIQUE (Profile, Name),
+        CONSTRAINT profiledata_profile_fkey FOREIGN KEY (Profile) REFERENCES Profiles (pId) ON DELETE CASCADE
+);
+
+-- ported from upstream
+
+CREATE TABLE Albums (
+	albumid serial NOT NULL ,
+	title varchar (50) NOT NULL ,
+	parentid int NOT NULL ,
+	private boolean NULL ,
+	description varchar (500) NULL ,
+	ownerid text NOT NULL
+);
+
+CREATE TABLE Announcements (
+	id serial NOT NULL ,
+	itemdate timestamptz NOT NULL ,
+	title varchar (500) NOT NULL ,
+	description varchar (500) NULL ,
+	staticURL varchar (500) NULL ,
+	photo int NOT NULL ,
+	albumid int NULL 
+);
+
+CREATE TABLE Events (
+	id serial NOT NULL ,
+	starttime timestamptz NOT NULL ,
+	endtime timestamptz NULL ,
+	title varchar (500) NOT NULL ,
+	description varchar (800) NULL ,
+	staticURL varchar (500) NULL ,
+	location int NULL ,
+	photo int NOT NULL ,
+	album int NULL 
+);
+
+CREATE TABLE Locations (
+	id serial NOT NULL ,
+	title varchar (500) NOT NULL ,
+	description varchar (800) NULL ,
+	linkURL varchar (500) NULL ,
+	photo int NOT NULL ,
+	directions varchar (800) NULL ,
+	address varchar (300) NULL 
+);
+
+CREATE TABLE MemberInfo (
+	address varchar (500) NULL ,
+	phone varchar (50) NULL ,
+	firstname varchar (50) NULL ,
+	lastname varchar (50) NULL ,
+	avatar bytea NULL ,
+	memberid text NOT NULL
+);
+
+CREATE TABLE images (
+	id serial NOT NULL ,
+	title varchar (50) NULL ,
+	largeimage bytea NOT NULL ,
+	thumbimage bytea NULL ,
+	origimage bytea NULL ,
+	album int NOT NULL ,
+	notes varchar (500) NULL 
+);
 
-ALTER TABLE [Albums] ADD 
-	CONSTRAINT [PK_Albums] PRIMARY KEY  CLUSTERED 
+ALTER TABLE Albums ADD 
+	CONSTRAINT PK_Albums PRIMARY KEY   
 	(
-		[albumid]
-	)  ON [PRIMARY] 
-GO
+		albumid
+	)   
+;
 
-ALTER TABLE [MemberInfo] ADD 
-	CONSTRAINT [PK_MemberInfo] PRIMARY KEY  CLUSTERED 
+ALTER TABLE MemberInfo ADD 
+	CONSTRAINT PK_MemberInfo PRIMARY KEY   
 	(
-		[memberid]
-	)  ON [PRIMARY] 
-GO
+		memberid
+	)   
+;
 
 
-SET QUOTED_IDENTIFIER ON 
-GO
-SET ANSI_NULLS ON 
-GO
-
-
-CREATE PROCEDURE AlbumList
-(
-	@userid UNIQUEIDENTIFIER
-)
-AS
-
-SELECT     Albums.albumid, Albums.title, Albums.private, MIN(images.id) AS DisplayImage, COUNT(images.id) AS ImageCount, Albums.description
+CREATE FUNCTION AlbumList (puserid text) RETURNS SETOF Albums AS $$
+DECLARE
+	r RECORD;
+BEGIN
+FOR r IN SELECT     Albums.albumid, Albums.title, Albums.private, MIN(images.id) AS DisplayImage, COUNT(images.id) AS ImageCount, Albums.description
 FROM         Albums LEFT OUTER JOIN
                       images ON Albums.albumid = images.album
-WHERE     (Albums.private = 0) OR
-                     (Albums.ownerid = @userid)
-GROUP BY Albums.albumid, Albums.title, Albums.private, Albums.description
-
-RETURN
-GO
-
-CREATE PROCEDURE MemberCountByLetter
-AS
-	DECLARE @letter char(1), @index int, @max int
-	CREATE TABLE #results ( letter CHAR(1), num INT)
-	SET @index=ASCII('A')
-	SET @max=ASCII('Z')
-
-	WHILE @index <= @max
-	BEGIN
-		SET @letter = CHAR(@index)
-		INSERT INTO #results Select letter=@letter, num=count(*) from MemberInfo where SUBSTRING(lastname,1,1)=@letter  
-		SET @index = @index + 1
-	END
-	Select * FROM #results
-RETURN
-GO
-
-CREATE PROCEDURE NextAnnouncement 
-(
-	@id int
-)
-AS
-	/* SET NOCOUNT ON */ 
-	
-	DECLARE @curr datetime
-	
-	SELECT @curr = itemdate
-	FROM Announcements
-	WHERE (id = @id)
-
-
-SELECT	  top 1 nextid= id
-	FROM	Announcements
-	WHERE	(itemdate > @curr OR
-			(itemdate = @curr) AND (id > @id)) order by itemdate asc, id  asc
-GO
-
-CREATE PROCEDURE NextPrevAnnouncement 
-(
-	@id int,
-	@previd int output,
-	@nextid int output
-)
-AS
-	/* SET NOCOUNT ON */ 
-	
-	DECLARE @curr datetime
-	
-	SELECT @curr = itemdate
-	FROM Announcements
-	WHERE (id = @id)
-
-	SELECT	@previd=  id
-	FROM	Announcements
-	WHERE	(itemdate < @curr OR
-			(itemdate = @curr) AND (id < @id)) order by itemdate asc, id asc
-
+WHERE     (Albums.private = FALSE) OR
+                     (Albums.ownerid = puserid)
+GROUP BY Albums.albumid, Albums.title, Albums.private, Albums.description LOOP
+      RETURN NEXT r;
+END LOOP;
+
+RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE TYPE ResultsTemp AS (letter char(1), num int);
+CREATE FUNCTION MemberCountByLetter() RETURNS SETOF ResultsTemp AS $$
+DECLARE 
+	pletter char(1);
+	pindex int;
+	pmax int;
+	r RECORD;
+BEGIN
+	pindex := ASCII('A');
+	pmax := ASCII('Z');
+
+	WHILE pindex <= pmax LOOP
+		pletter := CHR(pindex);
+		FOR r IN SELECT pletter AS letter,CAST(count(*) AS int) AS num FROM MemberInfo WHERE SUBSTR(lastname,1,1)=pletter LOOP
+		    RETURN NEXT r;
+		END LOOP;
+		pindex = pindex + 1;
+	END LOOP;
+	
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION NextAnnouncement (pid int) RETURNS SETOF Announcements AS $$
+DECLARE 
+	pcurr timestamptz;
+	r RECORD;
+BEGIN
+	SELECT itemdate FROM Announcements INTO pcurr WHERE (id = pid);
 
-SELECT	 @nextid= id
+	FOR r IN SELECT nextid=id
 	FROM	Announcements
-	WHERE	(itemdate > @curr OR
-			(itemdate = @curr) AND (id > @id)) order by itemdate desc, id  desc
-GO
-
-CREATE PROCEDURE NextPrevEvent 
-(
-	@id int,
-	@previd int output,
-	@nextid int output
-)
-AS
-	/* SET NOCOUNT ON */ 
-	
-	DECLARE @curr datetime
-	
-	SELECT @curr = starttime
-	FROM Events AS Events_1
-	WHERE (id = @id)
-
-	SELECT	@previd=  id
-	FROM	Events
-	WHERE	(starttime < @curr OR
-			(starttime = @curr) AND (id < @id)) order by starttime asc, id asc
-
-
-SELECT	 @nextid= id
-	FROM	Events
-	WHERE	(starttime > @curr OR
-			(starttime = @curr) AND (id > @id)) order by starttime desc, id  desc
-GO
-
-CREATE PROCEDURE NextPrevLocation
-(
-	@id int,
-	@previd int output,
-	@nextid int output
-)
-AS
-	/* SET NOCOUNT ON */ 
-	
-
-	SELECT	@previd=  max(id)
-	FROM	locations
-	WHERE	id < @id
-
-
-SELECT	@nextid=  min(id)
-	FROM	locations
-	WHERE	id > @id
-
-GO
-
-CREATE PROCEDURE PagedAlbumList
-(
-	@ownerID UNIQUEIDENTIFIER,
-	@pageNum INT = 1,
-	@pageSize INT = 10
-)
-	
-AS
-	DECLARE @rows INT
-	DECLARE @keyid INT
-	DECLARE @rowCount FLOAT /* yes we need a float for the math */
-	
-	IF @pageNum = 1
-		BEGIN
-			SET @keyid=0
-		END
+	WHERE	(itemdate > pcurr OR
+			(itemdate = pcurr) AND (id > pid)) ORDER BY itemdate ASC, id ASC LIMIT 1 LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION NextPrevAnnouncement (pid int, OUT pprevid int, OUT pnextid int) AS $$
+DECLARE 
+	pcurr timestamptz;
+BEGIN
+	SELECT itemdate
+	FROM Announcements INTO pcurr
+	WHERE (id = pid);
+
+	SELECT	id
+	FROM	Announcements INTO pprevid
+	WHERE	(itemdate < pcurr OR
+			(itemdate = pcurr) AND (id < pid)) ORDER BY itemdate ASC, id ASC;
+
+
+	SELECT	 id
+	FROM	Announcements INTO pnextid
+	WHERE	(itemdate > pcurr OR
+			(itemdate = pcurr) AND (id > pid)) ORDER BY itemdate DESC, id  DESC;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION NextPrevEvent (pid int,	OUT pprevid int, OUT pnextid int) AS $$
+DECLARE 
+	pcurr timestamptz;
+BEGIN
+	SELECT starttime
+	FROM Events AS Events_1 INTO pcurr
+	WHERE (id = pid);
+
+	SELECT	id
+	FROM	Events INTO pprevid
+	WHERE	(starttime < pcurr OR
+			(starttime = pcurr) AND (id < pid)) ORDER BY starttime ASC, id ASC;
+
+	SELECT	 id
+	FROM	Events INTO pnextid
+	WHERE	(starttime > pcurr OR
+			(starttime = pcurr) AND (id > pid)) ORDER BY starttime DESC, id  DESC;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION NextPrevLocation (pid int, OUT pprevid int, OUT pnextid int) AS $$
+BEGIN
+	SELECT	 max(id)
+	FROM	locations INTO pprevid
+	WHERE	id < pid;
+
+	SELECT	min(id)
+	FROM	locations INTO pnextid
+	WHERE	id > pid;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+
+CREATE TYPE AlbumList AS (
+       albumid integer,
+       title varchar(50),
+       private boolean,
+       DisplayImage integer,
+       ImageCount bigint
+);
+
+CREATE FUNCTION PagedAlbumList (pownerID text) RETURNS SETOF AlbumList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedAlbumList (pownerID, 1, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedAlbumList (pownerID text, ppageNum int) RETURNS SETOF AlbumList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedAlbumList (pownerID, ppageNum, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedAlbumList (pownerID text, ppageNum int, ppageSize int) RETURNS SETOF AlbumList AS $$
+DECLARE 
+	prows int;
+	pkeyid int;
+	r RECORD;
+BEGIN
+	IF ppageNum = 1 THEN
+		pkeyid := 0;
 	ELSE
-		BEGIN
-			/* get the values for the date and row */
-			SELECT @rows = (@pageNum-1) * @pageSize
-			SET ROWCOUNT  @rows
-			SELECT @keyid=albumid FROM albums 
-				WHERE(Albums.private = 0) OR (Albums.private = 1) AND (Albums.ownerid = @ownerid)
-				ORDER BY albumid ASC  
-		END
+		/* get the values for the date and row */
+		prows := (ppageNum-1) * ppageSize;
+		SELECT albumid FROM albums INTO pkeyid
+		  WHERE (Albums.private = FALSE) OR (Albums.private = TRUE) AND (Albums.ownerid = pownerid)
+		  ORDER BY albumid ASC OFFSET prows LIMIT 1;
+	END IF;
 
-SELECT @rowCount=COUNT(*) FROM albums WHERE (Albums.private = 0) OR (Albums.private = 1) AND (Albums.ownerid = @ownerid) 
-
-SET  ROWCOUNT @pageSize
-	SELECT Albums.albumid, Albums.title, Albums.private, MIN(images.id) AS DisplayImage, count(images.id) as ImageCount 
+	FOR r IN SELECT Albums.albumid, Albums.title, Albums.private, MIN(images.id) AS DisplayImage, count(images.id) as ImageCount 
 	FROM Albums LEFT OUTER JOIN images ON Albums.albumid = images.album 
-	WHERE ((Albums.private = 0) OR (Albums.private = 1) AND (Albums.ownerid = @ownerid))
-	  AND (albums.albumid > @keyid)
-	GROUP BY  albumid, albums.title, albums.private  
-	RETURN CEILING(@rowCount/@pageSize)
-
-
-GO
-
-CREATE PROCEDURE PagedAnnouncementList 
-(
-	@pageNum INT = 1,
-	@pageSize INT = 10
-)
-	
-AS
-	DECLARE @rows INT
-	DECLARE @keydate DATETIME
-	DECLARE @keyid INT
-	DECLARE @rowCount FLOAT /* yes we need a float for the math */
-	
-	IF @pageNum = 1
-		BEGIN
-			SET @keydate= 0
-			SET @keyid=0
-		END
+	WHERE ((Albums.private = FALSE) OR (Albums.private = TRUE) AND (Albums.ownerid = pownerid)) AND (albums.albumid > pkeyid)
+	GROUP BY  albumid, albums.title, albums.private LIMIT ppageSize LOOP
+	      RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+
+CREATE TYPE AnnouncementList AS (
+       id integer,
+       itemdate timestamptz,
+       title varchar (500),
+       description varchar (500),
+       photo integer
+);
+
+CREATE FUNCTION PagedAnnouncementList () RETURNS SETOF AnnouncementList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedAnnouncementList (1, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedAnnouncementList (ppageNum int) RETURNS SETOF AnnouncementList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedAnnouncementList (ppageNum, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+
+CREATE FUNCTION PagedAnnouncementList (ppageNum int, ppageSize int) RETURNS SETOF AnnouncementList AS $$
+DECLARE 
+	prows int;
+	pkeydate timestamptz;
+	pkeyid int;
+	r RECORD;
+BEGIN
+	IF ppageNum = 1 THEN
+		pkeydate := to_timestamp(0);
+		pkeyid := 0;
 	ELSE
-		BEGIN
 			/* get the values for the date and row */
-			SELECT @rows = (@pageNum-1) * @pageSize
-			SET ROWCOUNT  @rows
-			SELECT @keydate=itemdate, @keyid=id FROM announcements ORDER BY itemdate ASC, id ASC  
-		END
-
-SELECT @rowCount=COUNT(*) FROM announcements
-
-SET  ROWCOUNT @pageSize
-	SELECT id, itemdate, title, description, photo FROM Announcements 
-	WHERE (itemdate > @keydate OR
-			(itemdate = @keydate) AND (id > @keyid))
-	ORDER BY itemdate ASC, id ASC 
-	RETURN CEILING(@rowCount/@pageSize)
-
-
-GO
-
-CREATE PROCEDURE PagedLocationsList
-(
-	@pageNum INT = 1,
-	@pageSize INT = 10
-)
-	
-AS
-	DECLARE @rows INT
-	DECLARE @keyid INT
-	DECLARE @rowCount FLOAT /* yes we need a float for the math */
-	
-	IF @pageNum = 1
-		BEGIN
-			SET @keyid=0
-		END
+		prows := (ppageNum-1) * ppageSize;
+		SELECT itemdate, id FROM Announcements INTO pkeydate,pkeyid ORDER BY itemdate ASC, id ASC OFFSET prows LIMIT 1; 
+	END IF;
+
+	FOR r IN SELECT id, itemdate, title, description, photo FROM Announcements 
+	WHERE (itemdate > pkeydate OR
+			(itemdate = pkeydate) AND (id > pkeyid))
+	ORDER BY itemdate ASC, id ASC LIMIT ppageSize LOOP
+	      RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE TYPE LocationList AS (
+	id integer,
+	title varchar (500),
+	description varchar (800),
+	linkURL varchar (500),
+	address varchar (300),
+	photo integer,
+	directions varchar (800) 
+);
+
+CREATE FUNCTION PagedLocationsList () RETURNS SETOF LocationList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedLocationsList (1, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedLocationsList (ppageNum int) RETURNS SETOF LocationList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedLocationsList (ppageNum, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedLocationsList (ppageNum int, ppageSize int) RETURNS SETOF LocationList AS $$
+DECLARE 
+	prows int;
+	pkeyid int;
+	r RECORD;
+BEGIN
+	IF ppageNum = 1 THEN
+		pkeyid := 0;
 	ELSE
-		BEGIN
 			/* get the values for the date and row */
-			SELECT @rows = (@pageNum-1) * @pageSize
-			SET ROWCOUNT  @rows
-			SELECT @keyid=id FROM locations ORDER BY id ASC  
-		END
-
-SELECT @rowCount=COUNT(*) FROM locations
-
-SET  ROWCOUNT @pageSize
-	SELECT id, title, description, linkURL, address, photo, directions
-		FROM Locations
-		WHERE id > @keyid
-	ORDER BY id ASC 
-RETURN CEILING(@rowCount/@pageSize)
-GO
-
-CREATE PROCEDURE PagedRecentEventList
-(
-	@pageNum int = 1,
-	@pageSize int = 10
-)
-	
-AS
-	declare @rows int
-	declare @keydate datetime
-	declare @keyid int
-	declare @rowCount float /* yes we need a float for the math */
-	
-	if @pageNum = 1
-		begin
-			set @keydate= GETDATE()
-			set @keyid=0
-		end
-	else
-		BEGIN
-			/* get the values for the date and row */
-			select @rows = (@pageNum-1) * @pageSize
-			SET ROWCOUNT  @rows
-			select @keydate=starttime, @keyid=id from Events
-				WHERE starttime < GETDATE()
-				ORDER BY starttime desc, id desc  
-		END
-
-select @rowCount=count(*) from Events WHERE starttime < GETDATE()
+		prows := (ppageNum-1) * ppageSize;
+		SELECT id FROM locations INTO pkeyid ORDER BY id ASC OFFSET prows LIMIT 1;
+	END IF;
+
+	FOR r IN SELECT id, title, description, linkURL, address, photo, directions
+		FROM Locations WHERE id > pkeyid ORDER BY id ASC LIMIT ppageSize LOOP
+	      RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE TYPE EventList AS (
+       id integer,
+       starttime timestamptz,
+       title varchar (500),
+       description varchar (500),
+       photo integer,
+       locationname varchar (500)
+);
+
+CREATE FUNCTION PagedRecentEventList () RETURNS SETOF EventList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedRecentEventList (1, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedRecentEventList (ppageNum int) RETURNS SETOF EventList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedRecentEventList (ppageNum, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedRecentEventList (ppageNum int, ppageSize int) RETURNS SETOF EventList AS $$
+DECLARE
+	r RECORD;
+	prows int;
+	pkeydate timestamptz;
+	pkeyid int;
+BEGIN	
+	IF ppageNum = 1 THEN
+		pkeydate := NOW();
+		pkeyid := 0;
+	ELSE
+		/* get the values for the date and row */
+		prows := (ppageNum-1) * ppageSize;
+		SELECT starttime, id FROM Events INTO pkeydate, pkeyid
+				WHERE starttime < NOW()
+				ORDER BY starttime DESC, id DESC OFFSET prows LIMIT 1;
+	END IF;
 
-SET  ROWCOUNT @pageSize
-	SELECT Events.id, Events.starttime, Events.title, Events.description, Events.photo, 
+	FOR r IN SELECT Events.id, Events.starttime, Events.title, Events.description, Events.photo, 
 		Locations.title AS locationname 
 	FROM Events LEFT OUTER JOIN Locations ON Events.location = Locations.id 
-	WHERE (Events.starttime < @keydate OR
-			(Events.starttime = @keydate) AND (events.id < @keyid))
-	ORDER BY Events.starttime desc, Events.id desc 
-RETURN CEILING(@rowCount/@pageSize)
-GO
-
-CREATE PROCEDURE PagedUpcommingEventList
-(
-	@pageNum int = 1,
-	@pageSize int = 10
-)
-	
-AS
-	declare @rows int
-	declare @keydate datetime
-	declare @keyid int
-	declare @rowCount float /* yes we need a float for the math */
-	
-	if @pageNum = 1
-		begin
-			set @keydate= GETDATE()
-			set @keyid=0
-		end
-	else
-		BEGIN
-			/* get the values for the date and row */
-			select @rows = (@pageNum-1) * @pageSize
-			SET ROWCOUNT  @rows
-			select @keydate=starttime, @keyid=id from Events
-				WHERE Events.starttime > GetDATE()
-				ORDER BY starttime asc, id asc  
-		END
-
-select @rowCount=count(*) from Events WHERE Events.starttime > GetDATE()
+	WHERE (Events.starttime < pkeydate OR
+			(Events.starttime = pkeydate) AND (events.id < pkeyid))
+	ORDER BY Events.starttime DESC, Events.id DESC LIMIT ppageSize LOOP
+	      RETURN NEXT r;
+	END LOOP; 
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedUpcommingEventList () RETURNS SETOF EventList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedUpcommingEventList (1, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedUpcommingEventList (ppageNum int) RETURNS SETOF EventList AS $$
+DECLARE
+	r RECORD;
+BEGIN
+	FOR r IN SELECT * FROM PagedUpcommingEventList (ppageNum, 10) LOOP
+	    RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PagedUpcommingEventList (ppageNum int, ppageSize int) RETURNS SETOF EventList AS $$
+DECLARE 
+	prows int;
+	pkeydate timestamptz;
+	pkeyid int;
+	r RECORD;
+BEGIN
+	IF ppageNum = 1 THEN
+		pkeydate := NOW();
+		pkeyid := 0;
+	ELSE
+		/* get the values for the date and row */
+		prows := (ppageNum-1) * ppageSize;
+		SELECT starttime, id FROM Events INTO pkeydate, pkeyid
+			WHERE Events.starttime > NOW()
+			ORDER BY starttime ASC, id ASC OFFSET prows LIMIT 1;  
+	END IF;
 
-SET  ROWCOUNT @pageSize
-	SELECT Events.id, Events.starttime, Events.title, Events.description, Events.photo, 
+	FOR r IN SELECT Events.id, Events.starttime, Events.title, Events.description, Events.photo, 
 		Locations.title AS locationname 
 	FROM Events LEFT OUTER JOIN Locations ON Events.location = Locations.id 
-	WHERE (Events.starttime > @keydate OR
-			(Events.starttime = @keydate) AND (events.id > @keyid))
-	ORDER BY Events.starttime asc, Events.id asc 
-RETURN CEILING(@rowCount/@pageSize)
-GO
-
-CREATE PROCEDURE PrevAnnouncement
-(
-		@id int
-)
-AS
-	/* SET NOCOUNT ON */ 
-	
-	DECLARE @curr datetime
-	
-	SELECT @curr = itemdate
-	FROM Announcements
-	WHERE (id = @id)
-
-	SELECT	 top 1 previd=id
-	FROM	Announcements
-	WHERE	(itemdate < @curr OR
-			(itemdate = @curr) AND (id < @id)) order by itemdate desc, id desc
-GO
-
-
-SET QUOTED_IDENTIFIER OFF 
-GO
-SET ANSI_NULLS ON 
-GO
-
+	WHERE (Events.starttime > pkeydate OR
+			(Events.starttime = pkeydate) AND (events.id > pkeyid))
+	ORDER BY Events.starttime ASC, Events.id ASC LIMIT ppageSize LOOP
+	      RETURN NEXT r;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION PrevAnnouncement (pid int) RETURNS bigint AS $$
+DECLARE 
+	pcurr timestamptz;
+	previd bigint;
+BEGIN
+	SELECT itemdate FROM Announcements INTO pcurr WHERE (id = pid);
+
+	SELECT id FROM Announcements INTO previd
+	WHERE	(itemdate < pcurr OR
+			(itemdate = pcurr) AND (id < pid)) ORDER BY itemdate DESC, id DESC LIMIT 1;
+	RETURN previd;
+END;
+$$ LANGUAGE plpgsql;
+
+
+
+-- alter object owners
+ALTER TABLE Users OWNER TO test;
+ALTER INDEX users_email_index OWNER TO test;
+ALTER INDEX users_islockedout_index OWNER TO test;
+ALTER TABLE Roles OWNER TO test;
+ALTER TABLE UsersInRoles OWNER TO test;
+ALTER TABLE Profiles OWNER TO test;
+ALTER INDEX profiles_isanonymous_index OWNER TO test;
+ALTER TABLE ProfileData OWNER TO test;
+ALTER TABLE Albums OWNER TO test;
+ALTER TABLE Announcements OWNER TO test;
+ALTER TABLE Events OWNER TO test;
+ALTER TABLE Locations OWNER TO test;
+ALTER TABLE MemberInfo OWNER TO test;
+ALTER TABLE images OWNER TO test;
+ALTER FUNCTION AlbumList (puserid text) OWNER TO test;
+ALTER TYPE ResultsTemp OWNER TO test;
+ALTER FUNCTION MemberCountByLetter() OWNER TO test;
+ALTER FUNCTION NextAnnouncement (pid int) OWNER TO test;
+ALTER FUNCTION NextPrevAnnouncement (pid int, OUT pprevid int, OUT pnextid int) OWNER TO test;
+ALTER FUNCTION NextPrevEvent (pid int,	OUT pprevid int, OUT pnextid int) OWNER TO test;
+ALTER FUNCTION NextPrevLocation (pid int, OUT pprevid int, OUT pnextid int) OWNER TO test;
+ALTER TYPE AlbumList OWNER TO test;
+ALTER FUNCTION PagedAlbumList (pownerID text) OWNER TO test;
+ALTER FUNCTION PagedAlbumList (pownerID text, ppageNum int) OWNER TO test;
+ALTER FUNCTION PagedAlbumList (pownerID text, ppageNum int, ppageSize int) OWNER TO test;
+ALTER TYPE AnnouncementList OWNER TO test;
+ALTER FUNCTION PagedAnnouncementList () OWNER TO test;
+ALTER FUNCTION PagedAnnouncementList (ppageNum int) OWNER TO test;
+ALTER FUNCTION PagedAnnouncementList (ppageNum int, ppageSize int) OWNER TO test;
+ALTER FUNCTION PagedLocationsList () OWNER TO test;
+ALTER FUNCTION PagedLocationsList (ppageNum int) OWNER TO test;
+ALTER FUNCTION PagedLocationsList (ppageNum int, ppageSize int) OWNER TO test;
+ALTER FUNCTION PagedRecentEventList () OWNER TO test;
+ALTER FUNCTION PagedRecentEventList (ppageNum int) OWNER TO test;
+ALTER FUNCTION PagedRecentEventList (ppageNum int, ppageSize int) OWNER TO test;
+ALTER FUNCTION PagedUpcommingEventList () OWNER TO test;
+ALTER FUNCTION PagedUpcommingEventList (ppageNum int) OWNER TO test;
+ALTER FUNCTION PagedUpcommingEventList (ppageNum int, ppageSize int) OWNER TO test;
+ALTER FUNCTION PrevAnnouncement (pid int) OWNER TO test;
+
+-- test user data
+INSERT INTO memberinfo (address, phone, firstname, lastname, avatar, memberid) VALUES ('Address', '123456', 'Test', 'User', '\\377\\330\\377\\340\\000\\020JFIF\\000\\001\\001\\000\\000\\001\\000\\001\\000\\000\\377\\333\\000C\\000\\010\\006\\006\\007\\006\\005\\010\\007\\007\\007\\011\\011\\010\\012\\014\\024\\015\\014\\013\\013\\014\\031\\022\\023\\017\\024\\035\\032\\037\\036\\035\\032\\034\\034 $.'' ",#\\034\\034(7),01444\\037''9=82<.342\\377\\333\\000C\\001\\011\\011\\011\\014\\013\\014\\030\\015\\015\\0302!\\034!22222222222222222222222222222222222222222222222222\\377\\300\\000\\021\\010\\000E\\000E\\003\\001"\\000\\002\\021\\001\\003\\021\\001\\377\\304\\000\\037\\000\\000\\001\\005\\001\\001\\001\\001\\001\\001\\000\\000\\000\\000\\000\\000\\000\\000\\001\\002\\003\\004\\005\\006\\007\\010\\011\\012\\013\\377\\304\\000\\265\\020\\000\\002\\001\\003\\003\\002\\004\\003\\005\\005\\004\\004\\000\\000\\001}\\001\\002\\003\\000\\004\\021\\005\\022!1A\\006\\023Qa\\007"q\\0242\\201\\221\\241\\010#B\\261\\301\\025R\\321\\360$3br\\202\\011\\012\\026\\027\\030\\031\\032%&''()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\\203\\204\\205\\206\\207\\210\\211\\212\\222\\223\\224\\225\\226\\227\\230\\231\\232\\242\\243\\244\\245\\246\\247\\250\\251\\252\\262\\263\\264\\265\\266\\267\\270\\271\\272\\302\\303\\304\\305\\306\\307\\310\\311\\312\\322\\323\\324\\325\\326\\327\\330\\331\\332\\341\\342\\343\\344\\345\\346\\347\\350\\351\\352\\361\\362\\363\\364\\365\\366\\367\\370\\371\\372\\377\\304\\000\\037\\001\\000\\003\\001\\001\\001\\001\\001\\001\\001\\001\\001\\000\\000\\000\\000\\000\\000\\001\\002\\003\\004\\005\\006\\007\\010\\011\\012\\013\\377\\304\\000\\265\\021\\000\\002\\001\\002\\004\\004\\003\\004\\007\\005\\004\\004\\000\\001\\002w\\000\\001\\002\\003\\021\\004\\005!1\\006\\022AQ\\007aq\\023"2\\201\\010\\024B\\221\\241\\261\\301\\011#3R\\360\\025br\\321\\012\\026$4\\341%\\361\\027\\030\\031\\032&''()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\\202\\203\\204\\205\\206\\207\\210\\211\\212\\222\\223\\224\\225\\226\\227\\230\\231\\232\\242\\243\\244\\245\\246\\247\\250\\251\\252\\262\\263\\264\\265\\266\\267\\270\\271\\272\\302\\303\\304\\305\\306\\307\\310\\311\\312\\322\\323\\324\\325\\326\\327\\330\\331\\332\\342\\343\\344\\345\\346\\347\\350\\351\\352\\362\\363\\364\\365\\366\\367\\370\\371\\372\\377\\332\\000\\014\\003\\001\\000\\002\\021\\003\\021\\000?\\000\\364\\25529\\374c\\250j\\227W\\327\\367\\220\\330\\331^\\311gogg;\\300\\016\\314fI\\031\\010fbO\\003;@\\354O5;i^\\026Gemn\\3602\\234\\020u\\333\\216\\017\\375\\375\\252\\236\\015$h^) \\340\\215V\\367\\221\\364\\025\\037\\205\\265\\030\\233@\\260\\212\\025\\005\\231p\\025{\\234\\320\\005\\357\\354\\317\\012\\377\\000\\320n\\357\\377\\000\\007\\267\\037\\374v\\223\\3733\\302\\377\\000\\364\\033\\273\\377\\000\\301\\355\\307\\377\\000\\035\\255\\357\\261\\334`a\\243\\374\\317\\370S\\305\\221\\316\\031\\317\\324(\\307\\363\\240\\016w\\3733\\303\\037\\364\\032\\273\\377\\000\\301\\355\\307\\377\\000\\035\\244\\376\\314\\360\\317\\375\\006n\\377\\000\\360{q\\377\\000\\307k\\2446''\\264\\277\\232\\325ymncB\\312\\021\\300\\354\\0174\\300\\302:o\\206\\377\\000\\3501w\\377\\000\\203\\313\\217\\376;R''\\207\\264\\233\\310\\031\\254\\265MS \\340M\\006\\261;\\224o\\305\\310\\317\\261\\007\\351R\\377\\000jG\\352*\\227\\207\\345\\216o\\025k\\262F\\241A\\212\\3338\\030\\311\\001\\371\\376tX\\015\\037\\010\\352\\327\\227\\220\\352VZ\\204\\302\\342\\347M\\274kSr\\024/\\2340\\031X\\250\\340\\0340\\004\\0162(\\252^\\015\\377\\000\\220\\267\\212\\377\\000\\354+\\377\\000\\264c\\242\\220\\025\\374!\\377\\000 \\037\\025\\177\\330V\\367\\371\\012\\340\\374\\014\\336 m6\\312k=6\\346F\\205\\211Vx\\210C\\203\\320\\223\\201\\372\\327\\242x\\000\\342\\327^\\377\\000\\260\\335\\327\\363Z\\353\\363@\\024\\354\\357\\245\\222\\335\\032\\372\\316K9H\\033\\225\\310e\\007\\037\\336RF;s\\212\\273\\270\\020\\0109\\007\\275&i\\245\\250\\001KS\\026ds\\204\\221X\\377\\000\\262A\\240\\265W\\272\\267\\267\\273\\217\\313\\270\\205%Q\\320:\\203\\217\\247\\245\\000y\\307\\210\\256Z\\303_\\273\\2018P\\373\\200\\364\\310\\317\\365\\251\\376\\036\\\\\\033\\215[]\\2239\\310\\207\\007\\376\\373\\256\\037[K\\233mZ\\356\\316y]\\2142\\262d\\236\\240\\036>\\274b\\272\\377\\000\\205\\274K\\253\\177\\273\\017\\376\\317[J6\\2117\\324\\351|\\033\\377\\000!o\\025\\377\\000\\330W\\377\\000h\\307E\\036\\014\\377\\000\\220\\257\\212\\377\\000\\354+\\377\\000\\264c\\242\\261(O\\001\\034[k\\337\\366\\033\\272\\376k]nk\\220\\360!\\305\\266\\275\\377\\000a\\273\\257\\346\\265\\325<\\251\\034m$\\216\\021\\024e\\231\\216\\000\\024\\000\\351%H\\220\\274\\216\\250\\213\\311f8\\003\\361\\245\\335\\221\\232\\362\\257\\026x\\232MnSij\\305,P\\3762\\237S\\355\\355Y\\032n\\253\\251\\3518\\026W\\222\\304\\231\\317\\227\\234\\241\\377\\000\\200\\236*\\324.\\205s\\332%E\\2266G\\004\\253\\014\\034\\022\\017\\346:VCjo\\245H \\324\\311\\020\\023\\210\\257\\177\\200\\216\\302O\\356\\267l\\364=x\\316\\0077\\247\\374@\\224mMF\\3147\\254\\220\\034\\037\\373\\344\\377\\000\\215l^x\\267L:L\\323\\333\\\\+\\313\\267\\013\\023\\0141''\\247\\007\\265\\034\\215i`\\271\\346\\276/e\\237\\305z\\204\\221\\020\\313\\274\\014\\217e\\002\\272/\\206@\\254\\272\\266\\177\\273\\017\\376\\324\\256P\\303\\271\\211 d\\234\\3600+\\261\\370|\\276\\\\\\272\\247\\270\\207\\377\\000g\\255\\346\\255\\013\\020\\2677\\274\\027\\377\\000!O\\025\\177\\330W\\377\\000h\\307E\\036\\012\\377\\000\\220\\237\\212\\177\\354)\\377\\000\\264c\\242\\271M\\010\\274\\016qo\\256\\377\\000\\330j\\353\\371\\2553\\304\\376"\\360\\266g\\3235\\215s\\354\\257\\006\\326\\232\\004fV;\\206G\\000\\022\\336\\270\\031\\307zO\\006\\022\\261k\\252x#Z\\272\\310\\364\\345j\\246\\217\\243\\334E\\361[^\\325.\\2551eqg\\024QL\\300\\020\\331\\331\\270\\017\\373\\344\\347\\377\\000\\256)\\201\\224&\\370s\\346\\333\\3045\\365-p3\\036&$\\177\\300\\2160\\207\\331\\261Wu\\273\\037\\005xrD\\217V\\324\\336\\326W\\033\\2266\\221\\231\\310\\311\\031\\332\\240\\234d\\021\\234c\\203\\\\\\227\\374"Z\\327\\374)\\217\\354\\257\\354\\311?\\264\\015\\377\\000\\235\\344q\\273\\033\\266\\347\\257\\371\\034\\364\\256\\252\\356\\333S\\360\\367\\304M_\\304)\\244K\\252\\331j\\021$i%\\253)\\232\\002\\240\\015\\273X\\214\\251\\333\\324q\\323\\351O\\231\\205\\221$\\226>\\013\\217GM]\\265C\\375\\236\\356#Y\\304\\304\\256\\342p\\007\\003 \\372\\347\\247|T:t>\\010\\325\\365\\027\\323\\364\\375[\\355\\027K\\223\\345\\244\\255\\363c\\256\\322F\\033\\360&\\271}C\\301\\232\\374\\276\\007\\326\\025l<\\273\\255KW[\\310\\364\\350\\245R-\\343%\\207\\\\\\343?8\\316:\\005\\004\\343\\007\\035\\216\\265\\244\\\\\\311\\361#\\303w\\326\\226\\270\\260\\264\\206\\3467\\222<\\005\\210yl\\024c\\260\\344\\001G4\\273\\212\\310\\317\\275\\223\\300z~\\240\\326\\027Z\\322\\307r\\254Q\\223\\315b\\021\\201\\301\\014\\300\\020\\244\\036\\271#\\025\\321\\351\\021Xi\\363Ikcit\\026EY\\015\\333\\000\\321\\3121\\221\\207\\014s\\303z\\016\\246\\270\\213=?Z\\320|+\\252\\370X\\370vK\\331\\257^o"\\356\\031#\\362\\245\\3360\\036B\\304\\025#\\031\\031\\364\\035:\\327g\\341\\255:}\\023\\303\\032v\\231s0\\232{hv;\\203\\306rN\\007\\260\\316\\321\\354(rop\\262,x''\\376B>(\\377\\000\\260\\247\\376\\321\\216\\212O\\003\\020\\327\\376( \\347\\376&\\230\\374D1\\203EH\\315\\035K\\302\\212\\372\\214\\372\\216\\233\\252^iw\\027\\0303\\213q\\033\\244\\254\\006\\003\\024ua\\273\\034dc=\\352\\237\\374#\\232\\307\\375\\015\\327\\377\\000\\370\\011k\\377\\000\\306\\250\\242\\200\\017\\370G5\\217\\372\\033\\257\\377\\000\\360\\022\\327\\377\\000\\215Q\\377\\000\\010\\336\\261\\377\\000Cu\\377\\000\\376\\002Z\\377\\000\\361\\252(\\240\\004\\377\\000\\204kW\\377\\000\\241\\272\\377\\000\\377\\000\\001-\\177\\370\\325\\037\\360\\214\\352\\377\\000\\3646\\337\\377\\000\\340%\\257\\377\\000\\033\\242\\212\\000O\\370F5o\\372\\033o\\377\\000\\360\\022\\327\\377\\000\\215\\323[\\302Z\\234\\240\\243\\370\\263Q\\332x;-\\355\\324\\376\\004G\\221\\370QE\\000tz\\036\\205e\\341\\3755,\\254\\221\\204`\\226fs\\271\\235\\211\\311bORM\\024Q@\\037\\377\\331', '34cfab57-1cbc-4849-ae13-59134aae25d7');
+
+INSERT INTO roles (rolename, applicationname) VALUES ('Administrators', '/');
+INSERT INTO roles (rolename, applicationname) VALUES ('Guests', '/');
+
+INSERT INTO users (pid, username, applicationname, email, "comment", "password", passwordquestion, passwordanswer, isapproved, lastactivitydate, lastlogindate, lastpasswordchangeddate, creationdate, isonline, islockedout, lastlockedoutdate, failedpasswordattemptcount, failedpasswordattemptwindowstart, failedpasswordanswerattemptcount, failedpasswordanswerattemptwindowstart) VALUES ('34cfab57-1cbc-4849-ae13-59134aae25d7', 'test', '/', 'test@example.com', '', 'YX6V08gSdP+RYgRtaVePad6wdVw=', 'question', 'dnc4cGDJy7KCmNn7vJJHG5OCbdU=', true, '2007-06-13 13:30:37.76176+02', NULL, '2007-06-13 13:30:37.76176+02', '2007-06-13 13:30:37.76176+02', NULL, false, '2007-06-13 13:30:37.76176+02', 0, '2007-06-13 13:30:37.76176+02', 0, '2007-06-13 13:30:37.76176+02');
+
+INSERT INTO usersinroles (username, rolename, applicationname) VALUES ('test', 'Administrators', '/');
+INSERT INTO Albums (title, parentid, private, description, ownerid) VALUES ('My Album', 0, FALSE, '', '34cfab57-1cbc-4849-ae13-59134aae25d7');
+
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Data/club-init.sql trunk/App_Data/club-init.sql
--- vendor/App_Data/club-init.sql	1969-12-31 19:00:00.000000000 -0500
+++ trunk/App_Data/club-init.sql	2008-12-24 00:24:32.000000000 -0500
@@ -0,0 +1,4 @@
+CREATE USER test WITH PASSWORD 'test';
+CREATE DATABASE club WITH OWNER=test ENCODING='UTF8';
+\connect club
+CREATE PROCEDURAL LANGUAGE plpgsql;
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/App_Data/init.sh trunk/App_Data/init.sh
--- vendor/App_Data/init.sh	1969-12-31 19:00:00.000000000 -0500
+++ trunk/App_Data/init.sh	2008-12-24 00:24:32.000000000 -0500
@@ -0,0 +1,4 @@
+#!/bin/sh
+echo 'echo drop database club|psql template1' | su postgres
+echo 'psql template1 < club-init.sql' | su postgres
+echo 'psql club < club-add.sql' | su postgres
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/AvatarImageFetch.ashx trunk/AvatarImageFetch.ashx
--- vendor/AvatarImageFetch.ashx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/AvatarImageFetch.ashx	2008-12-24 00:24:29.000000000 -0500
@@ -3,7 +3,8 @@
 using System;
 using System.Web;
 using System.Data;
-using System.Data.SqlClient;
+using Npgsql;
+using NpgsqlTypes;
 using System.IO;
 
 public class AvatarImageFetch : IHttpHandler
@@ -32,12 +33,12 @@ public class AvatarImageFetch : IHttpHan
 
     public void writeSingleImage(Guid MemberID, Stream output)
     {
-        SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
-        string qry = "select avatar from memberinfo where memberid=@memberid";
-        SqlCommand command = new SqlCommand(qry, connection);
+        NpgsqlConnection connection = new NpgsqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+        string qry = "select avatar from memberinfo where memberid=:memberid";
+        NpgsqlCommand command = new NpgsqlCommand(qry, connection);
 
-        SqlParameter param0 = new SqlParameter("@memberid", SqlDbType.UniqueIdentifier);
-        param0.Value = MemberID;
+        NpgsqlParameter param0 = new NpgsqlParameter(":memberid", NpgsqlDbType.Text);
+        param0.Value = MemberID.ToString ();
         command.Parameters.Add(param0);
 
         connection.Open();
@@ -47,4 +48,4 @@ public class AvatarImageFetch : IHttpHan
 
         connection.Close();
     }
-}
\ No newline at end of file
+}
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Dateandtimepicker.ascx trunk/Dateandtimepicker.ascx
--- vendor/Dateandtimepicker.ascx	1969-12-31 19:00:00.000000000 -0500
+++ trunk/Dateandtimepicker.ascx	2008-12-24 00:24:29.000000000 -0500
@@ -0,0 +1,39 @@
+<%@ Control Language="c#" ClassName="DateandTimePicker" %>
+<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
+
+<script runat="server">
+   
+    public System.DateTime selectedDateTime
+    {
+        get
+        {
+            return dp1.SelectedDate.Add(tp1.SelectedTime.TimeOfDay);
+        }
+        set
+        {
+            dp1.SelectedDate = value;
+            tp1.SelectedTime = value;
+        }
+    }
+    
+</script>
+<div class="controlblock">
+
+    <table>
+        <tr>
+            <td>
+                Date:
+            </td>
+            <td>
+                <club:datepicker id="dp1" runat="server" />
+            </td>
+            <td>
+                Time:
+            </td>
+            <td>
+                <club:timepicker id="tp1" runat="server" />
+            </td>
+        </tr>
+    </table>
+
+</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/DateAndTimePicker.ascx trunk/DateAndTimePicker.ascx
--- vendor/DateAndTimePicker.ascx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/DateAndTimePicker.ascx	1969-12-31 19:00:00.000000000 -0500
@@ -1,39 +0,0 @@
-<%@ Control Language="c#" ClassName="DateandTimePicker" %>
-<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
-
-<script runat="server">
-   
-    public System.DateTime selectedDateTime
-    {
-        get
-        {
-            return dp1.SelectedDate.Add(tp1.SelectedTime.TimeOfDay);
-        }
-        set
-        {
-            dp1.SelectedDate = value;
-            tp1.SelectedTime = value;
-        }
-    }
-    
-</script>
-<div class="controlblock">
-
-    <table>
-        <tr>
-            <td>
-                Date:
-            </td>
-            <td>
-                <club:datepicker id="dp1" runat="server" />
-            </td>
-            <td>
-                Time:
-            </td>
-            <td>
-                <club:timepicker id="tp1" runat="server" />
-            </td>
-        </tr>
-    </table>
-
-</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Default.aspx trunk/Default.aspx
--- vendor/Default.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Default.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -112,8 +112,8 @@
         <div id="columnright">
             <!-- Start of news list functionality -->
             <div class="rightblock">
-                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ProviderName="System.Data.SqlClient"
-                    ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" SelectCommand="SELECT top 5 [id], [itemdate], [title], [description], [photo] FROM [Announcements] order by itemdate desc">
+                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ProviderName="Npgsql2"
+                    ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" SelectCommand="SELECT id, itemdate, title, description, photo FROM Announcements ORDER BY itemdate DESC LIMIT 5">
                 </asp:SqlDataSource>
                 <h2>
                     Recent news</h2>
@@ -148,7 +148,7 @@
             </div>
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="SELECT top 2 dbo.Events.id, dbo.Events.starttime, dbo.events.endtime, dbo.Events.title, dbo.Locations.title AS locationname FROM dbo.Events LEFT OUTER JOIN dbo.Locations ON dbo.Events.location = dbo.Locations.id WHERE     (dbo.Events.starttime > GETDATE()) ORDER BY dbo.Events.starttime, dbo.events.id ">
+                    SelectCommand="SELECT Events.id, Events.starttime, Events.endtime, Events.title, Locations.title AS locationname FROM Events LEFT OUTER JOIN Locations ON Events.location = Locations.id WHERE (Events.starttime > NOW()) ORDER BY Events.starttime, Events.id LIMIT 2" ProviderName="Npgsql2">
                 </asp:SqlDataSource>
                 <h2>
                     Upcoming Events</h2>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Durationpicker.ascx trunk/Durationpicker.ascx
--- vendor/Durationpicker.ascx	1969-12-31 19:00:00.000000000 -0500
+++ trunk/Durationpicker.ascx	2008-12-24 00:24:29.000000000 -0500
@@ -0,0 +1,58 @@
+<%@ Control Language="C#" ClassName="DurationPicker" %>
+<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
+<script runat="server">
+    
+    public System.DateTime startDateTime
+    {
+        get
+        {
+            return dp1.SelectedDate.Add(tp1.SelectedTime.TimeOfDay);
+        }
+        set
+        {
+            dp1.SelectedDate = value;
+            tp1.SelectedTime = value;
+        }
+    }
+
+    public System.DateTime endDateTime
+    {
+        get
+        {
+            return dp2.SelectedDate.Add(tp2.SelectedTime.TimeOfDay);
+        }
+        set
+        {
+            dp2.SelectedDate = value;
+            tp2.SelectedTime = value;
+        }
+    } 
+</script>
+<div class="controlblock">
+
+    <table>
+        <tr>
+            <td>
+                Start Date:
+            </td>
+            <td>
+                <Club:DatePicker ID="dp1" runat="server" />
+            </td>
+            <td>
+                <Club:TimePicker ID="tp1" runat="server" />
+            </td>
+        </tr>
+        <tr>
+            <td>
+                End Date:
+            </td>
+            <td>
+                <Club:DatePicker ID="dp2" runat="server" />
+            </td>
+            <td>
+                <Club:TimePicker ID="tp2" runat="server" />
+            </td>
+        </tr>
+    </table>
+
+</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/DurationPicker.ascx trunk/DurationPicker.ascx
--- vendor/DurationPicker.ascx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/DurationPicker.ascx	1969-12-31 19:00:00.000000000 -0500
@@ -1,58 +0,0 @@
-<%@ Control Language="C#" ClassName="DurationPicker" %>
-<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
-<script runat="server">
-    
-    public System.DateTime startDateTime
-    {
-        get
-        {
-            return dp1.SelectedDate.Add(tp1.SelectedTime.TimeOfDay);
-        }
-        set
-        {
-            dp1.SelectedDate = value;
-            tp1.SelectedTime = value;
-        }
-    }
-
-    public System.DateTime endDateTime
-    {
-        get
-        {
-            return dp2.SelectedDate.Add(tp2.SelectedTime.TimeOfDay);
-        }
-        set
-        {
-            dp2.SelectedDate = value;
-            tp2.SelectedTime = value;
-        }
-    } 
-</script>
-<div class="controlblock">
-
-    <table>
-        <tr>
-            <td>
-                Start Date:
-            </td>
-            <td>
-                <Club:DatePicker ID="dp1" runat="server" />
-            </td>
-            <td>
-                <Club:TimePicker ID="tp1" runat="server" />
-            </td>
-        </tr>
-        <tr>
-            <td>
-                End Date:
-            </td>
-            <td>
-                <Club:DatePicker ID="dp2" runat="server" />
-            </td>
-            <td>
-                <Club:TimePicker ID="tp2" runat="server" />
-            </td>
-        </tr>
-    </table>
-
-</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Events_Calendar.aspx trunk/Events_Calendar.aspx
--- vendor/Events_Calendar.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Events_Calendar.aspx	2008-12-24 00:35:52.000000000 -0500
@@ -35,7 +35,7 @@
         </asp:Panel>
         <div class="eventmonth">
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                SelectCommand="SELECT [id], [starttime], [title], [description] FROM [Events]"></asp:SqlDataSource>
+                SelectCommand="SELECT id, starttime, title, description FROM Events" ProviderName="Npgsql2"></asp:SqlDataSource>
             <ec:EventCalendar runat="server" ID="eventscalendar" DataSourceID="sqldatasource1"
                 BorderWidth="0" DayField="starttime" ShowTitle="true" CssClass="eventmonthtable">
                 <DayHeaderStyle CssClass="caldays" />
@@ -67,7 +67,7 @@
                 <DayEventTemplate>
                     <div style="padding: 3px;">
                         <asp:HyperLink ID="HyperLink1" runat="server" Text='<%#Eval("title") %>' NavigateUrl='<%# "Events_view.aspx?Eventid=" + Convert.ToString(Eval("ID"))%>'
-                            ToolTip='<%# SharedRoutines.truncate((string)Eval("description")) %>' /></div>
+                            ToolTip='<%# SharedRoutines.truncate(Convert.ToString(Eval("description"))) %>' /></div>
                 </DayEventTemplate>
             </ec:EventCalendar>
         </div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Events_Download.ashx trunk/Events_Download.ashx
--- vendor/Events_Download.ashx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Events_Download.ashx	2008-12-24 00:50:58.000000000 -0500
@@ -6,6 +6,7 @@ using System.Data.SqlClient;
 using System.Data;
 using System.Text;
 using System.IO;
+using Npgsql;
 
 public class DownloadEvent : IHttpHandler 
 { 
@@ -34,7 +35,7 @@ public class DownloadEvent : IHttpHandle
 
     public void writeCalEntry(int EventID, TextWriter output, string url)
     {
-        SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+        NpgsqlConnection connection = new NpgsqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
 
         string qry = "SELECT Events.starttime, Events.endtime, Events.title, Events.description, Events.staticURL, Locations.title AS LocName, Locations.directions, ";
         qry += "Locations.description AS locDesc, Locations.address ";
@@ -42,8 +43,8 @@ public class DownloadEvent : IHttpHandle
         qry += "Events ON Locations.id = Events.location ";
         qry += "WHERE (Events.id = @id)";
 
-        SqlCommand command = new SqlCommand(qry, connection);
-        SqlParameter param0 = new SqlParameter("@id", SqlDbType.Int);
+        NpgsqlCommand command = new NpgsqlCommand(qry, connection);
+        NpgsqlParameter param0 = new NpgsqlParameter("@id", DbType.Int32);
         param0.Value = EventID;
         command.Parameters.Add(param0);
 
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Events_Edit.aspx trunk/Events_Edit.aspx
--- vendor/Events_Edit.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Events_Edit.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -233,10 +233,10 @@
         </div>
     </div>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-        SelectCommand="SELECT dbo.Events.id, dbo.Events.starttime, dbo.events.endtime, dbo.Events.title, dbo.Events.description, dbo.Events.staticURL, dbo.Events.photo,  dbo.Events.location, dbo.Locations.title AS locationname FROM  dbo.Events LEFT OUTER JOIN dbo.Locations ON dbo.Events.location = dbo.Locations.id where Events.id=@id"
-        InsertCommand="INSERT INTO Events(starttime, endtime, title, description, staticURL, location, photo) VALUES (@starttime, @endtime,  @title, @description, @staticURL, @location, @photo)"
-        UpdateCommand="UPDATE Events SET starttime = @starttime, endtime=@endtime, title = @title, description = @description, staticURL = @staticURL, location = @location, photo = @photo WHERE (id = @id)"
-        DeleteCommand="DELETE Events WHERE id=@id" OldValuesParameterFormatString="{0}">
+        SelectCommand="SELECT Events.id, Events.starttime, events.endtime, Events.title, Events.description, Events.staticURL, Events.photo,  Events.location, Locations.title AS locationname FROM  Events LEFT OUTER JOIN Locations ON Events.location = Locations.id where Events.id=:id"
+        InsertCommand="INSERT INTO Events(starttime, endtime, title, description, staticURL, location, photo) VALUES (:starttime, :endtime,  :title, :description, :staticURL, :location, :photo)"
+        UpdateCommand="UPDATE Events SET starttime = :starttime, endtime=:endtime, title = :title, description = :description, staticURL = :staticURL, location = :location, photo = :photo WHERE (id = :id)" ProviderName="Npgsql2"
+        DeleteCommand="DELETE Events WHERE id=:id" OldValuesParameterFormatString="{0}">
         <SelectParameters>
             <asp:QueryStringParameter Name="id" QueryStringField="ID" />
         </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Events_List.aspx trunk/Events_List.aspx
--- vendor/Events_List.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Events_List.aspx	2008-12-24 00:36:25.000000000 -0500
@@ -8,16 +8,16 @@
 
     protected void SqlDataSource1_Selected(object sender, System.Web.UI.WebControls.SqlDataSourceStatusEventArgs e)
     {
-        int pages;
-        pages = (int) e.Command.Parameters["@pageCount"].Value;
+        int pageSize = (int) e.Command.Parameters[":pageSize"].Value;
+        int pages = pageSize != 0 ? e.AffectedRows / pageSize : 0;
         pn1.Count = pages;
         pn2.Count = pages;
     }
 
     protected void SqlDataSource2_Selected(object sender, System.Web.UI.WebControls.SqlDataSourceStatusEventArgs e)
     {
-        int pages;
-        pages = (int) e.Command.Parameters["@pageCount"].Value;
+        int pageSize = (int) e.Command.Parameters[":pageSize"].Value;
+        int pages = pageSize != 0 ? e.AffectedRows / pageSize : 0;
         pn3.Count = pages;
         pn4.Count = pages;
     }
@@ -88,11 +88,12 @@
             </div>
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="PagedUpcommingEventList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected">
+                    SelectCommand="PagedUpcommingEventList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected"
+				   ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:ControlParameter Name="pageNum" ControlID="pn1" PropertyName="SelectedPage" />
                         <asp:Parameter DefaultValue="5" Name="pageSize" Type="Int32" />
-                        <asp:Parameter Name="pageCount" Direction="ReturnValue" Type="Int32" />
+                        <asp:Parameter Name="pageCount" Direction="Output" Type="Int32" />
                     </SelectParameters>
                 </asp:SqlDataSource>
                 <h2>
@@ -127,7 +128,7 @@
                                 </a>
                             </h3>
                             <p>
-                                <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate((string)Eval("description")) %>' />
+                                <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate(Convert.ToString(Eval("description"))) %>' />
                                 <a href='<%# "Events_view.aspx?Eventid=" + Convert.ToString( Eval("ID"))%>'>read more &raquo;</a></p>
                             <div class="clearlist">
                             </div>
@@ -146,7 +147,8 @@
                 <h2>
                     Recent events</h2>
                 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="PagedRecentEventList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource2_Selected">
+                    SelectCommand="PagedRecentEventList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource2_Selected"
+				   ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:ControlParameter Name="pageNum" ControlID="pn3" PropertyName="SelectedPage" />
                         <asp:Parameter DefaultValue="5" Name="pageSize" Type="Int32" />
@@ -183,7 +185,7 @@
                                 </a>
                             </h3>
                             <p>
-                                <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate((string)Eval("description")) %>' />
+                                <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate(Convert.ToString(Eval("description"))) %>' />
                                 <a href='<%# "Events_view.aspx?Eventid=" + Convert.ToString( Eval("ID"))%>'>read more &raquo;</a></p>
                             <div class="clearlist">
                             </div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Events_View.aspx trunk/Events_View.aspx
--- vendor/Events_View.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Events_View.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -5,7 +5,7 @@
 <%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
 
 <%@ Import Namespace="System.Data" %>
-<%@ Import Namespace="System.Data.SqlClient" %>
+<%@ Import Namespace="Npgsql" %>
 <script runat="server">
 
     private int nextEventID;
@@ -84,12 +84,12 @@
     {
         try
         {
-            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
-            SqlCommand command = new SqlCommand("dbo.NextPrevEvent", connection);
+            NpgsqlConnection connection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+            NpgsqlCommand command = new NpgsqlCommand("NextPrevEvent", connection);
             
-            SqlParameter param0 = new SqlParameter("@id", EventID);
-            SqlParameter param1 = new SqlParameter("@previd", INVALIDID);
-            SqlParameter param2 = new SqlParameter("@nextid", INVALIDID);
+            NpgsqlParameter param0 = new NpgsqlParameter(":id", EventID);
+            NpgsqlParameter param1 = new NpgsqlParameter(":previd", INVALIDID);
+            NpgsqlParameter param2 = new NpgsqlParameter(":nextid", INVALIDID);
             
             param1.Direction = ParameterDirection.InputOutput;
             param2.Direction = ParameterDirection.InputOutput;
@@ -216,7 +216,7 @@
             <div class="rightblock">
                 <a href="Events_calendar.aspx">month view</a> <a href="Events_list.aspx">list view</a></div>
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                SelectCommand="SELECT dbo.Events.id, dbo.Events.starttime, dbo.events.endtime, dbo.Events.title, dbo.Events.description, dbo.Events.staticURL, dbo.Events.photo, dbo.Events.Album,  dbo.Events.location, dbo.Locations.title AS locationname FROM  dbo.Events LEFT OUTER JOIN dbo.Locations ON dbo.Events.location = dbo.Locations.id where Events.id=@id">
+                SelectCommand="SELECT Events.id, Events.starttime, Events.endtime, Events.title, Events.description, Events.staticURL, Events.photo, Events.Album, Events.location, Locations.title AS locationname FROM Events LEFT OUTER JOIN Locations ON Events.location = Locations.id where Events.id=:id" ProviderName="Npgsql2">
                 <SelectParameters>
                     <asp:Parameter Type="Int32" DefaultValue="1" Name="id"></asp:Parameter>
                 </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/ImageFetch.ashx trunk/ImageFetch.ashx
--- vendor/ImageFetch.ashx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/ImageFetch.ashx	2008-12-24 00:24:29.000000000 -0500
@@ -2,7 +2,8 @@
 
 using System;
 using System.Web;
-using System.Data.SqlClient;
+using Npgsql;
+using NpgsqlTypes;
 using System.Data;
 using System.IO;
 
@@ -32,26 +33,26 @@ public class ImageFetch : IHttpHandler
     public void writeSingleImage(int ImageID, int size, Stream output)
     {
         string cxnstr = System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString;
-        SqlConnection connection = new SqlConnection(cxnstr);
+        NpgsqlConnection connection = new NpgsqlConnection(cxnstr);
         string query;
         if (size == 0)
         {
-            query = "select largeimage from images where id=@item_id";
+            query = "select largeimage from images where id=:item_id";
         }
         else if (size == 1)
         {
-            query = "select thumbimage from images where id=@item_id";
+            query = "select thumbimage from images where id=:item_id";
         }
         else if (size == 2)
         {
-            query = "select origimage from images where id=@item_id";
+            query = "select origimage from images where id=:item_id";
         }
         else
         {
-            query = "select largeimage from images where id=@item_id";
+            query = "select largeimage from images where id=:item_id";
         }
-        SqlCommand command = new SqlCommand(query, connection);
-        SqlParameter param0 = new SqlParameter("@item_id", SqlDbType.Int);
+        NpgsqlCommand command = new NpgsqlCommand(query, connection);
+        NpgsqlParameter param0 = new NpgsqlParameter(":item_id", NpgsqlDbType.Integer);
         param0.Value = ImageID;
         command.Parameters.Add(param0);
         connection.Open();
@@ -60,4 +61,4 @@ public class ImageFetch : IHttpHandler
         output.Write(d, 0, d.Length);
         connection.Close();
     }
-}
\ No newline at end of file
+}
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Locations_Edit.aspx trunk/Locations_Edit.aspx
--- vendor/Locations_Edit.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Locations_Edit.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -198,10 +198,10 @@
         </asp:FormView>
     </div>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-        SelectCommand="SELECT id, title, description, linkURL, directions, photo, address FROM Locations where id=@id"
-        InsertCommand="INSERT INTO Locations(title, description, linkURL, directions, photo, address) VALUES (@title, @description, @linkURL, @directions, @photo, @address)"
-        UpdateCommand="UPDATE Locations SET title = @title, description = @description, linkURL = @linkurl, address = @address, photo = @photo, directions = @directions WHERE (id = @id)"
-        OldValuesParameterFormatString="{0}" DeleteCommand="delete from locations where id=@id">
+        SelectCommand="SELECT id, title, description, linkURL, directions, photo, address FROM Locations where id=:id"
+        InsertCommand="INSERT INTO Locations(title, description, linkURL, directions, photo, address) VALUES (:title, :description, :linkURL, :directions, :photo, :address)"
+        UpdateCommand="UPDATE Locations SET title = :title, description = :description, linkURL = :linkurl, address = :address, photo = :photo, directions = :directions WHERE (id = :id)" ProviderName="Npgsql2"
+        OldValuesParameterFormatString="{0}" DeleteCommand="delete from locations where id=:id">
         <UpdateParameters>
             <asp:Parameter Name="title" />
             <asp:Parameter Name="description" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Locations_List.aspx trunk/Locations_List.aspx
--- vendor/Locations_List.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Locations_List.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -8,8 +8,8 @@
 
     protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
     {
-        int pages;
-        pages = System.Convert.ToInt32(e.Command.Parameters["@pageCount"].Value);
+        int pageSize = (int)e.Command.Parameters[":pageSize"].Value;
+        int pages = pageSize != 0 ? e.AffectedRows / pageSize : 0;
         pn1.Count = pages;
         pn2.Count = pages;
     }
@@ -71,7 +71,8 @@
             </div>
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="PagedLocationsList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected">
+                    SelectCommand="PagedLocationsList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected"
+				   ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:ControlParameter Name="pageNum" ControlID="pn1" PropertyName="SelectedPage" />
                         <asp:Parameter DefaultValue="8" Name="pageSize" Type="Int32" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Locations_picker.ascx trunk/Locations_picker.ascx
--- vendor/Locations_picker.ascx	1969-12-31 19:00:00.000000000 -0500
+++ trunk/Locations_picker.ascx	2008-12-24 00:24:29.000000000 -0500
@@ -0,0 +1,92 @@
+<%@ Control Language="C#" ClassName="LocationsPicker" %>
+<%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
+<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
+
+<script runat="server">
+
+    protected void locationselect_SelectedIndexChanged(object sender, System.EventArgs e)
+    {
+        int value = Convert.ToInt32(locationselect.SelectedValue);
+        if (value == 0)
+        {
+            FormView1.Visible = false;
+        }
+        else
+        {
+            FormView1.ChangeMode(FormViewMode.ReadOnly);
+            FormView1.PageIndex = locationselect.SelectedIndex - 1;
+            FormView1.Visible = true;
+        }
+    }
+
+    public object LocationID
+    {
+        get
+        {
+            object o = locationselect.SelectedValue;
+            if (o != null && (string)o != "")
+            {
+                int val = System.Convert.ToInt32(o);
+                if (val > 0)
+                {
+                    return val;
+                }
+            }
+            return DBNull.Value;
+        }
+        set
+        {
+            if (value == null || value == DBNull.Value)
+            {
+                FormView1.Visible = false;
+                locationselect.SelectedIndex = 0;
+            }
+            else
+            {
+                locationselect.DataBind();
+                locationselect.SelectedValue = Convert.ToString(value);
+                FormView1.PageIndex = locationselect.SelectedIndex - 1;
+                FormView1.Visible = true;
+            }
+        }
+    }
+
+    protected void locationselect_DataBinding(object sender, System.EventArgs e)
+    {
+        locationselect.Items.Clear();
+        locationselect.Items.Add(new ListItem("No location Selected", "0"));
+    }
+
+</script>
+
+<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="LocationList"
+    runat="server" SelectCommand="SELECT title, id, description, linkURL, directions, address, photo FROM Locations"
+		   ProviderName="Npgsql2">
+</asp:SqlDataSource>
+<table>
+    <tr valign="top">
+        <td style="height: 47px">
+            <asp:ListBox ID="locationselect" DataSourceID="LocationList" DataTextField="title"
+                DataValueField="id" AutoPostBack="true" runat="server" AppendDataBoundItems="true"
+                Rows="5" OnSelectedIndexChanged="locationselect_SelectedIndexChanged" OnDataBinding="locationselect_DataBinding">
+            </asp:ListBox>
+        </td>
+        <td>
+            <asp:FormView DataSourceID="LocationList" ID="FormView1" runat="server">
+                <ItemTemplate>
+                    <div>
+                        <p>
+                            <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate(Convert.ToString(Eval("description"))) %>' />
+                            <a href='<%# "Locations_view.aspx?Locationid=" + Convert.ToString( Eval("ID"))%>'>more details &raquo;</a></p>
+                        </p>
+                        <p>
+                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("address") %>' />
+                        </p>
+                    </div>
+                </ItemTemplate>
+            </asp:FormView>
+        </td>
+    </tr>
+</table>
+<Club:RolloverLink ID="addlocation" runat="server" NavigateURL="locations_edit.aspx?Action=new"
+    Text="Add new location" target="_new" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Locations_Picker.ascx trunk/Locations_Picker.ascx
--- vendor/Locations_Picker.ascx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Locations_Picker.ascx	1969-12-31 19:00:00.000000000 -0500
@@ -1,91 +0,0 @@
-<%@ Control Language="C#" ClassName="LocationsPicker" %>
-<%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
-<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
-
-<script runat="server">
-
-    protected void locationselect_SelectedIndexChanged(object sender, System.EventArgs e)
-    {
-        int value = Convert.ToInt32(locationselect.SelectedValue);
-        if (value == 0)
-        {
-            FormView1.Visible = false;
-        }
-        else
-        {
-            FormView1.ChangeMode(FormViewMode.ReadOnly);
-            FormView1.PageIndex = locationselect.SelectedIndex - 1;
-            FormView1.Visible = true;
-        }
-    }
-
-    public object LocationID
-    {
-        get
-        {
-            object o = locationselect.SelectedValue;
-            if (o != null && (string)o != "")
-            {
-                int val = System.Convert.ToInt32(o);
-                if (val > 0)
-                {
-                    return val;
-                }
-            }
-            return DBNull.Value;
-        }
-        set
-        {
-            if (value == null || value == DBNull.Value)
-            {
-                FormView1.Visible = false;
-                locationselect.SelectedIndex = 0;
-            }
-            else
-            {
-                locationselect.DataBind();
-                locationselect.SelectedValue = Convert.ToString(value);
-                FormView1.PageIndex = locationselect.SelectedIndex - 1;
-                FormView1.Visible = true;
-            }
-        }
-    }
-
-    protected void locationselect_DataBinding(object sender, System.EventArgs e)
-    {
-        locationselect.Items.Clear();
-        locationselect.Items.Add(new ListItem("No location Selected", "0"));
-    }
-
-</script>
-
-<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="LocationList"
-    runat="server" SelectCommand="SELECT [title], [id], [description], [linkURL], [directions], [address], [photo] FROM [Locations]">
-</asp:SqlDataSource>
-<table>
-    <tr valign="top">
-        <td style="height: 47px">
-            <asp:ListBox ID="locationselect" DataSourceID="LocationList" DataTextField="title"
-                DataValueField="id" AutoPostBack="true" runat="server" AppendDataBoundItems="true"
-                Rows="5" OnSelectedIndexChanged="locationselect_SelectedIndexChanged" OnDataBinding="locationselect_DataBinding">
-            </asp:ListBox>
-        </td>
-        <td>
-            <asp:FormView DataSourceID="LocationList" ID="FormView1" runat="server">
-                <ItemTemplate>
-                    <div>
-                        <p>
-                            <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate(Convert.ToString(Eval("description"))) %>' />
-                            <a href='<%# "Locations_view.aspx?Locationid=" + Convert.ToString( Eval("ID"))%>'>more details &raquo;</a></p>
-                        </p>
-                        <p>
-                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("address") %>' />
-                        </p>
-                    </div>
-                </ItemTemplate>
-            </asp:FormView>
-        </td>
-    </tr>
-</table>
-<Club:RolloverLink ID="addlocation" runat="server" NavigateURL="locations_edit.aspx?Action=new"
-    Text="Add new location" target="_new" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Locations_View.aspx trunk/Locations_View.aspx
--- vendor/Locations_View.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Locations_View.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -5,7 +5,7 @@
 <%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
 
 <%@ Import Namespace="System.Data" %>
-<%@ Import Namespace="System.Data.SqlClient" %>
+<%@ Import Namespace="Npgsql" %>
 <script runat="server">
 
     private int nextLocationID;
@@ -84,12 +84,12 @@
     {
         try
         {
-            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
-            SqlCommand command = new SqlCommand("dbo.NextPrevLocation", connection);
+            NpgsqlConnection connection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+            NpgsqlCommand command = new NpgsqlCommand("dbo.NextPrevLocation", connection);
             
-            SqlParameter param0 = new SqlParameter("@id", LocationID);
-            SqlParameter param1 = new SqlParameter("@previd", INVALIDID);
-            SqlParameter param2 = new SqlParameter("@nextid", INVALIDID);
+            NpgsqlParameter param0 = new NpgsqlParameter(":id", LocationID);
+            NpgsqlParameter param1 = new NpgsqlParameter(":previd", INVALIDID);
+            NpgsqlParameter param2 = new NpgsqlParameter(":nextid", INVALIDID);
             
             param1.Direction = ParameterDirection.InputOutput;
             param2.Direction = ParameterDirection.InputOutput;
@@ -130,7 +130,8 @@
 
 <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-        SelectCommand="SELECT id, title, description, photo, linkurl, directions, address FROM locations WHERE (id = @id)">
+        SelectCommand="SELECT id, title, description, photo, linkurl, directions, address FROM locations WHERE (id = :id)"
+		       ProviderName="Npgsql2">
         <SelectParameters>
             <asp:Parameter Type="Int32" DefaultValue="1" Name="id"></asp:Parameter>
         </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Member_Details.aspx trunk/Member_Details.aspx
--- vendor/Member_Details.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Member_Details.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -1,6 +1,6 @@
 <%@ Page Language="C#" MasterPageFile="~/Default.master" Title="Modify Membership Details" %>
 
-<%@ Register Src="Photos_formpicker.ascx" TagName="Photos_formpicker" TagPrefix="Club" %>
+<%@ Register Src="photos_formpicker.ascx" TagName="Photos_formpicker" TagPrefix="Club" %>
 <%@ Register TagPrefix="Club" Namespace="ClubSite" %>
 
 <%@ Import Namespace="System.Drawing" %>
@@ -29,7 +29,7 @@
         }
         try
         {
-            da.Update((Guid)user.ProviderUserKey, Addr.Text, Phone.Text, fname.Text, lname.Text, (Guid)user.ProviderUserKey);
+            da.Update(user.ProviderUserKey.ToString(), Addr.Text, Phone.Text, fname.Text, lname.Text, user.ProviderUserKey.ToString());
             ContactStatus.Text = "Details have been updated sucessfully.";
             ContactStatus.ControlStyle.ForeColor = Color.Black;
         }
@@ -44,7 +44,7 @@
     {
         MembershipUser user = Membership.GetUser();
         DataSetTableAdapters.MemberInfoTableAdapter da = new DataSetTableAdapters.MemberInfoTableAdapter();
-        DataSet.MemberInfoDataTable dt = da.GetMember((Guid)user.ProviderUserKey);
+        DataSet.MemberInfoDataTable dt = da.GetMember(user.ProviderUserKey.ToString());
         if (dt.Rows.Count == 1)
         {
             DataSet.MemberInfoRow mr = dt[0];
@@ -69,17 +69,17 @@
     {
         byte[] thumbimage = ImageUtils.MakeThumb(newavatar.FileBytes, 69, 69);
         DataSetTableAdapters.MemberInfo1TableAdapter m = new DataSetTableAdapters.MemberInfo1TableAdapter();
-        Guid memberid = (Guid)(Membership.GetUser().ProviderUserKey);
-        Guid origid = memberid;
+        string memberid = Membership.GetUser().ProviderUserKey.ToString ();
+        string origid = memberid;
         m.Update(memberid, thumbimage, origid);
-        avatarimage.ImageUrl = "AvatarImagefetch.ashx?Memberid=" + memberid.ToString();
+        avatarimage.ImageUrl = "AvatarImagefetch.ashx?Memberid=" + memberid;
     }
 
     protected void clearimage_Click(object sender, System.EventArgs e)
     {
         DataSetTableAdapters.MemberInfo1TableAdapter m = new DataSetTableAdapters.MemberInfo1TableAdapter();
-        Guid memberid = ((Guid)(Membership.GetUser().ProviderUserKey));
-        Guid origid = memberid;
+        string memberid = Membership.GetUser().ProviderUserKey.ToString ();
+        string origid = memberid;
         m.Update(memberid, null, origid);
         avatarimage.ImageUrl = "images/nophoto.gif";
     }
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Member_List.aspx trunk/Member_List.aspx
--- vendor/Member_List.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Member_List.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -90,7 +90,8 @@
                 <div class="newscrumbs">
                     <asp:LinkButton ID="showall" runat="server" Text="Show All" OnClick="showall_Click" />
                     <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="SqlDataSource1"
-                        runat="server" SelectCommand="MemberCountByLetter" SelectCommandType="StoredProcedure" />
+                        runat="server" SelectCommand="MemberCountByLetter" SelectCommandType="StoredProcedure" 
+				       ProviderName="Npgsql2" />
                     <asp:Repeater DataSourceID="SqlDataSource1" ID="Repeater1" runat="server">
                         <ItemTemplate>
                             <asp:LinkButton ID="hp1" runat="server" Text='<%#Eval("letter")%>' Visible='<%# Convert.ToInt32(Eval("num"))>0 %>'
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Member_Register.aspx trunk/Member_Register.aspx
--- vendor/Member_Register.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Member_Register.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -1,6 +1,6 @@
 <%@ Page Language="C#" MasterPageFile="~/Default.master" Title="New Member Registration" %>
 
-<%@ Register Src="Photos_formpicker.ascx" TagName="Photos_formpicker" TagPrefix="Club" %>
+<%@ Register Src="photos_formpicker.ascx" TagName="Photos_formpicker" TagPrefix="Club" %>
 <%@ Register TagPrefix="Club" Namespace="ClubSite" %>
 
 <script runat="server">
@@ -10,7 +10,7 @@
         {
             DataSetTableAdapters.MemberInfoTableAdapter da = new DataSetTableAdapters.MemberInfoTableAdapter();
             MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName);
-            da.Insert(((Guid)(user.ProviderUserKey)), Addr.Text, Phone.Text, fname.Text, lname.Text);
+            da.Insert(user.ProviderUserKey.ToString (), Addr.Text, Phone.Text, fname.Text, lname.Text);
             user.IsApproved = true;
             Membership.UpdateUser(user);
             FormsAuthentication.SetAuthCookie(CreateUserWizard1.UserName, false);
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/News_Edit.aspx trunk/News_Edit.aspx
--- vendor/News_Edit.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/News_Edit.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -83,7 +83,7 @@
 
     protected void AlbumList_Selecting(object sender, System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs e)
     {
-        DbParameter param = e.Command.Parameters["@userid"];
+        DbParameter param = e.Command.Parameters[":userid"];
         param.DbType = DbType.Guid;
         if (Page.User.Identity.IsAuthenticated)
         {
@@ -267,10 +267,10 @@
         </asp:FormView>
     </div>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-        SelectCommand="SELECT id, itemdate, title, description, staticURL, photo, albumid from announcements where Announcements.id=@id"
-        InsertCommand="INSERT INTO Announcements(itemdate, title, description, staticURL, photo, albumid) VALUES (@itemdate, @title, @description, @staticURL, @photo, @albumid)"
-        UpdateCommand="UPDATE Announcements SET itemdate = @itemdate, title = @title, description = @description, staticURL = @staticURL, photo = @photo, albumid = @albumid WHERE (id = @id)"
-        DeleteCommand="Delete from Announcements where id=@id" OldValuesParameterFormatString="{0}">
+        SelectCommand="SELECT id, itemdate, title, description, staticURL, photo, albumid from announcements where Announcements.id=:id"
+        InsertCommand="INSERT INTO Announcements(itemdate, title, description, staticURL, photo, albumid) VALUES (:itemdate, :title, :description, :staticURL, :photo, :albumid)"
+        UpdateCommand="UPDATE Announcements SET itemdate = :itemdate, title = :title, description = :description, staticURL = :staticURL, photo = :photo, albumid = :albumid WHERE (id = :id)" ProviderName="Npgsql2"
+        DeleteCommand="Delete from Announcements where id=:id" OldValuesParameterFormatString="{0}">
         <SelectParameters>
             <asp:QueryStringParameter Name="id" QueryStringField="ArticleID" />
         </SelectParameters>
@@ -300,7 +300,7 @@
     </asp:SqlDataSource>
     <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="AlbumList"
         runat="server" SelectCommand="AlbumList" SelectCommandType="StoredProcedure"
-        OnSelecting="AlbumList_Selecting">
+        OnSelecting="AlbumList_Selecting" ProviderName="Npgsql2">
         <SelectParameters>
             <asp:Parameter Name="userid" />
         </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/News_List.aspx trunk/News_List.aspx
--- vendor/News_List.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/News_List.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -8,8 +8,8 @@
 
     protected void SqlDataSource1_Selected(object sender, System.Web.UI.WebControls.SqlDataSourceStatusEventArgs e)
     {
-        int pages;
-        pages = (int)e.Command.Parameters["@pageCount"].Value;
+        int pageSize = (int)e.Command.Parameters[":pageSize"].Value;
+        int pages = pageSize != 0 ? e.AffectedRows / pageSize : 0;
         pn1.Count = pages;
         Pn2.Count = pages;
     }
@@ -63,7 +63,8 @@
         <div id="columnright">
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="PagedAnnouncementList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected">
+                    SelectCommand="PagedAnnouncementList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected"
+				   ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:ControlParameter Name="pageNum" ControlID="pn1" PropertyName="SelectedPage" />
                         <asp:Parameter DefaultValue="10" Name="pageSize" Type="Int32" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/News_View.aspx trunk/News_View.aspx
--- vendor/News_View.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/News_View.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -5,7 +5,7 @@
 <%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
 
 <%@ Import Namespace="System.Data" %>
-<%@ Import Namespace="System.Data.SqlClient" %>
+<%@ Import Namespace="Npgsql" %>
 
 <script runat="server">
 
@@ -109,12 +109,12 @@
     {
         try
         {
-            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
-            SqlCommand command = new SqlCommand("dbo.NextPrevAnnouncement", connection);
+            NpgsqlConnection connection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
+            NpgsqlCommand command = new NpgsqlCommand("NextPrevAnnouncement", connection);
         
-            SqlParameter param0 = new SqlParameter("@id", ArticleID);
-            SqlParameter param1 = new SqlParameter("@previd", INVALIDID);
-            SqlParameter param2 = new SqlParameter("@nextid", INVALIDID);
+            NpgsqlParameter param0 = new NpgsqlParameter(":id", ArticleID);
+            NpgsqlParameter param1 = new NpgsqlParameter(":previd", INVALIDID);
+            NpgsqlParameter param2 = new NpgsqlParameter(":nextid", INVALIDID);
             
             param1.Direction = ParameterDirection.InputOutput;
             param2.Direction = ParameterDirection.InputOutput;
@@ -180,7 +180,7 @@
                     luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
             </div>
             <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubsiteDB %>"
-                SelectCommand="SELECT images.id, images.album, images.title FROM images, announcements WHERE images.album=announcements.albumid AND announcements.id=@id"
+                SelectCommand="SELECT images.id, images.album, images.title FROM images, announcements WHERE images.album=announcements.albumid AND announcements.id=:id" ProviderName="Npgsql2"
                 OnSelected="SqlDataSource2_Selected">
                 <SelectParameters>
                     <asp:Parameter Type="Int32" DefaultValue="1" Name="id"></asp:Parameter>
@@ -217,7 +217,7 @@
                 <div class="dashedline">
                 </div>
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                    SelectCommand="SELECT id, itemdate, title, description, photo, albumid, staticURL FROM Announcements WHERE (id = @id)">
+                    SelectCommand="SELECT id, itemdate, title, description, photo, albumid, staticURL FROM Announcements WHERE (id = :id)" ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:Parameter Type="Int32" DefaultValue="1" Name="id"></asp:Parameter>
                     </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/PhotoAlbum_Contents.aspx trunk/PhotoAlbum_Contents.aspx
--- vendor/PhotoAlbum_Contents.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/PhotoAlbum_Contents.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -84,8 +84,8 @@
                     luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
             </div>
             <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubsiteDB %>"
-                SelectCommand="SELECT id, title, notes FROM images WHERE (album = @albumid)"
-                DeleteCommand="DELETE FROM images WHERE (id = @id)" UpdateCommand="UPDATE images SET title = @title, notes = @notes WHERE (id = @id)"
+                SelectCommand="SELECT id, title, notes FROM images WHERE (album = :albumid)"
+                DeleteCommand="DELETE FROM images WHERE id = :id" UpdateCommand="UPDATE images SET title = :title, notes = :notes WHERE id = :id" ProviderName="Npgsql2"
                 OldValuesParameterFormatString="{0}">
                 <SelectParameters>
                     <asp:QueryStringParameter DefaultValue="1" Name="albumid" QueryStringField="albumid" />
@@ -123,8 +123,8 @@
         <div id="columnright">
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubsiteDB %>"
-                    SelectCommand="SELECT title, ownerid, private, description, albumid FROM albums WHERE (albumid = @albumid)"
-                    DeleteCommand="DELETE FROM Albums WHERE (albumid = @albumid)" UpdateCommand="UPDATE Albums SET title = @title, private = @private, description = @description WHERE (albumid = @albumid)"
+                    SelectCommand="SELECT title, ownerid, private, description, albumid FROM albums WHERE (albumid = :albumid)"
+                    DeleteCommand="DELETE FROM Albums WHERE (albumid = :albumid)" UpdateCommand="UPDATE Albums SET title = :title, private = :private, description = :description WHERE (albumid = :albumid)" ProviderName="Npgsql2"
                     OldValuesParameterFormatString="{0}">
                     <SelectParameters>
                         <asp:QueryStringParameter DefaultValue="1" Name="albumid" QueryStringField="albumid" />
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/PhotoAlbum_List.aspx trunk/PhotoAlbum_List.aspx
--- vendor/PhotoAlbum_List.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/PhotoAlbum_List.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -7,8 +7,8 @@
 <script runat="server">
     protected void SqlDataSource1_Selected(object sender, System.Web.UI.WebControls.SqlDataSourceStatusEventArgs e)
     {
-        int pages;
-        pages = Convert.ToInt32(e.Command.Parameters["@pageCount"].Value);
+        int pageSize = (int)e.Command.Parameters[":pageSize"].Value;
+        int pages = pageSize != 0 ? e.AffectedRows / pageSize : 0;
         pn1.Count = pages;
         pn2.Count = pages;
     }
@@ -27,11 +27,11 @@
     {
         if (User.Identity.IsAuthenticated)
         {
-            e.Command.Parameters["@ownerid"].Value = Membership.GetUser().ProviderUserKey;
+            e.Command.Parameters[":ownerid"].Value = Membership.GetUser().ProviderUserKey;
         }
         else
         {
-            e.Command.Parameters["@ownerid"].Value = DBNull.Value;
+            e.Command.Parameters[":ownerid"].Value = DBNull.Value;
         }
     }
 
@@ -73,12 +73,12 @@
             <div class="rightblock">
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubsiteDB %>"
                     SelectCommand="PagedAlbumList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected"
-                    OnSelecting="SqlDataSource1_Selecting">
+                    OnSelecting="SqlDataSource1_Selecting" ProviderName="Npgsql2">
                     <SelectParameters>
+                        <asp:Parameter Name="ownerid" />
                         <asp:ControlParameter Name="pageNum" ControlID="pn1" PropertyName="SelectedPage" />
                         <asp:Parameter DefaultValue="16" Name="pageSize" Type="Int32" />
                         <asp:Parameter Name="pageCount" Direction="ReturnValue" Type="Int32" />
-                        <asp:Parameter Name="ownerid" />
                     </SelectParameters>
                 </asp:SqlDataSource>
                 <div class="newscrumbs">
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/PhotoAlbum_New.aspx trunk/PhotoAlbum_New.aspx
--- vendor/PhotoAlbum_New.aspx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/PhotoAlbum_New.aspx	2008-12-24 00:24:29.000000000 -0500
@@ -14,7 +14,7 @@
     {
         if (User.Identity.IsAuthenticated)
         {
-            e.Command.Parameters["@ownerid"].Value = Membership.GetUser().ProviderUserKey;
+            e.Command.Parameters[":ownerid"].Value = Membership.GetUser().ProviderUserKey;
         }
         else
         {
@@ -61,9 +61,10 @@
                 <h2>
                     Add new Album</h2>
                 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubsiteDB %>"
-                    SelectCommand="SELECT title, ownerid, private FROM albums WHERE (albumid = @albumid)"
-                    InsertCommand="INSERT INTO Albums(title, parentid, ownerid, private) VALUES (@title, @parentid, @ownerid, @private)"
-                    OldValuesParameterFormatString="{0}" OnInserting="SqlDataSource1_Inserting" OnInserted="SqlDataSource1_Inserted">
+                    SelectCommand="SELECT title, ownerid, private FROM albums WHERE (albumid = :albumid)"
+                    InsertCommand="INSERT INTO Albums(title, parentid, ownerid, private) VALUES (:title, :parentid, :ownerid, :private)"
+                    OldValuesParameterFormatString="{0}" OnInserting="SqlDataSource1_Inserting" OnInserted="SqlDataSource1_Inserted"
+				   ProviderName="Npgsql2">
                     <SelectParameters>
                         <asp:Parameter Name="albumid" />
                     </SelectParameters>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/photoalbum_picker.ascx trunk/photoalbum_picker.ascx
--- vendor/photoalbum_picker.ascx	1969-12-31 19:00:00.000000000 -0500
+++ trunk/photoalbum_picker.ascx	2008-12-24 00:24:29.000000000 -0500
@@ -0,0 +1,113 @@
+<%@ Control Language="C#" ClassName="AlbumPicker" %>
+<%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
+<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
+
+<script runat="server">
+    protected void albumselect_SelectedIndexChanged(object sender, System.EventArgs e)
+    {
+        if (albumselect.SelectedIndex != 0)
+        {
+            FormView1.PageIndex = albumselect.SelectedIndex - 1;
+            FormView1.Visible = true;
+        }
+        else
+        {
+            FormView1.Visible = false;
+        }
+    }
+
+    public object AlbumID
+    {
+        get
+        {
+            object o = albumselect.SelectedValue;
+            if (o != null && (string)o != "")
+            {
+                int val = Convert.ToInt32(o);
+                if (val > 0)
+                {
+                    return val;
+                }
+            }
+            return DBNull.Value;
+        }
+        set
+        {
+            if (value == null || value == DBNull.Value)
+            {
+                FormView1.Visible = false;
+                albumselect.SelectedIndex = 0;
+            }
+            else
+            {
+                albumselect.SelectedValue = Convert.ToString(value);
+                albumselect.DataBind();
+                FormView1.PageIndex = albumselect.SelectedIndex - 1;
+                FormView1.Visible = true;
+            }
+        }
+    }
+
+    protected void albumselect_DataBinding(object sender, System.EventArgs e)
+    {
+        albumselect.Items.Clear();
+        albumselect.Items.Add(new ListItem("No Album Selected", "0"));
+    }
+
+    protected void AlbumList_Selecting(object sender, System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs e)
+    {
+        if (Page.User.Identity.IsAuthenticated)
+        {
+            e.Command.Parameters[":userid"].Value = Membership.GetUser().ProviderUserKey;
+        }
+        else
+        {
+            e.Command.Parameters[":userid"].Value = DBNull.Value;
+        }
+    }
+</script>
+
+<div class="controlblock">
+    <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="AlbumList"
+        runat="server" SelectCommand="AlbumList" SelectCommandType="StoredProcedure"
+        OnSelecting="AlbumList_Selecting" ProviderName="Npgsql2">
+        <SelectParameters>
+            <asp:Parameter Name="userid" />
+        </SelectParameters>
+    </asp:SqlDataSource>
+    <table>
+        <tr valign="top">
+            <td style="height: 47px">
+                <asp:ListBox DataSourceID="AlbumList" DataTextField="title" DataValueField="albumid"
+                    AutoPostBack="true" ID="albumselect" runat="server" AppendDataBoundItems="true"
+                    Rows="5" OnSelectedIndexChanged="albumselect_SelectedIndexChanged" OnDataBinding="albumselect_DataBinding">
+                </asp:ListBox></td>
+            <td>
+                <asp:FormView DataSourceID="AlbumList" ID="FormView1" runat="server">
+                    <ItemTemplate>
+                        <div style="float: left;">
+                            <Club:ImageThumbnail ID="ImageThumbnail1" runat="server" PhotoID='<%# Eval("DisplayImage") %>' />
+                        </div>
+                        <div>
+                            <h4>
+                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("title") %>' /></h4>
+                            <p>
+                                <asp:Label ID="desclabel" runat="server" Text='<%# Eval("description") %>' />
+                            </p>
+                            <p>
+                                Album contains
+                                <asp:Label ID="imagecount" runat="server" Text='<%# Eval("ImageCount") %>' />
+                                images.
+                                <asp:Label ID="privateLabel" runat="server" Text=" Album is Private. " Visible='<%# (bool)Eval("Private") %>' />
+                                <asp:HyperLink ID="viewlink" runat="server" NavigateUrl='<%# "photoalbum_contents.aspx?Albumid=" + Convert.ToString(Eval("AlbumID")) %>'
+                                    Target="_blank" Text="View Album"></asp:HyperLink>
+                            </p>
+                        </div>
+                    </ItemTemplate>
+                </asp:FormView>
+            </td>
+        </tr>
+    </table>
+    <Club:RolloverLink ID="addlocation" runat="server" NavigateURL="photoalbum_new.aspx?Action=new"
+        Text="Add new location" target="_blank" />
+</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/PhotoAlbum_Picker.ascx trunk/PhotoAlbum_Picker.ascx
--- vendor/PhotoAlbum_Picker.ascx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/PhotoAlbum_Picker.ascx	1969-12-31 19:00:00.000000000 -0500
@@ -1,113 +0,0 @@
-<%@ Control Language="C#" ClassName="AlbumPicker" %>
-<%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>
-<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
-
-<script runat="server">
-    protected void albumselect_SelectedIndexChanged(object sender, System.EventArgs e)
-    {
-        if (albumselect.SelectedIndex != 0)
-        {
-            FormView1.PageIndex = albumselect.SelectedIndex - 1;
-            FormView1.Visible = true;
-        }
-        else
-        {
-            FormView1.Visible = false;
-        }
-    }
-
-    public object AlbumID
-    {
-        get
-        {
-            object o = albumselect.SelectedValue;
-            if (o != null && (string)o != "")
-            {
-                int val = Convert.ToInt32(o);
-                if (val > 0)
-                {
-                    return val;
-                }
-            }
-            return DBNull.Value;
-        }
-        set
-        {
-            if (value == null || value == DBNull.Value)
-            {
-                FormView1.Visible = false;
-                albumselect.SelectedIndex = 0;
-            }
-            else
-            {
-                albumselect.SelectedValue = Convert.ToString(value);
-                albumselect.DataBind();
-                FormView1.PageIndex = albumselect.SelectedIndex - 1;
-                FormView1.Visible = true;
-            }
-        }
-    }
-
-    protected void albumselect_DataBinding(object sender, System.EventArgs e)
-    {
-        albumselect.Items.Clear();
-        albumselect.Items.Add(new ListItem("No Album Selected", "0"));
-    }
-
-    protected void AlbumList_Selecting(object sender, System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs e)
-    {
-        if (Page.User.Identity.IsAuthenticated)
-        {
-            e.Command.Parameters["@userid"].Value = Membership.GetUser().ProviderUserKey;
-        }
-        else
-        {
-            e.Command.Parameters["@userid"].Value = DBNull.Value;
-        }
-    }
-</script>
-
-<div class="controlblock">
-    <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" ID="AlbumList"
-        runat="server" SelectCommand="AlbumList" SelectCommandType="StoredProcedure"
-        OnSelecting="AlbumList_Selecting">
-        <SelectParameters>
-            <asp:Parameter Name="userid" />
-        </SelectParameters>
-    </asp:SqlDataSource>
-    <table>
-        <tr valign="top">
-            <td style="height: 47px">
-                <asp:ListBox DataSourceID="AlbumList" DataTextField="title" DataValueField="albumid"
-                    AutoPostBack="true" ID="albumselect" runat="server" AppendDataBoundItems="true"
-                    Rows="5" OnSelectedIndexChanged="albumselect_SelectedIndexChanged" OnDataBinding="albumselect_DataBinding">
-                </asp:ListBox></td>
-            <td>
-                <asp:FormView DataSourceID="AlbumList" ID="FormView1" runat="server">
-                    <ItemTemplate>
-                        <div style="float: left;">
-                            <Club:ImageThumbnail ID="ImageThumbnail1" runat="server" PhotoID='<%# Eval("DisplayImage") %>' />
-                        </div>
-                        <div>
-                            <h4>
-                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("title") %>' /></h4>
-                            <p>
-                                <asp:Label ID="desclabel" runat="server" Text='<%# Eval("description") %>' />
-                            </p>
-                            <p>
-                                Album contains
-                                <asp:Label ID="imagecount" runat="server" Text='<%# Eval("ImageCount") %>' />
-                                images.
-                                <asp:Label ID="privateLabel" runat="server" Text=" Album is Private. " Visible='<%# (bool)Eval("Private") %>' />
-                                <asp:HyperLink ID="viewlink" runat="server" NavigateUrl='<%# "photoalbum_contents.aspx?Albumid=" + Convert.ToString(Eval("AlbumID")) %>'
-                                    Target="_blank" Text="View Album"></asp:HyperLink>
-                            </p>
-                        </div>
-                    </ItemTemplate>
-                </asp:FormView>
-            </td>
-        </tr>
-    </table>
-    <Club:RolloverLink ID="addlocation" runat="server" NavigateURL="photoalbum_new.aspx?Action=new"
-        Text="Add new location" target="_blank" />
-</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/photos_formpicker.ascx trunk/photos_formpicker.ascx
--- vendor/photos_formpicker.ascx	1969-12-31 19:00:00.000000000 -0500
+++ trunk/photos_formpicker.ascx	2008-12-24 00:24:29.000000000 -0500
@@ -0,0 +1,242 @@
+<%@ Control Language="C#" ClassName="Photos_formpicker" %>
+<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
+
+<%@ Import Namespace="System.Text" %>
+<%@ Import Namespace="System.Data" %>
+<%@ Import Namespace="System.Data.Common" %>
+
+<script runat="server">
+    
+    const string CLIENTSCRIPTPREFIX = "__FormPhotoPicker_";
+
+    public int ImageId
+    {
+        get
+        {
+            EnsureChildControls();
+            if (viewswitch.ActiveViewIndex == 1)
+            {
+                return Convert.ToInt32(selectedimage.Value);
+            }
+            else
+            {
+                object id = ViewState["ImageID"];
+                if (id == null)
+                {
+                    ViewState["ImageID"] = 0;
+                    return 0;
+                }
+                else
+                {
+                    return Convert.ToInt32(id);
+                }
+            }
+        }
+        set
+        {
+            ViewState["ImageID"] = value;
+        }
+    }
+
+    public bool SmallImage
+    {
+        get
+        {
+            object o = ViewState["SmallImage"];
+            if (o != null)
+            {
+                return Convert.ToBoolean(o);
+            }
+            else
+            {
+                return false;
+            }
+        }
+        set
+        {
+            ViewState["SmallImage"] = value;
+        }
+    }
+
+    string imagesize()
+    {
+        return (SmallImage) ? "1" : "0";
+    }
+
+    protected void Page_PreRender(object sender, System.EventArgs e)
+    {
+        RenderScript();
+        if (ImageId != 0)
+        {
+            imagepreview.ImageUrl = "imagefetch.ashx?ImageID=" + ImageId.ToString() + "&Size=" + imagesize();
+        }
+        else
+        {
+            imagepreview.ImageUrl = "images/nophoto.gif";
+        }
+    }
+
+    protected void ShowPickExistingBtn_Click(object sender, System.EventArgs e)
+    {
+        viewswitch.SetActiveView(pickexistingview);
+    }
+
+    protected void ShowUploadBtn_Click(object sender, System.EventArgs e)
+    {
+        viewswitch.SetActiveView(uploadimageview);
+    }
+
+    protected void Page_Load(object sender, System.EventArgs e)
+    {
+        if (!IsPostBack)
+        {
+            viewswitch.SetActiveView(main);
+        }
+    }
+
+    protected void ClearBtn_Click(object sender, System.EventArgs e)
+    {
+        ImageId = 0;
+    }
+
+    void RenderScript()
+    {
+        StringBuilder sb = new StringBuilder();
+        sb.AppendLine("var " + CLIENTSCRIPTPREFIX + "selecteditem = null;");
+        sb.AppendLine("function " + CLIENTSCRIPTPREFIX + "SelectItem(element, newimageid)");
+        sb.AppendLine("{");
+        sb.AppendLine(" if (" + CLIENTSCRIPTPREFIX + "selecteditem != null)");
+        sb.AppendLine(" {");
+        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem.className='unselected';");
+        sb.AppendLine(" }");
+        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem = element; ");
+        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem.className='selected';");
+        sb.AppendLine(" document.getElementById('" + selectedimage.ClientID + "').value = newimageid;");
+        sb.AppendLine("}");
+        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SelectItem", sb.ToString(), true);
+    }
+
+    protected void existingChosen_Click(object sender, System.EventArgs e)
+    {
+        ImageId = Convert.ToInt32(selectedimage.Value);
+        viewswitch.SetActiveView(main);
+    }
+
+    protected void Cancel_Click(object sender, System.EventArgs e)
+    {
+        viewswitch.SetActiveView(main);
+    }
+
+    protected void UploadBtn_Click(object sender, System.EventArgs e)
+    {
+        int newimageid;
+        newimageid = ImageUtils.uploadImage(Title.Text, Convert.ToInt32(AlbumList2.SelectedValue), FileUpload1.FileContent);
+        ImageId = newimageid;
+        viewswitch.SetActiveView(main);
+    }
+
+    protected void SetOwner(object sender, System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs e)
+    {
+        DbParameter param = e.Command.Parameters[":owner"];
+        //param.DbType = DbType.Guid;
+        if (Page.User.Identity.IsAuthenticated)
+        {
+            param.Value = Membership.GetUser().ProviderUserKey;
+        }
+        else
+        {
+            param.Value = DBNull.Value;
+        }
+    }
+</script>
+
+<div class="controlblock">
+    <asp:MultiView ID="viewswitch" runat="server">
+        <asp:View ID="main" runat="server">
+            <asp:Image runat="server" ID="imagepreview" CssClass="picture" BorderWidth="1" />
+            <div class="contextbuttons">
+                <Club:RolloverButton ID="ShowUploadBtn" Text="Upload new image" runat="server" OnClick="ShowUploadBtn_Click" />
+                <Club:RolloverButton ID="ShowPickExistingBtn" Text="Pick an existing image" runat="server"
+                    OnClick="ShowPickExistingBtn_Click" />
+                <Club:RolloverButton ID="ClearBtn" Text="Clear selection" runat="server" OnClick="ClearBtn_Click" />
+            </div>
+        </asp:View>
+        <asp:View ID="pickexistingview" runat="server">
+            <asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT albumid, title FROM Albums WHERE (ownerid = :owner) OR (private = FALSE)" ProviderName="Npgsql2"
+                ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" OnSelecting="SetOwner">
+                <SelectParameters>
+                    <asp:Parameter Name="owner" />
+                </SelectParameters>
+            </asp:SqlDataSource>
+            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
+                SelectCommand="SELECT title, id FROM images WHERE (album = :album)" ProviderName="Npgsql2">
+                <SelectParameters>
+                    <asp:ControlParameter Name="album" ControlID="AlbumList" PropertyName="SelectedValue"
+                        DefaultValue="1" />
+                </SelectParameters>
+            </asp:SqlDataSource>
+            Select an image:
+            <p>
+                <asp:Label ID="Label1" runat="server" />
+                Photo album: &nbsp; &nbsp;
+                <asp:DropDownList ID="AlbumList" runat="server" DataSourceID="SqlDataSource1" DataTextField="title"
+                    DataValueField="albumid" AutoPostBack="true" />
+            </p>
+            <div class="scrollablelist">
+                <asp:HiddenField ID="selectedimage" runat="server" Value="0" />
+                <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource2" DataKeyField="id"
+                    RepeatColumns="4" CellSpacing="2" CssClass="scrolledtable">
+                    <ItemTemplate>
+                        <div onclick="<%# CLIENTSCRIPTPREFIX + "SelectItem(this, '" + Convert.ToString(Eval("ID")) + "')" %>"
+                            class="unselected">
+                            <asp:Image ImageUrl='<%# "imagefetch.ashx?size=1&imageid=" + Convert.ToString(Eval("id")) %>'
+                                runat="server" ID="idImage" CssClass="selectablephoto" /><br />
+                            <asp:Label Text='<%# Eval("title") %>' runat="server" ID="titleLabel" />
+                        </div>
+                    </ItemTemplate>
+                </asp:DataList>
+            </div>
+            <p>
+            </p>
+            <Club:RolloverButton ID="existingChosen" Text="Use selection" runat="server" OnClick="existingChosen_Click" />
+            <Club:RolloverButton ID="Cancel1" Text="Cancel Selection" runat="server" OnClick="Cancel_Click" />
+        </asp:View>
+        <asp:View ID="uploadimageview" runat="server">
+            <asp:SqlDataSource ID="SqlDataSource3" runat="server" SelectCommand="SELECT albumid, title FROM Albums WHERE (ownerid = :owner) OR (private = FALSE)" ProviderName="Npgsql2"
+                ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" OnSelecting="SetOwner">
+                <SelectParameters>
+                    <asp:Parameter Name="owner" />
+                </SelectParameters>
+            </asp:SqlDataSource>
+            Select a file using the browse button, enter a caption title and click Upload Image.
+            <asp:Label ID="ErrorLabel" runat="server" />
+            <table>
+                <tr>
+                    <td>
+                        Album to upload to:</td>
+                    <td>
+                        <asp:DropDownList ID="AlbumList2" runat="server" DataSourceID="SqlDataSource3" DataTextField="title"
+                            DataValueField="albumid">
+                        </asp:DropDownList></td>
+                </tr>
+                <tr>
+                    <td>
+                        File:</td>
+                    <td>
+                        <asp:FileUpload ID="FileUpload1" runat="server" /></td>
+                </tr>
+                <tr>
+                    <td>
+                        Image title:</td>
+                    <td>
+                        <asp:TextBox ID="Title" runat="server" />
+                    </td>
+                </tr>
+            </table>
+            <p>
+            </p>
+            <Club:RolloverButton ID="UploadBtn" runat="server" Text="Upload Image" OnClick="UploadBtn_Click" />
+            <Club:RolloverButton ID="Cancel2" runat="server" Text="Cancel upload" OnClick="Cancel_Click" />
+        </asp:View>
+    </asp:MultiView>
+</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Photos_FormPicker.ascx trunk/Photos_FormPicker.ascx
--- vendor/Photos_FormPicker.ascx	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Photos_FormPicker.ascx	1969-12-31 19:00:00.000000000 -0500
@@ -1,242 +0,0 @@
-<%@ Control Language="C#" ClassName="Photos_formpicker" %>
-<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
-
-<%@ Import Namespace="System.Text" %>
-<%@ Import Namespace="System.Data" %>
-<%@ Import Namespace="System.Data.Common" %>
-
-<script runat="server">
-    
-    const string CLIENTSCRIPTPREFIX = "__FormPhotoPicker_";
-
-    public int ImageId
-    {
-        get
-        {
-            EnsureChildControls();
-            if (viewswitch.ActiveViewIndex == 1)
-            {
-                return Convert.ToInt32(selectedimage.Value);
-            }
-            else
-            {
-                object id = ViewState["ImageID"];
-                if (id == null)
-                {
-                    ViewState["ImageID"] = 0;
-                    return 0;
-                }
-                else
-                {
-                    return Convert.ToInt32(id);
-                }
-            }
-        }
-        set
-        {
-            ViewState["ImageID"] = value;
-        }
-    }
-
-    public bool SmallImage
-    {
-        get
-        {
-            object o = ViewState["SmallImage"];
-            if (o != null)
-            {
-                return Convert.ToBoolean(o);
-            }
-            else
-            {
-                return false;
-            }
-        }
-        set
-        {
-            ViewState["SmallImage"] = value;
-        }
-    }
-
-    string imagesize()
-    {
-        return (SmallImage) ? "1" : "0";
-    }
-
-    protected void Page_PreRender(object sender, System.EventArgs e)
-    {
-        RenderScript();
-        if (ImageId != 0)
-        {
-            imagepreview.ImageUrl = "imagefetch.ashx?ImageID=" + ImageId.ToString() + "&Size=" + imagesize();
-        }
-        else
-        {
-            imagepreview.ImageUrl = "images/nophoto.gif";
-        }
-    }
-
-    protected void ShowPickExistingBtn_Click(object sender, System.EventArgs e)
-    {
-        viewswitch.SetActiveView(pickexistingview);
-    }
-
-    protected void ShowUploadBtn_Click(object sender, System.EventArgs e)
-    {
-        viewswitch.SetActiveView(uploadimageview);
-    }
-
-    protected void Page_Load(object sender, System.EventArgs e)
-    {
-        if (!IsPostBack)
-        {
-            viewswitch.SetActiveView(main);
-        }
-    }
-
-    protected void ClearBtn_Click(object sender, System.EventArgs e)
-    {
-        ImageId = 0;
-    }
-
-    void RenderScript()
-    {
-        StringBuilder sb = new StringBuilder();
-        sb.AppendLine("var " + CLIENTSCRIPTPREFIX + "selecteditem = null;");
-        sb.AppendLine("function " + CLIENTSCRIPTPREFIX + "SelectItem(element, newimageid)");
-        sb.AppendLine("{");
-        sb.AppendLine(" if (" + CLIENTSCRIPTPREFIX + "selecteditem != null)");
-        sb.AppendLine(" {");
-        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem.className='unselected';");
-        sb.AppendLine(" }");
-        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem = element; ");
-        sb.AppendLine(" " + CLIENTSCRIPTPREFIX + "selecteditem.className='selected';");
-        sb.AppendLine(" document.getElementById('" + selectedimage.ClientID + "').value = newimageid;");
-        sb.AppendLine("}");
-        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SelectItem", sb.ToString(), true);
-    }
-
-    protected void existingChosen_Click(object sender, System.EventArgs e)
-    {
-        ImageId = Convert.ToInt32(selectedimage.Value);
-        viewswitch.SetActiveView(main);
-    }
-
-    protected void Cancel_Click(object sender, System.EventArgs e)
-    {
-        viewswitch.SetActiveView(main);
-    }
-
-    protected void UploadBtn_Click(object sender, System.EventArgs e)
-    {
-        int newimageid;
-        newimageid = ImageUtils.uploadImage(Title.Text, Convert.ToInt32(AlbumList2.SelectedValue), FileUpload1.FileContent);
-        ImageId = newimageid;
-        viewswitch.SetActiveView(main);
-    }
-
-    protected void SetOwner(object sender, System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs e)
-    {
-        DbParameter param = e.Command.Parameters["@owner"];
-        param.DbType = DbType.Guid;
-        if (Page.User.Identity.IsAuthenticated)
-        {
-            param.Value = Membership.GetUser().ProviderUserKey;
-        }
-        else
-        {
-            param.Value = DBNull.Value;
-        }
-    }
-</script>
-
-<div class="controlblock">
-    <asp:MultiView ID="viewswitch" runat="server">
-        <asp:View ID="main" runat="server">
-            <asp:Image runat="server" ID="imagepreview" CssClass="picture" BorderWidth="1" />
-            <div class="contextbuttons">
-                <Club:RolloverButton ID="ShowUploadBtn" Text="Upload new image" runat="server" OnClick="ShowUploadBtn_Click" />
-                <Club:RolloverButton ID="ShowPickExistingBtn" Text="Pick an existing image" runat="server"
-                    OnClick="ShowPickExistingBtn_Click" />
-                <Club:RolloverButton ID="ClearBtn" Text="Clear selection" runat="server" OnClick="ClearBtn_Click" />
-            </div>
-        </asp:View>
-        <asp:View ID="pickexistingview" runat="server">
-            <asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT albumid, title FROM Albums WHERE (ownerid = @owner) OR (private = 0)"
-                ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" OnSelecting="SetOwner">
-                <SelectParameters>
-                    <asp:Parameter Name="owner" />
-                </SelectParameters>
-            </asp:SqlDataSource>
-            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
-                SelectCommand="SELECT title, id FROM images WHERE (album = @album)">
-                <SelectParameters>
-                    <asp:ControlParameter Name="album" ControlID="AlbumList" PropertyName="SelectedValue"
-                        DefaultValue="1" />
-                </SelectParameters>
-            </asp:SqlDataSource>
-            Select an image:
-            <p>
-                <asp:Label ID="Label1" runat="server" />
-                Photo album: &nbsp; &nbsp;
-                <asp:DropDownList ID="AlbumList" runat="server" DataSourceID="SqlDataSource1" DataTextField="title"
-                    DataValueField="albumid" AutoPostBack="true" />
-            </p>
-            <div class="scrollablelist">
-                <asp:HiddenField ID="selectedimage" runat="server" Value="0" />
-                <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource2" DataKeyField="id"
-                    RepeatColumns="4" CellSpacing="2" CssClass="scrolledtable">
-                    <ItemTemplate>
-                        <div onclick="<%# CLIENTSCRIPTPREFIX + "SelectItem(this, '" + Convert.ToString(Eval("ID")) + "')" %>"
-                            class="unselected">
-                            <asp:Image ImageUrl='<%# "imagefetch.ashx?size=1&imageid=" + Convert.ToString(Eval("id")) %>'
-                                runat="server" ID="idImage" CssClass="selectablephoto" /><br />
-                            <asp:Label Text='<%# Eval("title") %>' runat="server" ID="titleLabel" />
-                        </div>
-                    </ItemTemplate>
-                </asp:DataList>
-            </div>
-            <p>
-            </p>
-            <Club:RolloverButton ID="existingChosen" Text="Use selection" runat="server" OnClick="existingChosen_Click" />
-            <Club:RolloverButton ID="Cancel1" Text="Cancel Selection" runat="server" OnClick="Cancel_Click" />
-        </asp:View>
-        <asp:View ID="uploadimageview" runat="server">
-            <asp:SqlDataSource ID="SqlDataSource3" runat="server" SelectCommand="SELECT albumid, title FROM Albums WHERE (ownerid = @owner) OR (private = 0)"
-                ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" OnSelecting="SetOwner">
-                <SelectParameters>
-                    <asp:Parameter Name="owner" />
-                </SelectParameters>
-            </asp:SqlDataSource>
-            Select a file using the browse button, enter a caption title and click Upload Image.
-            <asp:Label ID="ErrorLabel" runat="server" />
-            <table>
-                <tr>
-                    <td>
-                        Album to upload to:</td>
-                    <td>
-                        <asp:DropDownList ID="AlbumList2" runat="server" DataSourceID="SqlDataSource3" DataTextField="title"
-                            DataValueField="albumid">
-                        </asp:DropDownList></td>
-                </tr>
-                <tr>
-                    <td>
-                        File:</td>
-                    <td>
-                        <asp:FileUpload ID="FileUpload1" runat="server" /></td>
-                </tr>
-                <tr>
-                    <td>
-                        Image title:</td>
-                    <td>
-                        <asp:TextBox ID="Title" runat="server" />
-                    </td>
-                </tr>
-            </table>
-            <p>
-            </p>
-            <Club:RolloverButton ID="UploadBtn" runat="server" Text="Upload Image" OnClick="UploadBtn_Click" />
-            <Club:RolloverButton ID="Cancel2" runat="server" Text="Cancel upload" OnClick="Cancel_Click" />
-        </asp:View>
-    </asp:MultiView>
-</div>
diff -U3 -x '.svn*' -x '*.dll' -x '*.mdb' -x '*.spec' -x makesrpm.sh -Narp vendor/Web.config trunk/Web.config
--- vendor/Web.config	2008-12-23 14:41:29.000000000 -0500
+++ trunk/Web.config	2008-12-24 00:24:29.000000000 -0500
@@ -1,5 +1,8 @@
 <?xml version="1.0"?>
 <configuration>
+	<appSettings>
+		<add key="MonoAspnetInhibitSettingsMap" value="true"/>
+	</appSettings>
 	<location path="events_edit.aspx">
 		<system.web>
 			<authorization>
@@ -46,20 +49,47 @@
 			</authorization>
 		</system.web>
 	</location>
+	<system.data>
+          <DbProviderFactories>
+            <add name="Npgsql2 Data Provider" invariant="Npgsql2" description=".Net Framework Data Provider for PostgreSQL" 
+                 type="Npgsql.NpgsqlFactory, Npgsql2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
+          </DbProviderFactories>
+        </system.data>
 	<connectionStrings>
-		<add name="ClubSiteDB" connectionString="Data Source=.\SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|Club.mdf;User Instance=True" providerName="System.Data.SqlClient"/>
+		<add name="ClubSiteDB" connectionString="SERVER=127.0.0.1;Database=club;User Name=test;Password=test" providerName="Npgsql2"/>
 	</connectionStrings>
 	<system.web>
-		<roleManager enabled="true"/>
+		<roleManager enabled="true">
+		  <providers>
+                    <clear/>
+		    <add name="AspNetSqlRoleProvider" connectionStringName="ClubSiteDB" applicationName="/"
+			 type="NauckIT.PostgreSQLProvider.PgRoleProvider, PostgreSQLProviders, Version=1.0.2698.20744, Culture=neutral, PublicKeyToken=e35c7087b53d61d1"/>
+                  </providers>
+		</roleManager>
 		<authentication mode="Forms"/>
-		<compilation debug="false">
+		<compilation debug="true">
 			<assemblies>
 				<add assembly="System.Xml, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
 				<add assembly="System.Messaging, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
 				<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
+				<add assembly="Npgsql2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
 			</assemblies>
 		</compilation>
-		<membership defaultProvider="AspNetSqlMembershipProvider"/>
+		<machineKey 
+		    validationKey="3F63D6574F7A5C33B471158FE1245CA03437E1D2729BB0E7E1A2BA4A39554AC4C4E745A4E734366D7F8D425642ECDFED9A058B476504FD86A829AFA520B2F5FE"
+		    decryptionKey="650267CF96C2716A7BC718CC51AC7D35D86944B4526AD999" 
+		    decryption="AES"
+		    validation="3DES" />
+		<membership defaultProvider="AspNetSqlMembershipProvider">
+		  <providers>
+                                <clear/>
+                                <add
+                                name="AspNetSqlMembershipProvider"
+                                type="NauckIT.PostgreSQLProvider.PgMembershipProvider, PostgreSQLProviders, Version=1.0.2698.20744, Cultur
+e=neutral, PublicKeyToken=e35c7087b53d61d1" connectionStringName="ClubSiteDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression
+=""/>
+                        </providers>
+		</membership>
 		<siteMap defaultProvider="AspNetXmlSiteMapProvider" enabled="true">
 			<providers>
 				<remove name="AspNetXmlSiteMapProvider"/>