--- biblio.install.orig	2007-12-13 16:07:46.000000000 -0600
+++ biblio.install.new	2008-02-05 17:23:41.000000000 -0600
@@ -1,235 +1,228 @@
 <?PHP
 // $Id: biblio.install,v 1.12.2.35 2007/12/04 16:28:49 rjerome Exp $
+
 function biblio_install() {
+  $db = db_data_types();
   $result = array();
-  
-  switch ($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-    
-      $result[] = db_query("alter table {node} modify title varchar(255);");
-      $result[] = db_query("alter table {node_revisions} modify title varchar(255);");
+
+      $result[] = db_query(alter_column_sql('node', 'title', 'varchar(255)'));
+      $result[] = db_query(alter_column_sql('node_revisions', 'title', 'varchar(255)'));
   
       $result[] = db_query ("CREATE TABLE {biblio} (
-        `nid` int(10) NOT NULL default '0',
-        `vid` int(10) NOT NULL default '0',
-        `biblio_type` int(11) NOT NULL default '0',
-        `biblio_number` varchar(10) default NULL,
-        `biblio_section` varchar(10) default NULL,
-        `biblio_other_number` varchar(24) default NULL,
-        `biblio_secondary_title` varchar(255) default NULL,
-        `biblio_tertiary_title` varchar(255) default NULL,
-        `biblio_short_title` varchar(255) default NULL,
-        `biblio_alternate_title` varchar(255) default NULL,
-        `biblio_translated_title` varchar(255) default NULL,
-        `biblio_authors` varchar(255) default NULL,
-        `biblio_secondary_authors` varchar(255) default NULL,
-        `biblio_tertiary_authors` varchar(255) default NULL,
-        `biblio_corp_author` varchar(255) default NULL,
-        `biblio_other_author_affiliations` varchar(255) default NULL,
-        `biblio_edition` varchar(255) default NULL,
-        `biblio_publisher` varchar(255) default NULL,
-        `biblio_original_publication` varchar(255) default NULL,
-        `biblio_reprint_edition` varchar(255) default NULL,
-        `biblio_place_published` varchar(255) default NULL,
-        `biblio_year` int(11) NOT NULL default '9999',
-        `biblio_volume` varchar(10) default NULL,
-        `biblio_number_of_volumes` varchar(10) default NULL,
-        `biblio_pages` varchar(128) default NULL,
-        `biblio_date` varchar(16) default NULL,
-        `biblio_isbn` varchar(24) default NULL,
-        `biblio_issn` varchar(24) default NULL,
-        `biblio_lang` varchar(24) default 'eng',
-        `biblio_abst_e` text,
-        `biblio_abst_f` text,
-        `biblio_full_text` tinyint(4) default '0',
-        `biblio_keywords` varchar(255) default NULL,
-        `biblio_url` varchar(255) default NULL,
-        `biblio_doi` varchar(100) default NULL,
-        `biblio_issue` varchar(10) default NULL,
-        `biblio_type_of_work` varchar(255) default NULL,
-        `biblio_accession_number` varchar(24) default NULL,
-        `biblio_call_number` varchar(24) default NULL,
-        `biblio_notes` text,
-        `biblio_coins` text,
-        `biblio_research_notes` text,
-        `biblio_custom1` text,
-        `biblio_custom2` text,
-        `biblio_custom3` text,
-        `biblio_custom4` text,
-        `biblio_custom5` text,
-        `biblio_custom6` text,
-        `biblio_custom7` text,
-        `biblio_auth_address` text,
-        `biblio_remote_db_name` varchar(255) default NULL,
-        `biblio_remote_db_provider` varchar(255) default NULL,
-        `biblio_citekey` varchar(16) default NULL,
-        `biblio_label` varchar(255) default NULL,
-        `biblio_access_date` varchar(255) default NULL,
-       PRIMARY KEY  (`vid`),
-        KEY `nid` (`nid`),
-        KEY `type` (`biblio_type`),
-        KEY `year` (`biblio_year`),
-        FULLTEXT KEY `keywords` (`biblio_keywords`),
-        FULLTEXT KEY `publisher` (`biblio_publisher`),
-        FULLTEXT KEY `authors` (`biblio_authors`)
-      )  /*!40100 ENGINE=MyISAM DEFAULT CHARACTER SET utf8 */;");
+        nid $db[int10] NOT NULL default '0',
+        vid $db[int10] NOT NULL default '0',
+        biblio_type $db[int11] NOT NULL default '0',
+        biblio_number varchar(10) default NULL,
+        biblio_section varchar(10) default NULL,
+        biblio_other_number varchar(24) default NULL,
+        biblio_secondary_title varchar(255) default NULL,
+        biblio_tertiary_title varchar(255) default NULL,
+        biblio_short_title varchar(255) default NULL,
+        biblio_alternate_title varchar(255) default NULL,
+        biblio_translated_title varchar(255) default NULL,
+        biblio_authors varchar(255) default NULL,
+        biblio_secondary_authors varchar(255) default NULL,
+        biblio_tertiary_authors varchar(255) default NULL,
+        biblio_corp_author varchar(255) default NULL,
+        biblio_other_author_affiliations varchar(255) default NULL,
+        biblio_edition varchar(255) default NULL,
+        biblio_publisher varchar(255) default NULL,
+        biblio_original_publication varchar(255) default NULL,
+        biblio_reprint_edition varchar(255) default NULL,
+        biblio_place_published varchar(255) default NULL,
+        biblio_year $db[int11] NOT NULL default '9999',
+        biblio_volume varchar(10) default NULL,
+        biblio_number_of_volumes varchar(10) default NULL,
+        biblio_pages varchar(128) default NULL,
+        biblio_date varchar(16) default NULL,
+        biblio_isbn varchar(24) default NULL,
+        biblio_issn varchar(24) default NULL,
+        biblio_lang varchar(24) default 'eng',
+        biblio_abst_e text,
+        biblio_abst_f text,
+        biblio_full_text $db[tinyint4] default '0',
+        biblio_keywords varchar(255) default NULL,
+        biblio_url varchar(255) default NULL,
+        biblio_doi varchar(100) default NULL,
+        biblio_issue varchar(10) default NULL,
+        biblio_type_of_work varchar(255) default NULL,
+        biblio_accession_number varchar(24) default NULL,
+        biblio_call_number varchar(24) default NULL,
+        biblio_notes text,
+        biblio_coins text,
+        biblio_research_notes text,
+        biblio_custom1 text,
+        biblio_custom2 text,
+        biblio_custom3 text,
+        biblio_custom4 text,
+        biblio_custom5 text,
+        biblio_custom6 text,
+        biblio_custom7 text,
+        biblio_auth_address text,
+        biblio_remote_db_name varchar(255) default NULL,
+        biblio_remote_db_provider varchar(255) default NULL,
+        biblio_citekey varchar(16) default NULL,
+        biblio_label varchar(255) default NULL,
+        biblio_access_date varchar(255) default NULL,
+       PRIMARY KEY  (vid)
+      )  $db[set_utf8_isam];");
+      $result[] = db_query(add_key_sql('biblio', 'nid', 'nid'));
+      $result[] = db_query(add_key_sql('biblio', 'type', 'biblio_type'));
+      $result[] = db_query(add_key_sql('biblio', 'year', 'biblio_year'));
+      $result[] = db_query(add_ft_key_sql('biblio', 'keywords', 'biblio_keywords'));
+      $result[] = db_query(add_ft_key_sql('biblio', 'publisher', 'biblio_publisher'));
+      $result[] = db_query(add_ft_key_sql('biblio', 'authors', 'biblio_authors'));
       
       $result[] = db_query("CREATE TABLE {biblio_author_index} (
-                  `aid` int(11) NOT NULL default '0',
-                  `author` varchar(100) NOT NULL default '',
-                  PRIMARY KEY  (`aid`)
-      ) /*!40100 DEFAULT CHARSET=utf8 */;");
+                  aid $db[int11] NOT NULL default '0',
+                  author varchar(100) NOT NULL default '',
+                  PRIMARY KEY  (aid)
+      ) $db[set_utf8];");
       
       $result[] = db_query("CREATE TABLE {biblio_has_author} (
-                  `nid` int(11) NOT NULL default '0',
-                  `aid` int(11) NOT NULL default '0',
-                  `rank` int(11) NOT NULL default '0',
-                  PRIMARY KEY  (`nid`,`aid`,`rank`)
-      ) /*!40100 DEFAULT CHARSET=utf8 */;");
+                  nid $db[int11] NOT NULL default '0',
+                  aid $db[int11] NOT NULL default '0',
+                  rank $db[int11] NOT NULL default '0',
+                  PRIMARY KEY  (nid,aid,rank)
+      ) $db[set_utf8];");
 
       $result[] = db_query("CREATE TABLE {biblio_fields} (
-        `fid` int(11) NOT NULL default '0',
-        `name` varchar(100) NOT NULL default '',
-        `title` varchar(100) NOT NULL default '',
-        `common` tinyint(1) NOT NULL default '0',
-        `type` varchar(100) NOT NULL default '',
-        `size` int(11) NOT NULL default '0',
-        `maxsize` int(11) NOT NULL default '0',
-        `hint` varchar(100) default '',
-        `required` tinyint(1) NOT NULL default '0',
-        `autocomplete` tinyint(1) NOT NULL default '0',
-        `visible` tinyint(4) NOT NULL default '0',
-        `weight` int(11) NOT NULL default '0',
-        PRIMARY KEY  (`fid`)
-      )  /*!40100 DEFAULT CHARACTER SET utf8 */;");
-
-      $result[] = db_query("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
-       (1,'biblio_authors','Authors',1,'textfield',60,255,'Author names must be separated by semicolons',1,0,0,1),
-       (2,'biblio_secondary_authors','Secondary Authors',0,'textfield',60,255,'',0,0,0,21),
-       (3,'biblio_tertiary_authors','Tertiary Authors',0,'textfield',60,255,'',0,0,0,26),
-       (4,'biblio_corp_author','Corporate Author',0,'textfield',60,255,'',0,0,1,25),
-       (5,'biblio_secondary_title','Secondary Title',0,'textfield',60,255,'',0,0,1,12),
-       (6,'biblio_tertiary_title','Tertiary Title',0,'textfield',60,255,'',0,0,1,13),
-       (7,'biblio_accession_number','Accession Number',1,'textfield',24,24,'',0,0,0,151),
-       (8,'biblio_isbn','ISBN Number',1,'textfield',24,24,'',0,0,0,150),
-       (9,'biblio_call_number','Call Number',1,'textfield',24,24,'',0,0,0,152),
-       (10,'biblio_other_number','Other Numbers',1,'textfield',10,24,'',0,0,0,153),
-       (11,'biblio_other_author_affiliations','Other Author Affiliations',0,'textfield',60,255,'',0,0,0,24),
-       (12,'biblio_publisher','Publisher',0,'textfield',60,255,'',0,0,1,19);");
-
-      $result[] = db_query("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
-       (13,'biblio_place_published','Place Published',0,'textfield',60,255,'',0,0,1,20),
-       (14,'biblio_year','Year of Publication',1,'textfield',9,9,'(Submitted, In Press or YYYY)',1,0,0,-45),
-       (15,'biblio_edition','Edition',0,'textfield',60,255,'',0,0,0,15),
-       (16,'biblio_volume','Volume',0,'textfield',10,10,'',0,0,0,14),
-       (17,'biblio_number','Number',0,'textfield',10,10,'',0,0,0,16),
-       (18,'biblio_pages','Pagination',0,'textfield',24,128,'',0,0,0,17),
-       (19,'biblio_date','Date Published',0,'textfield',16,16,'(mm/yyyy)',0,0,0,18),
-       (20,'biblio_lang','Publication Language',0,'textfield',24,24,'',0,0,0,23),
-       (21,'biblio_abst_e','Abstract',1,'textarea',60,65535 ,'',0,0,0,155),
-       (22,'biblio_abst_f','French Abstract',0,'textarea',60,65535 ,'',0,0,0,156),
-       (23,'biblio_keywords','Key Words',1,'textfield',60,255,'',0,0,0,154),
-       (24,'biblio_type_of_work','Type of Work',0,'textfield',60,255,'Masters Thesis, PhD Thesis, etc.',0,0,0,22),
-       (25,'biblio_url','URL',1,'textfield',60,255,'',0,0,0,158);");
-
-      $result[] = db_query("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
-       (26,'biblio_notes','Notes',1,'textarea',60,65535 ,'',0,0,0,157),
-       (27,'biblio_issue','Issue',0,'textfield',10,10,'',0,0,0,15),
-       (28,'biblio_research_notes','Reseach Notes',0,'textarea',60,65535 ,'',0,0,0,160),
-       (29,'biblio_custom1','Custom 1',0,'textarea',60,65535,'',0,0,0,161),
-       (30,'biblio_custom2','Custom 2',0,'textarea',60,65535,'',0,0,0,162),
-       (31,'biblio_custom3','Custom 3',0,'textarea',60,65535,'',0,0,0,163),
-       (32,'biblio_custom4','Custom 4',0,'textarea',60,65535,'',0,0,0,164),
-       (33,'biblio_custom5','Custom 5',0,'textarea',60,65535,'',0,0,0,165),
-       (34,'biblio_custom6','Custom 6',0,'textarea',60,65535,'',0,0,0,167),
-       (35,'biblio_custom7','Custom 7',0,'textarea',60,65535,'',0,0,0,168),
-       (36,'biblio_number_of_volumes','Number of Volumes',0,'textfield',10,10,'',0,0,0,15),
-       (37,'biblio_short_title','Short Title',0,'textfield',60,255,'',0,0,0,169),
-       (38,'biblio_alternate_title','Alternate Title',0,'textfield',60,255,'',0,0,0,170),
-       (39,'biblio_translated_title','Translated Title',0,'textfield',60,255,'',0,0,0,170),
-       (40,'biblio_original_publication','Original Publication',0,'textfield',60,255,'',0,0,0,171),
-       (41,'biblio_reprint_edition','Reprint Edition',0,'textfield',120,255,'',0,0,0,172),
-       (42,'biblio_section','Section',0,'textfield',10,10,'',0,0,0,15),
-       (43,'biblio_citekey','Citation Key',0,'textfield',16,16,'',0,0,1,175),
-       (44,'biblio_coins','COinS Data',1,'textarea',60,65535 ,'This will be automatically generated, only edit if you know what you are doing.',0,0,0,176),
-       (45,'biblio_issn','ISSN Number',1,'textfield',24,24,'',0,0,0,150),
-       (46,'biblio_doi','DOI',1,'textfield',60,255,'',0,0,0,159),
-       (47,'biblio_auth_address','Author Address',0,'textarea',60,65535,'',0,0,0,178),
-       (48,'biblio_remote_db_name','Remote Database Name',0,'textfield',60,255,'',0,0,0,176),
-       (49,'biblio_remote_db_provider','Remote Database Provider',0,'textfield',60,255,'',0,0,0,177),
-       (50,'biblio_label','Label',0,'textfield',60,255,'',0,0,0,178),
-       (51,'biblio_access_date','Access Date',0,'textfield',60,255,'',0,0,0,179)
-       ;");
-
+        fid $db[int11] NOT NULL default '0',
+        name varchar(100) NOT NULL default '',
+        title varchar(100) NOT NULL default '',
+        common $db[tinyint1] NOT NULL default '0',
+        type varchar(100) NOT NULL default '',
+        size $db[int11] NOT NULL default '0',
+        maxsize $db[int11] NOT NULL default '0',
+        hint varchar(100) default '',
+        required $db[tinyint1] NOT NULL default '0',
+        autocomplete $db[tinyint1] NOT NULL default '0',
+        visible $db[tinyint4] NOT NULL default '0',
+        weight $db[int11] NOT NULL default '0',
+        PRIMARY KEY  (fid)
+      )  $db[set_utf8];");
+
+      foreach (array("(1,'biblio_authors','Authors',1,'textfield',60,255,'Author names must be separated by semicolons',1,0,0,1)",
+		     "(2,'biblio_secondary_authors','Secondary Authors',0,'textfield',60,255,'',0,0,0,21)",
+		     "(3,'biblio_tertiary_authors','Tertiary Authors',0,'textfield',60,255,'',0,0,0,26)",
+		     "(4,'biblio_corp_author','Corporate Author',0,'textfield',60,255,'',0,0,1,25)",
+		     "(5,'biblio_secondary_title','Secondary Title',0,'textfield',60,255,'',0,0,1,12)",
+		     "(6,'biblio_tertiary_title','Tertiary Title',0,'textfield',60,255,'',0,0,1,13)",
+		     "(7,'biblio_accession_number','Accession Number',1,'textfield',24,24,'',0,0,0,151)",
+		     "(8,'biblio_isbn','ISBN Number',1,'textfield',24,24,'',0,0,0,150)",
+		     "(9,'biblio_call_number','Call Number',1,'textfield',24,24,'',0,0,0,152)",
+		     "(10,'biblio_other_number','Other Numbers',1,'textfield',10,24,'',0,0,0,153)",
+		     "(11,'biblio_other_author_affiliations','Other Author Affiliations',0,'textfield',60,255,'',0,0,0,24)",
+		     "(12,'biblio_publisher','Publisher',0,'textfield',60,255,'',0,0,1,19)",
+		     "(13,'biblio_place_published','Place Published',0,'textfield',60,255,'',0,0,1,20)",
+		     "(14,'biblio_year','Year of Publication',1,'textfield',9,9,'(Submitted, In Press or YYYY)',1,0,0,-45)",
+		     "(15,'biblio_edition','Edition',0,'textfield',60,255,'',0,0,0,15)",
+		     "(16,'biblio_volume','Volume',0,'textfield',10,10,'',0,0,0,14)",
+		     "(17,'biblio_number','Number',0,'textfield',10,10,'',0,0,0,16)",
+		     "(18,'biblio_pages','Pagination',0,'textfield',24,128,'',0,0,0,17)",
+		     "(19,'biblio_date','Date Published',0,'textfield',16,16,'(mm/yyyy)',0,0,0,18)",
+		     "(20,'biblio_lang','Publication Language',0,'textfield',24,24,'',0,0,0,23)",
+		     "(21,'biblio_abst_e','Abstract',1,'textarea',60,65535 ,'',0,0,0,155)",
+		     "(22,'biblio_abst_f','French Abstract',0,'textarea',60,65535 ,'',0,0,0,156)",
+		     "(23,'biblio_keywords','Key Words',1,'textfield',60,255,'',0,0,0,154)",
+		     "(24,'biblio_type_of_work','Type of Work',0,'textfield',60,255,'Masters Thesis, PhD Thesis, etc.',0,0,0,22)",
+		     "(25,'biblio_url','URL',1,'textfield',60,255,'',0,0,0,158)",
+		     "(26,'biblio_notes','Notes',1,'textarea',60,65535 ,'',0,0,0,157)",
+		     "(27,'biblio_issue','Issue',0,'textfield',10,10,'',0,0,0,15)",
+		     "(28,'biblio_research_notes','Reseach Notes',0,'textarea',60,65535 ,'',0,0,0,160)",
+		     "(29,'biblio_custom1','Custom 1',0,'textarea',60,65535,'',0,0,0,161)",
+		     "(30,'biblio_custom2','Custom 2',0,'textarea',60,65535,'',0,0,0,162)",
+		     "(31,'biblio_custom3','Custom 3',0,'textarea',60,65535,'',0,0,0,163)",
+		     "(32,'biblio_custom4','Custom 4',0,'textarea',60,65535,'',0,0,0,164)",
+		     "(33,'biblio_custom5','Custom 5',0,'textarea',60,65535,'',0,0,0,165)",
+		     "(34,'biblio_custom6','Custom 6',0,'textarea',60,65535,'',0,0,0,167)",
+		     "(35,'biblio_custom7','Custom 7',0,'textarea',60,65535,'',0,0,0,168)",
+		     "(36,'biblio_number_of_volumes','Number of Volumes',0,'textfield',10,10,'',0,0,0,15)",
+		     "(37,'biblio_short_title','Short Title',0,'textfield',60,255,'',0,0,0,169)",
+		     "(38,'biblio_alternate_title','Alternate Title',0,'textfield',60,255,'',0,0,0,170)",
+		     "(39,'biblio_translated_title','Translated Title',0,'textfield',60,255,'',0,0,0,170)",
+		     "(40,'biblio_original_publication','Original Publication',0,'textfield',60,255,'',0,0,0,171)",
+		     "(41,'biblio_reprint_edition','Reprint Edition',0,'textfield',120,255,'',0,0,0,172)",
+		     "(42,'biblio_section','Section',0,'textfield',10,10,'',0,0,0,15)",
+		     "(43,'biblio_citekey','Citation Key',0,'textfield',16,16,'',0,0,1,175)",
+		     "(44,'biblio_coins','COinS Data',1,'textarea',60,65535 ,'This will be automatically generated, only edit if you know what you are doing.',0,0,0,176)",
+		     "(45,'biblio_issn','ISSN Number',1,'textfield',24,24,'',0,0,0,150)",
+		     "(46,'biblio_doi','DOI',1,'textfield',60,255,'',0,0,0,159)",
+		     "(47,'biblio_auth_address','Author Address',0,'textarea',60,65535,'',0,0,0,178)",
+		     "(48,'biblio_remote_db_name','Remote Database Name',0,'textfield',60,255,'',0,0,0,176)",
+		     "(49,'biblio_remote_db_provider','Remote Database Provider',0,'textfield',60,255,'',0,0,0,177)",
+		     "(50,'biblio_label','Label',0,'textfield',60,255,'',0,0,0,178)",
+		     "(51,'biblio_access_date','Access Date',0,'textfield',60,255,'',0,0,0,179)"
+		     ) as $item) {
+	$result[] = db_query("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,autocomplete,weight) VALUES $item;");
+      }
 
       $result[] = db_query("CREATE TABLE {biblio_types} (
-        `tid` int(11) NOT NULL auto_increment,
-        `name` varchar(64) NOT NULL default '',
-        `description` varchar(255) default NULL,
-        `weight` int(11) NOT NULL default '0',
-        `visible` tinyint(1) NOT NULL default '1' ,
-        PRIMARY KEY  (`tid`)
-      )  /*!40100 DEFAULT CHARACTER SET utf8 */;"); 
+        tid $db[auto_increment] NOT NULL,
+        name varchar(64) NOT NULL default '',
+        description varchar(255) default NULL,
+        weight $db[int11] NOT NULL default '0',
+        visible $db[tinyint1] NOT NULL default '1' ,
+        PRIMARY KEY  (tid)
+      )  $db[set_utf8];"); 
 
      // some default types...
-/*      $result[] = db_query("INSERT INTO {biblio_types} (`tid`,`name`,`description`) VALUES 
-       (-1,'Select Type...',NULL),
-       (1,'Journal Paper',NULL),
-       (2,'Refereed Conference Paper',NULL),
-       (3,'Non-Refereed Conference Paper',NULL),
-       (4,'Conference Poster Presentation',NULL),
-       (5,'Report',NULL),
-       (6,'Book or Book Chapter',NULL),
-       (7,'Thesis',NULL),
-       (8,'Patent',NULL),
-       (9,'Other Publication',NULL);");
+/*    foreach(array("(-1,'Select Type...',NULL)",
+		    "(1,'Journal Paper',NULL)",
+		    "(2,'Refereed Conference Paper',NULL)",
+		    "(3,'Non-Refereed Conference Paper',NULL)",
+		    "(4,'Conference Poster Presentation',NULL)",
+		    "(5,'Report',NULL)",
+		    "(6,'Book or Book Chapter',NULL)",
+		    "(7,'Thesis',NULL)",
+		    "(8,'Patent',NULL)",
+		    "(9,'Other Publication',NULL)"
+		    ) as $item) {
+	$result[] = db_query("INSERT INTO {biblio_types} (tid,name,description) VALUES $item;");
+      }
  */
-      $result[] = db_query("INSERT INTO {biblio_types} (`tid`,`name`,`description`,weight) VALUES 
-       (-1,'Select Type...',NULL,-10),
-        (100,'Book',NULL,1),
-				(101,'Book Chapter',NULL,2),
-				(102,'Journal Article',NULL,3),
-				(103,'Conference Paper',NULL,4),
-				(104,'Conference Proceedings',NULL,5),
-				(105,'Newspaper Article',NULL,6),
-				(106,'Magazine Article',NULL,7),
-				(107,'Web Article',NULL,8),
-				(108,'Thesis',NULL,9),
-				(109,'Report',NULL,10),
-				(110,'Film',NULL,11),
-				(111,'Broadcast',NULL,12),
-				(112,'Artwork',NULL,13),
-				(113,'Software',NULL,14),
-				(114,'Audiovisual',NULL,15),
-				(115,'Hearing',NULL,16),
-				(116,'Case',NULL,17),
-				(117,'Bill',NULL,18),
-				(118,'Statute',NULL,19),
-				(119,'Patent',NULL,20),
-				(120,'Personal',NULL,21),
-				(121,'Manuscript',NULL,22),
-				(122,'Map',NULL,23),
-				(123,'Chart',NULL,24),
-				(124,'Unpublished',NULL,25),
-				(125,'Database',NULL,26),
-				(126,'Government Report',NULL,27),
-				(127,'Classical'	,NULL,28),
-				(128,'Legal Ruling'	,NULL,29),
-				(129,'Miscellaneous'	,NULL,30),
-				(130,'Miscellaneous Section'	,NULL,31);");
+
+      foreach(array("(-1,'Select Type...',NULL,-10)",
+		    "(100,'Book',NULL,1)",
+		    "(101,'Book Chapter',NULL,2)",
+		    "(102,'Journal Article',NULL,3)",
+		    "(103,'Conference Paper',NULL,4)",
+		    "(104,'Conference Proceedings',NULL,5)",
+		    "(105,'Newspaper Article',NULL,6)",
+		    "(106,'Magazine Article',NULL,7)",
+		    "(107,'Web Article',NULL,8)",
+		    "(108,'Thesis',NULL,9)",
+		    "(109,'Report',NULL,10)",
+		    "(110,'Film',NULL,11)",
+		    "(111,'Broadcast',NULL,12)",
+		    "(112,'Artwork',NULL,13)",
+		    "(113,'Software',NULL,14)",
+		    "(114,'Audiovisual',NULL,15)",
+		    "(115,'Hearing',NULL,16)",
+		    "(116,'Case',NULL,17)",
+		    "(117,'Bill',NULL,18)",
+		    "(118,'Statute',NULL,19)",
+		    "(119,'Patent',NULL,20)",
+		    "(120,'Personal',NULL,21)",
+		    "(121,'Manuscript',NULL,22)",
+		    "(122,'Map',NULL,23)",
+		    "(123,'Chart',NULL,24)",
+		    "(124,'Unpublished',NULL,25)",
+		    "(125,'Database',NULL,26)",
+		    "(126,'Government Report',NULL,27)",
+		    "(127,'Classical'	,NULL,28)",
+		    "(128,'Legal Ruling'	,NULL,29)",
+		    "(129,'Miscellaneous',NULL,30)",
+		    "(130,'Miscellaneous Section',NULL,31)"
+		    ) as $item) {
+	$result[] = db_query("INSERT INTO {biblio_types} (tid,name,description,weight) VALUES $item;");
+      }
 
 
 
       // some customizations of the default types 
       _add_types($result);
-        
-      break;
-   
-    case 'pgsql':
-      break;
-  }
-  
+
   if (count($result) == count(array_filter($result))) {
   	drupal_set_message(t('The biblio module has successfully added its tables to the database.'));
   }
@@ -245,94 +238,97 @@
 }
 
 function _add_types(&$result){
+  $db = db_data_types();
 
       $result[] = db_query("CREATE TABLE {biblio_type_details} (
-        `tid` int(11) NOT NULL default '0',
-        `fid` int(11) NOT NULL default '0',
-        `title` varchar(100) NOT NULL default '',
-        `hint` varchar(100) default '',
-        `required` tinyint(1) NOT NULL default '0',
-        `weight` int(11) NOT NULL default '0',
-        PRIMARY KEY  (`tid`,`fid`),
-        KEY `tid` (`tid`)
-      ) /*!40100 ENGINE=MyISAM DEFAULT CHARACTER SET utf8 */;");
-      $result[] = db_query("/*!40000 ALTER TABLE {biblio_type_details} DISABLE KEYS */;");
-      $result[] = db_query("INSERT INTO {biblio_type_details} (`tid`,`fid`,`title`,`hint`,`required`,`weight`) VALUES 
-       (100,5,'Series Title','',0,3),
-       (100,15,'Edition','',0,10),
-       (100,18,'Number of Pages','',0,9),
-       (100,12,'Publisher','',0,5),
-       (100,13,'City','',0,4),
-       (100,2,'Series Editor','',0,2),
-       (100,16,'Volume','',0,6),
-       (100,36,'Number of Volumes','',0,7),
-       (100,17,'Series Volume','',0,8),
-       (100,37,'Short Title','',0,11),
-       (100,41,'Reprint Edition','',0,12),
-       (101,36,'Number of Volumes','',0,7),
-       (101,16,'Volume','',0,6),
-       (101,17,'Series Volume','',0,8),
-       (101,18,'Pages','',0,9),
-       (101,42,'Chapter','',0,10),
-       (101,3,'Series Editor','',0,11),
-       (101,6,'Series Title','',0,12),
-       (101,15,'Edition','',0,13),
-       (101,37,'Short Title','',0,14),
-       (101,40,'Original Publication','',0,171),
-       (101,41,'Reprint Edition','',0,172),
-       (101,20,'Language','',0,23),
-       (101,12,'Publisher','',0,5),
-       (101,5,'Book Title','',0,3),
-       (101,2,'Editor','',0,2),
-       (101,13,'City','',0,4);"); 
-      $result[] = db_query("INSERT INTO {biblio_type_details} (`tid`,`fid`,`title`,`hint`,`required`,`weight`) VALUES 
-       (102,42,'Start Page','',0,6),
-       (102,37,'Short Title','',0,15),
-       (102,41,'Reprint Edition','',0,172),
-       (102,12,'Publisher','',0,19),
-       (102,16,'Volume','',0,3),
-       (102,19,'Journal Date','(mm/yyyy)',0,14),
-       (102,5,'Journal Title','',1,2),
-       (102,27,'Issue','',0,4),
-       (102,18,'Pages','',0,5),
-       (103,5,'Conference Name','',0,12),
-       (103,6,'Series Title','',0,13),
-       (103,16,'Volume','',0,14),
-       (103,15,'Edition','',0,15),
-       (103,18,'Pagination','',0,17),
-       (103,19,'Conference Start Date','(dd/mm/yyyy)',0,18),
-       (103,12,'Publisher','',0,19),
-       (103,13,'Conference Location','',0,20),
-       (103,2,'Editor','',0,21),
-       (104,5,'Conference Name','',0,12),
-       (104,6,'Series Title','',0,13),
-       (104,16,'Volume','',0,14),
-       (104,15,'Edition','',0,15),
-       (104,18,'Pagination','',0,17),
-       (104,19,'Conference Start Date','(dd/mm/yyyy)',0,18),
-       (104,12,'Publisher','',0,19),
-       (104,13,'Conference Location','',0,20),
-       (104,2,'Editor','',0,21);");
-      $result[] = db_query("INSERT INTO {biblio_type_details} (`tid`,`fid`,`title`,`hint`,`required`,`weight`) VALUES 
-       (108,5,'Academic Department','',0,12),
-       (108,18,'Number of Pages','',0,17),
-       (108,12,'University','',0,19),
-       (108,13,'City','',0,20),
-       (108,24,'Degree','Masters Thesis, PhD Thesis, etc.',0,22),
-       (109,19,'Date','(mm/yyyy)',0,18),
-       (109,18,'Pages','',0,17),
-       (109,5,'Prepared for','',0,12),
-       (109,12,'Institution','',0,19),
-       (109,13,'City','',0,20),
-       (119,12,'Assignee','',0,19),
-       (119,19,'Date','(mm/yyyy)',0,18),
-       (119,18,'Pages','',0,17),
-       (119,27,'Issue','',0,15),
-       (119,5,'Published Source','',0,12),
-       (119,13,'Country','',0,13),
-       (119,16,'Volume','',0,14),
-       (129,5,'Prepared for','',0,12);");
-      $result[] = db_query("/*!40000 ALTER TABLE {biblio_type_details} ENABLE KEYS */;");
+        tid $db[int11] NOT NULL default '0',
+        fid $db[int11] NOT NULL default '0',
+        title varchar(100) NOT NULL default '',
+        hint varchar(100) default '',
+        required $db[tinyint1] NOT NULL default '0',
+        weight $db[int11] NOT NULL default '0',
+        PRIMARY KEY  (tid,fid)
+      ) $db[set_utf8_isam];");
+      $result[] = db_query(add_key_sql('biblio_type_details', 'tid', 'tid'));
+      $result[] = db_query(disable_keys_sql('biblio_type_details'));
+
+      foreach (array("(100,5,'Series Title','',0,3)",
+		     "(100,15,'Edition','',0,10)",
+		     "(100,18,'Number of Pages','',0,9)",
+		     "(100,12,'Publisher','',0,5)",
+		     "(100,13,'City','',0,4)",
+		     "(100,2,'Series Editor','',0,2)",
+		     "(100,16,'Volume','',0,6)",
+		     "(100,36,'Number of Volumes','',0,7)",
+		     "(100,17,'Series Volume','',0,8)",
+		     "(100,37,'Short Title','',0,11)",
+		     "(100,41,'Reprint Edition','',0,12)",
+		     "(101,36,'Number of Volumes','',0,7)",
+		     "(101,16,'Volume','',0,6)",
+		     "(101,17,'Series Volume','',0,8)",
+		     "(101,18,'Pages','',0,9)",
+		     "(101,42,'Chapter','',0,10)",
+		     "(101,3,'Series Editor','',0,11)",
+		     "(101,6,'Series Title','',0,12)",
+		     "(101,15,'Edition','',0,13)",
+		     "(101,37,'Short Title','',0,14)",
+		     "(101,40,'Original Publication','',0,171)",
+		     "(101,41,'Reprint Edition','',0,172)",
+		     "(101,20,'Language','',0,23)",
+		     "(101,12,'Publisher','',0,5)",
+		     "(101,5,'Book Title','',0,3)",
+		     "(101,2,'Editor','',0,2)",
+		     "(101,13,'City','',0,4)",
+		     "(102,42,'Start Page','',0,6)",
+		     "(102,37,'Short Title','',0,15)",
+		     "(102,41,'Reprint Edition','',0,172)",
+		     "(102,12,'Publisher','',0,19)",
+		     "(102,16,'Volume','',0,3)",
+		     "(102,19,'Journal Date','(mm/yyyy)',0,14)",
+		     "(102,5,'Journal Title','',1,2)",
+		     "(102,27,'Issue','',0,4)",
+		     "(102,18,'Pages','',0,5)",
+		     "(103,5,'Conference Name','',0,12)",
+		     "(103,6,'Series Title','',0,13)",
+		     "(103,16,'Volume','',0,14)",
+		     "(103,15,'Edition','',0,15)",
+		     "(103,18,'Pagination','',0,17)",
+		     "(103,19,'Conference Start Date','(dd/mm/yyyy)',0,18)",
+		     "(103,12,'Publisher','',0,19)",
+		     "(103,13,'Conference Location','',0,20)",
+		     "(103,2,'Editor','',0,21)",
+		     "(104,5,'Conference Name','',0,12)",
+		     "(104,6,'Series Title','',0,13)",
+		     "(104,16,'Volume','',0,14)",
+		     "(104,15,'Edition','',0,15)",
+		     "(104,18,'Pagination','',0,17)",
+		     "(104,19,'Conference Start Date','(dd/mm/yyyy)',0,18)",
+		     "(104,12,'Publisher','',0,19)",
+		     "(104,13,'Conference Location','',0,20)",
+		     "(104,2,'Editor','',0,21)",
+		     "(108,5,'Academic Department','',0,12)",
+		     "(108,18,'Number of Pages','',0,17)",
+		     "(108,12,'University','',0,19)",
+		     "(108,13,'City','',0,20)",
+		     "(108,24,'Degree','Masters Thesis, PhD Thesis, etc.',0,22)",
+		     "(109,19,'Date','(mm/yyyy)',0,18)",
+		     "(109,18,'Pages','',0,17)",
+		     "(109,5,'Prepared for','',0,12)",
+		     "(109,12,'Institution','',0,19)",
+		     "(109,13,'City','',0,20)",
+		     "(119,12,'Assignee','',0,19)",
+		     "(119,19,'Date','(mm/yyyy)',0,18)",
+		     "(119,18,'Pages','',0,17)",
+		     "(119,27,'Issue','',0,15)",
+		     "(119,5,'Published Source','',0,12)",
+		     "(119,13,'Country','',0,13)",
+		     "(119,16,'Volume','',0,14)",
+		     "(129,5,'Prepared for','',0,12)"
+		     ) as $item) {
+	$result[] = db_query("INSERT INTO {biblio_type_details} (tid,fid,title,hint,required,weight) VALUES $item;");
+      }
+
+      $result[] = db_query(enable_keys_sql('biblio_type_details'));
 
 }
 function biblio_uninstall(){
@@ -373,15 +369,16 @@
 }
 
 function biblio_update_2() {
+  $db = db_data_types();
 $result = array();
 
-  $result = update_sql("alter table {biblio_types} modify tid int(11) auto_increment;");
+ $result = update_sql(alter_column_sql('biblio_types', 'tid', '$db[auto_increment]'));
   return $result;
   
 }
 function biblio_update_3() {
-  $result = update_sql("alter table {node} modify title varchar(255);");
-  $result = update_sql("alter table {node_revisions} modify title varchar(255);");
+  $result = update_sql(alter_column_sql('node', 'title', 'varchar(255)'));
+  $result = update_sql(alter_column_sql('node_revisions', 'title', 'varchar(255)'));
   return $result;
 }
 
@@ -391,77 +388,83 @@
   $result[] = update_sql("ALTER TABLE {biblio_type_details} DROP COLUMN visible;");
   
   $result[] = update_sql("ALTER TABLE {biblio} 
-                ADD  `biblio_custom1` varchar(255) default NULL,
-                ADD  `biblio_custom2` varchar(255) default NULL,
-                ADD  `biblio_custom3` varchar(255) default NULL,
-                ADD  `biblio_custom4` varchar(255) default NULL,
-                ADD  `biblio_custom5` varchar(255) default NULL,
-                ADD  `biblio_custom6` varchar(255) default NULL,
-                ADD  `biblio_custom7` varchar(255) default NULL,
-                ADD  `biblio_research_notes` text,
-                ADD  `biblio_number_of_volumes` varchar(10) default NULL,
-                ADD  `biblio_short_title` varchar(255) default NULL,
-                ADD  `biblio_alternate_title` varchar(255) default NULL,
-                ADD  `biblio_original_publication` varchar(255) default NULL,
-                ADD  `biblio_reprint_edition` varchar(255) default NULL,
-                ADD  `biblio_translated_title` varchar(255) default NULL;");
-
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`weight`) VALUES 
-       (28,'biblio_research_notes','Reseach Notes',0,'textarea',60,15,'',0,0,160),
-       (29,'biblio_custom1','Custom 1',0,'textfield',120,255,'',0,0,161),
-       (30,'biblio_custom2','Custom 2',0,'textfield',120,255,'',0,0,162),
-       (31,'biblio_custom3','Custom 3',0,'textfield',120,255,'',0,0,163),
-       (32,'biblio_custom4','Custom 4',0,'textfield',120,255,'',0,0,164),
-       (33,'biblio_custom5','Custom 5',0,'textfield',120,255,'',0,0,165),
-       (34,'biblio_custom6','Custom 6',0,'textfield',120,255,'',0,0,167),
-       (35,'biblio_custom7','Custom 7',0,'textfield',120,255,'',0,0,168),
-       (36,'biblio_number_of_volumes','Number of Volumes',0,'textfield',10,10,'',0,0,15),
-       (37,'biblio_short_title','Short Title',0,'textfield',120,255,'',0,0,169),
-       (38,'biblio_alternate_title','Alternate Title',0,'textfield',120,255,'',0,0,170),
-       (39,'biblio_translated_title','Translated Title',0,'textfield',120,255,'',0,0,170),
-       (40,'biblio_original_publication','Original Publication',0,'textfield',120,255,'',0,0,171),
-       (41,'biblio_reprint_edition','Reprint Edition',0,'textfield',120,255,'',0,0,172);");
+                ADD  biblio_custom1 varchar(255) default NULL,
+                ADD  biblio_custom2 varchar(255) default NULL,
+                ADD  biblio_custom3 varchar(255) default NULL,
+                ADD  biblio_custom4 varchar(255) default NULL,
+                ADD  biblio_custom5 varchar(255) default NULL,
+                ADD  biblio_custom6 varchar(255) default NULL,
+                ADD  biblio_custom7 varchar(255) default NULL,
+                ADD  biblio_research_notes text,
+                ADD  biblio_number_of_volumes varchar(10) default NULL,
+                ADD  biblio_short_title varchar(255) default NULL,
+                ADD  biblio_alternate_title varchar(255) default NULL,
+                ADD  biblio_original_publication varchar(255) default NULL,
+                ADD  biblio_reprint_edition varchar(255) default NULL,
+                ADD  biblio_translated_title varchar(255) default NULL;");
+
+  foreach (array("(28,'biblio_research_notes','Reseach Notes',0,'textarea',60,15,'',0,0,160)",
+		 "(29,'biblio_custom1','Custom 1',0,'textfield',120,255,'',0,0,161)",
+		 "(30,'biblio_custom2','Custom 2',0,'textfield',120,255,'',0,0,162)",
+		 "(31,'biblio_custom3','Custom 3',0,'textfield',120,255,'',0,0,163)",
+		 "(32,'biblio_custom4','Custom 4',0,'textfield',120,255,'',0,0,164)",
+		 "(33,'biblio_custom5','Custom 5',0,'textfield',120,255,'',0,0,165)",
+		 "(34,'biblio_custom6','Custom 6',0,'textfield',120,255,'',0,0,167)",
+		 "(35,'biblio_custom7','Custom 7',0,'textfield',120,255,'',0,0,168)",
+		 "(36,'biblio_number_of_volumes','Number of Volumes',0,'textfield',10,10,'',0,0,15)",
+		 "(37,'biblio_short_title','Short Title',0,'textfield',120,255,'',0,0,169)",
+		 "(38,'biblio_alternate_title','Alternate Title',0,'textfield',120,255,'',0,0,170)",
+		 "(39,'biblio_translated_title','Translated Title',0,'textfield',120,255,'',0,0,170)",
+		 "(40,'biblio_original_publication','Original Publication',0,'textfield',120,255,'',0,0,171)",
+		 "(41,'biblio_reprint_edition','Reprint Edition',0,'textfield',120,255,'',0,0,172)"
+		 ) as $item) {
+    $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,weight) VALUES $item;");
+  }
+
  return($result);
 }
 
 function biblio_update_5() {
+  $db = db_data_types();
 $result = array();
 
   $result[] = update_sql("ALTER TABLE {biblio_types} 
-                ADD  `weight` int(11) NOT NULL default '0';");
-                
- $result[] = update_sql("INSERT INTO {biblio_types} (`tid`,`name`,`description`,weight) VALUES 
-        (100,'Book',NULL,1),
-				(101,'Book Article',NULL,2),
-				(102,'Journal Article',NULL,3),
-				(103,'Conference Paper',NULL,4),
-				(104,'Proceedings Article',NULL,5),
-				(105,'Newspaper Article',NULL,6),
-				(106,'Magazine Article',NULL,7),
-				(107,'Web Article',NULL,8),
-				(108,'Thesis',NULL,9),
-				(109,'Report',NULL,10),
-				(110,'Film',NULL,11),
-				(111,'Broadcast',NULL,12),
-				(112,'Artwork',NULL,13),
-				(113,'Software',NULL,14),
-				(114,'Audiovisual',NULL,15),
-				(115,'Hearing',NULL,16),
-				(116,'Case',NULL,17),
-				(117,'Bill',NULL,18),
-				(118,'Statute',NULL,19),
-				(119,'Patent',NULL,20),
-				(120,'Personal',NULL,21),
-				(121,'Manuscript',NULL,22),
-				(122,'Map',NULL,23),
-				(123,'Chart',NULL,24),
-				(124,'Unpublished',NULL,25),
-				(125,'Database',NULL,26),
-				(126,'Government Report',NULL,27),
-				(127,'Classical'	,NULL,28),
-				(128,'Legal Ruling'	,NULL,29),
-				(129,'Miscellaneous'	,NULL,30),
-				(130,'Miscellaneous Section'	,NULL,31);");
+                ADD  weight $db[int11] NOT NULL default '0';");
+
+            foreach (array("(100,'Book',NULL,1)",
+			   "(101,'Book Article',NULL,2)",
+			   "(102,'Journal Article',NULL,3)",
+			   "(103,'Conference Paper',NULL,4)",
+			   "(104,'Proceedings Article',NULL,5)",
+			   "(105,'Newspaper Article',NULL,6)",
+			   "(106,'Magazine Article',NULL,7)",
+			   "(107,'Web Article',NULL,8)",
+			   "(108,'Thesis',NULL,9)",
+			   "(109,'Report',NULL,10)",
+			   "(110,'Film',NULL,11)",
+			   "(111,'Broadcast',NULL,12)",
+			   "(112,'Artwork',NULL,13)",
+			   "(113,'Software',NULL,14)",
+			   "(114,'Audiovisual',NULL,15)",
+			   "(115,'Hearing',NULL,16)",
+			   "(116,'Case',NULL,17)",
+			   "(117,'Bill',NULL,18)",
+			   "(118,'Statute',NULL,19)",
+			   "(119,'Patent',NULL,20)",
+			   "(120,'Personal',NULL,21)",
+			   "(121,'Manuscript',NULL,22)",
+			   "(122,'Map',NULL,23)",
+			   "(123,'Chart',NULL,24)",
+			   "(124,'Unpublished',NULL,25)",
+			   "(125,'Database',NULL,26)",
+			   "(126,'Government Report',NULL,27)",
+			   "(127,'Classical'	,NULL,28)",
+			   "(128,'Legal Ruling'	,NULL,29)",
+			   "(129,'Miscellaneous'	,NULL,30)",
+			   "(130,'Miscellaneous Section'	,NULL,31)"
+			   ) as $item) {
+	      $result[] = update_sql("INSERT INTO {biblio_types} (tid,name,description,weight) VALUES $item;");
+	    }
               
   $result[] = update_sql("UPDATE {biblio} SET biblio_type = 102 WHERE biblio_type = 1 ");
   $result[] = update_sql("UPDATE {biblio} SET biblio_type = 103 WHERE biblio_type = 2 ");
@@ -513,9 +516,9 @@
 $result = array();
 
   $result[] = update_sql("ALTER TABLE {biblio} 
-                ADD  `biblio_section` varchar(10) default NULL ;");
+                ADD  biblio_section varchar(10) default NULL ;");
  
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`weight`) VALUES 
+  $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,weight) VALUES 
        (42,'biblio_section','Section',0,'textfield',10,10,'',0,0,15);");
   return $result;
 }
@@ -523,15 +526,16 @@
 function biblio_update_9() {
 $result = array();
 
-  $result[] = update_sql("alter table {node} modify title varchar(255);");
-  $result[] = update_sql("alter table {node_revisions} modify title varchar(255);");
+  $result[] = update_sql(alter_column_sql('node', 'title', 'varchar(255)'));
+  $result[] = update_sql(alter_column_sql('node_revisions', 'title', 'varchar(255)'));
   return $result;
   
 }
 function biblio_update_10(){
+  $db = db_data_types();
 $result = array();
   $result[] = update_sql("UPDATE {biblio_fields} SET maxsize = 65535 WHERE type = 'textarea' ");
-  $result[] = update_sql("ALTER TABLE {biblio} ADD `vid` int(10) NOT NULL default '0';");
+  $result[] = update_sql("ALTER TABLE {biblio} ADD vid $db[int10] NOT NULL default '0';");
 
   return $result;
 }
@@ -547,75 +551,93 @@
   return $result;
 }
 function biblio_update_12(){
+  $db = db_data_types();
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio_types} ADD  `visible` tinyint(1) NOT NULL default '1' ;");
+  $result[] = update_sql("ALTER TABLE {biblio_types} ADD  visible $db[tinyint1] NOT NULL default '1' ;");
   return $result;
 }
 function biblio_update_13(){
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio} ADD  `biblio_citekey` varchar(16)  ;");
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`weight`) VALUES 
+  $result[] = update_sql("ALTER TABLE {biblio} ADD  biblio_citekey varchar(16)  ;");
+  $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,weight) VALUES 
        (43,'biblio_citekey','Citation Key',0,'textfield',16,16,'',0,0,175);");
   return $result;
 }
 function biblio_update_14(){
+  $db = db_data_types();
 $result = array();
       $result[] = update_sql("CREATE TABLE {biblio_author_index} (
-                  `aid` int(11) NOT NULL default '0',
-                  `author` varchar(100) NOT NULL default '',
-                  PRIMARY KEY  (`aid`) )  /*!40100 DEFAULT CHARACTER SET utf8 */;");
+                  aid $db[int11] NOT NULL default '0',
+                  author varchar(100) NOT NULL default '',
+                  PRIMARY KEY  (aid) )  $db[set_utf8];");
       $result[] = update_sql("CREATE TABLE {biblio_has_author} (
-                  `nid` int(11) NOT NULL default '0',
-                  `aid` int(11) NOT NULL default '0',
-                  `rank` int(11) NOT NULL default '0',
-                  PRIMARY KEY  (`nid`,`aid`,`rank`) ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
+                  nid $db[int11] NOT NULL default '0',
+                  aid $db[int11] NOT NULL default '0',
+                  rank $db[int11] NOT NULL default '0',
+                  PRIMARY KEY  (nid,aid,rank) ) $db[set_utf8];");
 
 
   return $result;
 }
 function biblio_update_15(){
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio}  DROP PRIMARY KEY ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD PRIMARY KEY (`nid`,`vid`) ;");
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    $result[] = update_sql("ALTER TABLE {biblio}  DROP PRIMARY KEY ;");
+    $result[] = update_sql("ALTER TABLE {biblio}  ADD PRIMARY KEY (nid,vid) ;");
+  case 'default':
+    $result[] = "Biblio module update function 15 not yet supported for $GLOBALS[db_type]";
+  } 
   return $result;
 }
 
 function biblio_update_16(){
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio}  DROP PRIMARY KEY ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD PRIMARY KEY (`vid`) ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD KEY nid (`nid`) ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD FULLTEXT KEY `keywords` (`biblio_keywords`) ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD FULLTEXT KEY `publisher` (`biblio_publisher`) ;");
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    $result[] = update_sql("ALTER TABLE {biblio}  DROP PRIMARY KEY ;");
+    $result[] = update_sql("ALTER TABLE {biblio}  ADD PRIMARY KEY (vid) ;");
+    $result[] = update_sql(add_key_sql('biblio', 'nid', 'nid'));
+    $result[] = update_sql(add_ft_key_sql('biblio', 'keywords', 'biblio_keywords'));
+    $result[] = update_sql(add_ft_key_sql('biblio', 'publisher', 'biblio_publisher'));
+  case 'default':
+    $result[] = "Biblio module update function 16 not yet supported for $GLOBALS[db_type]";
+  } 
   return $result;
 }
 
 function biblio_update_17(){
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio}  MODIFY biblio_pages varchar(128);");
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_pages', 'varchar(128)'));
   $result[] = update_sql("UPDATE {biblio_fields} SET maxsize = 128 WHERE name = 'biblio_pages';");
   return $result;
 }
 function biblio_update_18(){
+  $db = db_data_types();
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio_fields}  ADD  `autocomplete` tinyint(1) NOT NULL default '0' ;");
+  $result[] = update_sql("ALTER TABLE {biblio_fields}  ADD  autocomplete $db[tinyint1] NOT NULL default '0' ;");
   return $result;
 }
 function biblio_update_20(){
 $result = array();
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_coins` text   ;");
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_coins text   ;");
+  $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,autocomplete,weight) VALUES 
        (44,'biblio_coins','COinS Data',1,'textarea',60,65535 ,'This will be automatically generated, only edit if you know what you are doing.',0,0,0,176);");
   return $result;
 }
 function biblio_update_21(){
 $result = array(); 
 
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_doi` varchar(100) default NULL;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_issn` varchar(24) default NULL;");
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
-                        (45,'biblio_issn','ISSN Number',1,'textfield',24,24,'',0,0,0,150),
-                        (46,'biblio_doi','DOI',1,'textfield',60,255,'',0,0,0,159);");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_doi varchar(100) default NULL;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_issn varchar(24) default NULL;");
+  foreach (array("(45,'biblio_issn','ISSN Number',1,'textfield',24,24,'',0,0,0,150)",
+		 "(46,'biblio_doi','DOI',1,'textfield',60,255,'',0,0,0,159)"
+		 ) as $item) {
+    $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,autocomplete,weight) VALUES $item;");
+  }
+  
   $result[] = update_sql("UPDATE {biblio_fields}  SET  title = 'ISBN Number' WHERE name = 'biblio_isbn';");
   return $result;
 }
@@ -623,26 +645,28 @@
 function biblio_update_22() {
 $result = array();
 
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom1` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom2` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom3` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom4` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom5` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom6` text ;");
-  $result[] = update_sql("alter table {biblio} modify `biblio_custom7` text ;");
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom1', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom2', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom3', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom4', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom5', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom6', 'text'));
+  $result[] = update_sql(alter_column_sql('biblio', 'biblio_custom7', 'text'));
   $result[] = update_sql("UPDATE {biblio_fields}  SET  type = 'textarea',size=60,maxsize=65535 WHERE name LIKE 'biblio_custom%';");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_auth_address` text ;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_remote_db_name` varchar(255) default NULL;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_remote_db_provider` varchar(255) default NULL;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_label` varchar(255) default NULL;");
-  $result[] = update_sql("ALTER TABLE {biblio}  ADD  `biblio_access_date` varchar(255) default NULL;");
-  $result[] = update_sql("INSERT INTO {biblio_fields} (`fid`,`name`,`title`,`common`,`type`,`size`,`maxsize`,`hint`,`required`,`visible`,`autocomplete`,`weight`) VALUES 
-                        (47,'biblio_auth_address','Author Address',0,'textarea',60,65535,'',0,0,0,178),
-                        (48,'biblio_remote_db_name','Remote Database Name',0,'textfield',60,255,'',0,0,0,176),
-                        (49,'biblio_remote_db_provider','Remote Database Provider',0,'textfield',60,255,'',0,0,0,177),
-                        (50,'biblio_label','Label',0,'textfield',60,255,'',0,0,0,178),
-                        (51,'biblio_access_date','Access Date',0,'textfield',60,255,'',0,0,0,179)
-                        ;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_auth_address text ;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_remote_db_name varchar(255) default NULL;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_remote_db_provider varchar(255) default NULL;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_label varchar(255) default NULL;");
+  $result[] = update_sql("ALTER TABLE {biblio}  ADD  biblio_access_date varchar(255) default NULL;");
+
+  foreach (array("(47,'biblio_auth_address','Author Address',0,'textarea',60,65535,'',0,0,0,178)",
+		 "(48,'biblio_remote_db_name','Remote Database Name',0,'textfield',60,255,'',0,0,0,176)",
+		 "(49,'biblio_remote_db_provider','Remote Database Provider',0,'textfield',60,255,'',0,0,0,177)",
+		 "(50,'biblio_label','Label',0,'textfield',60,255,'',0,0,0,178)",
+		 "(51,'biblio_access_date','Access Date',0,'textfield',60,255,'',0,0,0,179)"
+		 ) as $item) {		 
+    $result[] = update_sql("INSERT INTO {biblio_fields} (fid,name,title,common,type,size,maxsize,hint,required,visible,autocomplete,weight) VALUES $item;");
+  }
 
   return $result;
   
@@ -688,3 +712,85 @@
 }
        
 
+function alter_column_sql($table, $column, $new_type) {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    return "ALTER TABLE {$table} MODIFY $column $new_type;";
+    break;
+  case 'pgsql':
+    return "ALTER TABLE {$table} ALTER COLUMN $column TYPE $new_type;";
+    break;
+  }
+}
+
+function add_key_sql($table, $key_name, $flds) {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    return "ALTER TABLE {$table} ADD KEY $key_name ($flds);";
+    break;
+  case 'pgsql':
+    return "CREATE INDEX $key_name ON {$table} ($flds);";
+    break;
+  }
+}
+
+function add_ft_key_sql($table, $key_name, $flds) {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    return "ALTER TABLE {$table} ADD FULLTEXT KEY $key_name ($flds);";
+    break;
+  case 'pgsql':
+    return "CREATE INDEX $key_name ON {$table} ($flds);";
+    break;
+  }
+}
+
+function disable_keys_sql($table) {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    return "/*!40000 ALTER TABLE {$table} DISABLE KEYS */;";
+    break;
+  }
+}
+
+function enable_keys_sql($table) {
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    return "/*!40000 ALTER TABLE {$table} ENABLE KEYS */;";
+    break;
+  }
+}
+
+function db_data_types() {
+  $db = array();
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+      $db['int10'] = 'int(10)';
+      $db['int11'] = 'int(11)';
+      $db['tinyint1'] = 'tinyint(1)';
+      $db['tinyint4'] = 'tinyint(4)';
+      $db['set_utf8'] = ' /*!40100 DEFAULT CHARACTER SET utf8 */ ';
+      $db['set_utf8_isam'] = ' /*!40100 ENGINE=MyISAM DEFAULT CHARACTER SET utf8 */ ';
+      $db['auto_increment'] = 'int(11) auto_increment';
+      break;
+  case 'pgsql':
+      $db['int10'] = 'integer';
+      $db['int11'] = 'integer';
+      $db['tinyint1'] = 'smallint';
+      $db['tinyint4'] = 'smallint';
+      $db['set_utf8'] = '';
+      $db['set_utf8_isam'] = '';
+      $db['auto_increment'] = 'serial';
+      break;
+  case 'default':
+      drupal_set_message(t("Database backend $GLOBALS[db_type] not supported"), 'error');
+      break;
+  }
+  return $db;
+}
\ No newline at end of file
