--
-- Host: localhost    Database: trevordavis
-- ------------------------------------------------------


--
-- Table structure for table `craft_assetindexdata`
--

CREATE TABLE `craft_assetindexdata` (
  `id` int NOT NULL AUTO_INCREMENT,
  `sessionId` varchar(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `volumeId` int NOT NULL,
  `uri` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `size` bigint unsigned DEFAULT NULL,
  `recordId` int DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `timestamp` datetime DEFAULT NULL,
  `inProgress` tinyint(1) DEFAULT '0',
  `completed` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_assetindexdata_volumeId_idx` (`volumeId`),
  KEY `craft_assetindexdata_sessionId_volumeId_idx` (`sessionId`,`volumeId`),
  CONSTRAINT `craft_assetindexdata_volumeId_fk` FOREIGN KEY (`volumeId`) REFERENCES `craft_volumes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=781 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_assets`
--

CREATE TABLE `craft_assets` (
  `id` int NOT NULL,
  `volumeId` int DEFAULT NULL,
  `folderId` int NOT NULL,
  `uploaderId` int DEFAULT NULL,
  `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `kind` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'unknown',
  `width` int unsigned DEFAULT NULL,
  `height` int unsigned DEFAULT NULL,
  `size` bigint unsigned DEFAULT NULL,
  `dateModified` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `focalPoint` varchar(13) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `deletedWithVolume` tinyint(1) DEFAULT NULL,
  `keptFile` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_assets_volumeId_idx` (`volumeId`),
  KEY `craft_assets_folderId_idx` (`folderId`),
  KEY `craft_assets_volumeId_keptFile_idx` (`volumeId`,`keptFile`),
  KEY `craft_assets_uploaderId_fk` (`uploaderId`),
  CONSTRAINT `craft_assets_folderId_fk` FOREIGN KEY (`folderId`) REFERENCES `craft_volumefolders` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_assets_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_assets_uploaderId_fk` FOREIGN KEY (`uploaderId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_assets_volumeId_fk` FOREIGN KEY (`volumeId`) REFERENCES `craft_volumes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_assettransformindex`
--

CREATE TABLE `craft_assettransformindex` (
  `id` int NOT NULL AUTO_INCREMENT,
  `assetId` int NOT NULL,
  `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `format` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `location` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `volumeId` int DEFAULT NULL,
  `fileExists` tinyint(1) DEFAULT NULL,
  `inProgress` tinyint(1) DEFAULT NULL,
  `error` tinyint(1) NOT NULL DEFAULT '0',
  `dateIndexed` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_assettransformindex_volumeId_fileId_location_idx` (`volumeId`,`assetId`,`location`)
) ENGINE=InnoDB AUTO_INCREMENT=228 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_assettransforms`
--

CREATE TABLE `craft_assettransforms` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `mode` enum('stretch','fit','crop') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'crop',
  `position` enum('top-left','top-center','top-right','center-left','center-center','center-right','bottom-left','bottom-center','bottom-right') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'center-center',
  `height` int unsigned DEFAULT NULL,
  `width` int unsigned DEFAULT NULL,
  `format` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `quality` int DEFAULT NULL,
  `dimensionChangeTime` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `interlace` enum('none','line','plane','partition') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'none',
  PRIMARY KEY (`id`),
  KEY `craft_assettransforms_name_idx` (`name`),
  KEY `craft_assettransforms_handle_idx` (`handle`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_categories`
--

CREATE TABLE `craft_categories` (
  `id` int NOT NULL,
  `groupId` int NOT NULL,
  `parentId` int DEFAULT NULL,
  `deletedWithGroup` tinyint(1) DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_categories_groupId_fk` (`groupId`),
  KEY `craft_categories_parentId_fk` (`parentId`),
  CONSTRAINT `craft_categories_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_categorygroups` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_categories_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_categories_parentId_fk` FOREIGN KEY (`parentId`) REFERENCES `craft_categories` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_categorygroups`
--

CREATE TABLE `craft_categorygroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `structureId` int NOT NULL,
  `fieldLayoutId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_categorygroups_structureId_fk` (`structureId`),
  KEY `craft_categorygroups_fieldLayoutId_fk` (`fieldLayoutId`),
  KEY `craft_categorygroups_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_categorygroups_name_idx` (`name`),
  KEY `craft_categorygroups_handle_idx` (`handle`),
  CONSTRAINT `craft_categorygroups_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_categorygroups_structureId_fk` FOREIGN KEY (`structureId`) REFERENCES `craft_structures` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_categorygroups_sites`
--

CREATE TABLE `craft_categorygroups_sites` (
  `id` int NOT NULL AUTO_INCREMENT,
  `groupId` int NOT NULL,
  `uriFormat` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  `hasUrls` tinyint(1) NOT NULL DEFAULT '1',
  `template` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_categorygroups_sites_groupId_siteId_unq_idx` (`groupId`,`siteId`),
  KEY `craft_categorygroups_sites_siteId_idx` (`siteId`),
  CONSTRAINT `craft_categorygroups_sites_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_categorygroups` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_categorygroups_sites_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_changedattributes`
--

CREATE TABLE `craft_changedattributes` (
  `elementId` int NOT NULL,
  `siteId` int NOT NULL,
  `attribute` varchar(255) NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `propagated` tinyint(1) NOT NULL,
  `userId` int DEFAULT NULL,
  PRIMARY KEY (`elementId`,`siteId`,`attribute`),
  KEY `craft_changedattributes_elementId_siteId_dateUpdated_idx` (`elementId`,`siteId`,`dateUpdated`),
  KEY `craft_changedattributes_siteId_fk` (`siteId`),
  KEY `craft_changedattributes_userId_fk` (`userId`),
  CONSTRAINT `craft_changedattributes_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_changedattributes_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_changedattributes_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_changedfields`
--

CREATE TABLE `craft_changedfields` (
  `elementId` int NOT NULL,
  `siteId` int NOT NULL,
  `fieldId` int NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `propagated` tinyint(1) NOT NULL,
  `userId` int DEFAULT NULL,
  PRIMARY KEY (`elementId`,`siteId`,`fieldId`),
  KEY `craft_changedfields_elementId_siteId_dateUpdated_idx` (`elementId`,`siteId`,`dateUpdated`),
  KEY `craft_changedfields_siteId_fk` (`siteId`),
  KEY `craft_changedfields_fieldId_fk` (`fieldId`),
  KEY `craft_changedfields_userId_fk` (`userId`),
  CONSTRAINT `craft_changedfields_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_changedfields_fieldId_fk` FOREIGN KEY (`fieldId`) REFERENCES `craft_fields` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_changedfields_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_changedfields_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_content`
--

CREATE TABLE `craft_content` (
  `id` int NOT NULL AUTO_INCREMENT,
  `elementId` int NOT NULL,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `field_heading` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `field_body` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `field_website` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `field_oldId` int unsigned DEFAULT '0',
  `field_video` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  `field_headline` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `field_description` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_content_elementId_siteId_unq_idx` (`elementId`,`siteId`),
  KEY `craft_content_title_idx` (`title`),
  KEY `craft_content_siteId_idx` (`siteId`),
  CONSTRAINT `craft_content_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_content_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1554 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_craftidtokens`
--

CREATE TABLE `craft_craftidtokens` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userId` int NOT NULL,
  `accessToken` text NOT NULL,
  `expiryDate` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_craftidtokens_userId_fk` (`userId`),
  CONSTRAINT `craft_craftidtokens_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_deprecationerrors`
--

CREATE TABLE `craft_deprecationerrors` (
  `id` int NOT NULL AUTO_INCREMENT,
  `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `fingerprint` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `lastOccurrence` datetime NOT NULL,
  `file` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `line` smallint unsigned DEFAULT NULL,
  `message` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `traces` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_deprecationerrors_key_fingerprint_unq_idx` (`key`,`fingerprint`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_drafts`
--

CREATE TABLE `craft_drafts` (
  `id` int NOT NULL AUTO_INCREMENT,
  `sourceId` int DEFAULT NULL,
  `creatorId` int DEFAULT NULL,
  `name` varchar(255) NOT NULL,
  `notes` text,
  `trackChanges` tinyint(1) NOT NULL DEFAULT '0',
  `dateLastMerged` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_drafts_sourceId_fk` (`sourceId`),
  KEY `craft_drafts_creatorId_fk` (`creatorId`),
  CONSTRAINT `craft_drafts_creatorId_fk` FOREIGN KEY (`creatorId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_drafts_sourceId_fk` FOREIGN KEY (`sourceId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_elementindexsettings`
--

CREATE TABLE `craft_elementindexsettings` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `settings` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_elementindexsettings_type_unq_idx` (`type`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_elements`
--

CREATE TABLE `craft_elements` (
  `id` int NOT NULL AUTO_INCREMENT,
  `draftId` int DEFAULT NULL,
  `revisionId` int DEFAULT NULL,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `enabled` tinyint unsigned NOT NULL DEFAULT '1',
  `archived` tinyint unsigned NOT NULL DEFAULT '0',
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `fieldLayoutId` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_elements_type_idx` (`type`),
  KEY `craft_elements_enabled_idx` (`enabled`),
  KEY `craft_elements_archived_dateCreated_idx` (`archived`,`dateCreated`),
  KEY `craft_elements_fieldLayoutId_idx` (`fieldLayoutId`),
  KEY `craft_elements_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_elements_draftId_fk` (`draftId`),
  KEY `craft_elements_revisionId_fk` (`revisionId`),
  KEY `craft_elements_archived_dateDeleted_draftId_revisionId_idx` (`archived`,`dateDeleted`,`draftId`,`revisionId`),
  CONSTRAINT `craft_elements_draftId_fk` FOREIGN KEY (`draftId`) REFERENCES `craft_drafts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_elements_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_elements_revisionId_fk` FOREIGN KEY (`revisionId`) REFERENCES `craft_revisions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2079 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_elements_sites`
--

CREATE TABLE `craft_elements_sites` (
  `id` int NOT NULL AUTO_INCREMENT,
  `elementId` int NOT NULL,
  `slug` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `uri` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `enabled` tinyint(1) DEFAULT '1',
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_elements_sites_elementId_siteId_unq_idx` (`elementId`,`siteId`),
  KEY `craft_elements_sites_enabled_idx` (`enabled`),
  KEY `craft_elements_sites_siteId_idx` (`siteId`),
  KEY `craft_elements_sites_slug_siteId_idx` (`slug`,`siteId`),
  KEY `craft_elements_sites_uri_siteId_idx` (`uri`,`siteId`),
  CONSTRAINT `craft_elements_sites_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_elements_sites_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2078 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_entries`
--

CREATE TABLE `craft_entries` (
  `id` int NOT NULL,
  `sectionId` int NOT NULL,
  `parentId` int DEFAULT NULL,
  `typeId` int NOT NULL,
  `authorId` int DEFAULT NULL,
  `postDate` datetime DEFAULT NULL,
  `expiryDate` datetime DEFAULT NULL,
  `deletedWithEntryType` tinyint(1) DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_entries_sectionId_idx` (`sectionId`),
  KEY `craft_entries_typeId_idx` (`typeId`),
  KEY `craft_entries_postDate_idx` (`postDate`),
  KEY `craft_entries_expiryDate_idx` (`expiryDate`),
  KEY `craft_entries_authorId_fk` (`authorId`),
  KEY `craft_entries_parentId_fk` (`parentId`),
  CONSTRAINT `craft_entries_authorId_fk` FOREIGN KEY (`authorId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entries_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entries_parentId_fk` FOREIGN KEY (`parentId`) REFERENCES `craft_entries` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_entries_sectionId_fk` FOREIGN KEY (`sectionId`) REFERENCES `craft_sections` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entries_typeId_fk` FOREIGN KEY (`typeId`) REFERENCES `craft_entrytypes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_entrydrafterrors`
--

CREATE TABLE `craft_entrydrafterrors` (
  `id` int NOT NULL AUTO_INCREMENT,
  `draftId` int DEFAULT NULL,
  `error` text,
  PRIMARY KEY (`id`),
  KEY `craft_entrydrafterrors_draftId_fk` (`draftId`),
  CONSTRAINT `craft_entrydrafterrors_draftId_fk` FOREIGN KEY (`draftId`) REFERENCES `craft_entrydrafts` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_entrydrafts`
--

CREATE TABLE `craft_entrydrafts` (
  `id` int NOT NULL AUTO_INCREMENT,
  `entryId` int NOT NULL,
  `sectionId` int NOT NULL,
  `creatorId` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `notes` tinytext CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `data` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_entrydrafts_sectionId_fk` (`sectionId`),
  KEY `craft_entrydrafts_creatorId_fk` (`creatorId`),
  KEY `craft_entrydrafts_entryId_siteId_idx` (`entryId`,`siteId`),
  KEY `craft_entrydrafts_siteId_idx` (`siteId`),
  CONSTRAINT `craft_entrydrafts_creatorId_fk` FOREIGN KEY (`creatorId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entrydrafts_entryId_fk` FOREIGN KEY (`entryId`) REFERENCES `craft_entries` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entrydrafts_sectionId_fk` FOREIGN KEY (`sectionId`) REFERENCES `craft_sections` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entrydrafts_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_entrytypes`
--

CREATE TABLE `craft_entrytypes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `sectionId` int NOT NULL,
  `fieldLayoutId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `hasTitleField` tinyint(1) NOT NULL DEFAULT '1',
  `titleTranslationMethod` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'site',
  `titleTranslationKeyFormat` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `titleFormat` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_entrytypes_sectionId_fk` (`sectionId`),
  KEY `craft_entrytypes_fieldLayoutId_fk` (`fieldLayoutId`),
  KEY `craft_entrytypes_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_entrytypes_name_sectionId_idx` (`name`,`sectionId`),
  KEY `craft_entrytypes_handle_sectionId_idx` (`handle`,`sectionId`),
  CONSTRAINT `craft_entrytypes_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_entrytypes_sectionId_fk` FOREIGN KEY (`sectionId`) REFERENCES `craft_sections` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_entryversionerrors`
--

CREATE TABLE `craft_entryversionerrors` (
  `id` int NOT NULL AUTO_INCREMENT,
  `versionId` int DEFAULT NULL,
  `error` text,
  PRIMARY KEY (`id`),
  KEY `craft_entryversionerrors_versionId_fk` (`versionId`),
  CONSTRAINT `craft_entryversionerrors_versionId_fk` FOREIGN KEY (`versionId`) REFERENCES `craft_entryversions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=506 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_entryversions`
--

CREATE TABLE `craft_entryversions` (
  `id` int NOT NULL AUTO_INCREMENT,
  `entryId` int NOT NULL,
  `sectionId` int NOT NULL,
  `creatorId` int DEFAULT NULL,
  `num` smallint unsigned NOT NULL,
  `notes` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `data` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_entryversions_sectionId_fk` (`sectionId`),
  KEY `craft_entryversions_creatorId_fk` (`creatorId`),
  KEY `craft_entryversions_entryId_siteId_idx` (`entryId`,`siteId`),
  KEY `craft_entryversions_siteId_idx` (`siteId`),
  CONSTRAINT `craft_entryversions_creatorId_fk` FOREIGN KEY (`creatorId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_entryversions_entryId_fk` FOREIGN KEY (`entryId`) REFERENCES `craft_entries` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entryversions_sectionId_fk` FOREIGN KEY (`sectionId`) REFERENCES `craft_sections` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_entryversions_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=702 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_fieldgroups`
--

CREATE TABLE `craft_fieldgroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_fieldgroups_name_idx` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_fieldlayoutfields`
--

CREATE TABLE `craft_fieldlayoutfields` (
  `id` int NOT NULL AUTO_INCREMENT,
  `layoutId` int NOT NULL,
  `tabId` int NOT NULL,
  `fieldId` int NOT NULL,
  `required` tinyint unsigned NOT NULL DEFAULT '0',
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_fieldlayoutfields_layoutId_fieldId_unq_idx` (`layoutId`,`fieldId`),
  KEY `craft_fieldlayoutfields_sortOrder_idx` (`sortOrder`),
  KEY `craft_fieldlayoutfields_tabId_fk` (`tabId`),
  KEY `craft_fieldlayoutfields_fieldId_fk` (`fieldId`),
  CONSTRAINT `craft_fieldlayoutfields_fieldId_fk` FOREIGN KEY (`fieldId`) REFERENCES `craft_fields` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_fieldlayoutfields_layoutId_fk` FOREIGN KEY (`layoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_fieldlayoutfields_tabId_fk` FOREIGN KEY (`tabId`) REFERENCES `craft_fieldlayouttabs` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_fieldlayouts`
--

CREATE TABLE `craft_fieldlayouts` (
  `id` int NOT NULL AUTO_INCREMENT,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_fieldlayouts_type_idx` (`type`),
  KEY `craft_fieldlayouts_dateDeleted_idx` (`dateDeleted`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_fieldlayouttabs`
--

CREATE TABLE `craft_fieldlayouttabs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `layoutId` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `elements` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_fieldlayouttabs_sortOrder_idx` (`sortOrder`),
  KEY `craft_fieldlayouttabs_layoutId_fk` (`layoutId`),
  CONSTRAINT `craft_fieldlayouttabs_layoutId_fk` FOREIGN KEY (`layoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_fields`
--

CREATE TABLE `craft_fields` (
  `id` int NOT NULL AUTO_INCREMENT,
  `groupId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(58) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `context` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'global',
  `instructions` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `searchable` tinyint(1) NOT NULL DEFAULT '1',
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `settings` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `translationMethod` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'none',
  `translationKeyFormat` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`),
  KEY `craft_fields_groupId_fk` (`groupId`),
  KEY `craft_fields_context_idx` (`context`),
  KEY `craft_fields_handle_context_idx` (`handle`,`context`),
  CONSTRAINT `craft_fields_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_fieldgroups` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_globalsets`
--

CREATE TABLE `craft_globalsets` (
  `id` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `fieldLayoutId` int DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_globalsets_fieldLayoutId_fk` (`fieldLayoutId`),
  KEY `craft_globalsets_name_idx` (`name`),
  KEY `craft_globalsets_handle_idx` (`handle`),
  CONSTRAINT `craft_globalsets_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_globalsets_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_gqlschemas`
--

CREATE TABLE `craft_gqlschemas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `scope` text,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) NOT NULL DEFAULT '0',
  `isPublic` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_gqlschemas_name_unq_idx` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_gqltokens`
--

CREATE TABLE `craft_gqltokens` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `accessToken` varchar(255) NOT NULL,
  `enabled` tinyint(1) NOT NULL DEFAULT '1',
  `expiryDate` datetime DEFAULT NULL,
  `lastUsed` datetime DEFAULT NULL,
  `schemaId` int DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_gqltokens_schemaId_fk` (`schemaId`),
  CONSTRAINT `craft_gqltokens_schemaId_fk` FOREIGN KEY (`schemaId`) REFERENCES `craft_gqlschemas` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_info`
--

CREATE TABLE `craft_info` (
  `id` int NOT NULL AUTO_INCREMENT,
  `version` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `schemaVersion` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `maintenance` tinyint unsigned NOT NULL DEFAULT '0',
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `fieldVersion` char(12) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_matrixblocks`
--

CREATE TABLE `craft_matrixblocks` (
  `id` int NOT NULL,
  `ownerId` int NOT NULL,
  `fieldId` int NOT NULL,
  `typeId` int NOT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `deletedWithOwner` tinyint(1) DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_matrixblocks_ownerId_idx` (`ownerId`),
  KEY `craft_matrixblocks_fieldId_idx` (`fieldId`),
  KEY `craft_matrixblocks_typeId_idx` (`typeId`),
  KEY `craft_matrixblocks_sortOrder_idx` (`sortOrder`),
  CONSTRAINT `craft_matrixblocks_fieldId_fk` FOREIGN KEY (`fieldId`) REFERENCES `craft_fields` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixblocks_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixblocks_ownerId_fk` FOREIGN KEY (`ownerId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixblocks_typeId_fk` FOREIGN KEY (`typeId`) REFERENCES `craft_matrixblocktypes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_matrixblocktypes`
--

CREATE TABLE `craft_matrixblocktypes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `fieldId` int NOT NULL,
  `fieldLayoutId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_matrixblocktypes_fieldId_fk` (`fieldId`),
  KEY `craft_matrixblocktypes_fieldLayoutId_fk` (`fieldLayoutId`),
  KEY `craft_matrixblocktypes_name_fieldId_idx` (`name`,`fieldId`),
  KEY `craft_matrixblocktypes_handle_fieldId_idx` (`handle`,`fieldId`),
  CONSTRAINT `craft_matrixblocktypes_fieldId_fk` FOREIGN KEY (`fieldId`) REFERENCES `craft_fields` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixblocktypes_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_matrixcontent_facts`
--

CREATE TABLE `craft_matrixcontent_facts` (
  `id` int NOT NULL AUTO_INCREMENT,
  `elementId` int NOT NULL,
  `field_fact_fact` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_matrixcontent_facts_elementId_siteId_unq_idx` (`elementId`,`siteId`),
  KEY `craft_matrixcontent_facts_siteId_fk` (`siteId`),
  CONSTRAINT `craft_matrixcontent_facts_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixcontent_facts_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_matrixcontent_portfolio`
--

CREATE TABLE `craft_matrixcontent_portfolio` (
  `id` int NOT NULL AUTO_INCREMENT,
  `elementId` int NOT NULL,
  `field_bigScreenshot_caption` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `field_smallScreenshot_caption` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_matrixcontent_portfolio_elementId_siteId_unq_idx` (`elementId`,`siteId`),
  KEY `craft_matrixcontent_portfolio_siteId_fk` (`siteId`),
  CONSTRAINT `craft_matrixcontent_portfolio_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_matrixcontent_portfolio_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=496 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_migrations`
--

CREATE TABLE `craft_migrations` (
  `id` int NOT NULL AUTO_INCREMENT,
  `track` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `applyTime` datetime NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_migrations_track_name_unq_idx` (`track`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=287 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_plugins`
--

CREATE TABLE `craft_plugins` (
  `id` int NOT NULL AUTO_INCREMENT,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `version` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `schemaVersion` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `licenseKeyStatus` enum('valid','invalid','mismatched','astray','unknown') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'unknown',
  `licensedEdition` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `installDate` datetime NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_plugins_handle_unq_idx` (`handle`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_projectconfig`
--

CREATE TABLE `craft_projectconfig` (
  `path` varchar(255) NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY (`path`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_queue`
--

CREATE TABLE `craft_queue` (
  `id` int NOT NULL AUTO_INCREMENT,
  `channel` varchar(255) NOT NULL DEFAULT 'queue',
  `job` longblob NOT NULL,
  `description` text,
  `timePushed` int NOT NULL,
  `ttr` int NOT NULL,
  `delay` int NOT NULL DEFAULT '0',
  `priority` int unsigned NOT NULL DEFAULT '1024',
  `dateReserved` datetime DEFAULT NULL,
  `timeUpdated` int DEFAULT NULL,
  `progress` smallint NOT NULL DEFAULT '0',
  `progressLabel` varchar(255) DEFAULT NULL,
  `attempt` int DEFAULT NULL,
  `fail` tinyint(1) DEFAULT '0',
  `dateFailed` datetime DEFAULT NULL,
  `error` text,
  PRIMARY KEY (`id`),
  KEY `craft_queue_channel_fail_timeUpdated_timePushed_idx` (`channel`,`fail`,`timeUpdated`,`timePushed`),
  KEY `craft_queue_channel_fail_timeUpdated_delay_idx` (`channel`,`fail`,`timeUpdated`,`delay`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_rackspaceaccess`
--

CREATE TABLE `craft_rackspaceaccess` (
  `id` int NOT NULL AUTO_INCREMENT,
  `connectionKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `token` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `storageUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `cdnUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_rackspaceaccess_connectionKey_unq_idx` (`connectionKey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_relations`
--

CREATE TABLE `craft_relations` (
  `id` int NOT NULL AUTO_INCREMENT,
  `fieldId` int NOT NULL,
  `sourceId` int NOT NULL,
  `targetId` int NOT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `sourceSiteId` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_relations_fieldId_sourceId_sourceSiteId_targetId_unq_idx` (`fieldId`,`sourceId`,`sourceSiteId`,`targetId`),
  KEY `craft_relations_sourceId_fk` (`sourceId`),
  KEY `craft_relations_targetId_fk` (`targetId`),
  KEY `craft_relations_sourceSiteId_idx` (`sourceSiteId`),
  CONSTRAINT `craft_relations_fieldId_fk` FOREIGN KEY (`fieldId`) REFERENCES `craft_fields` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_relations_sourceId_fk` FOREIGN KEY (`sourceId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_relations_sourceSiteId_fk` FOREIGN KEY (`sourceSiteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `craft_relations_targetId_fk` FOREIGN KEY (`targetId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4662 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_resourcepaths`
--

CREATE TABLE `craft_resourcepaths` (
  `hash` varchar(255) NOT NULL,
  `path` varchar(255) NOT NULL,
  PRIMARY KEY (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_revisions`
--

CREATE TABLE `craft_revisions` (
  `id` int NOT NULL AUTO_INCREMENT,
  `sourceId` int NOT NULL,
  `creatorId` int DEFAULT NULL,
  `num` int NOT NULL,
  `notes` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_revisions_sourceId_num_unq_idx` (`sourceId`,`num`),
  KEY `craft_revisions_creatorId_fk` (`creatorId`),
  CONSTRAINT `craft_revisions_creatorId_fk` FOREIGN KEY (`creatorId`) REFERENCES `craft_users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `craft_revisions_sourceId_fk` FOREIGN KEY (`sourceId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=700 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_searchindex`
--

CREATE TABLE `craft_searchindex` (
  `elementId` int NOT NULL,
  `attribute` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `fieldId` int NOT NULL,
  `keywords` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `siteId` int NOT NULL,
  PRIMARY KEY (`elementId`,`attribute`,`fieldId`,`siteId`),
  FULLTEXT KEY `craft_searchindex_keywords_idx` (`keywords`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_sections`
--

CREATE TABLE `craft_sections` (
  `id` int NOT NULL AUTO_INCREMENT,
  `structureId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `type` enum('single','channel','structure') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'channel',
  `enableVersioning` tinyint unsigned NOT NULL DEFAULT '0',
  `propagationMethod` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'all',
  `previewTargets` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_sections_structureId_fk` (`structureId`),
  KEY `craft_sections_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_sections_name_idx` (`name`),
  KEY `craft_sections_handle_idx` (`handle`),
  CONSTRAINT `craft_sections_structureId_fk` FOREIGN KEY (`structureId`) REFERENCES `craft_structures` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_sections_sites`
--

CREATE TABLE `craft_sections_sites` (
  `id` int NOT NULL AUTO_INCREMENT,
  `sectionId` int NOT NULL,
  `enabledByDefault` tinyint(1) DEFAULT '1',
  `uriFormat` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `siteId` int NOT NULL,
  `hasUrls` tinyint(1) NOT NULL DEFAULT '1',
  `template` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_sections_sites_sectionId_siteId_unq_idx` (`sectionId`,`siteId`),
  KEY `craft_sections_sites_siteId_idx` (`siteId`),
  CONSTRAINT `craft_sections_sites_sectionId_fk` FOREIGN KEY (`sectionId`) REFERENCES `craft_sections` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_sections_sites_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_sequences`
--

CREATE TABLE `craft_sequences` (
  `name` varchar(255) NOT NULL,
  `next` int unsigned NOT NULL DEFAULT '1',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_sessions`
--

CREATE TABLE `craft_sessions` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userId` int NOT NULL,
  `token` char(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_sessions_uid_idx` (`uid`),
  KEY `craft_sessions_token_idx` (`token`),
  KEY `craft_sessions_dateUpdated_idx` (`dateUpdated`),
  KEY `craft_sessions_userId_fk` (`userId`),
  CONSTRAINT `craft_sessions_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_shunnedmessages`
--

CREATE TABLE `craft_shunnedmessages` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userId` int NOT NULL,
  `message` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `expiryDate` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_shunnedmessages_userId_message_unq_idx` (`userId`,`message`),
  CONSTRAINT `craft_shunnedmessages_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_sitegroups`
--

CREATE TABLE `craft_sitegroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_sitegroups_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_sitegroups_name_idx` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_sites`
--

CREATE TABLE `craft_sites` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `handle` varchar(255) NOT NULL,
  `language` varchar(12) NOT NULL,
  `hasUrls` tinyint unsigned DEFAULT NULL,
  `baseUrl` varchar(255) DEFAULT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) NOT NULL DEFAULT '0',
  `groupId` int NOT NULL,
  `primary` tinyint(1) NOT NULL DEFAULT '0',
  `enabled` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `craft_sites_sortOrder_idx` (`sortOrder`),
  KEY `craft_sites_groupId_fk` (`groupId`),
  KEY `craft_sites_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_sites_handle_idx` (`handle`),
  CONSTRAINT `craft_sites_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_sitegroups` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_structureelements`
--

CREATE TABLE `craft_structureelements` (
  `id` int NOT NULL AUTO_INCREMENT,
  `structureId` int NOT NULL,
  `elementId` int DEFAULT NULL,
  `root` int unsigned DEFAULT NULL,
  `lft` int unsigned NOT NULL,
  `rgt` int unsigned NOT NULL,
  `level` smallint unsigned NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_structureelements_structureId_elementId_unq_idx` (`structureId`,`elementId`),
  KEY `craft_structureelements_root_idx` (`root`),
  KEY `craft_structureelements_lft_idx` (`lft`),
  KEY `craft_structureelements_rgt_idx` (`rgt`),
  KEY `craft_structureelements_level_idx` (`level`),
  KEY `craft_structureelements_elementId_fk` (`elementId`),
  CONSTRAINT `craft_structureelements_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_structureelements_structureId_fk` FOREIGN KEY (`structureId`) REFERENCES `craft_structures` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_structures`
--

CREATE TABLE `craft_structures` (
  `id` int NOT NULL AUTO_INCREMENT,
  `maxLevels` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_structures_dateDeleted_idx` (`dateDeleted`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_systemmessages`
--

CREATE TABLE `craft_systemmessages` (
  `id` int NOT NULL AUTO_INCREMENT,
  `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `language` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `subject` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `body` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_systemmessages_key_language_unq_idx` (`key`,`language`),
  KEY `craft_systemmessages_language_idx` (`language`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_taggroups`
--

CREATE TABLE `craft_taggroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `fieldLayoutId` int DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_taggroups_fieldLayoutId_idx` (`fieldLayoutId`),
  KEY `craft_taggroups_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_taggroups_name_idx` (`name`),
  KEY `craft_taggroups_handle_idx` (`handle`),
  CONSTRAINT `craft_taggroups_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_tags`
--

CREATE TABLE `craft_tags` (
  `id` int NOT NULL,
  `groupId` int NOT NULL,
  `deletedWithGroup` tinyint(1) DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_tags_groupId_idx` (`groupId`),
  CONSTRAINT `craft_tags_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_taggroups` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_tags_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_templatecacheelements`
--

CREATE TABLE `craft_templatecacheelements` (
  `cacheId` int NOT NULL,
  `elementId` int NOT NULL,
  KEY `craft_templatecacheelements_cacheId_fk` (`cacheId`),
  KEY `craft_templatecacheelements_elementId_fk` (`elementId`),
  CONSTRAINT `craft_templatecacheelements_cacheId_fk` FOREIGN KEY (`cacheId`) REFERENCES `craft_templatecaches` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_templatecacheelements_elementId_fk` FOREIGN KEY (`elementId`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_templatecachequeries`
--

CREATE TABLE `craft_templatecachequeries` (
  `id` int NOT NULL AUTO_INCREMENT,
  `cacheId` int NOT NULL,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `query` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_templatecachequeries_type_idx` (`type`),
  KEY `craft_templatecachequeries_cacheId_idx` (`cacheId`),
  CONSTRAINT `craft_templatecachequeries_cacheId_fk` FOREIGN KEY (`cacheId`) REFERENCES `craft_templatecaches` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=229 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_templatecaches`
--

CREATE TABLE `craft_templatecaches` (
  `id` int NOT NULL AUTO_INCREMENT,
  `cacheKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `expiryDate` datetime NOT NULL,
  `body` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `siteId` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_templatecaches_locale_cacheKey_path_expiryDate_idx` (`cacheKey`,`path`,`expiryDate`),
  KEY `craft_templatecaches_siteId_idx` (`siteId`),
  KEY `craft_templatecaches_cacheKey_siteId_expiryDate_idx` (`cacheKey`,`siteId`,`expiryDate`),
  KEY `craft_templatecaches_cacheKey_siteId_expiryDate_path_idx` (`cacheKey`,`siteId`,`expiryDate`,`path`),
  CONSTRAINT `craft_templatecaches_siteId_fk` FOREIGN KEY (`siteId`) REFERENCES `craft_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_tokens`
--

CREATE TABLE `craft_tokens` (
  `id` int NOT NULL AUTO_INCREMENT,
  `token` char(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `route` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `usageLimit` tinyint unsigned DEFAULT NULL,
  `usageCount` tinyint unsigned DEFAULT NULL,
  `expiryDate` datetime NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_tokens_token_unq_idx` (`token`),
  KEY `craft_tokens_expiryDate_idx` (`expiryDate`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_usergroups`
--

CREATE TABLE `craft_usergroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `description` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_usergroups_handle_idx` (`handle`),
  KEY `craft_usergroups_name_idx` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_usergroups_users`
--

CREATE TABLE `craft_usergroups_users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `groupId` int NOT NULL,
  `userId` int NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_usergroups_users_groupId_userId_unq_idx` (`groupId`,`userId`),
  KEY `craft_usergroups_users_userId_fk` (`userId`),
  CONSTRAINT `craft_usergroups_users_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_usergroups` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_usergroups_users_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_userpermissions`
--

CREATE TABLE `craft_userpermissions` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_userpermissions_name_unq_idx` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_userpermissions_usergroups`
--

CREATE TABLE `craft_userpermissions_usergroups` (
  `id` int NOT NULL AUTO_INCREMENT,
  `permissionId` int NOT NULL,
  `groupId` int NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_userpermissions_usergroups_permissionId_groupId_unq_idx` (`permissionId`,`groupId`),
  KEY `craft_userpermissions_usergroups_groupId_fk` (`groupId`),
  CONSTRAINT `craft_userpermissions_usergroups_groupId_fk` FOREIGN KEY (`groupId`) REFERENCES `craft_usergroups` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_userpermissions_usergroups_permissionId_fk` FOREIGN KEY (`permissionId`) REFERENCES `craft_userpermissions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_userpermissions_users`
--

CREATE TABLE `craft_userpermissions_users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `permissionId` int NOT NULL,
  `userId` int NOT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_userpermissions_users_permissionId_userId_unq_idx` (`permissionId`,`userId`),
  KEY `craft_userpermissions_users_userId_fk` (`userId`),
  CONSTRAINT `craft_userpermissions_users_permissionId_fk` FOREIGN KEY (`permissionId`) REFERENCES `craft_userpermissions` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_userpermissions_users_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_userpreferences`
--

CREATE TABLE `craft_userpreferences` (
  `userId` int NOT NULL,
  `preferences` text,
  PRIMARY KEY (`userId`),
  UNIQUE KEY `craft_userpreferences_userId_unq_idx` (`userId`),
  CONSTRAINT `craft_userpreferences_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `craft_users`
--

CREATE TABLE `craft_users` (
  `id` int NOT NULL,
  `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `firstName` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `lastName` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `admin` tinyint unsigned NOT NULL DEFAULT '0',
  `locked` tinyint(1) NOT NULL,
  `suspended` tinyint(1) NOT NULL,
  `pending` tinyint(1) NOT NULL,
  `lastLoginDate` datetime DEFAULT NULL,
  `lastLoginAttemptIp` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `invalidLoginWindowStart` datetime DEFAULT NULL,
  `invalidLoginCount` tinyint unsigned DEFAULT NULL,
  `lastInvalidLoginDate` datetime DEFAULT NULL,
  `lockoutDate` datetime DEFAULT NULL,
  `hasDashboard` tinyint(1) NOT NULL DEFAULT '0',
  `verificationCode` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `verificationCodeIssuedDate` datetime DEFAULT NULL,
  `unverifiedEmail` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `passwordResetRequired` tinyint unsigned NOT NULL DEFAULT '0',
  `lastPasswordChangeDate` datetime DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `photoId` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `craft_users_verificationCode_idx` (`verificationCode`),
  KEY `craft_users_uid_idx` (`uid`),
  KEY `craft_users_photoId_fk` (`photoId`),
  KEY `craft_users_email_idx` (`email`),
  KEY `craft_users_username_idx` (`username`),
  CONSTRAINT `craft_users_id_fk` FOREIGN KEY (`id`) REFERENCES `craft_elements` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_users_photoId_fk` FOREIGN KEY (`photoId`) REFERENCES `craft_assets` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_volumefolders`
--

CREATE TABLE `craft_volumefolders` (
  `id` int NOT NULL AUTO_INCREMENT,
  `parentId` int DEFAULT NULL,
  `volumeId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `craft_volumefolders_name_parentId_volumeId_unq_idx` (`name`,`parentId`,`volumeId`),
  KEY `craft_volumefolders_parentId_fk` (`parentId`),
  KEY `craft_volumefolders_volumeId_idx` (`volumeId`),
  CONSTRAINT `craft_volumefolders_parentId_fk` FOREIGN KEY (`parentId`) REFERENCES `craft_volumefolders` (`id`) ON DELETE CASCADE,
  CONSTRAINT `craft_volumefolders_volumeId_fk` FOREIGN KEY (`volumeId`) REFERENCES `craft_volumes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_volumes`
--

CREATE TABLE `craft_volumes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `fieldLayoutId` int DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `handle` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `settings` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `dateDeleted` datetime DEFAULT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `hasUrls` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_volumes_fieldLayoutId_fk` (`fieldLayoutId`),
  KEY `craft_volumes_dateDeleted_idx` (`dateDeleted`),
  KEY `craft_volumes_name_idx` (`name`),
  KEY `craft_volumes_handle_idx` (`handle`),
  CONSTRAINT `craft_volumes_fieldLayoutId_fk` FOREIGN KEY (`fieldLayoutId`) REFERENCES `craft_fieldlayouts` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Table structure for table `craft_widgets`
--

CREATE TABLE `craft_widgets` (
  `id` int NOT NULL AUTO_INCREMENT,
  `userId` int NOT NULL,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `sortOrder` smallint unsigned DEFAULT NULL,
  `colspan` tinyint DEFAULT NULL,
  `settings` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `dateCreated` datetime NOT NULL,
  `dateUpdated` datetime NOT NULL,
  `uid` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `craft_widgets_userId_fk` (`userId`),
  CONSTRAINT `craft_widgets_userId_fk` FOREIGN KEY (`userId`) REFERENCES `craft_users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping routines for database 'trevordavis'
--


--
-- Host: localhost    Database: trevordavis
-- ------------------------------------------------------


--
-- Dumping data for table `craft_assets`
--

set autocommit=0;
INSERT INTO `craft_assets` VALUES (322,1,1,NULL,'aiga-featured.jpg','image',900,400,99924,'2017-10-04 18:23:14','2014-01-22 04:21:46','2017-10-04 18:27:01','95261d33-1b33-44bb-8e89-576a230c55e7',NULL,NULL,NULL),(323,1,1,NULL,'aigaapply.jpg','image',940,1623,248193,'2017-10-04 18:23:15','2014-01-22 04:21:46','2017-10-04 18:27:02','a3ccfb14-e81f-4e6c-8a9e-9a114f904d5a',NULL,NULL,NULL),(324,1,1,NULL,'aigahome.jpg','image',940,909,159522,'2017-10-04 18:23:15','2014-01-22 04:21:46','2017-10-04 18:27:02','0b3fef22-61e4-43a5-8565-c691fb808d1b',NULL,NULL,NULL),(325,1,1,NULL,'aigahomeflyout.jpg','image',940,909,157356,'2017-10-04 18:23:15','2014-01-22 04:21:46','2017-10-04 18:27:02','5055b219-05e7-469b-b857-2f8cf1e9db32',NULL,NULL,NULL),(326,1,1,NULL,'aiganews.jpg','image',940,1441,172740,'2017-10-04 18:23:15','2014-01-22 04:21:47','2017-10-04 18:27:03','ae62fff8-6382-441c-95f9-9735c5f9b814',NULL,NULL,NULL),(327,1,1,NULL,'athletes-hub.jpg','image',900,1130,696808,'2017-10-04 18:23:16','2014-01-22 04:21:47','2017-10-04 18:27:03','f20ea7fc-cd1f-4999-8e77-7c8f022791fa',NULL,NULL,NULL),(328,1,1,NULL,'athletes-individual.jpg','image',900,1759,1071244,'2017-10-04 18:23:17','2014-01-22 04:21:47','2017-10-04 18:27:03','32b9eaa9-ce50-44e0-8f12-6236a5de0418',NULL,NULL,NULL),(329,1,1,NULL,'beniga-featured.jpg','image',900,400,118226,'2017-10-04 18:23:17','2014-01-22 04:21:47','2017-10-04 18:27:04','977dbdd5-2975-46bb-b5be-04c97f6a460f',NULL,NULL,NULL),(330,1,1,NULL,'beniga-gallery.jpg','image',900,518,142414,'2017-10-04 18:23:18','2014-01-22 04:21:47','2017-10-04 18:27:01','86732970-bfd4-4dab-a9d1-fe66b1ff50d0',NULL,NULL,NULL),(331,1,1,NULL,'beniga-home.jpg','image',900,519,146557,'2017-10-04 18:23:18','2014-01-22 04:21:48','2017-10-04 18:27:04','f3fdbc86-370c-4771-8388-9a32e00e9b07',NULL,NULL,NULL),(332,1,1,NULL,'beniga-store.jpg','image',900,536,112858,'2017-10-04 18:23:18','2014-01-22 04:21:48','2017-10-04 18:27:04','2da2c5a0-7ebc-42fe-a809-6066953b86ef',NULL,NULL,NULL),(333,1,1,NULL,'beniga-videos.jpg','image',900,699,170111,'2017-10-04 18:23:18','2014-01-22 04:21:48','2017-10-04 18:27:04','20ebe52b-9ead-4269-b052-eb73b5b320d5',NULL,NULL,NULL),(334,1,1,NULL,'beniga.jpg','image',440,235,33544,'2017-10-04 18:23:18','2014-01-22 04:21:48','2017-10-04 18:27:04','ce6c735e-bd77-4538-8cd3-8bc464a7bd18',NULL,NULL,NULL),(335,1,1,NULL,'bio.png','image',1440,2357,334328,'2017-10-04 18:23:19','2014-01-22 04:21:48','2017-10-04 18:27:05','1760702e-a3df-4965-a9a2-4f231006d756',NULL,NULL,NULL),(336,1,1,NULL,'bolt-collection-bottom.jpg','image',900,1450,327373,'2017-10-04 18:23:19','2014-01-22 04:21:49','2017-10-04 18:27:05','904bffa9-7424-4ea2-bd7c-19d9ff0df8d3',NULL,NULL,NULL),(337,1,1,NULL,'bolt-collection-featured.jpg','image',900,400,97504,'2017-10-04 18:23:19','2014-01-22 04:21:49','2017-10-04 18:27:05','402d87b6-b12d-45c6-85b6-07a9ec1428e6',NULL,NULL,NULL),(338,1,1,NULL,'bolt-collection-full.jpg','image',900,2851,651171,'2017-10-04 18:23:20','2014-01-22 04:21:49','2017-10-04 18:27:06','b43d643a-327b-4f34-ad52-58129160a077',NULL,NULL,NULL),(339,1,1,NULL,'bolt-collection-top.jpg','image',900,1401,322805,'2017-10-04 18:23:21','2014-01-22 04:21:49','2017-10-04 18:27:06','c82ca721-0bc3-4ba1-b88e-a1c4c3c552d1',NULL,NULL,NULL),(340,1,1,NULL,'bolt-collection.jpg','image',440,235,47659,'2017-10-04 18:23:21','2014-01-22 04:21:49','2017-10-04 18:27:04','28b833cb-5933-4bdb-b996-df7ef7bd1af7',NULL,NULL,NULL),(341,1,1,NULL,'carr-featured.jpg','image',900,400,104441,'2017-10-04 18:23:21','2014-01-22 04:21:50','2017-10-04 18:27:01','4fc062c5-d5f0-44ce-974e-7ef3e7e1fd0c',NULL,NULL,NULL),(342,1,1,NULL,'carrcenter.jpg','image',940,2527,317829,'2017-10-04 18:23:21','2014-01-22 04:21:50','2017-10-04 18:26:58','a796fde2-fce1-4c5d-993f-4061008bf567',NULL,NULL,NULL),(343,1,1,NULL,'carrhome.jpg','image',940,1237,196885,'2017-10-04 18:23:22','2014-01-22 04:21:50','2017-10-04 18:27:00','e4d2b0c8-7a30-4388-a776-b0742fb14af2',NULL,NULL,NULL),(344,1,1,NULL,'carrlocations.jpg','image',940,3834,585988,'2017-10-04 18:23:22','2014-01-22 04:21:50','2017-10-04 18:26:56','8313c707-e60b-435e-acc0-6c467e3f4065',NULL,NULL,NULL),(345,1,1,NULL,'carrregion.jpg','image',940,1742,249270,'2017-10-04 18:23:23','2014-01-22 04:21:50','2017-10-04 18:26:56','3160ff43-0ffe-439c-b9fa-783da2475129',NULL,NULL,NULL),(346,1,1,NULL,'carrservicedoffices.jpg','image',940,3505,552029,'2017-10-04 18:23:24','2014-01-22 04:21:51','2017-10-04 18:26:56','6004dbe9-eb09-4f7d-a9a8-d4560a9d30c3',NULL,NULL,NULL),(347,1,1,NULL,'carrvoconfig.jpg','image',940,2399,201515,'2017-10-04 18:23:24','2014-01-22 04:21:51','2017-10-04 18:26:57','818cf097-e742-44dc-b76f-bb0b56996011',NULL,NULL,NULL),(348,1,1,NULL,'ds411.jpg','image',440,235,34957,'2017-10-04 18:23:24','2014-01-22 04:21:51','2017-10-04 18:26:57','8f29531e-c0d5-477d-8021-02af4fded7ec',NULL,NULL,NULL),(349,1,1,NULL,'easter-seals-featured.jpg','image',900,400,100722,'2017-10-04 18:23:24','2014-01-22 04:21:51','2017-10-04 18:26:57','fdd848b8-3df2-4e0e-a3da-4a9b2326031a',NULL,NULL,NULL),(350,1,1,NULL,'easter-seals-nc.jpg','image',440,235,89347,'2017-10-04 18:23:24','2014-01-22 04:21:52','2017-10-04 18:26:57','b2c131d1-d3fd-46dc-83c2-2bff8ea63aa8',NULL,NULL,NULL),(351,1,1,NULL,'giving-get-involved.jpg','image',900,1945,1061209,'2017-10-04 18:23:25','2014-01-22 04:21:52','2017-10-04 18:26:58','7b2b4517-32a6-48f8-9339-a88afc567919',NULL,NULL,NULL),(352,1,1,NULL,'home-small-nav-open.png','image',400,1551,163620,'2017-10-04 18:23:28','2014-01-22 04:21:52','2017-10-04 18:26:59','061fb72a-f28e-46e2-bb9e-60e83d22c06d',NULL,NULL,NULL),(353,1,1,NULL,'home-small.png','image',400,1551,173275,'2017-10-04 18:23:28','2014-01-22 04:21:52','2017-10-04 18:26:59','965b409c-cd66-4489-9499-4b90afa2537f',NULL,NULL,NULL),(354,1,1,NULL,'home.jpg','image',900,1004,401856,'2017-10-04 18:23:28','2014-01-22 04:21:52','2017-10-04 18:27:00','2463736f-5bb3-4b4b-8504-41d43baa6d61',NULL,NULL,NULL),(355,1,1,NULL,'home.png','image',1440,1812,259850,'2017-10-04 18:23:29','2014-01-22 04:21:53','2017-10-04 18:27:00','565eba8e-914e-4d99-9d7a-c9206e93806a',NULL,NULL,NULL),(356,1,1,NULL,'home1.jpg','image',1440,1812,308868,'2017-10-04 18:23:29','2014-01-22 04:21:53','2017-10-04 18:27:00','2fdb21d7-bff4-449e-8e14-170abe156ae5',NULL,NULL,NULL),(357,1,1,NULL,'home_1.jpg','image',900,835,247356,'2017-10-04 18:23:29','2014-01-22 04:21:53','2017-10-04 18:27:00','461e30d5-2662-4d0a-b956-a348d4b4c51d',NULL,NULL,NULL),(358,1,1,NULL,'home_2.jpg','image',900,645,190881,'2017-10-04 18:23:30','2014-01-22 04:21:53','2017-10-04 18:27:06','9f009337-3874-4fb4-b74c-21a17fc68074',NULL,NULL,NULL),(359,1,1,NULL,'home_3.jpg','image',900,841,198395,'2017-10-04 18:23:30','2014-01-22 04:21:53','2017-10-04 18:27:01','d8bff55e-388c-4140-8325-eab7d2618421',NULL,NULL,NULL),(360,1,1,NULL,'home_4.jpg','image',900,1547,894446,'2017-10-04 18:23:31','2014-01-22 04:21:54','2017-10-04 18:27:06','6c09685f-f1d1-4a39-b01f-f9e8711e9f00',NULL,NULL,NULL),(361,1,1,NULL,'home_5.jpg','image',900,711,425614,'2017-10-04 18:23:31','2014-01-22 04:21:54','2017-10-04 18:27:12','d1574557-574d-427f-92c8-e6aa8008147a',NULL,NULL,NULL),(362,1,1,NULL,'home_6.jpg','image',900,2012,1060807,'2017-10-04 18:23:32','2014-01-22 04:21:54','2017-10-04 18:27:13','7057b7da-7613-4d50-a54b-6baf6d358707',NULL,NULL,NULL),(363,1,1,NULL,'ibew.jpg','image',440,235,50017,'2017-10-04 18:23:32','2014-01-22 04:21:54','2017-10-04 18:27:13','90073ac5-d33e-4842-870b-4a7245845734',NULL,NULL,NULL),(364,1,1,NULL,'individual-service.jpg','image',900,1916,1031106,'2017-10-04 18:23:33','2014-01-22 04:21:54','2017-10-04 18:27:14','cb961faa-466e-4aff-b5f6-2437b0873830',NULL,NULL,NULL),(365,1,1,NULL,'lansinoh-cart.jpg','image',1176,1510,174397,'2017-10-04 18:23:33','2014-01-22 04:21:55','2017-10-04 18:27:14','7eeb33e0-07d3-4469-9315-46fea400e4cb',NULL,NULL,NULL),(366,1,1,NULL,'lansinoh-contact-us.jpg','image',1176,2091,217199,'2017-10-04 18:23:33','2014-01-22 04:21:55','2017-10-04 18:27:14','f64f1a92-679a-45ee-8d7b-c8bf07941a6a',NULL,NULL,NULL),(367,1,1,NULL,'lansinoh-featured.jpg','image',900,400,67472,'2017-10-04 18:23:33','2014-01-22 04:21:56','2017-10-04 18:27:14','eb0369ee-56d2-479e-878c-cd91c1dc5ea8',NULL,NULL,NULL),(368,1,1,NULL,'lansinoh-home-small-nav-open.jpg','image',400,2440,91386,'2017-10-04 18:23:34','2014-01-22 04:21:56','2017-10-04 18:27:14','30f0a1e9-4f80-4eef-902b-098c6e3dba86',NULL,NULL,NULL),(369,1,1,NULL,'lansinoh-home-small.jpg','image',400,2440,195437,'2017-10-04 18:23:34','2014-01-22 04:21:56','2017-10-04 18:27:15','e957821d-da18-434c-a03e-76bfff30980c',NULL,NULL,NULL),(370,1,1,NULL,'lansinoh-home.jpg','image',1176,2298,402119,'2017-10-04 18:23:34','2014-01-22 04:21:56','2017-10-04 18:27:15','4bcc6b2a-382e-4933-9219-054fab5420b9',NULL,NULL,NULL),(371,1,1,NULL,'lansinoh-moms-stories.jpg','image',1176,2648,469877,'2017-10-04 18:23:35','2014-01-22 04:21:57','2017-10-04 18:27:13','59ac82b9-62b5-420c-954b-51bdc759660a',NULL,NULL,NULL),(372,1,1,NULL,'lansinoh-product-category-small.jpg','image',400,2440,201741,'2017-10-04 18:23:35','2014-01-22 04:21:57','2017-10-04 18:27:15','5f4a2116-bc73-4e67-9cc1-5bd99b20d83e',NULL,NULL,NULL),(373,1,1,NULL,'lansinoh-product-category.jpg','image',1176,2771,445204,'2017-10-04 18:23:35','2014-01-22 04:21:57','2017-10-04 18:27:16','6c4aa1c8-6511-4c8c-8169-87f7aa33935f',NULL,NULL,NULL),(374,1,1,NULL,'lansinoh-product-show.jpg','image',1176,4582,670443,'2017-10-04 18:23:36','2014-01-22 04:21:57','2017-10-04 18:27:17','2ffb33f8-09ca-4da6-b768-f9746c0317f4',NULL,NULL,NULL),(375,1,1,NULL,'lansinoh-where-to-buy.jpg','image',1176,2209,438741,'2017-10-04 18:23:36','2014-01-22 04:21:57','2017-10-04 18:27:17','835e7136-baf3-44ad-b91f-f7793e8feab6',NULL,NULL,NULL),(376,1,1,NULL,'media-hub.jpg','image',900,1570,1012577,'2017-10-04 18:23:38','2014-01-22 04:21:58','2017-10-04 18:27:17','faba1590-4563-4895-a5c5-27d899da2761',NULL,NULL,NULL),(377,1,1,NULL,'national-tree.jpg','image',440,235,41421,'2017-10-04 18:23:38','2014-01-22 04:21:58','2017-10-04 18:27:18','5cca1c89-3ef1-46e6-ab9f-70839d6bd54e',NULL,NULL,NULL),(378,1,1,NULL,'nea-bio.jpg','image',1440,2357,395163,'2017-10-04 18:23:39','2014-01-22 04:21:58','2017-10-04 18:27:18','553d2b39-b86b-4b9d-9c4e-15924842840c',NULL,NULL,NULL),(379,1,1,NULL,'nea-featured.jpg','image',900,400,76687,'2017-10-04 18:23:39','2014-01-22 04:21:58','2017-10-04 18:27:18','5f2d6e48-d095-40f1-939e-bc46f0dc5d1d',NULL,NULL,NULL),(380,1,1,NULL,'nea-featured.png','image',900,400,122440,'2017-10-04 18:23:39','2014-01-22 04:21:59','2017-10-04 18:27:16','02c99c92-1e85-4b19-bc19-8986b0489400',NULL,NULL,NULL),(381,1,1,NULL,'nea-home-small-nav-open.jpg','image',400,1551,120140,'2017-10-04 18:23:39','2014-01-22 04:21:59','2017-10-04 18:27:12','ccbecef2-6921-4725-a973-d4764e68d1dc',NULL,NULL,NULL),(382,1,1,NULL,'nea-home-small.jpg','image',400,1551,133336,'2017-10-04 18:23:40','2014-01-22 04:21:59','2017-10-04 18:27:10','09805c4f-1e42-4326-a25f-37bddbd870af',NULL,NULL,NULL),(383,1,1,NULL,'nea-home.jpg','image',1440,1812,308868,'2017-10-04 18:23:40','2014-01-22 04:21:59','2017-10-04 18:27:12','f2060611-ecdb-4b04-abd6-c97dd0e49c50',NULL,NULL,NULL),(384,1,1,NULL,'nea-portfolio-small.jpg','image',400,1551,104851,'2017-10-04 18:23:40','2014-01-22 04:21:59','2017-10-04 18:27:07','cecab38a-c06e-492d-936b-ca25b9c77d40',NULL,NULL,NULL),(385,1,1,NULL,'nea-team.jpg','image',1440,2890,743228,'2017-10-04 18:23:41','2014-01-22 04:22:00','2017-10-04 18:27:07','99afa1b4-9510-4afc-8f06-fe9965313431',NULL,NULL,NULL),(386,1,1,NULL,'news-blog.jpg','image',900,1406,680472,'2017-10-04 18:23:42','2014-01-22 04:22:00','2017-10-04 18:27:08','bc559160-b887-4f70-9117-c78f18c2f4c7',NULL,NULL,NULL),(387,1,1,NULL,'nms-about.jpg','image',940,552,97548,'2017-10-04 18:23:43','2014-01-22 04:22:00','2017-10-04 18:27:08','cb53e9cd-2853-40c4-9e9b-7f6c0d77fb86',NULL,NULL,NULL),(388,1,1,NULL,'nms-case-studies.jpg','image',940,1329,181497,'2017-10-04 18:23:43','2014-01-22 04:22:00','2017-10-04 18:27:08','1929af45-9ed9-475c-b396-92ad05d01077',NULL,NULL,NULL),(389,1,1,NULL,'nms-clients.jpg','image',940,1779,202940,'2017-10-04 18:23:43','2014-01-22 04:22:01','2017-10-04 18:27:09','36e4fbbf-64cb-48c8-ade2-7cc027abddf6',NULL,NULL,NULL),(390,1,1,NULL,'nms-featured.jpg','image',900,400,40064,'2017-10-04 18:23:43','2014-01-22 04:22:01','2017-10-04 18:27:09','23372130-f42c-4000-b841-5f2188c357ee',NULL,NULL,NULL),(391,1,1,NULL,'nms-home.jpg','image',940,861,132751,'2017-10-04 18:23:43','2014-01-22 04:22:01','2017-10-04 18:27:09','6a5ae9c2-62ce-4382-85c1-179d80680e77',NULL,NULL,NULL),(392,1,1,NULL,'nms-lockout.jpg','image',940,1237,162076,'2017-10-04 18:23:44','2014-01-22 04:22:01','2017-10-04 18:27:09','524eec4f-ca27-44bf-8837-32697e92f6a7',NULL,NULL,NULL),(393,1,1,NULL,'nms-ray-ban.jpg','image',940,847,108104,'2017-10-04 18:23:44','2014-01-22 04:22:01','2017-10-04 18:27:07','9bdac3a0-371f-4fd4-8b7a-069b56813dc1',NULL,NULL,NULL),(394,1,1,NULL,'nms-team-modal.jpg','image',940,756,69830,'2017-10-04 18:23:44','2014-01-22 04:22:02','2017-10-04 18:27:10','a836f95b-1aeb-4f6e-b3e0-ba214ecdcb0e',NULL,NULL,NULL),(395,1,1,NULL,'nms-team.jpg','image',940,756,100842,'2017-10-04 18:23:44','2014-01-22 04:22:02','2017-10-04 18:27:10','96007ff9-f67a-4429-a314-65d5e5e0b873',NULL,NULL,NULL),(396,1,1,NULL,'npf-summit.jpg','image',440,235,77751,'2017-10-04 18:23:44','2014-01-22 04:22:02','2017-10-04 18:27:10','d1071471-2e6f-4dc4-8ece-4025af39022d',NULL,NULL,NULL),(397,1,1,NULL,'orbcomm-contact.jpg','image',940,1522,106874,'2017-10-04 18:23:44','2014-01-22 04:22:02','2017-10-04 18:27:10','5cb57c43-ccf0-4c95-af92-331022512bd9',NULL,NULL,NULL),(398,1,1,NULL,'orbcomm-featured.jpg','image',900,400,88410,'2017-10-04 18:23:45','2014-01-22 04:22:03','2017-10-04 18:27:10','d8299269-4733-4463-a5b4-5e602b5d59af',NULL,NULL,NULL),(399,1,1,NULL,'orbcomm-home.jpg','image',940,1593,277359,'2017-10-04 18:23:45','2014-01-22 04:22:03','2017-10-04 18:27:11','1e0377d6-8f4a-48f5-a821-6fc78ee18bea',NULL,NULL,NULL),(400,1,1,NULL,'orbcomm-modems-chipsets.jpg','image',940,2713,470135,'2017-10-04 18:23:45','2014-01-22 04:22:03','2017-10-04 18:27:11','3aa74bb1-3b2a-4ffa-8360-f517a71a8d6b',NULL,NULL,NULL),(401,1,1,NULL,'orbcomm-networks.jpg','image',940,1031,180762,'2017-10-04 18:23:46','2014-01-22 04:22:03','2017-10-04 18:27:11','f7379527-c3fc-4414-b91e-485d9e9fec4f',NULL,NULL,NULL),(402,1,1,NULL,'orbcomm-technologies.jpg','image',940,1213,155421,'2017-10-04 18:23:46','2014-01-22 04:22:04','2017-10-04 18:27:11','f316bcfa-1124-46b5-b65d-57f992a9d92b',NULL,NULL,NULL),(403,1,1,NULL,'portfolio-small.png','image',400,1551,79658,'2017-10-04 18:23:49','2014-01-22 04:22:04','2017-10-04 18:26:35','ef20d1d8-b855-4b84-abfa-241e9c363263',NULL,NULL,NULL),(404,1,1,NULL,'product-individual.jpg','image',900,1708,856883,'2017-10-04 18:23:50','2014-01-22 04:22:04','2017-10-04 18:26:36','5e5c00aa-a98b-4434-9354-4ac51585f57c',NULL,NULL,NULL),(405,1,1,NULL,'puma-city-1.jpg','image',900,848,231853,'2017-10-04 18:23:50','2014-01-22 04:22:04','2017-10-04 18:26:36','220401a9-fa78-4ef2-bf66-c2dc1913584c',NULL,NULL,NULL),(406,1,1,NULL,'puma-city-2.jpg','image',900,711,223969,'2017-10-04 18:23:51','2014-01-22 04:22:04','2017-10-04 18:26:36','7afc0ca7-0c0c-438c-8e8a-3d9e53b7093e',NULL,NULL,NULL),(407,1,1,NULL,'puma-city-3.jpg','image',900,764,203920,'2017-10-04 18:23:51','2014-01-22 04:22:05','2017-10-04 18:26:34','8e8fc94e-5abb-4971-b332-79558ae6d9c4',NULL,NULL,NULL),(408,1,1,NULL,'puma-city-4.jpg','image',900,668,193148,'2017-10-04 18:23:51','2014-01-22 04:22:05','2017-10-04 18:26:37','08d0db29-ca46-45d5-87ab-b5be9c6d8b6a',NULL,NULL,NULL),(409,1,1,NULL,'puma-city-featured.jpg','image',900,400,96038,'2017-10-04 18:23:51','2014-01-22 04:22:05','2017-10-04 18:26:37','f034de92-5e41-4146-b605-dadd70352a9d',NULL,NULL,NULL),(410,1,1,NULL,'puma-city-full.jpg','image',900,2991,853611,'2017-10-04 18:23:52','2014-01-22 04:22:05','2017-10-04 18:26:38','b748cafb-6435-4107-8d08-f3dac51fd18c',NULL,NULL,NULL),(411,1,1,NULL,'puma-city.jpg','image',440,235,34151,'2017-10-04 18:23:52','2014-01-22 04:22:06','2017-10-04 18:26:38','de174fd5-5bf4-4cd1-aef4-91fe7563d541',NULL,NULL,NULL),(412,1,1,NULL,'puma-clb-btm.jpg','image',900,801,202642,'2017-10-04 18:23:52','2014-01-22 04:22:06','2017-10-04 18:26:38','d8ca0f36-bf7f-4729-8e70-456c66e8452d',NULL,NULL,NULL),(413,1,1,NULL,'puma-clb-featured.jpg','image',900,400,142578,'2017-10-04 18:23:52','2014-01-22 04:22:06','2017-10-04 18:26:39','a77ef8d1-8a7c-4838-8e51-04a6b1a191ea',NULL,NULL,NULL),(414,1,1,NULL,'puma-clb-full.jpg','image',900,2660,682001,'2017-10-04 18:23:53','2014-01-22 04:22:06','2017-10-04 18:26:39','2ac3e694-1e00-4e4b-a5e4-c23b5266d786',NULL,NULL,NULL),(415,1,1,NULL,'puma-clb-middle.jpg','image',900,1076,276323,'2017-10-04 18:23:54','2014-01-22 04:22:06','2017-10-04 18:26:40','4bb9bee8-6fc0-45f9-a01c-aca197101112',NULL,NULL,NULL),(416,1,1,NULL,'puma-clb-top.jpg','image',900,783,202474,'2017-10-04 18:23:54','2014-01-22 04:22:07','2017-10-04 18:26:40','fe169553-c454-40c3-ac3b-9505a45f25bd',NULL,NULL,NULL),(417,1,1,NULL,'puma-clb.jpg','image',440,235,46500,'2017-10-04 18:23:54','2014-01-22 04:22:07','2017-10-04 18:26:40','b43a4258-b061-4070-932d-e3d50863d4be',NULL,NULL,NULL),(418,1,1,NULL,'puma-feature.jpg','image',900,400,78218,'2017-10-04 18:23:54','2014-01-22 04:22:07','2017-10-04 18:26:37','1e29379f-bb59-4fc9-bc1b-11396802bed9',NULL,NULL,NULL),(419,1,1,NULL,'puma-golf-athletes-hub.jpg','image',900,1056,280394,'2017-10-04 18:23:55','2014-01-22 04:22:07','2017-10-04 18:26:34','1b19b925-846c-451e-be7b-4e86f6090f9e',NULL,NULL,NULL),(420,1,1,NULL,'puma-golf-feature.jpg','image',440,235,36350,'2017-10-04 18:23:55','2014-01-22 04:22:08','2017-10-04 18:26:31','b9f468fe-8336-4cc0-b617-19eafdce1dc5',NULL,NULL,NULL),(421,1,1,NULL,'puma-golf-featured.jpg','image',900,400,105273,'2017-10-04 18:23:55','2014-01-22 04:22:08','2017-10-04 18:26:33','65d63ad1-3ef5-4bfa-913d-ad0f523e267d',NULL,NULL,NULL),(422,1,1,NULL,'puma-golf-home.jpg','image',900,1944,509687,'2017-10-04 18:23:55','2014-01-22 04:22:08','2017-10-04 18:26:28','fadacf0a-b6e5-4cb9-b22e-2828c82161f6',NULL,NULL,NULL),(423,1,1,NULL,'puma-golf-media-indiv.jpg','image',900,2119,356704,'2017-10-04 18:23:56','2014-01-22 04:22:08','2017-10-04 18:26:29','3243e0a6-6093-45d5-951d-c28749c2f39f',NULL,NULL,NULL),(424,1,1,NULL,'puma-golf-tech-style.jpg','image',900,1417,392072,'2017-10-04 18:23:57','2014-01-22 04:22:09','2017-10-04 18:26:29','be43f1b2-4e44-4dbc-b093-54df06048567',NULL,NULL,NULL),(425,1,1,NULL,'puma-running-featured.jpg','image',900,400,118456,'2017-10-04 18:23:57','2014-01-22 04:22:09','2017-10-04 18:26:29','7a889cf2-4992-4a5f-a610-0205e784b8a4',NULL,NULL,NULL),(426,1,1,NULL,'puma-time-feature.jpg','image',440,235,42832,'2017-10-04 18:23:57','2014-01-22 04:22:09','2017-10-04 18:26:29','4436421c-bec3-43a8-9f63-ae92bbaabdb9',NULL,NULL,NULL),(427,1,1,NULL,'puma-time-featured.jpg','image',900,400,81428,'2017-10-04 18:23:57','2014-01-22 04:22:09','2017-10-04 18:26:30','44fd09d5-af7e-4d20-8b64-03d04cbd369c',NULL,NULL,NULL),(428,1,1,NULL,'puma-time-home.jpg','image',900,1685,337717,'2017-10-04 18:23:57','2014-01-22 04:22:10','2017-10-04 18:26:30','09338548-0297-4881-b410-38063e6a0afc',NULL,NULL,NULL),(429,1,1,NULL,'puma-time-indiv-product.jpg','image',900,1817,307955,'2017-10-04 18:23:58','2014-01-22 04:22:10','2017-10-04 18:26:30','68fb84f2-fa80-4aec-9651-88ed88d17e71',NULL,NULL,NULL),(430,1,1,NULL,'puma-time-media-hub-modal.jpg','image',900,1589,209416,'2017-10-04 18:23:58','2014-01-22 04:22:10','2017-10-04 18:26:30','cf5c8fe9-88fa-4deb-8457-65d0fd4160e7',NULL,NULL,NULL),(431,1,1,NULL,'puma-time-media-hub.jpg','image',900,1589,493840,'2017-10-04 18:23:59','2014-01-22 04:22:10','2017-10-04 18:26:27','99712e30-81e9-4c17-853f-8154055991c8',NULL,NULL,NULL),(432,1,1,NULL,'puma-time-product-hub.jpg','image',900,1641,260741,'2017-10-04 18:23:59','2014-01-22 04:22:10','2017-10-04 18:26:31','e3e2a1d0-d7a0-46d3-ae55-195ecf52eb79',NULL,NULL,NULL),(433,1,1,NULL,'puma.jpg','image',440,235,87646,'2017-10-04 18:23:59','2014-01-22 04:22:11','2017-10-04 18:26:31','23c5727d-2088-4280-a863-ddfe1f4a6ec5',NULL,NULL,NULL),(434,1,1,NULL,'pumaathlete.jpg','image',940,1536,316587,'2017-10-04 18:24:00','2014-01-22 04:22:11','2017-10-04 18:26:31','efa81dab-472d-4209-976b-76ba16c1ee59',NULL,NULL,NULL),(435,1,1,NULL,'pumaevents.jpg','image',940,1173,199379,'2017-10-04 18:24:00','2014-01-22 04:22:11','2017-10-04 18:26:31','86ccfc2e-9925-4aca-86d7-cbae3207baea',NULL,NULL,NULL),(436,1,1,NULL,'pumahome.jpg','image',940,1687,386001,'2017-10-04 18:24:00','2014-01-22 04:22:11','2017-10-04 18:26:31','9e84088d-f005-4a80-be98-457e67ddc4ab',NULL,NULL,NULL),(437,1,1,NULL,'pumamedia.jpg','image',940,1806,436959,'2017-10-04 18:24:01','2014-01-22 04:22:12','2017-10-04 18:26:32','86e33d2b-a4ab-4ae7-b060-57664854b011',NULL,NULL,NULL),(438,1,1,NULL,'pumaproduct.jpg','image',940,1625,277387,'2017-10-04 18:24:01','2014-01-22 04:22:12','2017-10-04 18:26:32','7fc75490-8e42-4c90-a0b9-484c9dffd74c',NULL,NULL,NULL),(439,1,1,NULL,'pumaproducts.jpg','image',940,1396,247591,'2017-10-04 18:24:01','2014-01-22 04:22:12','2017-10-04 18:26:32','6165494d-b49d-48b2-955f-cce9f7765948',NULL,NULL,NULL),(440,1,1,NULL,'rumble-about.jpg','image',940,1684,234420,'2017-10-04 18:24:02','2014-01-22 04:22:12','2017-10-04 18:26:33','7acfc5f7-4ed5-4e06-b012-95c2ac33887b',NULL,NULL,NULL),(441,1,1,NULL,'rumble-featured.jpg','image',900,400,74390,'2017-10-04 18:24:02','2014-01-22 04:22:13','2017-10-04 18:26:33','1e2c2cd6-c7b4-4a22-8fa2-c82ffa121f49',NULL,NULL,NULL),(442,1,1,NULL,'rumble-game.jpg','image',940,3833,613497,'2017-10-04 18:24:02','2014-01-22 04:22:13','2017-10-04 18:26:40','c1b54272-f602-4eee-9de1-c94ae212e907',NULL,NULL,NULL),(443,1,1,NULL,'rumble-home.jpg','image',940,962,247273,'2017-10-04 18:24:03','2014-01-22 04:22:13','2017-10-04 18:26:34','b1816449-e1c1-4ca8-a035-a6c0af1881fc',NULL,NULL,NULL),(444,1,1,NULL,'rumble-news.jpg','image',940,1938,183667,'2017-10-04 18:24:03','2014-01-22 04:22:13','2017-10-04 18:26:41','14f87a9c-516c-47ff-8d1d-eaed3a68aca9',NULL,NULL,NULL),(445,1,1,NULL,'rumble-publishing.jpg','image',940,1512,195017,'2017-10-04 18:24:03','2014-01-22 04:22:13','2017-10-04 18:26:49','e2a3eee0-bc17-4313-829a-41cea917a560',NULL,NULL,NULL),(446,1,1,NULL,'rumbleabout.jpg','image',940,1684,234420,'2017-10-04 18:24:04','2014-01-22 04:22:14','2017-10-04 18:26:49','640f1008-59ee-4547-a964-d5574cf76ac9',NULL,NULL,NULL),(447,1,1,NULL,'rumblegame.jpg','image',940,3833,613497,'2017-10-04 18:24:04','2014-01-22 04:22:14','2017-10-04 18:26:50','aef223bf-62d1-4ac0-8025-817d5132d727',NULL,NULL,NULL),(448,1,1,NULL,'rumblehome.jpg','image',940,962,247273,'2017-10-04 18:24:04','2014-01-22 04:22:14','2017-10-04 18:26:50','905cd0c8-eea4-432c-82b9-834b3ba65551',NULL,NULL,NULL),(449,1,1,NULL,'rumblenews.jpg','image',940,1938,183667,'2017-10-04 18:24:05','2014-01-22 04:22:14','2017-10-04 18:26:50','2c355a69-1f45-49aa-a7f8-60d4d5277786',NULL,NULL,NULL),(450,1,1,NULL,'rumblepublishing.jpg','image',940,1512,195017,'2017-10-04 18:24:05','2014-01-22 04:22:15','2017-10-04 18:26:50','1a6f26fe-c179-4719-99d9-2bd2de49819f',NULL,NULL,NULL),(451,1,1,NULL,'sub-1.jpg','image',900,865,224320,'2017-10-04 18:24:05','2014-01-22 04:22:15','2017-10-04 18:26:50','223914b0-6a76-4ee3-88f7-74945f962a19',NULL,NULL,NULL),(452,1,1,NULL,'sub-2.jpg','image',900,892,209578,'2017-10-04 18:24:05','2014-01-22 04:22:15','2017-10-04 18:26:51','e9bbcac3-3246-4aa0-a178-90e9cba3e4a8',NULL,NULL,NULL),(453,1,1,NULL,'sub-speakers.jpg','image',900,1648,762621,'2017-10-04 18:24:06','2014-01-22 04:22:15','2017-10-04 18:26:51','d0c6fee8-481e-4661-8c3e-6a9996b9361f',NULL,NULL,NULL),(454,1,1,NULL,'sub.jpg','image',900,767,334115,'2017-10-04 18:24:06','2014-01-22 04:22:16','2017-10-04 18:26:51','2ade55bb-b5d3-48c6-a351-66d0cdc55e23',NULL,NULL,NULL),(455,1,1,NULL,'sub_1.jpg','image',900,668,182546,'2017-10-04 18:24:07','2014-01-22 04:22:16','2017-10-04 18:26:49','4acd46f1-ed7b-4623-abca-a44c61f660ec',NULL,NULL,NULL),(456,1,1,NULL,'team-viget-contact.jpg','image',940,932,168816,'2017-10-04 18:24:07','2014-01-22 04:22:16','2017-10-04 18:26:51','095477de-eee4-4479-b921-3586ea561680',NULL,NULL,NULL),(457,1,1,NULL,'team-viget-feature.jpg','image',900,400,47287,'2017-10-04 18:24:07','2014-01-22 04:22:17','2017-10-04 18:26:52','67067f3d-b3d2-4b77-8b7f-fd669e12650c',NULL,NULL,NULL),(458,1,1,NULL,'team-viget-launch.jpg','image',940,932,109038,'2017-10-04 18:24:07','2014-01-22 04:22:18','2017-10-04 18:26:52','4517b1c5-0b3a-4557-a4d4-fa800d445f1f',NULL,NULL,NULL),(459,1,1,NULL,'team-viget-stories.jpg','image',940,932,186456,'2017-10-04 18:24:07','2014-01-22 04:22:18','2017-10-04 18:26:52','94c43f37-910b-4082-bdd1-14cf44528290',NULL,NULL,NULL),(460,1,1,NULL,'team-viget-story.jpg','image',940,932,126801,'2017-10-04 18:24:08','2014-01-22 04:22:19','2017-10-04 18:26:53','ff5b9d85-c283-48a3-96fa-c7382d1bff6d',NULL,NULL,NULL),(461,1,1,NULL,'team.png','image',1440,2890,1187748,'2017-10-04 18:24:08','2014-01-22 04:22:20','2017-10-04 18:26:53','6ba1142f-ceeb-4c27-af37-c406f0071bad',NULL,NULL,NULL),(462,1,1,NULL,'temp_file_puma-golf-home1.jpg','image',900,1944,509687,'2017-10-04 18:24:09','2014-01-22 04:22:20','2017-10-04 18:26:54','45d6c4ee-3ba5-421e-bacb-17f4db37a196',NULL,NULL,NULL),(463,1,1,NULL,'ultimat-age-gate.jpg','image',940,658,71809,'2017-10-04 18:24:10','2014-01-22 04:22:21','2017-10-04 18:26:54','e3d94931-ea11-4ea8-b37f-98b054aba9b3',NULL,NULL,NULL),(464,1,1,NULL,'ultimat-cocktails.jpg','image',940,1492,183362,'2017-10-04 18:24:10','2014-01-22 04:22:21','2017-10-04 18:26:54','91dc797c-8a0d-44eb-b70a-a353456d5674',NULL,NULL,NULL),(465,1,1,NULL,'ultimat-event.jpg','image',940,1558,276364,'2017-10-04 18:24:10','2014-01-22 04:22:21','2017-10-04 18:26:54','ec9b5b22-1c96-4b56-9687-5d698423e22c',NULL,NULL,NULL),(466,1,1,NULL,'ultimat-events.jpg','image',940,2095,329085,'2017-10-04 18:24:10','2014-01-22 04:22:21','2017-10-04 18:26:52','48add99a-ec04-4e5d-b979-1239d085ba87',NULL,NULL,NULL),(467,1,1,NULL,'ultimat-feature.jpg','image',900,400,59480,'2017-10-04 18:24:11','2014-01-22 04:22:21','2017-10-04 18:26:49','6473b74c-8799-466b-8b5e-405480b42098',NULL,NULL,NULL),(468,1,1,NULL,'ultimat-home.jpg','image',940,964,122216,'2017-10-04 18:24:11','2014-01-22 04:22:22','2017-10-04 18:26:45','8aece56b-0ac1-4326-83e8-9d97a60b5918',NULL,NULL,NULL),(469,1,1,NULL,'viget-featured.jpg','image',900,400,65820,'2017-10-04 18:24:11','2014-01-22 04:22:22','2017-10-04 18:26:48','19379ebb-9f22-4630-957b-0dcaffc31098',NULL,NULL,NULL),(470,1,1,NULL,'vigetblogs.jpg','image',940,2096,242017,'2017-10-04 18:24:11','2014-01-22 04:22:22','2017-10-04 18:26:42','06486b7e-3602-4f19-9733-2cf3990118af',NULL,NULL,NULL),(471,1,1,NULL,'vigethome.jpg','image',940,1795,258332,'2017-10-04 18:24:12','2014-01-22 04:22:22','2017-10-04 18:26:42','2b795537-2682-475d-ba35-c98da097a289',NULL,NULL,NULL),(472,1,1,NULL,'vigetprofile.jpg','image',940,2052,231205,'2017-10-04 18:24:12','2014-01-22 04:22:23','2017-10-04 18:26:43','4f7cb3ab-5ccd-4f5c-8a8f-f0de758a547e',NULL,NULL,NULL),(473,1,1,NULL,'vigetwork.jpg','image',940,3545,425150,'2017-10-04 18:24:12','2014-01-22 04:22:23','2017-10-04 18:26:43','e3c8aa55-a371-4b34-a187-4b0a9a06ec66',NULL,NULL,NULL),(474,1,1,NULL,'warl.jpg','image',440,235,57303,'2017-10-04 18:24:13','2014-01-22 04:22:23','2017-10-04 18:26:44','af8579a4-2ad0-4b0f-8c1c-14efcf6988f0',NULL,NULL,NULL),(475,1,1,NULL,'work-featured.jpg','image',450,225,51777,'2017-10-04 18:24:13','2014-01-22 04:22:23','2017-10-04 18:26:44','703d3e7d-cca0-4b94-8bce-d2f69f208fe4',NULL,NULL,NULL),(476,1,1,NULL,'work-image-1.jpg','image',900,710,258206,'2017-10-04 18:24:13','2014-01-22 04:22:24','2017-10-04 18:26:44','5c0668e0-e1dc-4d27-a735-ca5b67eeafd9',NULL,NULL,NULL),(477,1,1,NULL,'work-image-2.jpg','image',900,710,260493,'2017-10-04 18:24:13','2014-01-22 04:22:24','2017-10-04 18:26:41','47e66b15-abe8-4717-bba4-d6d08935e69b',NULL,NULL,NULL),(478,1,1,NULL,'work-image-3.jpg','image',900,710,261152,'2017-10-04 18:24:14','2014-01-22 04:22:24','2017-10-04 18:26:45','9818ec8c-b8eb-4859-ba53-e1ed3fc6ece8',NULL,NULL,NULL),(479,1,1,NULL,'work-image-4.jpg','image',900,710,260679,'2017-10-04 18:24:14','2014-01-22 04:22:24','2017-10-04 18:26:45','879ff5b7-6751-4a3b-91b3-1b53a3458c29',NULL,NULL,NULL),(480,1,1,NULL,'wwf-featured.jpg','image',900,400,68887,'2017-10-04 18:24:14','2014-01-22 04:22:24','2017-10-04 18:26:46','4a91f7ca-cc1a-481e-935e-78a81e6d2f9c',NULL,NULL,NULL),(481,1,1,NULL,'wwf-home.jpg','image',940,1234,264489,'2017-10-04 18:24:14','2014-01-22 04:22:25','2017-10-04 18:26:46','b2ab77eb-3df4-4929-b3c2-507d5900aed3',NULL,NULL,NULL),(482,1,1,NULL,'wwf-how-to-help.jpg','image',940,1801,368656,'2017-10-04 18:24:15','2014-01-22 04:22:25','2017-10-04 18:26:46','ee4555c3-3522-4db8-8f1d-151e4f73636a',NULL,NULL,NULL),(483,1,1,NULL,'wwf-places-index.jpg','image',940,2106,378687,'2017-10-04 18:24:15','2014-01-22 04:22:25','2017-10-04 18:26:46','c2274d37-1409-4d68-8389-01f3a09c4b22',NULL,NULL,NULL),(484,1,1,NULL,'wwf-places-show.jpg','image',940,7158,1500941,'2017-10-04 18:24:16','2014-01-22 04:22:25','2017-10-04 18:26:47','28ced084-dfa0-4923-947d-afc24ba3a014',NULL,NULL,NULL),(485,1,1,NULL,'wwf-species-2.jpg','image',940,6013,1245134,'2017-10-04 18:24:17','2014-01-22 04:22:26','2017-10-04 18:26:48','15e77a5d-5f74-4202-aa61-db0926c72330',NULL,NULL,NULL),(486,1,1,NULL,'wwf-species-index.jpg','image',940,3128,621651,'2017-10-04 18:24:18','2014-01-22 04:22:26','2017-10-04 18:26:48','cd018561-4d13-4441-b0ea-e452fe4053ea',NULL,NULL,NULL),(487,1,1,NULL,'wwf-travel-index.jpg','image',940,2412,512083,'2017-10-04 18:24:19','2014-01-22 04:22:26','2017-10-04 18:26:48','e3d3e515-9238-4364-ab86-9a56cf478a53',NULL,NULL,NULL),(579,3,5,NULL,'blank.gif','image',1,1,48,'2017-10-04 18:22:38','2014-02-04 02:13:26','2017-10-04 18:27:37','af574b4d-4ec1-4f13-ab4e-fc51ebfeba88',NULL,NULL,NULL),(580,3,5,NULL,'blank.thumbnail.gif','image',128,128,188,'2017-10-04 18:22:38','2014-02-04 02:13:27','2017-10-04 18:27:37','a84a39ca-3b7f-46b1-a89c-356f1f641991',NULL,NULL,NULL),(581,3,5,NULL,'body-bg.gif','image',5,766,3334,'2017-10-04 18:22:38','2014-02-04 02:13:27','2017-10-04 18:27:37','187f9e25-3b1d-46e5-9591-b13b85f2e08f',NULL,NULL,NULL),(582,3,5,NULL,'container-bg.png','image',588,1,167,'2017-10-04 18:22:39','2014-02-04 02:13:29','2017-10-04 18:27:36','6f0032cb-afd8-4e76-b20c-263c47cfdb80',NULL,NULL,NULL),(583,3,5,NULL,'container-bottom-trans.png','image',588,28,1493,'2017-10-04 18:22:39','2014-02-04 02:13:29','2017-10-04 18:27:36','e61b9c91-d0cc-41c8-946b-1d4832c04615',NULL,NULL,NULL),(584,3,5,NULL,'container-bottom-trans.thumbnail.png','image',128,6,220,'2017-10-04 18:22:39','2014-02-04 02:13:29','2017-10-04 18:27:34','2bc3486d-4b2d-4578-8778-f54338c49b9f',NULL,NULL,NULL),(585,3,5,NULL,'container-top-trans.png','image',588,28,1461,'2017-10-04 18:22:40','2014-02-04 02:13:30','2017-10-04 18:27:36','5343ab8b-d8a0-4701-95f4-c279c9f39b34',NULL,NULL,NULL),(586,3,5,NULL,'container-top-trans.thumbnail.png','image',128,6,228,'2017-10-04 18:22:40','2014-02-04 02:13:31','2017-10-04 18:27:32','ef07d6d2-6ef1-4032-928c-db5336d5e43e',NULL,NULL,NULL),(587,3,5,NULL,'content-bg.gif','image',1,18,45,'2017-10-04 18:22:40','2014-02-04 02:13:32','2017-10-04 18:27:52','7aaf186b-8f23-4049-8d67-570b3de74dce',NULL,NULL,NULL),(588,3,5,NULL,'content-bg.thumbnail.gif','image',7,128,77,'2017-10-04 18:22:40','2014-02-04 02:13:32','2017-10-04 18:27:28','23a3cf86-fa66-4e3d-8ace-d0e09d55dcd9',NULL,NULL,NULL),(589,3,5,NULL,'dishwasher-exterior.jpg','image',228,289,5264,'2017-10-04 18:22:40','2014-02-04 02:13:33','2017-10-04 18:27:55','8d747a5e-69c7-4ea5-b047-0935e3fdc3d6',NULL,NULL,NULL),(590,3,5,NULL,'dishwasher-exterior.thumbnail.jpg','image',100,128,1972,'2017-10-04 18:22:41','2014-02-04 02:13:33','2017-10-04 18:27:48','24e2f9e5-3b4a-47cc-9bdd-e2ea6127f6ce',NULL,NULL,NULL),(591,3,5,NULL,'dishwasher-panel.jpg','image',468,115,9034,'2017-10-04 18:22:41','2014-02-04 02:13:33','2017-10-04 18:27:48','4ad46617-0c0c-4e3c-afbc-712a292a94c1',NULL,NULL,NULL),(592,3,5,NULL,'dishwasher-panel.thumbnail.jpg','image',128,31,1676,'2017-10-04 18:22:41','2014-02-04 02:13:34','2017-10-04 18:27:48','e6d5aaa7-2289-415d-ad7d-d1282e914797',NULL,NULL,NULL),(593,3,5,NULL,'home-green-background.jpg','image',468,227,83899,'2017-10-04 18:22:41','2014-02-04 02:13:34','2017-10-04 18:27:48','62c48cde-7007-4f77-94db-33e9c9744c4b',NULL,NULL,NULL),(594,3,5,NULL,'home-green-background.thumbnail.jpg','image',128,62,2926,'2017-10-04 18:22:41','2014-02-04 02:13:34','2017-10-04 18:27:48','81d11d75-edc3-40c4-9ec7-8fbcb33713d7',NULL,NULL,NULL),(595,3,5,NULL,'home-green-background1.jpg','image',462,224,77469,'2017-10-04 18:22:41','2014-02-04 02:13:34','2017-10-04 18:27:49','ba466e47-edba-4e56-a34a-9fb826f82be3',NULL,NULL,NULL),(596,3,5,NULL,'home-green-background1.thumbnail.jpg','image',128,62,2940,'2017-10-04 18:22:42','2014-02-04 02:13:35','2017-10-04 18:27:49','770b3b4c-1c57-49d5-9ca8-b0f9c1669ea6',NULL,NULL,NULL),(597,3,5,NULL,'nav.gif','image',125,60,5634,'2017-10-04 18:22:42','2014-02-04 02:13:38','2017-10-04 18:27:49','a46af317-e484-4dd3-8f5c-470240a41671',NULL,NULL,NULL),(598,3,5,NULL,'nav.thumbnail.gif','image',128,61,6684,'2017-10-04 18:22:42','2014-02-04 02:13:40','2017-10-04 18:27:47','f964a10b-f44f-4fde-9514-262f17c0ecaa',NULL,NULL,NULL),(599,3,5,NULL,'png-screenshot.png','image',1007,850,102144,'2017-10-04 18:22:43','2014-02-04 02:20:40','2017-10-04 18:27:50','0a80e9e4-692e-4c17-bc29-7bec988615ef',NULL,NULL,NULL),(600,3,5,NULL,'png-screenshot.thumbnail.png','image',128,108,18282,'2017-10-04 18:22:43','2014-02-04 02:20:40','2017-10-04 18:27:50','9bc2e116-e68e-4fce-87f2-bd36d029d23a',NULL,NULL,NULL),(601,3,5,NULL,'screenshot-mac.gif','image',500,380,30912,'2017-10-04 18:22:43','2014-02-04 02:20:41','2017-10-04 18:27:51','a749ba2b-0ede-4205-9c46-a1cab6d9c979',NULL,NULL,NULL),(602,3,5,NULL,'screenshot-mac.thumbnail.gif','image',128,97,6719,'2017-10-04 18:22:43','2014-02-04 02:20:42','2017-10-04 18:27:51','f8e1807a-c8ca-4671-a9a3-9bf5dc639c10',NULL,NULL,NULL),(603,3,5,NULL,'screenshot-mac_thumb.gif','image',468,112,3240,'2017-10-04 18:22:44','2014-02-04 02:20:42','2017-10-04 18:27:51','f8fe63ec-0010-47ad-abe2-ab2625565a77',NULL,NULL,NULL),(604,3,5,NULL,'screenshot-mac_thumb.thumbnail.gif','image',128,30,2369,'2017-10-04 18:22:44','2014-02-04 02:20:43','2017-10-04 18:27:51','6caacab8-b7a1-4b8a-856d-f856dcd1fbfa',NULL,NULL,NULL),(605,3,5,NULL,'screenshot-windows.gif','image',500,380,18211,'2017-10-04 18:22:44','2014-02-04 02:20:43','2017-10-04 18:27:51','867f6cd5-05b2-4883-b9cf-92694c354d35',NULL,NULL,NULL),(606,3,5,NULL,'screenshot-windows.thumbnail.gif','image',128,97,6052,'2017-10-04 18:22:44','2014-02-04 02:20:44','2017-10-04 18:27:50','8fc16c3a-6aac-4294-b28f-3df8ba37746e',NULL,NULL,NULL),(607,3,5,NULL,'screenshot-windows_thumb.gif','image',468,125,6059,'2017-10-04 18:22:44','2014-02-04 02:20:45','2017-10-04 18:27:47','a39be55b-43ea-4bf7-aa3c-875a3ca59c50',NULL,NULL,NULL),(608,3,5,NULL,'screenshot-windows_thumb.thumbnail.gif','image',128,34,3914,'2017-10-04 18:22:44','2014-02-04 02:20:45','2017-10-04 18:27:45','12b9a1a7-bbff-4ab3-9e95-40879bc65038',NULL,NULL,NULL),(609,3,5,NULL,'trevor-davis-v2-129x300.jpg','image',129,300,14267,'2017-10-04 18:22:46','2014-02-04 02:20:46','2017-10-04 18:27:44','b6d1542f-41fe-444a-b9d4-035d58b76d0e',NULL,NULL,NULL),(610,3,5,NULL,'trevor-davis-v2-150x150.jpg','image',150,150,7912,'2017-10-04 18:22:46','2014-02-04 02:20:47','2017-10-04 18:27:45','4af37c32-3c8d-475c-847a-f48693461e4d',NULL,NULL,NULL),(611,3,5,NULL,'trevor-davis-v2.jpg','image',344,700,84149,'2017-10-04 18:22:46','2014-02-04 02:20:48','2017-10-04 18:27:45','f7908d33-bda3-4d6f-b317-08dadc5355e2',NULL,NULL,NULL),(612,3,5,NULL,'trevor-davis-v2_thumb-129x300.jpg','image',129,300,13487,'2017-10-04 18:22:46','2014-02-04 02:20:48','2017-10-04 18:27:44','78327989-85dc-4dfc-bd24-eba18fde261c',NULL,NULL,NULL),(613,3,5,NULL,'trevor-davis-v2_thumb-150x150.jpg','image',150,150,8414,'2017-10-04 18:22:46','2014-02-04 02:20:48','2017-10-04 18:27:45','baa7c1c5-14b1-401c-a849-b1f9d48faa64',NULL,NULL,NULL),(614,3,5,NULL,'trevor-davis-v2_thumb.jpg','image',150,347,25224,'2017-10-04 18:22:46','2014-02-04 02:20:49','2017-10-04 18:27:46','3fe8f211-c82c-4fe8-8a28-3f07cb1323b7',NULL,NULL,NULL),(615,3,7,NULL,'parking-garage.jpg','image',462,462,107435,'2017-10-04 18:22:47','2014-02-04 02:20:49','2017-10-04 18:27:46','8e9a6444-3f4c-49cc-bc4c-82408c826ec4',NULL,NULL,NULL),(616,3,7,NULL,'parking-garage.thumbnail.jpg','image',128,128,2472,'2017-10-04 18:22:47','2014-02-04 02:20:50','2017-10-04 18:27:46','b4958a3f-4212-4c15-a437-628b4554fa3f',NULL,NULL,NULL),(617,3,9,NULL,'altima-controls.jpg','image',228,259,12212,'2017-10-04 18:22:48','2014-02-04 02:20:50','2017-10-04 18:27:46','538af6a5-b921-4fbc-aefe-70abcadc1f62',NULL,NULL,NULL),(618,3,9,NULL,'altima-controls.thumbnail.jpg','image',112,128,3646,'2017-10-04 18:22:48','2014-02-04 02:20:50','2017-10-04 18:27:47','23a44157-29dd-4347-8b61-49e979050f87',NULL,NULL,NULL),(619,3,9,NULL,'content-bg.gif','image',220,1,60,'2017-10-04 18:22:48','2014-02-04 02:20:51','2017-10-04 18:27:47','38728801-ecbf-4eae-8b70-8355aaa10463',NULL,NULL,NULL),(620,3,9,NULL,'download.gif','image',150,150,5333,'2017-10-04 18:22:48','2014-02-04 02:20:51','2017-10-04 18:27:52','5e907a66-242d-4c31-a99f-1a818504cdde',NULL,NULL,NULL),(621,3,9,NULL,'download.thumbnail.gif','image',128,128,7462,'2017-10-04 18:22:48','2014-02-04 02:20:52','2017-10-04 18:27:47','f6bf507d-c880-4c00-b67a-a09d9dc9ed69',NULL,NULL,NULL),(622,3,9,NULL,'logo.gif','image',560,110,13622,'2017-10-04 18:22:48','2014-02-04 02:20:52','2017-10-04 18:27:52','64d5e3d8-1a0f-4610-a0f8-cedeb7eb4b2b',NULL,NULL,NULL),(623,3,9,NULL,'logo.thumbnail.gif','image',128,25,2759,'2017-10-04 18:22:49','2014-02-04 02:20:52','2017-10-04 18:27:53','368664f3-b49b-4970-920c-62d48379b22f',NULL,NULL,NULL),(624,3,9,NULL,'nav.gif','image',510,76,14456,'2017-10-04 18:22:49','2014-02-04 02:20:53','2017-10-04 18:27:57','1c917b13-8f8e-4091-9af7-c1b2aef5a3eb',NULL,NULL,NULL),(625,3,9,NULL,'nav.thumbnail.gif','image',128,19,2329,'2017-10-04 18:22:49','2014-02-04 02:20:53','2017-10-04 18:27:58','483dcf28-6747-4404-a065-57150ad66a8f',NULL,NULL,NULL),(626,3,9,NULL,'trevor-davis-v1.jpg','image',481,700,131399,'2017-10-04 18:22:49','2014-02-04 02:20:53','2017-10-04 18:27:58','05c70aed-da80-4102-880e-f9eb36f1793a',NULL,NULL,NULL),(627,3,9,NULL,'trevor-davis-v1.thumbnail.jpg','image',67,128,2620,'2017-10-04 18:22:49','2014-02-04 02:20:53','2017-10-04 18:27:58','da92eddd-aeba-4b36-abe0-29361f26bc15',NULL,NULL,NULL),(628,3,9,NULL,'trevor-davis-v1_thumb.jpg','image',150,218,10194,'2017-10-04 18:22:49','2014-02-04 02:20:54','2017-10-04 18:27:58','4b0053e9-bb2d-4f11-9e64-57a2b019e559',NULL,NULL,NULL),(629,3,9,NULL,'trevor-davis-v1_thumb.thumbnail.jpg','image',64,128,2355,'2017-10-04 18:22:50','2014-02-04 02:20:54','2017-10-04 18:27:58','79637a3d-6a55-4f32-b91a-ed0c0ca3f3a1',NULL,NULL,NULL),(630,3,10,NULL,'buttons-ie-150x25.gif','image',150,25,2203,'2017-10-04 18:22:50','2014-02-04 02:20:55','2017-10-04 18:27:59','bd3a5bfb-0477-4550-ba6c-956493461248',NULL,NULL,NULL),(631,3,10,NULL,'buttons-ie-300x18.gif','image',300,18,4145,'2017-10-04 18:22:50','2014-02-04 02:20:55','2017-10-04 18:28:00','feab9880-98ba-4d5d-b09b-c6c6d1075b2e',NULL,NULL,NULL),(632,3,10,NULL,'buttons-ie.gif','image',413,25,4217,'2017-10-04 18:22:50','2014-02-04 02:20:55','2017-10-04 18:27:57','d1efd658-663a-47a9-ba00-e023aed44c1f',NULL,NULL,NULL),(633,3,10,NULL,'continue-shopping-regular.gif','image',146,25,2291,'2017-10-04 18:22:50','2014-02-04 02:20:56','2017-10-04 18:28:00','d52477c4-ef4c-4d75-97a9-9600037c5073',NULL,NULL,NULL),(634,3,10,NULL,'continue-shopping.gif','image',146,50,4857,'2017-10-04 18:22:51','2014-02-04 02:20:56','2017-10-04 18:28:00','d4de2ffd-d700-4285-a67d-563bdc80b9c6',NULL,NULL,NULL),(635,3,10,NULL,'macbook-pro-150x140.jpg','image',150,140,6523,'2017-10-04 18:22:51','2014-02-04 02:20:57','2017-10-04 18:28:00','9d4b49ae-5511-4358-acc6-d3710a68c98b',NULL,NULL,NULL),(636,3,10,NULL,'macbook-pro.jpg','image',228,140,11391,'2017-10-04 18:22:51','2014-02-04 02:20:57','2017-10-04 18:28:00','5038ea7d-2731-42b1-89c4-3260f210b2a9',NULL,NULL,NULL),(637,3,10,NULL,'proceed-to-checkout-150x50.gif','image',150,50,4651,'2017-10-04 18:22:51','2014-02-04 02:20:58','2017-10-04 18:28:00','5083b6ae-bf07-48ab-b33c-1455077fb32e',NULL,NULL,NULL),(638,3,10,NULL,'proceed-to-checkout-regular-150x25.gif','image',150,25,2352,'2017-10-04 18:22:51','2014-02-04 02:20:58','2017-10-04 18:28:00','60f9a38f-223f-4060-bc7f-fbe39d372abb',NULL,NULL,NULL),(639,3,10,NULL,'proceed-to-checkout-regular.gif','image',156,25,2455,'2017-10-04 18:22:51','2014-02-04 02:20:59','2017-10-04 18:28:01','454ab678-26ad-4292-8a52-c13a05616c08',NULL,NULL,NULL),(640,3,10,NULL,'proceed-to-checkout.gif','image',156,50,5072,'2017-10-04 18:22:51','2014-02-04 02:20:59','2017-10-04 18:28:01','5df98aa3-409f-4bf0-ae7c-0212adfc2049',NULL,NULL,NULL),(641,3,10,NULL,'update-cart-regular.gif','image',107,25,1797,'2017-10-04 18:22:52','2014-02-04 02:20:59','2017-10-04 18:28:01','f6b983d7-74a4-43f0-a1b1-f8e51e61ddda',NULL,NULL,NULL),(642,3,10,NULL,'update-cart.gif','image',107,50,3746,'2017-10-04 18:22:52','2014-02-04 02:21:00','2017-10-04 18:27:59','2557fba0-029c-4f03-a83d-ca8d5a6b6f6b',NULL,NULL,NULL),(643,3,11,NULL,'ap-trans.png','image',100,100,4526,'2017-10-04 18:22:52','2014-02-04 02:21:00','2017-10-04 18:27:57','e96affef-373d-419f-9345-cda377d3d2d8',NULL,NULL,NULL),(644,3,12,NULL,'i-took-the-2008-survey-150x46.gif','image',150,46,2014,'2017-10-04 18:22:52','2014-02-04 02:21:01','2017-10-04 18:27:56','c9fbf945-8df9-494b-b7b0-c1c144672427',NULL,NULL,NULL),(645,3,12,NULL,'i-took-the-2008-survey.gif','image',180,46,2265,'2017-10-04 18:22:53','2014-02-04 02:21:03','2017-10-04 18:27:56','65d380f7-2558-4785-9228-f6ac7078419b',NULL,NULL,NULL),(646,3,12,NULL,'jumpman-150x150.gif','image',150,150,2511,'2017-10-04 18:22:53','2014-02-04 02:21:03','2017-10-04 18:27:52','65193de4-4eb5-42b6-b139-ad949e465796',NULL,NULL,NULL),(647,3,12,NULL,'jumpman.gif','image',200,200,3534,'2017-10-04 18:22:53','2014-02-04 02:21:07','2017-10-04 18:27:52','2d7802ef-20dd-464b-8811-5cb53e7f79ce',NULL,NULL,NULL),(648,3,13,NULL,'gwwired_port_tn.gif','image',68,68,4339,'2017-10-04 18:22:53','2014-02-04 02:21:08','2017-10-04 18:27:52','28b52703-97bf-4291-835f-cd8b63d48ab6',NULL,NULL,NULL),(649,3,13,NULL,'installnet_port_tn.gif','image',68,68,2991,'2017-10-04 18:22:53','2014-02-04 02:21:08','2017-10-04 18:27:52','b79d53af-5c18-48ce-a28b-3d46397a186a',NULL,NULL,NULL),(650,3,13,NULL,'portfolio-hover-trans.png','image',68,68,1802,'2017-10-04 18:22:53','2014-02-04 02:21:10','2017-10-04 18:27:52','819cd607-a8a7-4aa9-80a5-e1b49be816ca',NULL,NULL,NULL),(651,3,13,NULL,'portfolio-trans.png','image',68,68,1831,'2017-10-04 18:22:54','2014-02-04 02:21:10','2017-10-04 18:27:52','9824d888-12f9-4312-8528-5e56be40c81c',NULL,NULL,NULL),(652,3,13,NULL,'urac_flash_port_tn.gif','image',68,68,2825,'2017-10-04 18:22:54','2014-02-04 02:21:13','2017-10-04 18:27:53','b780d328-3fb4-4392-b2eb-1ee9c8072a10',NULL,NULL,NULL),(653,3,14,NULL,'change-we-can-believe-in-150x119.gif','image',150,119,3330,'2017-10-04 18:22:54','2014-02-04 02:21:13','2017-10-04 18:27:53','1da35b15-f62f-413e-a0bf-aaf520c99361',NULL,NULL,NULL),(654,3,14,NULL,'change-we-can-believe-in-300x76.gif','image',300,76,7282,'2017-10-04 18:22:54','2014-02-04 02:21:14','2017-10-04 18:27:53','edf1e179-eb71-4416-a853-77d4787ebe96',NULL,NULL,NULL),(655,3,14,NULL,'change-we-can-believe-in.gif','image',468,119,9292,'2017-10-04 18:22:54','2014-02-04 02:21:15','2017-10-04 18:28:01','820f17a6-fb1e-4a54-954c-34fa3ce11944',NULL,NULL,NULL),(656,3,14,NULL,'event-apart-badge-128x300.jpg','image',128,300,9561,'2017-10-04 18:22:54','2014-02-04 02:21:17','2017-10-04 18:27:53','ad23f0dc-096d-40e4-a71c-891065ba9b7f',NULL,NULL,NULL),(657,3,14,NULL,'event-apart-badge-150x150.jpg','image',150,150,5852,'2017-10-04 18:22:55','2014-02-04 02:21:17','2017-10-04 18:27:53','e5dd24cc-dc16-4653-b5fe-5ddde7a91737',NULL,NULL,NULL),(658,3,14,NULL,'event-apart-badge.jpg','image',220,513,17766,'2017-10-04 18:22:55','2014-02-04 02:21:17','2017-10-04 18:27:53','13ca52e3-255c-4b56-87e0-a839801b17b5',NULL,NULL,NULL),(659,3,14,NULL,'sprite-horiz.gif','image',42,20,1333,'2017-10-04 18:22:55','2014-02-04 02:21:18','2017-10-04 18:27:54','3f5d414b-f1b7-4d45-afe6-362609f8df2e',NULL,NULL,NULL),(660,3,14,NULL,'sprite-hover.gif','image',21,20,700,'2017-10-04 18:22:55','2014-02-04 02:21:18','2017-10-04 18:27:54','3e18462a-890a-410c-b1f3-e51ce24f7cfa',NULL,NULL,NULL),(661,3,14,NULL,'sprite-off.gif','image',21,20,314,'2017-10-04 18:22:55','2014-02-04 02:21:18','2017-10-04 18:27:54','903f10a6-1c1b-45df-83f8-3e277efc07e4',NULL,NULL,NULL),(662,3,14,NULL,'sprite-vert.gif','image',21,40,1327,'2017-10-04 18:22:55','2014-02-04 02:21:19','2017-10-04 18:27:54','7cbd349b-58ca-4e51-b768-404a161c37fa',NULL,NULL,NULL),(663,3,15,NULL,'alabama-150x150.jpg','image',150,150,7349,'2017-10-04 18:22:56','2014-02-04 02:21:19','2017-10-04 18:27:55','b0d8b71f-22b0-47b6-aaef-1aa92ef5b503',NULL,NULL,NULL),(664,3,15,NULL,'alabama-300x300.jpg','image',300,300,19661,'2017-10-04 18:22:56','2014-02-04 02:21:20','2017-10-04 18:27:43','3e81ec96-ea34-468a-b20b-d099caddffdf',NULL,NULL,NULL),(665,3,15,NULL,'alabama-thumb.jpg','image',107,107,3951,'2017-10-04 18:22:56','2014-02-04 02:21:20','2017-10-04 18:27:56','fa87a1e0-b306-45ed-9fc2-c7477288f351',NULL,NULL,NULL),(666,3,15,NULL,'alabama.jpg','image',400,400,26979,'2017-10-04 18:22:56','2014-02-04 02:21:21','2017-10-04 18:27:51','e060b221-1e32-4ad8-ade0-e5813da96f05',NULL,NULL,NULL),(667,3,15,NULL,'alaska-150x150.jpg','image',150,150,6865,'2017-10-04 18:22:56','2014-02-04 02:21:21','2017-10-04 18:27:43','655171a8-22a0-447e-89a0-a1bebabfd224',NULL,NULL,NULL),(668,3,15,NULL,'alaska-300x300.jpg','image',300,300,19535,'2017-10-04 18:22:56','2014-02-04 02:21:21','2017-10-04 18:27:39','fd219cf6-baea-442c-a89e-36727f78a47c',NULL,NULL,NULL),(669,3,15,NULL,'alaska-thumb.jpg','image',107,107,3623,'2017-10-04 18:22:57','2014-02-04 02:21:22','2017-10-04 18:27:43','6b094c12-bf06-426e-ad22-878172fbf10e',NULL,NULL,NULL),(670,3,15,NULL,'alaska.jpg','image',400,400,28847,'2017-10-04 18:22:57','2014-02-04 02:21:22','2017-10-04 18:27:31','4723f6c6-85ff-432c-a887-1fc86560c6ec',NULL,NULL,NULL),(671,3,15,NULL,'american-samoa-150x150.jpg','image',150,150,5792,'2017-10-04 18:22:57','2014-02-04 02:21:22','2017-10-04 18:27:31','8af40e76-f752-49d6-a187-f59cab6da0b7',NULL,NULL,NULL),(672,3,15,NULL,'american-samoa-300x300.jpg','image',300,300,15610,'2017-10-04 18:22:57','2014-02-04 02:21:22','2017-10-04 18:27:31','5de44449-e73d-4927-bd97-2bdde81d1d49',NULL,NULL,NULL),(673,3,15,NULL,'american-samoa-thumb.jpg','image',107,107,3113,'2017-10-04 18:22:57','2014-02-04 02:21:23','2017-10-04 18:27:31','d17f4bdc-b6b2-4300-9ef5-e900e9633147',NULL,NULL,NULL),(674,3,15,NULL,'american-samoa.jpg','image',400,400,21383,'2017-10-04 18:22:57','2014-02-04 02:21:23','2017-10-04 18:27:31','03d52da9-26d0-4bdb-bc60-63ddcb69b121',NULL,NULL,NULL),(675,3,15,NULL,'close.png','image',35,35,1518,'2017-10-04 18:22:57','2014-02-04 02:21:23','2017-10-04 18:27:32','f34fa469-63c8-4e51-a3f4-b735e9a00b7e',NULL,NULL,NULL),(676,3,15,NULL,'loading-150x13.gif','image',150,13,692,'2017-10-04 18:22:58','2014-02-04 02:21:24','2017-10-04 18:27:32','93a26c58-19be-4f68-9f78-0b495195d4ef',NULL,NULL,NULL),(677,3,15,NULL,'loading.gif','image',208,13,5886,'2017-10-04 18:22:58','2014-02-04 02:21:24','2017-10-04 18:27:32','ac4a353e-06d4-41a5-b7de-021a137aede2',NULL,NULL,NULL),(678,3,17,NULL,'nhl-team-logos-150x150.gif','image',150,150,10550,'2017-10-04 18:22:58','2014-02-04 02:21:24','2017-10-04 18:27:32','3d20af01-a3ce-44ac-8595-56bbdd2724c5',NULL,NULL,NULL),(679,3,17,NULL,'nhl-team-logos.gif','image',220,220,15962,'2017-10-04 18:22:58','2014-02-04 02:21:25','2017-10-04 18:27:32','ff7ed059-8507-4132-8ee7-935e6a778efe',NULL,NULL,NULL),(680,3,17,NULL,'wordpress-validation-150x106.gif','image',150,106,2859,'2017-10-04 18:22:59','2014-02-04 02:21:25','2017-10-04 18:27:33','b597f4cc-8981-4935-b8ca-8cefefa7f8ff',NULL,NULL,NULL),(681,3,17,NULL,'wordpress-validation-300x96.gif','image',300,96,4325,'2017-10-04 18:22:59','2014-02-04 02:21:25','2017-10-04 18:27:33','6b9982c2-5aa2-4958-b4b0-79c695544c71',NULL,NULL,NULL),(682,3,17,NULL,'wordpress-validation.gif','image',330,106,5063,'2017-10-04 18:22:59','2014-02-04 02:21:26','2017-10-04 18:27:33','45166ec8-500d-4ebc-9eee-2ff40835564b',NULL,NULL,NULL),(683,3,18,NULL,'contact-form.txt','text',NULL,NULL,4335,'2017-10-04 18:22:59','2014-02-04 02:21:26','2017-10-04 18:27:30','97d8d202-583b-472e-b369-0b64bb2eba14',NULL,NULL,NULL),(684,3,18,NULL,'contact-form.zip','unknown',NULL,NULL,26471,'2017-10-04 18:22:59','2014-02-04 02:21:26','2017-10-04 18:27:33','55d58ed0-bda1-4811-bd0d-7a989709c792',NULL,NULL,NULL),(685,3,18,NULL,'matrix_featured-150x150.jpg','image',150,150,8291,'2017-10-04 18:22:59','2014-02-04 02:21:26','2017-10-04 18:27:33','b3d53e26-98cc-451c-9d89-de1196d307ca',NULL,NULL,NULL),(686,3,18,NULL,'matrix_featured.jpg','image',210,150,9824,'2017-10-04 18:23:00','2014-02-04 02:21:27','2017-10-04 18:27:34','2b8a4018-9d4a-4604-b439-3fef56a390f2',NULL,NULL,NULL),(687,3,18,NULL,'twitter-bird.gif','image',100,69,2521,'2017-10-04 18:23:00','2014-02-04 02:21:27','2017-10-04 18:27:32','3d80b2da-9715-4fef-9526-1d1b7703ab8a',NULL,NULL,NULL),(688,3,18,NULL,'twitter-plugin-fixed-150x150.jpg','image',150,150,7515,'2017-10-04 18:23:00','2014-02-04 02:21:27','2017-10-04 18:27:30','da926603-e210-4808-a2c1-cae4d673fa39',NULL,NULL,NULL),(689,3,18,NULL,'twitter-plugin-fixed.jpg','image',150,164,7215,'2017-10-04 18:23:00','2014-02-04 02:21:28','2017-10-04 18:27:30','f6d5f825-3085-4232-9188-6eb0b3062aab',NULL,NULL,NULL),(690,3,18,NULL,'wordpress-page-template-150x150.png','image',150,150,18000,'2017-10-04 18:23:00','2014-02-04 02:21:28','2017-10-04 18:27:27','90cc657a-0d2f-45df-bbe7-57b4d51483dc',NULL,NULL,NULL),(691,3,18,NULL,'wordpress-page-template-300x179.png','image',300,179,39774,'2017-10-04 18:23:00','2014-02-04 02:21:28','2017-10-04 18:27:27','e58710a2-32df-4925-a2c5-a9fb7f93a268',NULL,NULL,NULL),(692,3,18,NULL,'wordpress-page-template.png','image',570,341,27163,'2017-10-04 18:23:01','2014-02-04 02:21:29','2017-10-04 18:27:28','d5c89e60-5323-46a9-8d86-c00a31f40ce5',NULL,NULL,NULL),(693,3,18,NULL,'xmas-tree_featured-150x150.jpg','image',150,150,9398,'2017-10-04 18:23:01','2014-02-04 02:21:29','2017-10-04 18:27:28','fdc2420f-5e81-413d-b133-9b67a4d262a5',NULL,NULL,NULL),(694,3,18,NULL,'xmas-tree_featured.jpg','image',210,150,11567,'2017-10-04 18:23:01','2014-02-04 02:21:29','2017-10-04 18:27:29','15151504-1296-4949-9402-40553184805f',NULL,NULL,NULL),(695,3,19,NULL,'building-site-ee-150x150.jpg','image',150,150,9091,'2017-10-04 18:23:01','2014-02-04 02:21:29','2017-10-04 18:27:29','c2646c7b-e1de-4042-b2e2-03279fa8e338',NULL,NULL,NULL),(696,3,19,NULL,'building-site-ee.jpg','image',210,259,21124,'2017-10-04 18:23:01','2014-02-04 02:21:30','2017-10-04 18:27:29','42f1f460-46b3-4391-b155-e389989601a4',NULL,NULL,NULL),(697,3,19,NULL,'expressionengine-sample-chapter-3-start-posting.pdf','pdf',NULL,NULL,3418487,'2017-10-04 18:23:04','2014-02-04 02:21:30','2017-10-04 18:27:29','bd22da65-cc1e-4708-8afc-6710259f214b',NULL,NULL,NULL),(698,3,19,NULL,'monica_featured-150x150.jpg','image',150,150,7564,'2017-10-04 18:23:04','2014-02-04 02:21:30','2017-10-04 18:27:29','82e847a0-995f-4d6b-a55d-191aa2cf6a3e',NULL,NULL,NULL),(699,3,19,NULL,'monica_featured.jpg','image',210,150,8315,'2017-10-04 18:23:04','2014-02-04 02:21:31','2017-10-04 18:27:29','2607cd3d-c8fa-4767-b86b-14d5b7fafcb3',NULL,NULL,NULL),(700,3,20,NULL,'jquery-inline-labels-150x150.png','image',150,150,11932,'2017-10-04 18:23:04','2014-02-04 02:21:31','2017-10-04 18:27:29','52104b1b-c5db-4f73-b0ee-7be069bd99eb',NULL,NULL,NULL),(701,3,20,NULL,'jquery-inline-labels.png','image',280,169,9191,'2017-10-04 18:23:05','2014-02-04 02:21:31','2017-10-04 18:27:34','665d6f47-5e91-4c2e-bcef-f12380639730',NULL,NULL,NULL),(702,3,21,NULL,'packt-books-150x150.png','image',150,150,39587,'2017-10-04 18:23:05','2014-02-04 02:21:32','2017-10-04 18:27:34','9c9b8b90-0986-4a37-8d87-45e805752e2d',NULL,NULL,NULL),(703,3,21,NULL,'packt-books-300x152.png','image',300,152,78233,'2017-10-04 18:23:05','2014-02-04 02:21:32','2017-10-04 18:27:38','51eff855-d493-4b88-9e06-648a9301c5ef',NULL,NULL,NULL),(704,3,21,NULL,'packt-books.png','image',520,265,55983,'2017-10-04 18:23:05','2014-02-04 02:21:32','2017-10-04 18:27:38','6b6b4a76-e46e-4b80-89d4-0e8953f0b8cd',NULL,NULL,NULL),(705,3,21,NULL,'packt-cms.jpg','image',90,110,5923,'2017-10-04 18:23:05','2014-02-04 02:21:33','2017-10-04 18:27:39','ef6abdbb-14fc-4a81-99c5-290b674eb1da',NULL,NULL,NULL),(706,3,21,NULL,'packt-jquery.jpg','image',90,110,10062,'2017-10-04 18:23:05','2014-02-04 02:21:33','2017-10-04 18:27:39','caacacf9-d478-4306-b4c2-7a715e55e63d',NULL,NULL,NULL),(707,3,21,NULL,'packt-wordpress.jpg','image',90,110,7213,'2017-10-04 18:23:06','2014-02-04 02:21:33','2017-10-04 18:27:34','f2c91b74-8d17-49fe-89ab-c8f69266f446',NULL,NULL,NULL),(708,3,22,NULL,'ecfc_featured-150x150.jpg','image',150,150,9306,'2017-10-04 18:23:06','2014-02-04 02:21:33','2017-10-04 18:27:39','890bb0de-1f3f-469d-9376-aca309e55d40',NULL,NULL,NULL),(709,3,22,NULL,'ecfc_featured.jpg','image',210,150,13234,'2017-10-04 18:23:06','2014-02-04 02:21:34','2017-10-04 18:27:39','2ca8a77d-fb19-4f04-af2f-854871f6af6c',NULL,NULL,NULL),(710,3,22,NULL,'newletter-entry-150x150.png','image',150,150,12165,'2017-10-04 18:23:06','2014-02-04 02:21:34','2017-10-04 18:27:40','8dcf349d-dacf-440d-bfad-9650b3c2dc69',NULL,NULL,NULL),(711,3,22,NULL,'newletter-entry-300x160.png','image',300,160,18577,'2017-10-04 18:23:06','2014-02-04 02:21:35','2017-10-04 18:27:40','8991a231-2cbe-406c-b430-22e8c1f2a0b5',NULL,NULL,NULL),(712,3,22,NULL,'newletter-entry.png','image',570,304,11779,'2017-10-04 18:23:07','2014-02-04 02:21:35','2017-10-04 18:27:38','8d1afd77-98fc-4d95-adb2-87272ec65ea7',NULL,NULL,NULL),(713,3,22,NULL,'newsletter-ff-150x150.png','image',150,150,14894,'2017-10-04 18:23:07','2014-02-04 02:21:35','2017-10-04 18:27:41','f02e56a3-4c7e-4dfc-9aac-2834c9696970',NULL,NULL,NULL),(714,3,22,NULL,'newsletter-ff-300x148.png','image',300,148,23478,'2017-10-04 18:23:07','2014-02-04 02:21:35','2017-10-04 18:27:41','b307d8d4-108c-40b9-9ac5-eed6fba38e23',NULL,NULL,NULL),(715,3,22,NULL,'newsletter-ff.png','image',570,282,14135,'2017-10-04 18:23:07','2014-02-04 02:21:36','2017-10-04 18:27:41','2134fa46-0a00-4d13-a32b-96f8bcd18ac1',NULL,NULL,NULL),(716,3,23,NULL,'demo-entry-150x150.png','image',150,150,18355,'2017-10-04 18:23:07','2014-02-04 02:21:36','2017-10-04 18:27:41','8a1a3259-b85c-4f27-81c4-6a597c32d9b8',NULL,NULL,NULL),(717,3,23,NULL,'demo-entry-300x210.png','image',300,210,39449,'2017-10-04 18:23:08','2014-02-04 02:21:36','2017-10-04 18:27:41','4b6d0853-c04e-4ae5-b3fd-9a56f3c0c661',NULL,NULL,NULL),(718,3,23,NULL,'demo-entry.png','image',900,632,74210,'2017-10-04 18:23:08','2014-02-04 02:21:37','2017-10-04 18:27:42','5657de02-3a90-4e34-bd0d-755deb283f12',NULL,NULL,NULL),(719,3,23,NULL,'demo-entry_thumb-150x150.png','image',150,150,14389,'2017-10-04 18:23:08','2014-02-04 02:21:37','2017-10-04 18:27:42','dbd7e7af-29e1-4c07-8a0c-1282c2bcc368',NULL,NULL,NULL),(720,3,23,NULL,'demo-entry_thumb-300x210.png','image',300,210,41017,'2017-10-04 18:23:08','2014-02-04 02:21:37','2017-10-04 18:27:42','a8deba6c-799a-4ae0-9216-0ec3b25b50bb',NULL,NULL,NULL),(721,3,23,NULL,'demo-entry_thumb.png','image',570,400,28967,'2017-10-04 18:23:08','2014-02-04 02:21:38','2017-10-04 18:27:42','af34de93-92de-4e14-9181-605663a5e001',NULL,NULL,NULL),(722,3,23,NULL,'ff-matrix-150x150.png','image',150,150,26684,'2017-10-04 18:23:08','2014-02-04 02:21:38','2017-10-04 18:27:42','0711e6fa-53d5-41dd-8835-301478ec49a2',NULL,NULL,NULL),(723,3,23,NULL,'ff-matrix-300x107.png','image',300,107,34036,'2017-10-04 18:23:08','2014-02-04 02:21:38','2017-10-04 18:27:41','f9bf5424-e4af-4a27-b3e2-8c2b8410d287',NULL,NULL,NULL),(724,3,23,NULL,'ff-matrix.png','image',900,322,61774,'2017-10-04 18:23:09','2014-02-04 02:21:38','2017-10-04 18:27:38','8983ff3e-7d94-4f0a-9617-cc79b12445ae',NULL,NULL,NULL),(725,3,23,NULL,'ff-matrix_thumb-150x150.png','image',150,150,23803,'2017-10-04 18:23:09','2014-02-04 02:21:39','2017-10-04 18:27:36','8a45c314-ea47-488a-a365-be70d77ee780',NULL,NULL,NULL),(726,3,23,NULL,'ff-matrix_thumb-300x106.png','image',300,106,25227,'2017-10-04 18:23:09','2014-02-04 02:21:39','2017-10-04 18:27:38','70728201-4c6f-4390-bf76-44b51314fd36',NULL,NULL,NULL),(727,3,23,NULL,'ff-matrix_thumb.png','image',570,203,16307,'2017-10-04 18:23:09','2014-02-04 02:21:39','2017-10-04 18:27:34','ba881524-5733-49ac-82b6-de2521281cba',NULL,NULL,NULL),(728,3,23,NULL,'form-entry-150x150.png','image',150,150,16858,'2017-10-04 18:23:09','2014-02-04 02:21:40','2017-10-04 18:27:35','a4c7e388-17f3-47ab-8fc6-2318dd03733b',NULL,NULL,NULL),(729,3,23,NULL,'form-entry-300x135.png','image',300,135,19896,'2017-10-04 18:23:09','2014-02-04 02:21:40','2017-10-04 18:27:35','06fcc23b-0c36-483a-86c4-ccbf678922c1',NULL,NULL,NULL),(730,3,23,NULL,'form-entry.png','image',900,407,40539,'2017-10-04 18:23:10','2014-02-04 02:21:40','2017-10-04 18:27:35','37e940a9-cfa5-4844-ad7f-1881ee97e64a',NULL,NULL,NULL),(731,3,23,NULL,'form-entry_thumb-150x150.png','image',150,150,11160,'2017-10-04 18:23:10','2014-02-04 02:21:41','2017-10-04 18:27:35','2a697965-a2f0-4224-8252-b1d59448244c',NULL,NULL,NULL),(732,3,23,NULL,'form-entry_thumb-300x135.png','image',300,135,18662,'2017-10-04 18:23:10','2014-02-04 02:21:41','2017-10-04 18:27:35','a97c15f6-6a48-469d-ae19-f76024f690be',NULL,NULL,NULL),(733,3,23,NULL,'form-entry_thumb.png','image',570,258,14793,'2017-10-04 18:23:10','2014-02-04 02:21:42','2017-10-04 18:27:35','16977845-b234-4c9e-8091-73bdd4303cb5',NULL,NULL,NULL),(734,3,3,NULL,'bball.jpg','image',50,50,4430,'2017-10-04 18:23:11','2014-02-04 02:21:42','2017-10-04 18:27:24','52e16097-27f6-44fc-ae2b-555fe874f912',NULL,NULL,NULL),(735,3,3,NULL,'chef.jpg','image',50,50,4696,'2017-10-04 18:23:11','2014-02-04 02:21:43','2017-10-04 18:27:24','85eb23c3-4ffe-467a-b2ba-d0bead82b611',NULL,NULL,NULL),(736,3,3,NULL,'dumbwaiter-options.png','image',940,800,42518,'2017-10-04 18:23:11','2014-02-04 02:21:44','2017-10-04 18:27:24','e828758a-c9d9-44ed-b74c-41b4f1f08b75',NULL,NULL,NULL),(737,3,3,NULL,'form-entry_thumb.png','image',570,258,14793,'2017-10-04 18:23:12','2014-02-04 02:21:47','2017-10-04 18:27:25','b7a2dfaa-3c89-4af7-8985-65ea9a7c3c8b',NULL,NULL,NULL),(738,3,3,NULL,'king-boo.png','image',50,50,2338,'2017-10-04 18:23:12','2014-02-04 02:21:47','2017-10-04 18:27:25','b0cfb7f1-86a9-4a5d-8481-045066b1b263',NULL,NULL,NULL),(739,3,3,NULL,'me.jpg','image',210,300,24160,'2017-10-04 18:23:12','2014-02-04 02:21:47','2017-10-04 18:27:24','db66571b-dc7d-47c4-9c2f-85c8254f0a81',NULL,NULL,NULL),(740,3,3,NULL,'soda.jpg','image',50,50,3813,'2017-10-04 18:23:12','2014-02-04 02:21:47','2017-10-04 18:27:25','9895fd9c-a93c-4899-91ae-29e6d002c62e',NULL,NULL,NULL),(741,3,3,NULL,'v1.jpg','image',630,320,77002,'2017-10-04 18:23:12','2014-02-04 02:21:48','2017-10-04 18:27:25','c9b3760d-f35e-4137-835a-afbda1a4178d',NULL,NULL,NULL),(742,3,3,NULL,'v2.jpg','image',630,320,64371,'2017-10-04 18:23:12','2014-02-04 02:21:48','2017-10-04 18:27:26','6a151eaa-97f0-4a6b-90fc-f286fa492149',NULL,NULL,NULL),(743,3,3,NULL,'v3.jpg','image',630,320,60739,'2017-10-04 18:23:13','2014-02-04 02:21:48','2017-10-04 18:27:26','567c727c-a84e-4568-be44-6b68959c66df',NULL,NULL,NULL),(744,3,3,NULL,'work-featured.jpg','image',450,225,54294,'2017-10-04 18:23:13','2014-02-04 02:21:49','2017-10-04 18:27:26','94dd3557-0c0c-4a70-8bf2-de3e6984a4da',NULL,NULL,NULL),(745,3,3,NULL,'work-quad.jpg','image',210,105,15306,'2017-10-04 18:23:13','2014-02-04 02:21:49','2017-10-04 18:27:26','b98efa9d-7002-43a5-b176-45617d87d606',NULL,NULL,NULL),(746,3,3,NULL,'work-single-large-2.jpg','image',570,445,115707,'2017-10-04 18:23:13','2014-02-04 02:21:50','2017-10-04 18:27:27','eec56613-cc9e-4814-878b-fe978b491bf5',NULL,NULL,NULL),(747,3,3,NULL,'work-single-large-3.jpg','image',570,445,116958,'2017-10-04 18:23:13','2014-02-04 02:21:50','2017-10-04 18:27:27','4100e080-f9e4-45cf-afdf-0c62eff9dfcd',NULL,NULL,NULL),(748,3,3,NULL,'work-single-large.jpg','image',570,445,114144,'2017-10-04 18:23:13','2014-02-04 02:21:50','2017-10-04 18:27:27','4233d6cb-5bb5-4e2a-8852-4b751e0b549e',NULL,NULL,NULL),(750,1,1,NULL,'gopole-home.jpg','image',940,2982,634253,'2017-10-04 18:23:26','2014-09-12 19:40:21','2017-10-04 18:26:55','5e7a9dbb-017f-40bf-bc57-6a10f6f00862',NULL,NULL,NULL),(751,1,1,NULL,'gopole-locator.jpg','image',940,2402,358163,'2017-10-04 18:23:27','2014-09-12 19:40:22','2017-10-04 18:26:58','a5ad9e7f-463f-416a-bdb1-4928531e5417',NULL,NULL,NULL),(752,1,1,NULL,'gopole-products.jpg','image',940,3131,302843,'2017-10-04 18:23:27','2014-09-12 19:40:22','2017-10-04 18:26:59','5e90b6f4-ab52-417f-b335-259c6f282629',NULL,NULL,NULL),(753,1,1,NULL,'gopole-returns.jpg','image',940,1764,256292,'2017-10-04 18:23:27','2014-09-12 19:40:23','2017-10-04 18:26:59','2e294e9b-fddb-443a-8665-cd637050555b',NULL,NULL,NULL),(755,1,1,NULL,'gopole-listing.jpg','image',900,400,79985,'2017-10-04 18:23:26','2014-09-12 19:44:35','2017-10-04 18:26:58','04f54755-f774-4df3-82d7-43d59ca499eb',NULL,NULL,NULL),(761,1,1,NULL,'pointless-baby-bookie-small.jpg','image',320,2592,134742,'2017-10-04 18:23:47','2014-09-12 20:02:02','2017-10-04 18:26:55','7f79e26f-8bb7-45a9-be0b-e069edb9d485',NULL,NULL,NULL),(762,1,1,NULL,'pointless-baby-bookie.jpg','image',940,2401,252129,'2017-10-04 18:23:47','2014-09-12 20:02:03','2017-10-04 18:26:41','5c060a0c-a827-4bca-a2fa-7fccc584152e',NULL,NULL,NULL),(763,1,1,NULL,'pointless-home-small.jpg','image',320,2592,183842,'2017-10-04 18:23:47','2014-09-12 20:02:03','2017-10-04 18:26:54','7495846b-468c-4071-91d2-7e648234ab14',NULL,NULL,NULL),(764,1,1,NULL,'pointless-home.jpg','image',940,5124,998058,'2017-10-04 18:23:48','2014-09-12 20:02:05','2017-10-04 18:26:35','09f5b49d-90e8-4a65-b3af-f3b1498c15d3',NULL,NULL,NULL),(765,1,1,NULL,'pointless-powwow-small.jpg','image',320,2592,165094,'2017-10-04 18:23:49','2014-09-12 20:02:05','2017-10-04 18:26:35','35472cd6-9e88-45ae-8458-6c6394677288',NULL,NULL,NULL),(766,1,1,NULL,'pointless-powwow.jpg','image',940,4013,376679,'2017-10-04 18:23:49','2014-09-12 20:02:06','2017-10-04 18:26:35','c1d3e112-89e1-4b24-b406-35f38743bacb',NULL,NULL,NULL),(767,1,1,NULL,'pointless-listing.jpg','image',900,400,70319,'2017-10-04 18:23:48','2014-09-12 20:15:38','2017-10-04 18:26:35','67412da8-f7b5-4a5a-ad4e-8d2cd88a3af4',NULL,NULL,NULL),(787,1,1,NULL,'voa.jpg','image',1200,675,213069,'2017-10-04 18:24:13','2017-08-24 01:54:07','2017-10-04 18:26:43','e9ff5ec4-c25d-4e57-adb0-72899c267db1',NULL,NULL,NULL),(788,1,1,NULL,'lenovo.jpg','image',1200,675,202758,'2017-10-04 18:23:36','2017-08-24 01:57:28','2017-10-04 18:27:17','dcb79213-a01f-406e-a5ab-11c76b967a69',NULL,NULL,NULL),(816,3,15,NULL,'modal.js','javascript',NULL,NULL,1397,'2017-10-04 18:22:58','2017-09-07 21:23:56','2017-10-04 18:27:31','0f0fefb3-9ef5-4ef1-9ed5-1c859639e4fd',NULL,NULL,NULL),(817,3,22,NULL,'jquery-cookie.js','javascript',NULL,NULL,982,'2017-10-04 18:23:06','2017-09-07 21:24:04','2017-10-04 18:27:40','1545e87b-9677-4638-9eca-08bc2062363f',NULL,NULL,NULL),(818,3,5,NULL,'striper.js','javascript',NULL,NULL,2988,'2017-10-04 18:22:45','2017-09-07 21:24:07','2017-10-04 18:27:44','dd4fbc70-2ff2-46db-9f77-5b61ed9dfed7',NULL,NULL,NULL),(819,3,5,NULL,'striperbad.js','javascript',NULL,NULL,2924,'2017-10-04 18:22:45','2017-09-07 21:24:07','2017-10-04 18:27:44','f6d2c857-af44-408e-a4ff-ea0d78136d1a',NULL,NULL,NULL),(820,3,5,NULL,'submitform.js','javascript',NULL,NULL,1854,'2017-10-04 18:22:45','2017-09-07 21:24:07','2017-10-04 18:27:44','e6cdbb68-e8bd-4e91-9703-5df91dc3191d',NULL,NULL,NULL),(821,1,1,NULL,'aft.jpg','image',1200,675,275005,'2017-10-04 18:23:14','2017-09-21 00:29:07','2017-10-04 18:26:55','3c7aed2f-ef5e-4dc1-a66e-8f8e48b9de65',NULL,NULL,NULL),(822,1,1,NULL,'pps-plus.jpg','image',1200,675,85390,'2017-10-04 18:23:49','2017-09-21 00:35:21','2017-10-04 18:26:35','f1053a23-95fd-4ae1-b35b-01864fef1f4e',NULL,NULL,NULL),(824,1,1,NULL,'osi.jpg','image',1200,675,344127,'2017-10-04 18:23:46','2017-09-21 00:47:13','2017-10-04 18:27:11','20c61140-ac61-4f4f-a969-a0278292dd9c',NULL,NULL,NULL),(826,1,1,NULL,'lully.jpg','image',1200,675,193097,'2017-10-04 18:23:37','2017-09-21 00:54:43','2017-10-04 18:27:17','6379de96-fe06-428a-a57f-c304b348f8c2',NULL,NULL,NULL),(827,1,1,NULL,'lupus-resource-center.jpg','image',1200,675,100026,'2017-10-04 18:23:37','2017-09-21 01:00:32','2017-10-04 18:27:17','b67c35fb-c45f-4153-a960-514767e06ff9',NULL,NULL,NULL),(828,1,1,NULL,'pbs-kids.jpg','image',1200,675,182857,'2017-10-04 18:23:46','2017-09-21 01:04:32','2017-10-04 18:27:07','e4aa7921-fcd8-4094-9752-b373cb409764',NULL,NULL,NULL),(829,1,1,NULL,'bethesda-creation-club.jpg','image',1200,675,218168,'2017-10-04 18:23:19','2017-09-21 01:14:09','2017-10-04 18:27:05','12581f87-8c64-437e-81b0-26093a76a334',NULL,NULL,NULL),(830,1,1,NULL,'bdi.jpg','image',1200,675,181972,'2017-10-04 18:23:17','2017-09-21 18:45:29','2017-10-04 18:27:03','64857498-acbb-4b90-86b1-5f33907cbf54',NULL,NULL,NULL),(831,1,1,NULL,'viget.jpg','image',1200,675,180037,'2017-10-04 18:24:11','2017-09-21 19:01:20','2017-10-04 18:26:41','5489634b-2fc9-4a26-a205-0f811a952044',NULL,NULL,NULL),(832,1,1,NULL,'yesifoods.jpg','image',1200,675,170446,'2017-10-04 18:24:19','2017-09-21 19:17:47','2017-10-04 18:27:18','1c56cf95-ac2c-42c8-920c-2ba9c6cee02c',NULL,NULL,NULL),(835,1,1,NULL,'elginracing.jpg','image',1200,675,167162,'2017-10-04 18:23:25','2017-09-21 19:21:12','2017-10-04 18:26:57','1dd9e3f4-8b04-48e5-a3a1-3a96c80b600f',NULL,NULL,NULL),(837,2,2,NULL,'me.jpg','image',680,383,45964,'2017-10-04 18:22:37','2017-09-29 20:35:47','2017-10-04 18:27:22','bce683ba-8097-4f19-bbc0-59cbeef1a998',NULL,NULL,NULL),(838,2,2,NULL,'newman-backyard.jpg','image',680,383,110487,'2017-10-04 18:22:37','2017-09-29 20:43:39','2017-10-04 18:27:23','6672d4c6-e134-4354-a781-61969a038d83',NULL,NULL,NULL),(839,2,2,NULL,'newman-beach.jpg','image',680,383,63650,'2017-10-04 18:22:37','2017-09-29 20:43:53','2017-10-04 18:27:23','113b1e4e-b75b-400b-bfc6-0b9b4e907090',NULL,NULL,NULL),(840,2,2,NULL,'bike.jpg','image',680,383,107436,'2017-10-04 18:22:36','2017-09-29 20:56:05','2017-10-04 18:27:21','7a9e692a-2822-44a1-b952-ca5433086b30',NULL,NULL,NULL),(841,2,2,NULL,'bball-1.jpg','image',680,383,109505,'2017-10-04 18:22:35','2017-10-02 18:40:19','2017-10-04 18:27:19','0431ab39-73cc-43af-9fc0-6e9781c287d9',NULL,NULL,NULL),(842,2,2,NULL,'bball-2.jpg','image',680,383,92673,'2017-10-04 18:22:35','2017-10-02 18:40:19','2017-10-04 18:27:20','3080e7ac-62c3-4d61-83ae-50740621ffa5',NULL,NULL,NULL),(843,2,2,NULL,'bball-3.jpg','image',680,383,58589,'2017-10-04 18:22:35','2017-10-02 18:40:20','2017-10-04 18:27:20','6ab9ff50-b88c-4a56-aa96-13f04f98cb85',NULL,NULL,NULL),(844,2,2,NULL,'bball-4.jpg','image',680,383,65159,'2017-10-04 18:22:35','2017-10-02 18:40:20','2017-10-04 18:27:20','84123145-1aed-44a8-add3-1d229fd257a7',NULL,NULL,NULL),(845,2,2,NULL,'bball-5.jpg','image',680,383,67342,'2017-10-04 18:22:35','2017-10-02 18:40:20','2017-10-04 18:27:21','4c47bade-a345-488a-84b9-46bee599c94a',NULL,NULL,NULL),(846,2,2,NULL,'food-1.jpg','image',680,383,99328,'2017-10-04 18:22:36','2017-10-02 18:57:19','2017-10-04 18:27:21','4656319d-8cfa-49b9-b278-1e7ff2f9d6fa',NULL,NULL,NULL),(847,2,2,NULL,'food-2.jpg','image',680,383,91294,'2017-10-04 18:22:36','2017-10-02 18:57:19','2017-10-04 18:27:21','21f6470b-fa54-4928-82ff-b22566b2c3c7',NULL,NULL,NULL),(848,2,2,NULL,'food-3.jpg','image',680,383,84137,'2017-10-04 18:22:36','2017-10-02 18:57:19','2017-10-04 18:27:21','0eb2bf08-ea5d-4ab7-896f-f334b64790dc',NULL,NULL,NULL),(849,2,2,NULL,'food-4.jpg','image',680,383,103962,'2017-10-04 18:22:36','2017-10-02 18:57:20','2017-10-04 18:27:22','8d8d960d-ebb4-4b06-b039-56c31c82ba45',NULL,NULL,NULL),(850,2,2,NULL,'food-5.jpg','image',680,383,73320,'2017-10-04 18:22:36','2017-10-02 18:57:20','2017-10-04 18:27:22','0f3a416c-bf48-43ac-9f28-9dbc15a14705',NULL,NULL,NULL),(851,2,2,NULL,'food-6.jpg','image',680,383,140767,'2017-10-04 18:22:37','2017-10-02 18:57:20','2017-10-04 18:27:22','f7c96faa-df77-49c0-b6a1-1168188b3b34',NULL,NULL,NULL),(857,1,1,NULL,'hamilton.jpg','image',1200,675,169232,'2019-01-24 02:15:06','2019-01-24 02:15:06','2019-01-24 02:15:06','ad7383e1-c478-4219-b28a-8b0eb688566c',NULL,NULL,NULL),(2055,1,1,1,'nflpa.jpg','image',1200,702,145454,'2020-05-29 19:00:45','2020-05-29 19:00:45','2020-05-29 19:00:45','97ce0ecd-8de2-4a5c-b999-3918eac32d85',NULL,NULL,NULL);
commit;

--
-- Dumping data for table `craft_assettransforms`
--

set autocommit=0;
commit;

--
-- Dumping data for table `craft_categories`
--

set autocommit=0;
commit;

--
-- Dumping data for table `craft_categorygroups`
--

set autocommit=0;
commit;

--
-- Dumping data for table `craft_categorygroups_sites`
--

set autocommit=0;
commit;

--
-- Dumping data for table `craft_changedattributes`
--

set autocommit=0;
INSERT INTO `craft_changedattributes` VALUES (778,1,'postDate','2020-07-11 04:19:59',0,1),(781,1,'title','2021-01-18 20:36:16',0,1),(2057,1,'title','2020-05-29 19:01:51',0,1);
commit;

--
-- Dumping data for table `craft_changedfields`
--

set autocommit=0;
INSERT INTO `craft_changedfields` VALUES (4,1,11,'2020-03-18 20:03:17',0,NULL),(5,1,1,'2020-03-18 20:03:17',0,NULL),(46,1,2,'2020-03-18 20:03:17',0,NULL),(46,1,3,'2020-03-18 20:03:17',0,NULL),(46,1,4,'2020-03-18 20:03:17',0,NULL),(49,1,2,'2020-03-18 20:03:18',0,NULL),(49,1,3,'2020-03-18 20:03:18',0,NULL),(49,1,4,'2020-03-18 20:03:18',0,NULL),(51,1,2,'2020-03-18 20:03:18',0,NULL),(51,1,3,'2020-03-18 20:03:18',0,NULL),(51,1,14,'2020-03-18 20:03:18',0,NULL),(52,1,2,'2020-03-18 20:03:18',0,NULL),(52,1,3,'2020-03-18 20:03:18',0,NULL),(52,1,4,'2020-03-18 20:03:18',0,NULL),(54,1,2,'2020-03-18 20:03:18',0,NULL),(54,1,3,'2020-03-18 20:03:18',0,NULL),(54,1,14,'2020-03-18 20:03:18',0,NULL),(56,1,2,'2020-03-18 20:03:18',0,NULL),(56,1,3,'2020-03-18 20:03:18',0,NULL),(56,1,14,'2020-03-18 20:03:18',0,NULL),(57,1,2,'2020-03-18 20:03:18',0,NULL),(57,1,3,'2020-03-18 20:03:18',0,NULL),(57,1,14,'2020-03-18 20:03:18',0,NULL),(59,1,2,'2020-03-18 20:03:18',0,NULL),(59,1,3,'2020-03-18 20:03:18',0,NULL),(59,1,4,'2020-03-18 20:03:18',0,NULL),(60,1,2,'2020-03-18 20:03:18',0,NULL),(60,1,3,'2020-03-18 20:03:18',0,NULL),(60,1,4,'2020-03-18 20:03:18',0,NULL),(61,1,2,'2020-03-18 20:03:18',0,NULL),(61,1,3,'2020-03-18 20:03:18',0,NULL),(61,1,14,'2020-03-18 20:03:18',0,NULL),(62,1,2,'2020-03-18 20:03:18',0,NULL),(62,1,3,'2020-03-18 20:03:18',0,NULL),(62,1,4,'2020-03-18 20:03:18',0,NULL),(65,1,2,'2020-03-18 20:03:18',0,NULL),(65,1,3,'2020-03-18 20:03:18',0,NULL),(65,1,14,'2020-03-18 20:03:18',0,NULL),(66,1,2,'2020-03-18 20:03:18',0,NULL),(66,1,3,'2020-03-18 20:03:18',0,NULL),(66,1,4,'2020-03-18 20:03:18',0,NULL),(67,1,2,'2020-03-18 20:03:18',0,NULL),(67,1,3,'2020-03-18 20:03:18',0,NULL),(67,1,14,'2020-03-18 20:03:18',0,NULL),(69,1,2,'2020-03-18 20:03:18',0,NULL),(69,1,3,'2020-03-18 20:03:18',0,NULL),(69,1,14,'2020-03-18 20:03:18',0,NULL),(70,1,2,'2020-03-18 20:03:18',0,NULL),(70,1,3,'2020-03-18 20:03:18',0,NULL),(70,1,14,'2020-03-18 20:03:18',0,NULL),(71,1,2,'2020-03-18 20:03:18',0,NULL),(71,1,3,'2020-03-18 20:03:18',0,NULL),(71,1,14,'2020-03-18 20:03:18',0,NULL),(72,1,2,'2020-03-18 20:03:18',0,NULL),(72,1,3,'2020-03-18 20:03:18',0,NULL),(72,1,14,'2020-03-18 20:03:18',0,NULL),(73,1,2,'2020-03-18 20:03:18',0,NULL),(73,1,3,'2020-03-18 20:03:18',0,NULL),(73,1,4,'2020-03-18 20:03:18',0,NULL),(74,1,2,'2020-03-18 20:03:19',0,NULL),(74,1,3,'2020-03-18 20:03:19',0,NULL),(74,1,14,'2020-03-18 20:03:19',0,NULL),(76,1,2,'2020-03-18 20:03:19',0,NULL),(76,1,3,'2020-03-18 20:03:19',0,NULL),(76,1,14,'2020-03-18 20:03:19',0,NULL),(77,1,2,'2020-03-18 20:03:19',0,NULL),(77,1,3,'2020-03-18 20:03:19',0,NULL),(77,1,14,'2020-03-18 20:03:19',0,NULL),(78,1,2,'2020-03-18 20:03:19',0,NULL),(78,1,3,'2020-03-18 20:03:19',0,NULL),(78,1,14,'2020-03-18 20:03:19',0,NULL),(79,1,2,'2020-03-18 20:03:19',0,NULL),(79,1,3,'2020-03-18 20:03:19',0,NULL),(79,1,4,'2020-03-18 20:03:19',0,NULL),(80,1,2,'2020-03-18 20:03:19',0,NULL),(80,1,3,'2020-03-18 20:03:19',0,NULL),(80,1,14,'2020-03-18 20:03:19',0,NULL),(81,1,2,'2020-03-18 20:03:19',0,NULL),(81,1,3,'2020-03-18 20:03:19',0,NULL),(81,1,14,'2020-03-18 20:03:19',0,NULL),(82,1,2,'2020-03-18 20:03:19',0,NULL),(82,1,3,'2020-03-18 20:03:19',0,NULL),(82,1,14,'2020-03-18 20:03:19',0,NULL),(83,1,2,'2020-03-18 20:03:19',0,NULL),(83,1,3,'2020-03-18 20:03:19',0,NULL),(83,1,14,'2020-03-18 20:03:19',0,NULL),(84,1,2,'2020-03-18 20:03:19',0,NULL),(84,1,3,'2020-03-18 20:03:19',0,NULL),(84,1,4,'2020-03-18 20:03:19',0,NULL),(85,1,2,'2020-03-18 20:03:19',0,NULL),(85,1,3,'2020-03-18 20:03:19',0,NULL),(85,1,4,'2020-03-18 20:03:19',0,NULL),(86,1,2,'2020-03-18 20:03:19',0,NULL),(86,1,3,'2020-03-18 20:03:19',0,NULL),(86,1,4,'2020-03-18 20:03:19',0,NULL),(87,1,2,'2020-03-18 20:03:19',0,NULL),(87,1,3,'2020-03-18 20:03:19',0,NULL),(87,1,14,'2020-03-18 20:03:19',0,NULL),(88,1,2,'2020-03-18 20:03:19',0,NULL),(88,1,3,'2020-03-18 20:03:19',0,NULL),(88,1,14,'2020-03-18 20:03:19',0,NULL),(89,1,2,'2020-03-18 20:03:19',0,NULL),(89,1,3,'2020-03-18 20:03:19',0,NULL),(89,1,14,'2020-03-18 20:03:19',0,NULL),(91,1,2,'2020-03-18 20:03:19',0,NULL),(91,1,3,'2020-03-18 20:03:19',0,NULL),(91,1,14,'2020-03-18 20:03:19',0,NULL),(92,1,2,'2020-03-18 20:03:19',0,NULL),(92,1,3,'2020-03-18 20:03:19',0,NULL),(92,1,14,'2020-03-18 20:03:19',0,NULL),(93,1,2,'2020-03-18 20:03:19',0,NULL),(93,1,3,'2020-03-18 20:03:19',0,NULL),(93,1,14,'2020-03-18 20:03:19',0,NULL),(94,1,2,'2020-03-18 20:03:20',0,NULL),(94,1,3,'2020-03-18 20:03:20',0,NULL),(94,1,14,'2020-03-18 20:03:20',0,NULL),(95,1,2,'2020-03-18 20:03:20',0,NULL),(95,1,3,'2020-03-18 20:03:20',0,NULL),(95,1,14,'2020-03-18 20:03:20',0,NULL),(96,1,2,'2020-03-18 20:03:20',0,NULL),(96,1,3,'2020-03-18 20:03:20',0,NULL),(96,1,14,'2020-03-18 20:03:20',0,NULL),(97,1,2,'2020-03-18 20:03:20',0,NULL),(97,1,3,'2020-03-18 20:03:20',0,NULL),(97,1,14,'2020-03-18 20:03:20',0,NULL),(98,1,2,'2020-03-18 20:03:20',0,NULL),(98,1,3,'2020-03-18 20:03:20',0,NULL),(98,1,14,'2020-03-18 20:03:20',0,NULL),(99,1,2,'2020-03-18 20:03:20',0,NULL),(99,1,3,'2020-03-18 20:03:20',0,NULL),(99,1,14,'2020-03-18 20:03:20',0,NULL),(100,1,2,'2020-03-18 20:03:20',0,NULL),(100,1,3,'2020-03-18 20:03:20',0,NULL),(100,1,14,'2020-03-18 20:03:20',0,NULL),(101,1,2,'2020-03-18 20:03:20',0,NULL),(101,1,3,'2020-03-18 20:03:20',0,NULL),(101,1,14,'2020-03-18 20:03:20',0,NULL),(102,1,2,'2020-03-18 20:03:20',0,NULL),(102,1,3,'2020-03-18 20:03:20',0,NULL),(102,1,14,'2020-03-18 20:03:20',0,NULL),(103,1,2,'2020-03-18 20:03:20',0,NULL),(103,1,3,'2020-03-18 20:03:20',0,NULL),(103,1,14,'2020-03-18 20:03:20',0,NULL),(104,1,2,'2020-03-18 20:03:20',0,NULL),(104,1,3,'2020-03-18 20:03:20',0,NULL),(104,1,14,'2020-03-18 20:03:20',0,NULL),(105,1,2,'2020-03-18 20:03:20',0,NULL),(105,1,3,'2020-03-18 20:03:20',0,NULL),(105,1,14,'2020-03-18 20:03:20',0,NULL),(106,1,2,'2020-03-18 20:03:20',0,NULL),(106,1,3,'2020-03-18 20:03:20',0,NULL),(106,1,14,'2020-03-18 20:03:20',0,NULL),(107,1,2,'2020-03-18 20:03:20',0,NULL),(107,1,3,'2020-03-18 20:03:20',0,NULL),(107,1,14,'2020-03-18 20:03:20',0,NULL),(108,1,2,'2020-03-18 20:03:20',0,NULL),(108,1,3,'2020-03-18 20:03:20',0,NULL),(108,1,14,'2020-03-18 20:03:20',0,NULL),(109,1,2,'2020-03-18 20:03:20',0,NULL),(109,1,3,'2020-03-18 20:03:20',0,NULL),(109,1,14,'2020-03-18 20:03:20',0,NULL),(110,1,2,'2020-03-18 20:03:20',0,NULL),(110,1,3,'2020-03-18 20:03:20',0,NULL),(110,1,14,'2020-03-18 20:03:20',0,NULL),(111,1,2,'2020-03-18 20:03:20',0,NULL),(111,1,3,'2020-03-18 20:03:20',0,NULL),(111,1,14,'2020-03-18 20:03:20',0,NULL),(112,1,2,'2020-03-18 20:03:20',0,NULL),(112,1,3,'2020-03-18 20:03:20',0,NULL),(112,1,14,'2020-03-18 20:03:20',0,NULL),(113,1,2,'2020-03-18 20:03:21',0,NULL),(113,1,3,'2020-03-18 20:03:21',0,NULL),(113,1,14,'2020-03-18 20:03:21',0,NULL),(114,1,2,'2020-03-18 20:03:21',0,NULL),(114,1,3,'2020-03-18 20:03:21',0,NULL),(114,1,14,'2020-03-18 20:03:21',0,NULL),(115,1,2,'2020-03-18 20:03:21',0,NULL),(115,1,3,'2020-03-18 20:03:21',0,NULL),(115,1,14,'2020-03-18 20:03:21',0,NULL),(116,1,2,'2020-03-18 20:03:21',0,NULL),(116,1,3,'2020-03-18 20:03:21',0,NULL),(116,1,14,'2020-03-18 20:03:21',0,NULL),(117,1,2,'2020-03-18 20:03:21',0,NULL),(117,1,3,'2020-03-18 20:03:21',0,NULL),(117,1,14,'2020-03-18 20:03:21',0,NULL),(118,1,2,'2020-03-18 20:03:21',0,NULL),(118,1,3,'2020-03-18 20:03:21',0,NULL),(118,1,14,'2020-03-18 20:03:21',0,NULL),(119,1,2,'2020-03-18 20:03:21',0,NULL),(119,1,3,'2020-03-18 20:03:21',0,NULL),(119,1,14,'2020-03-18 20:03:21',0,NULL),(120,1,2,'2020-03-18 20:03:21',0,NULL),(120,1,3,'2020-03-18 20:03:21',0,NULL),(120,1,14,'2020-03-18 20:03:21',0,NULL),(121,1,2,'2020-03-18 20:03:21',0,NULL),(121,1,3,'2020-03-18 20:03:21',0,NULL),(121,1,14,'2020-03-18 20:03:21',0,NULL),(122,1,2,'2020-03-18 20:03:21',0,NULL),(122,1,3,'2020-03-18 20:03:21',0,NULL),(122,1,14,'2020-03-18 20:03:21',0,NULL),(123,1,2,'2020-03-18 20:03:21',0,NULL),(123,1,3,'2020-03-18 20:03:21',0,NULL),(123,1,14,'2020-03-18 20:03:21',0,NULL),(124,1,2,'2020-03-18 20:03:21',0,NULL),(124,1,3,'2020-03-18 20:03:21',0,NULL),(124,1,4,'2020-03-18 20:03:21',0,NULL),(125,1,2,'2020-03-18 20:03:21',0,NULL),(125,1,3,'2020-03-18 20:03:21',0,NULL),(125,1,14,'2020-03-18 20:03:21',0,NULL),(126,1,2,'2020-03-18 20:03:21',0,NULL),(126,1,3,'2020-03-18 20:03:21',0,NULL),(126,1,14,'2020-03-18 20:03:21',0,NULL),(127,1,2,'2020-03-18 20:03:21',0,NULL),(127,1,3,'2020-03-18 20:03:21',0,NULL),(127,1,14,'2020-03-18 20:03:21',0,NULL),(128,1,2,'2020-03-18 20:03:21',0,NULL),(128,1,3,'2020-03-18 20:03:21',0,NULL),(128,1,14,'2020-03-18 20:03:21',0,NULL),(129,1,2,'2020-03-18 20:03:21',0,NULL),(129,1,3,'2020-03-18 20:03:21',0,NULL),(129,1,14,'2020-03-18 20:03:21',0,NULL),(130,1,2,'2020-03-18 20:03:21',0,NULL),(130,1,3,'2020-03-18 20:03:21',0,NULL),(130,1,14,'2020-03-18 20:03:21',0,NULL),(131,1,2,'2020-03-18 20:03:21',0,NULL),(131,1,3,'2020-03-18 20:03:21',0,NULL),(131,1,14,'2020-03-18 20:03:21',0,NULL),(132,1,2,'2020-03-18 20:03:22',0,NULL),(132,1,3,'2020-03-18 20:03:22',0,NULL),(132,1,14,'2020-03-18 20:03:22',0,NULL),(133,1,2,'2020-03-18 20:03:22',0,NULL),(133,1,3,'2020-03-18 20:03:22',0,NULL),(133,1,14,'2020-03-18 20:03:22',0,NULL),(134,1,2,'2020-03-18 20:03:22',0,NULL),(134,1,3,'2020-03-18 20:03:22',0,NULL),(134,1,14,'2020-03-18 20:03:22',0,NULL),(135,1,2,'2020-03-18 20:03:22',0,NULL),(135,1,3,'2020-03-18 20:03:22',0,NULL),(135,1,14,'2020-03-18 20:03:22',0,NULL),(136,1,2,'2020-03-18 20:03:22',0,NULL),(136,1,3,'2020-03-18 20:03:22',0,NULL),(136,1,14,'2020-03-18 20:03:22',0,NULL),(137,1,2,'2020-03-18 20:03:22',0,NULL),(137,1,3,'2020-03-18 20:03:22',0,NULL),(137,1,14,'2020-03-18 20:03:22',0,NULL),(138,1,2,'2020-03-18 20:03:22',0,NULL),(138,1,3,'2020-03-18 20:03:22',0,NULL),(138,1,14,'2020-03-18 20:03:22',0,NULL),(139,1,2,'2020-03-18 20:03:22',0,NULL),(139,1,3,'2020-03-18 20:03:22',0,NULL),(139,1,14,'2020-03-18 20:03:22',0,NULL),(140,1,2,'2020-03-18 20:03:22',0,NULL),(140,1,3,'2020-03-18 20:03:22',0,NULL),(140,1,14,'2020-03-18 20:03:22',0,NULL),(141,1,2,'2020-03-18 20:03:22',0,NULL),(141,1,3,'2020-03-18 20:03:22',0,NULL),(141,1,14,'2020-03-18 20:03:22',0,NULL),(142,1,2,'2020-03-18 20:03:22',0,NULL),(142,1,3,'2020-03-18 20:03:22',0,NULL),(142,1,14,'2020-03-18 20:03:22',0,NULL),(143,1,2,'2020-03-18 20:03:22',0,NULL),(143,1,3,'2020-03-18 20:03:22',0,NULL),(143,1,14,'2020-03-18 20:03:22',0,NULL),(144,1,2,'2020-03-18 20:03:22',0,NULL),(144,1,3,'2020-03-18 20:03:22',0,NULL),(144,1,14,'2020-03-18 20:03:22',0,NULL),(145,1,2,'2020-03-18 20:03:22',0,NULL),(145,1,3,'2020-03-18 20:03:22',0,NULL),(145,1,14,'2020-03-18 20:03:22',0,NULL),(146,1,2,'2020-03-18 20:03:22',0,NULL),(146,1,3,'2020-03-18 20:03:22',0,NULL),(146,1,14,'2020-03-18 20:03:22',0,NULL),(147,1,2,'2020-03-18 20:03:22',0,NULL),(147,1,3,'2020-03-18 20:03:22',0,NULL),(147,1,14,'2020-03-18 20:03:22',0,NULL),(148,1,2,'2020-03-18 20:03:23',0,NULL),(148,1,3,'2020-03-18 20:03:23',0,NULL),(148,1,4,'2020-03-18 20:03:23',0,NULL),(149,1,2,'2020-03-18 20:03:23',0,NULL),(149,1,3,'2020-03-18 20:03:23',0,NULL),(149,1,14,'2020-03-18 20:03:23',0,NULL),(150,1,2,'2020-03-18 20:03:23',0,NULL),(150,1,3,'2020-03-18 20:03:23',0,NULL),(150,1,14,'2020-03-18 20:03:23',0,NULL),(151,1,2,'2020-03-18 20:03:23',0,NULL),(151,1,3,'2020-03-18 20:03:23',0,NULL),(151,1,14,'2020-03-18 20:03:23',0,NULL),(152,1,2,'2020-03-18 20:03:23',0,NULL),(152,1,3,'2020-03-18 20:03:23',0,NULL),(152,1,14,'2020-03-18 20:03:23',0,NULL),(153,1,2,'2020-03-18 20:03:23',0,NULL),(153,1,3,'2020-03-18 20:03:23',0,NULL),(153,1,14,'2020-03-18 20:03:23',0,NULL),(154,1,2,'2020-03-18 20:03:23',0,NULL),(154,1,3,'2020-03-18 20:03:23',0,NULL),(154,1,14,'2020-03-18 20:03:23',0,NULL),(155,1,2,'2020-03-18 20:03:23',0,NULL),(155,1,3,'2020-03-18 20:03:23',0,NULL),(155,1,14,'2020-03-18 20:03:23',0,NULL),(156,1,2,'2020-03-18 20:03:23',0,NULL),(156,1,3,'2020-03-18 20:03:23',0,NULL),(156,1,14,'2020-03-18 20:03:23',0,NULL),(157,1,2,'2020-03-18 20:03:23',0,NULL),(157,1,3,'2020-03-18 20:03:23',0,NULL),(157,1,14,'2020-03-18 20:03:23',0,NULL),(158,1,2,'2020-03-18 20:03:23',0,NULL),(158,1,3,'2020-03-18 20:03:23',0,NULL),(158,1,14,'2020-03-18 20:03:23',0,NULL),(159,1,2,'2020-03-18 20:03:23',0,NULL),(159,1,3,'2020-03-18 20:03:23',0,NULL),(159,1,14,'2020-03-18 20:03:23',0,NULL),(160,1,2,'2020-03-18 20:03:23',0,NULL),(160,1,3,'2020-03-18 20:03:23',0,NULL),(160,1,14,'2020-03-18 20:03:23',0,NULL),(161,1,2,'2020-03-18 20:03:23',0,NULL),(161,1,3,'2020-03-18 20:03:23',0,NULL),(161,1,14,'2020-03-18 20:03:23',0,NULL),(162,1,2,'2020-03-18 20:03:23',0,NULL),(162,1,3,'2020-03-18 20:03:23',0,NULL),(162,1,14,'2020-03-18 20:03:23',0,NULL),(163,1,2,'2020-03-18 20:03:23',0,NULL),(163,1,3,'2020-03-18 20:03:23',0,NULL),(163,1,14,'2020-03-18 20:03:23',0,NULL),(164,1,2,'2020-03-18 20:03:23',0,NULL),(164,1,3,'2020-03-18 20:03:23',0,NULL),(164,1,14,'2020-03-18 20:03:23',0,NULL),(165,1,2,'2020-03-18 20:03:23',0,NULL),(165,1,3,'2020-03-18 20:03:23',0,NULL),(165,1,14,'2020-03-18 20:03:23',0,NULL),(166,1,2,'2020-03-18 20:03:23',0,NULL),(166,1,3,'2020-03-18 20:03:23',0,NULL),(166,1,14,'2020-03-18 20:03:23',0,NULL),(167,1,2,'2020-03-18 20:03:23',0,NULL),(167,1,3,'2020-03-18 20:03:23',0,NULL),(167,1,14,'2020-03-18 20:03:23',0,NULL),(168,1,2,'2020-03-18 20:03:23',0,NULL),(168,1,3,'2020-03-18 20:03:23',0,NULL),(168,1,14,'2020-03-18 20:03:23',0,NULL),(169,1,2,'2020-03-18 20:03:24',0,NULL),(169,1,3,'2020-03-18 20:03:24',0,NULL),(169,1,14,'2020-03-18 20:03:24',0,NULL),(170,1,2,'2020-03-18 20:03:24',0,NULL),(170,1,3,'2020-03-18 20:03:24',0,NULL),(170,1,14,'2020-03-18 20:03:24',0,NULL),(171,1,2,'2020-03-18 20:03:24',0,NULL),(171,1,3,'2020-03-18 20:03:24',0,NULL),(171,1,14,'2020-03-18 20:03:24',0,NULL),(172,1,2,'2020-03-18 20:03:24',0,NULL),(172,1,3,'2020-03-18 20:03:24',0,NULL),(172,1,14,'2020-03-18 20:03:24',0,NULL),(173,1,2,'2020-03-18 20:03:24',0,NULL),(173,1,3,'2020-03-18 20:03:24',0,NULL),(173,1,14,'2020-03-18 20:03:24',0,NULL),(174,1,2,'2020-03-18 20:03:24',0,NULL),(174,1,3,'2020-03-18 20:03:24',0,NULL),(174,1,14,'2020-03-18 20:03:24',0,NULL),(175,1,2,'2020-03-18 20:03:24',0,NULL),(175,1,3,'2020-03-18 20:03:24',0,NULL),(175,1,14,'2020-03-18 20:03:24',0,NULL),(176,1,2,'2020-03-18 20:03:24',0,NULL),(176,1,3,'2020-03-18 20:03:24',0,NULL),(176,1,14,'2020-03-18 20:03:24',0,NULL),(177,1,2,'2020-03-18 20:03:24',0,NULL),(177,1,3,'2020-03-18 20:03:24',0,NULL),(177,1,14,'2020-03-18 20:03:24',0,NULL),(178,1,2,'2020-03-18 20:03:24',0,NULL),(178,1,3,'2020-03-18 20:03:24',0,NULL),(178,1,14,'2020-03-18 20:03:24',0,NULL),(179,1,2,'2020-03-18 20:03:24',0,NULL),(179,1,3,'2020-03-18 20:03:24',0,NULL),(179,1,14,'2020-03-18 20:03:24',0,NULL),(180,1,2,'2020-03-18 20:03:24',0,NULL),(180,1,3,'2020-03-18 20:03:24',0,NULL),(180,1,14,'2020-03-18 20:03:24',0,NULL),(181,1,2,'2020-03-18 20:03:24',0,NULL),(181,1,3,'2020-03-18 20:03:24',0,NULL),(181,1,14,'2020-03-18 20:03:24',0,NULL),(182,1,2,'2020-03-18 20:03:24',0,NULL),(182,1,3,'2020-03-18 20:03:24',0,NULL),(182,1,14,'2020-03-18 20:03:24',0,NULL),(183,1,2,'2020-03-18 20:03:24',0,NULL),(183,1,3,'2020-03-18 20:03:24',0,NULL),(183,1,14,'2020-03-18 20:03:24',0,NULL),(184,1,2,'2020-03-18 20:03:24',0,NULL),(184,1,3,'2020-03-18 20:03:24',0,NULL),(184,1,14,'2020-03-18 20:03:24',0,NULL),(185,1,2,'2020-03-18 20:03:24',0,NULL),(185,1,3,'2020-03-18 20:03:24',0,NULL),(185,1,14,'2020-03-18 20:03:24',0,NULL),(186,1,2,'2020-03-18 20:03:25',0,NULL),(186,1,3,'2020-03-18 20:03:25',0,NULL),(186,1,14,'2020-03-18 20:03:25',0,NULL),(187,1,2,'2020-03-18 20:03:25',0,NULL),(187,1,3,'2020-03-18 20:03:25',0,NULL),(187,1,14,'2020-03-18 20:03:25',0,NULL),(188,1,2,'2020-03-18 20:03:25',0,NULL),(188,1,3,'2020-03-18 20:03:25',0,NULL),(188,1,14,'2020-03-18 20:03:25',0,NULL),(189,1,2,'2020-03-18 20:03:25',0,NULL),(189,1,3,'2020-03-18 20:03:25',0,NULL),(189,1,14,'2020-03-18 20:03:25',0,NULL),(190,1,2,'2020-03-18 20:03:25',0,NULL),(190,1,3,'2020-03-18 20:03:25',0,NULL),(190,1,14,'2020-03-18 20:03:25',0,NULL),(191,1,2,'2020-03-18 20:03:25',0,NULL),(191,1,3,'2020-03-18 20:03:25',0,NULL),(191,1,14,'2020-03-18 20:03:25',0,NULL),(192,1,2,'2020-03-18 20:03:25',0,NULL),(192,1,3,'2020-03-18 20:03:25',0,NULL),(192,1,14,'2020-03-18 20:03:25',0,NULL),(193,1,2,'2020-03-18 20:03:25',0,NULL),(193,1,3,'2020-03-18 20:03:25',0,NULL),(193,1,14,'2020-03-18 20:03:25',0,NULL),(194,1,2,'2020-03-18 20:03:25',0,NULL),(194,1,3,'2020-03-18 20:03:25',0,NULL),(194,1,14,'2020-03-18 20:03:25',0,NULL),(195,1,2,'2020-03-18 20:03:25',0,NULL),(195,1,3,'2020-03-18 20:03:25',0,NULL),(195,1,14,'2020-03-18 20:03:25',0,NULL),(196,1,2,'2020-03-18 20:03:25',0,NULL),(196,1,3,'2020-03-18 20:03:25',0,NULL),(196,1,14,'2020-03-18 20:03:25',0,NULL),(197,1,2,'2020-03-18 20:03:25',0,NULL),(197,1,3,'2020-03-18 20:03:25',0,NULL),(197,1,14,'2020-03-18 20:03:25',0,NULL),(198,1,2,'2020-03-18 20:03:25',0,NULL),(198,1,3,'2020-03-18 20:03:25',0,NULL),(198,1,14,'2020-03-18 20:03:25',0,NULL),(199,1,2,'2020-03-18 20:03:25',0,NULL),(199,1,3,'2020-03-18 20:03:25',0,NULL),(199,1,14,'2020-03-18 20:03:25',0,NULL),(200,1,2,'2020-03-18 20:03:25',0,NULL),(200,1,3,'2020-03-18 20:03:25',0,NULL),(200,1,14,'2020-03-18 20:03:25',0,NULL),(201,1,2,'2020-03-18 20:03:25',0,NULL),(201,1,3,'2020-03-18 20:03:25',0,NULL),(201,1,14,'2020-03-18 20:03:25',0,NULL),(202,1,2,'2020-03-18 20:03:25',0,NULL),(202,1,3,'2020-03-18 20:03:25',0,NULL),(202,1,14,'2020-03-18 20:03:25',0,NULL),(203,1,2,'2020-03-18 20:03:25',0,NULL),(203,1,3,'2020-03-18 20:03:25',0,NULL),(203,1,14,'2020-03-18 20:03:25',0,NULL),(204,1,2,'2020-03-18 20:03:26',0,NULL),(204,1,3,'2020-03-18 20:03:26',0,NULL),(204,1,14,'2020-03-18 20:03:26',0,NULL),(205,1,2,'2020-03-18 20:03:26',0,NULL),(205,1,3,'2020-03-18 20:03:26',0,NULL),(205,1,14,'2020-03-18 20:03:26',0,NULL),(206,1,2,'2020-03-18 20:03:26',0,NULL),(206,1,3,'2020-03-18 20:03:26',0,NULL),(206,1,14,'2020-03-18 20:03:26',0,NULL),(207,1,2,'2020-03-18 20:03:26',0,NULL),(207,1,3,'2020-03-18 20:03:26',0,NULL),(207,1,14,'2020-03-18 20:03:26',0,NULL),(208,1,2,'2020-03-18 20:03:26',0,NULL),(208,1,3,'2020-03-18 20:03:26',0,NULL),(208,1,14,'2020-03-18 20:03:26',0,NULL),(209,1,2,'2020-03-18 20:03:26',0,NULL),(209,1,3,'2020-03-18 20:03:26',0,NULL),(209,1,14,'2020-03-18 20:03:26',0,NULL),(210,1,2,'2020-03-18 20:03:26',0,NULL),(210,1,3,'2020-03-18 20:03:26',0,NULL),(210,1,14,'2020-03-18 20:03:26',0,NULL),(211,1,2,'2020-03-18 20:03:26',0,NULL),(211,1,3,'2020-03-18 20:03:26',0,NULL),(211,1,14,'2020-03-18 20:03:26',0,NULL),(212,1,2,'2020-03-18 20:03:26',0,NULL),(212,1,3,'2020-03-18 20:03:26',0,NULL),(212,1,14,'2020-03-18 20:03:26',0,NULL),(213,1,2,'2020-03-18 20:03:26',0,NULL),(213,1,3,'2020-03-18 20:03:26',0,NULL),(213,1,14,'2020-03-18 20:03:26',0,NULL),(214,1,2,'2020-03-18 20:03:26',0,NULL),(214,1,3,'2020-03-18 20:03:26',0,NULL),(214,1,14,'2020-03-18 20:03:26',0,NULL),(215,1,2,'2020-03-18 20:03:26',0,NULL),(215,1,3,'2020-03-18 20:03:26',0,NULL),(215,1,14,'2020-03-18 20:03:26',0,NULL),(216,1,2,'2020-03-18 20:03:26',0,NULL),(216,1,3,'2020-03-18 20:03:26',0,NULL),(216,1,14,'2020-03-18 20:03:26',0,NULL),(217,1,2,'2020-03-18 20:03:26',0,NULL),(217,1,3,'2020-03-18 20:03:26',0,NULL),(217,1,14,'2020-03-18 20:03:26',0,NULL),(218,1,2,'2020-03-18 20:03:26',0,NULL),(218,1,3,'2020-03-18 20:03:26',0,NULL),(218,1,14,'2020-03-18 20:03:26',0,NULL),(219,1,2,'2020-03-18 20:03:26',0,NULL),(219,1,3,'2020-03-18 20:03:26',0,NULL),(219,1,14,'2020-03-18 20:03:26',0,NULL),(220,1,2,'2020-03-18 20:03:27',0,NULL),(220,1,3,'2020-03-18 20:03:27',0,NULL),(220,1,14,'2020-03-18 20:03:27',0,NULL),(221,1,2,'2020-03-18 20:03:27',0,NULL),(221,1,3,'2020-03-18 20:03:27',0,NULL),(221,1,14,'2020-03-18 20:03:27',0,NULL),(222,1,2,'2020-03-18 20:03:27',0,NULL),(222,1,3,'2020-03-18 20:03:27',0,NULL),(222,1,14,'2020-03-18 20:03:27',0,NULL),(223,1,2,'2020-03-18 20:03:27',0,NULL),(223,1,3,'2020-03-18 20:03:27',0,NULL),(223,1,14,'2020-03-18 20:03:27',0,NULL),(224,1,2,'2020-03-18 20:03:27',0,NULL),(224,1,3,'2020-03-18 20:03:27',0,NULL),(224,1,14,'2020-03-18 20:03:27',0,NULL),(225,1,2,'2020-03-18 20:03:27',0,NULL),(225,1,3,'2020-03-18 20:03:27',0,NULL),(225,1,14,'2020-03-18 20:03:27',0,NULL),(226,1,2,'2020-03-18 20:03:27',0,NULL),(226,1,3,'2020-03-18 20:03:27',0,NULL),(226,1,14,'2020-03-18 20:03:27',0,NULL),(227,1,2,'2020-03-18 20:03:27',0,NULL),(227,1,3,'2020-03-18 20:03:27',0,NULL),(227,1,14,'2020-03-18 20:03:27',0,NULL),(228,1,2,'2020-03-18 20:03:27',0,NULL),(228,1,3,'2020-03-18 20:03:27',0,NULL),(228,1,14,'2020-03-18 20:03:27',0,NULL),(229,1,2,'2020-03-18 20:03:27',0,NULL),(229,1,3,'2020-03-18 20:03:27',0,NULL),(229,1,14,'2020-03-18 20:03:27',0,NULL),(230,1,2,'2020-03-18 20:03:27',0,NULL),(230,1,3,'2020-03-18 20:03:27',0,NULL),(230,1,14,'2020-03-18 20:03:27',0,NULL),(231,1,2,'2020-03-18 20:03:27',0,NULL),(231,1,3,'2020-03-18 20:03:27',0,NULL),(231,1,14,'2020-03-18 20:03:27',0,NULL),(232,1,2,'2020-03-18 20:03:27',0,NULL),(232,1,3,'2020-03-18 20:03:27',0,NULL),(232,1,14,'2020-03-18 20:03:27',0,NULL),(233,1,2,'2020-03-18 20:03:27',0,NULL),(233,1,3,'2020-03-18 20:03:27',0,NULL),(233,1,14,'2020-03-18 20:03:27',0,NULL),(234,1,2,'2020-03-18 20:03:27',0,NULL),(234,1,3,'2020-03-18 20:03:27',0,NULL),(234,1,14,'2020-03-18 20:03:27',0,NULL),(235,1,2,'2020-03-18 20:03:27',0,NULL),(235,1,3,'2020-03-18 20:03:27',0,NULL),(235,1,14,'2020-03-18 20:03:27',0,NULL),(236,1,2,'2020-03-18 20:03:27',0,NULL),(236,1,3,'2020-03-18 20:03:27',0,NULL),(236,1,14,'2020-03-18 20:03:27',0,NULL),(237,1,2,'2020-03-18 20:03:27',0,NULL),(237,1,3,'2020-03-18 20:03:27',0,NULL),(237,1,14,'2020-03-18 20:03:27',0,NULL),(238,1,2,'2020-03-18 20:03:27',0,NULL),(238,1,3,'2020-03-18 20:03:27',0,NULL),(238,1,14,'2020-03-18 20:03:27',0,NULL),(239,1,2,'2020-03-18 20:03:28',0,NULL),(239,1,3,'2020-03-18 20:03:28',0,NULL),(239,1,14,'2020-03-18 20:03:28',0,NULL),(240,1,2,'2020-03-18 20:03:28',0,NULL),(240,1,3,'2020-03-18 20:03:28',0,NULL),(240,1,14,'2020-03-18 20:03:28',0,NULL),(241,1,2,'2020-03-18 20:03:28',0,NULL),(241,1,3,'2020-03-18 20:03:28',0,NULL),(241,1,14,'2020-03-18 20:03:28',0,NULL),(242,1,2,'2020-03-18 20:03:28',0,NULL),(242,1,3,'2020-03-18 20:03:28',0,NULL),(242,1,14,'2020-03-18 20:03:28',0,NULL),(243,1,2,'2020-03-18 20:03:28',0,NULL),(243,1,3,'2020-03-18 20:03:28',0,NULL),(243,1,14,'2020-03-18 20:03:28',0,NULL),(244,1,2,'2020-03-18 20:03:28',0,NULL),(244,1,3,'2020-03-18 20:03:28',0,NULL),(244,1,14,'2020-03-18 20:03:28',0,NULL),(245,1,2,'2020-03-18 20:03:28',0,NULL),(245,1,3,'2020-03-18 20:03:28',0,NULL),(245,1,14,'2020-03-18 20:03:28',0,NULL),(246,1,2,'2020-03-18 20:03:28',0,NULL),(246,1,3,'2020-03-18 20:03:28',0,NULL),(246,1,14,'2020-03-18 20:03:28',0,NULL),(247,1,2,'2020-03-18 20:03:28',0,NULL),(247,1,3,'2020-03-18 20:03:28',0,NULL),(247,1,14,'2020-03-18 20:03:28',0,NULL),(248,1,2,'2020-03-18 20:03:28',0,NULL),(248,1,3,'2020-03-18 20:03:28',0,NULL),(248,1,14,'2020-03-18 20:03:28',0,NULL),(249,1,2,'2020-03-18 20:03:28',0,NULL),(249,1,3,'2020-03-18 20:03:28',0,NULL),(249,1,14,'2020-03-18 20:03:28',0,NULL),(250,1,2,'2020-03-18 20:03:28',0,NULL),(250,1,3,'2020-03-18 20:03:28',0,NULL),(250,1,14,'2020-03-18 20:03:28',0,NULL),(251,1,2,'2020-03-18 20:03:28',0,NULL),(251,1,3,'2020-03-18 20:03:28',0,NULL),(251,1,14,'2020-03-18 20:03:28',0,NULL),(252,1,2,'2020-03-18 20:03:28',0,NULL),(252,1,3,'2020-03-18 20:03:28',0,NULL),(252,1,14,'2020-03-18 20:03:28',0,NULL),(253,1,2,'2020-03-18 20:03:28',0,NULL),(253,1,3,'2020-03-18 20:03:28',0,NULL),(253,1,14,'2020-03-18 20:03:28',0,NULL),(254,1,2,'2020-03-18 20:03:28',0,NULL),(254,1,3,'2020-03-18 20:03:28',0,NULL),(254,1,14,'2020-03-18 20:03:28',0,NULL),(255,1,2,'2020-03-18 20:03:28',0,NULL),(255,1,3,'2020-03-18 20:03:28',0,NULL),(255,1,14,'2020-03-18 20:03:28',0,NULL),(256,1,2,'2020-03-18 20:03:28',0,NULL),(256,1,3,'2020-03-18 20:03:28',0,NULL),(256,1,14,'2020-03-18 20:03:28',0,NULL),(257,1,2,'2020-03-18 20:03:28',0,NULL),(257,1,3,'2020-03-18 20:03:28',0,NULL),(257,1,14,'2020-03-18 20:03:28',0,NULL),(258,1,2,'2020-03-18 20:03:28',0,NULL),(258,1,3,'2020-03-18 20:03:28',0,NULL),(258,1,14,'2020-03-18 20:03:28',0,NULL),(259,1,2,'2020-03-18 20:03:28',0,NULL),(259,1,3,'2020-03-18 20:03:28',0,NULL),(259,1,14,'2020-03-18 20:03:28',0,NULL),(260,1,2,'2020-03-18 20:03:28',0,NULL),(260,1,3,'2020-03-18 20:03:28',0,NULL),(260,1,14,'2020-03-18 20:03:28',0,NULL),(261,1,2,'2020-03-18 20:03:28',0,NULL),(261,1,3,'2020-03-18 20:03:28',0,NULL),(261,1,14,'2020-03-18 20:03:28',0,NULL),(262,1,2,'2020-03-18 20:03:29',0,NULL),(262,1,3,'2020-03-18 20:03:29',0,NULL),(262,1,14,'2020-03-18 20:03:29',0,NULL),(263,1,2,'2020-03-18 20:03:29',0,NULL),(263,1,3,'2020-03-18 20:03:29',0,NULL),(263,1,14,'2020-03-18 20:03:29',0,NULL),(264,1,2,'2020-03-18 20:03:29',0,NULL),(264,1,3,'2020-03-18 20:03:29',0,NULL),(264,1,14,'2020-03-18 20:03:29',0,NULL),(265,1,2,'2020-03-18 20:03:29',0,NULL),(265,1,3,'2020-03-18 20:03:29',0,NULL),(265,1,14,'2020-03-18 20:03:29',0,NULL),(266,1,2,'2020-03-18 20:03:29',0,NULL),(266,1,3,'2020-03-18 20:03:29',0,NULL),(266,1,14,'2020-03-18 20:03:29',0,NULL),(267,1,2,'2020-03-18 20:03:29',0,NULL),(267,1,3,'2020-03-18 20:03:29',0,NULL),(267,1,14,'2020-03-18 20:03:29',0,NULL),(268,1,2,'2020-03-18 20:03:29',0,NULL),(268,1,3,'2020-03-18 20:03:29',0,NULL),(268,1,14,'2020-03-18 20:03:29',0,NULL),(269,1,2,'2020-03-18 20:03:29',0,NULL),(269,1,3,'2020-03-18 20:03:29',0,NULL),(269,1,14,'2020-03-18 20:03:29',0,NULL),(270,1,2,'2020-03-18 20:03:29',0,NULL),(270,1,3,'2020-03-18 20:03:29',0,NULL),(270,1,14,'2020-03-18 20:03:29',0,NULL),(271,1,2,'2020-03-18 20:03:29',0,NULL),(271,1,3,'2020-03-18 20:03:29',0,NULL),(271,1,14,'2020-03-18 20:03:29',0,NULL),(272,1,2,'2020-03-18 20:03:29',0,NULL),(272,1,3,'2020-03-18 20:03:29',0,NULL),(272,1,14,'2020-03-18 20:03:29',0,NULL),(273,1,2,'2020-03-18 20:03:29',0,NULL),(273,1,3,'2020-03-18 20:03:29',0,NULL),(273,1,14,'2020-03-18 20:03:29',0,NULL),(274,1,2,'2020-03-18 20:03:29',0,NULL),(274,1,3,'2020-03-18 20:03:29',0,NULL),(274,1,14,'2020-03-18 20:03:29',0,NULL),(275,1,2,'2020-03-18 20:03:29',0,NULL),(275,1,3,'2020-03-18 20:03:29',0,NULL),(275,1,14,'2020-03-18 20:03:29',0,NULL),(276,1,2,'2020-03-18 20:03:29',0,NULL),(276,1,3,'2020-03-18 20:03:29',0,NULL),(276,1,14,'2020-03-18 20:03:29',0,NULL),(277,1,2,'2020-03-18 20:03:29',0,NULL),(277,1,3,'2020-03-18 20:03:29',0,NULL),(277,1,14,'2020-03-18 20:03:29',0,NULL),(278,1,2,'2020-03-18 20:03:29',0,NULL),(278,1,3,'2020-03-18 20:03:29',0,NULL),(278,1,14,'2020-03-18 20:03:29',0,NULL),(279,1,2,'2020-03-18 20:03:29',0,NULL),(279,1,3,'2020-03-18 20:03:29',0,NULL),(279,1,14,'2020-03-18 20:03:29',0,NULL),(280,1,2,'2020-03-18 20:03:29',0,NULL),(280,1,3,'2020-03-18 20:03:29',0,NULL),(280,1,14,'2020-03-18 20:03:29',0,NULL),(281,1,2,'2020-03-18 20:03:29',0,NULL),(281,1,3,'2020-03-18 20:03:29',0,NULL),(281,1,14,'2020-03-18 20:03:29',0,NULL),(282,1,2,'2020-03-18 20:03:30',0,NULL),(282,1,3,'2020-03-18 20:03:30',0,NULL),(282,1,14,'2020-03-18 20:03:30',0,NULL),(283,1,2,'2020-03-18 20:03:30',0,NULL),(283,1,3,'2020-03-18 20:03:30',0,NULL),(283,1,14,'2020-03-18 20:03:30',0,NULL),(284,1,2,'2020-03-18 20:03:30',0,NULL),(284,1,3,'2020-03-18 20:03:30',0,NULL),(284,1,14,'2020-03-18 20:03:30',0,NULL),(285,1,2,'2020-03-18 20:03:30',0,NULL),(285,1,3,'2020-03-18 20:03:30',0,NULL),(285,1,14,'2020-03-18 20:03:30',0,NULL),(286,1,2,'2020-03-18 20:03:30',0,NULL),(286,1,3,'2020-03-18 20:03:30',0,NULL),(286,1,14,'2020-03-18 20:03:30',0,NULL),(287,1,2,'2020-03-18 20:03:30',0,NULL),(287,1,3,'2020-03-18 20:03:30',0,NULL),(287,1,14,'2020-03-18 20:03:30',0,NULL),(288,1,2,'2020-03-18 20:03:30',0,NULL),(288,1,3,'2020-03-18 20:03:30',0,NULL),(288,1,14,'2020-03-18 20:03:30',0,NULL),(289,1,2,'2020-03-18 20:03:30',0,NULL),(289,1,3,'2020-03-18 20:03:30',0,NULL),(289,1,14,'2020-03-18 20:03:30',0,NULL),(290,1,2,'2020-03-18 20:03:30',0,NULL),(290,1,3,'2020-03-18 20:03:30',0,NULL),(290,1,14,'2020-03-18 20:03:30',0,NULL),(291,1,2,'2020-03-18 20:03:30',0,NULL),(291,1,3,'2020-03-18 20:03:30',0,NULL),(291,1,14,'2020-03-18 20:03:30',0,NULL),(292,1,2,'2020-03-18 20:03:30',0,NULL),(292,1,3,'2020-03-18 20:03:30',0,NULL),(292,1,14,'2020-03-18 20:03:30',0,NULL),(293,1,2,'2020-03-18 20:03:30',0,NULL),(293,1,3,'2020-03-18 20:03:30',0,NULL),(293,1,14,'2020-03-18 20:03:30',0,NULL),(294,1,2,'2020-03-18 20:03:30',0,NULL),(294,1,3,'2020-03-18 20:03:30',0,NULL),(294,1,14,'2020-03-18 20:03:30',0,NULL),(295,1,2,'2020-03-18 20:03:30',0,NULL),(295,1,3,'2020-03-18 20:03:30',0,NULL),(295,1,14,'2020-03-18 20:03:30',0,NULL),(296,1,2,'2020-03-18 20:03:30',0,NULL),(296,1,3,'2020-03-18 20:03:30',0,NULL),(296,1,14,'2020-03-18 20:03:30',0,NULL),(297,1,2,'2020-03-18 20:03:30',0,NULL),(297,1,3,'2020-03-18 20:03:30',0,NULL),(297,1,14,'2020-03-18 20:03:30',0,NULL),(298,1,2,'2020-03-18 20:03:34',0,NULL),(298,1,4,'2020-03-18 20:03:34',0,NULL),(298,1,5,'2020-03-18 20:03:34',0,NULL),(298,1,6,'2020-03-18 20:03:34',0,NULL),(298,1,15,'2020-03-18 20:03:34',0,NULL),(298,1,16,'2020-03-18 20:03:34',0,NULL),(303,1,2,'2020-03-18 20:03:34',0,NULL),(303,1,4,'2020-03-18 20:03:34',0,NULL),(303,1,5,'2020-03-18 20:03:34',0,NULL),(303,1,6,'2020-03-18 20:03:34',0,NULL),(303,1,15,'2020-03-18 20:03:34',0,NULL),(303,1,16,'2020-03-18 20:03:34',0,NULL),(305,1,2,'2020-03-18 20:03:34',0,NULL),(305,1,4,'2020-03-18 20:03:34',0,NULL),(305,1,5,'2020-03-18 20:03:34',0,NULL),(305,1,6,'2020-03-18 20:03:34',0,NULL),(305,1,15,'2020-03-18 20:03:34',0,NULL),(305,1,16,'2020-03-18 20:03:34',0,NULL),(306,1,2,'2020-03-18 20:03:33',0,NULL),(306,1,4,'2020-03-18 20:03:33',0,NULL),(306,1,5,'2020-03-18 20:03:33',0,NULL),(306,1,6,'2020-03-18 20:03:33',0,NULL),(306,1,15,'2020-03-18 20:03:33',0,NULL),(306,1,16,'2020-03-18 20:03:33',0,NULL),(307,1,2,'2020-03-18 20:03:33',0,NULL),(307,1,4,'2020-03-18 20:03:33',0,NULL),(307,1,5,'2020-03-18 20:03:33',0,NULL),(307,1,6,'2020-03-18 20:03:33',0,NULL),(307,1,15,'2020-03-18 20:03:33',0,NULL),(307,1,16,'2020-03-18 20:03:33',0,NULL),(308,1,2,'2020-03-18 20:03:33',0,NULL),(308,1,4,'2020-03-18 20:03:33',0,NULL),(308,1,5,'2020-03-18 20:03:33',0,NULL),(308,1,6,'2020-03-18 20:03:33',0,NULL),(308,1,15,'2020-03-18 20:03:33',0,NULL),(308,1,16,'2020-03-18 20:03:33',0,NULL),(309,1,2,'2020-03-18 20:03:35',0,NULL),(309,1,4,'2020-03-18 20:03:35',0,NULL),(309,1,5,'2020-03-18 20:03:35',0,NULL),(309,1,6,'2020-03-18 20:03:35',0,NULL),(309,1,15,'2020-03-18 20:03:35',0,NULL),(309,1,16,'2020-03-18 20:03:35',0,NULL),(310,1,2,'2020-03-18 20:03:32',0,NULL),(310,1,4,'2020-03-18 20:03:32',0,NULL),(310,1,5,'2020-03-18 20:03:32',0,NULL),(310,1,6,'2020-03-18 20:03:32',0,NULL),(310,1,15,'2020-03-18 20:03:32',0,NULL),(310,1,16,'2020-03-18 20:03:32',0,NULL),(311,1,2,'2020-03-18 20:03:32',0,NULL),(311,1,4,'2020-03-18 20:03:32',0,NULL),(311,1,5,'2020-03-18 20:03:32',0,NULL),(311,1,6,'2020-03-18 20:03:32',0,NULL),(311,1,15,'2020-03-18 20:03:32',0,NULL),(311,1,16,'2020-03-18 20:03:32',0,NULL),(312,1,2,'2020-03-18 20:03:33',0,NULL),(312,1,4,'2020-03-18 20:03:33',0,NULL),(312,1,5,'2020-03-18 20:03:33',0,NULL),(312,1,6,'2020-03-18 20:03:33',0,NULL),(312,1,15,'2020-03-18 20:03:33',0,NULL),(312,1,16,'2020-03-18 20:03:33',0,NULL),(313,1,2,'2020-03-18 20:03:32',0,NULL),(313,1,4,'2020-03-18 20:03:32',0,NULL),(313,1,5,'2020-03-18 20:03:32',0,NULL),(313,1,6,'2020-03-18 20:03:32',0,NULL),(313,1,15,'2020-03-18 20:03:32',0,NULL),(313,1,16,'2020-03-18 20:03:32',0,NULL),(314,1,2,'2020-03-18 20:03:32',0,NULL),(314,1,4,'2020-03-18 20:03:32',0,NULL),(314,1,5,'2020-03-18 20:03:32',0,NULL),(314,1,6,'2020-03-18 20:03:32',0,NULL),(314,1,15,'2020-03-18 20:03:32',0,NULL),(314,1,16,'2020-03-18 20:03:32',0,NULL),(315,1,2,'2020-03-18 20:03:32',0,NULL),(315,1,4,'2020-03-18 20:03:32',0,NULL),(315,1,5,'2020-03-18 20:03:32',0,NULL),(315,1,6,'2020-03-18 20:03:32',0,NULL),(315,1,15,'2020-03-18 20:03:32',0,NULL),(315,1,16,'2020-03-18 20:03:32',0,NULL),(316,1,2,'2020-03-18 20:03:31',0,NULL),(316,1,4,'2020-03-18 20:03:31',0,NULL),(316,1,5,'2020-03-18 20:03:31',0,NULL),(316,1,6,'2020-03-18 20:03:31',0,NULL),(316,1,15,'2020-03-18 20:03:31',0,NULL),(316,1,16,'2020-03-18 20:03:31',0,NULL),(317,1,2,'2020-03-18 20:03:31',0,NULL),(317,1,4,'2020-03-18 20:03:31',0,NULL),(317,1,5,'2020-03-18 20:03:31',0,NULL),(317,1,6,'2020-03-18 20:03:31',0,NULL),(317,1,15,'2020-03-18 20:03:31',0,NULL),(317,1,16,'2020-03-18 20:03:31',0,NULL),(318,1,2,'2020-03-18 20:03:31',0,NULL),(318,1,4,'2020-03-18 20:03:31',0,NULL),(318,1,5,'2020-03-18 20:03:31',0,NULL),(318,1,6,'2020-03-18 20:03:31',0,NULL),(318,1,15,'2020-03-18 20:03:31',0,NULL),(318,1,16,'2020-03-18 20:03:31',0,NULL),(319,1,2,'2020-03-18 20:03:31',0,NULL),(319,1,4,'2020-03-18 20:03:31',0,NULL),(319,1,5,'2020-03-18 20:03:31',0,NULL),(319,1,6,'2020-03-18 20:03:31',0,NULL),(319,1,15,'2020-03-18 20:03:31',0,NULL),(319,1,16,'2020-03-18 20:03:31',0,NULL),(320,1,2,'2020-03-18 20:03:31',0,NULL),(320,1,4,'2020-03-18 20:03:31',0,NULL),(320,1,5,'2020-03-18 20:03:31',0,NULL),(320,1,6,'2020-03-18 20:03:31',0,NULL),(320,1,15,'2020-03-18 20:03:31',0,NULL),(320,1,16,'2020-03-18 20:03:31',0,NULL),(321,1,2,'2020-03-18 20:03:31',0,NULL),(321,1,4,'2020-03-18 20:03:31',0,NULL),(321,1,5,'2020-03-18 20:03:31',0,NULL),(321,1,6,'2020-03-18 20:03:31',0,NULL),(321,1,15,'2020-03-18 20:03:31',0,NULL),(321,1,16,'2020-03-18 20:03:31',0,NULL),(754,1,2,'2020-03-18 20:03:34',0,NULL),(754,1,4,'2020-03-18 20:03:34',0,NULL),(754,1,5,'2020-03-18 20:03:34',0,NULL),(754,1,6,'2020-03-18 20:03:34',0,NULL),(754,1,15,'2020-03-18 20:03:34',0,NULL),(754,1,16,'2020-03-18 20:03:34',0,NULL),(760,1,2,'2020-03-18 20:03:34',0,NULL),(760,1,4,'2020-03-18 20:03:34',0,NULL),(760,1,5,'2020-03-18 20:03:34',0,NULL),(760,1,6,'2020-03-18 20:03:34',0,NULL),(760,1,15,'2020-03-18 20:03:34',0,NULL),(760,1,16,'2020-03-18 20:03:34',0,NULL),(774,1,2,'2020-03-18 20:03:35',0,NULL),(774,1,4,'2020-03-18 20:03:35',0,NULL),(774,1,5,'2020-03-18 20:03:35',0,NULL),(774,1,6,'2020-03-18 20:03:35',0,NULL),(774,1,15,'2020-03-18 20:03:35',0,NULL),(774,1,16,'2020-03-18 20:03:35',0,NULL),(775,1,2,'2020-03-18 20:03:35',0,NULL),(775,1,4,'2021-01-18 20:36:38',0,1),(775,1,5,'2020-03-18 20:03:35',0,NULL),(775,1,6,'2020-03-18 20:03:35',0,NULL),(775,1,15,'2020-03-18 20:03:35',0,NULL),(775,1,16,'2020-03-18 20:03:35',0,NULL),(776,1,2,'2020-03-18 20:03:35',0,NULL),(776,1,4,'2020-07-11 04:20:31',0,1),(776,1,5,'2020-03-18 20:03:35',0,NULL),(776,1,6,'2020-03-18 20:03:35',0,NULL),(776,1,15,'2020-03-18 20:03:35',0,NULL),(776,1,16,'2020-03-18 20:03:35',0,NULL),(777,1,2,'2020-03-18 20:03:35',0,NULL),(777,1,4,'2020-03-18 20:03:35',0,NULL),(777,1,5,'2020-03-18 20:03:35',0,NULL),(777,1,6,'2020-03-18 20:03:35',0,NULL),(777,1,15,'2020-03-18 20:03:35',0,NULL),(777,1,16,'2020-03-18 20:03:35',0,NULL),(778,1,2,'2020-03-18 20:03:35',0,NULL),(778,1,4,'2020-07-11 04:19:59',0,1),(778,1,5,'2020-03-18 20:03:35',0,NULL),(778,1,6,'2020-03-18 20:03:35',0,NULL),(778,1,15,'2020-03-18 20:03:35',0,NULL),(778,1,16,'2020-03-18 20:03:35',0,NULL),(779,1,2,'2020-03-18 20:03:35',0,NULL),(779,1,4,'2020-03-18 20:03:35',0,NULL),(779,1,5,'2020-03-18 20:03:35',0,NULL),(779,1,6,'2020-03-18 20:03:35',0,NULL),(779,1,15,'2020-03-18 20:03:35',0,NULL),(779,1,16,'2020-03-18 20:03:35',0,NULL),(780,1,2,'2020-03-18 20:03:35',0,NULL),(780,1,4,'2020-03-18 20:03:35',0,NULL),(780,1,5,'2020-03-18 20:03:35',0,NULL),(780,1,6,'2020-03-18 20:03:35',0,NULL),(780,1,15,'2020-03-18 20:03:35',0,NULL),(780,1,16,'2020-03-18 20:03:35',0,NULL),(781,1,2,'2020-03-18 20:03:35',0,NULL),(781,1,4,'2020-03-18 20:03:35',0,NULL),(781,1,5,'2020-03-18 20:03:35',0,NULL),(781,1,6,'2020-03-18 20:03:35',0,NULL),(781,1,15,'2020-03-18 20:03:35',0,NULL),(781,1,16,'2020-03-18 20:03:35',0,NULL),(782,1,2,'2020-03-18 20:03:35',0,NULL),(782,1,4,'2020-03-18 20:03:35',0,NULL),(782,1,5,'2020-03-18 20:03:35',0,NULL),(782,1,6,'2020-03-18 20:03:35',0,NULL),(782,1,15,'2020-03-18 20:03:35',0,NULL),(782,1,16,'2020-03-18 20:03:35',0,NULL),(783,1,2,'2020-03-18 20:03:35',0,NULL),(783,1,4,'2020-03-18 20:03:35',0,NULL),(783,1,5,'2020-03-18 20:03:35',0,NULL),(783,1,6,'2020-03-18 20:03:35',0,NULL),(783,1,15,'2020-03-18 20:03:35',0,NULL),(783,1,16,'2020-03-18 20:03:35',0,NULL),(784,1,2,'2020-03-18 20:03:35',0,NULL),(784,1,4,'2020-03-18 20:03:35',0,NULL),(784,1,5,'2020-03-18 20:03:35',0,NULL),(784,1,6,'2020-03-18 20:03:35',0,NULL),(784,1,15,'2020-03-18 20:03:35',0,NULL),(784,1,16,'2020-03-18 20:03:35',0,NULL),(785,1,2,'2020-03-18 20:03:34',0,NULL),(785,1,4,'2021-01-18 20:36:59',0,1),(785,1,5,'2020-03-18 20:03:34',0,NULL),(785,1,6,'2020-03-18 20:03:34',0,NULL),(785,1,15,'2020-03-18 20:03:34',0,NULL),(785,1,16,'2020-03-18 20:03:34',0,NULL),(789,1,2,'2020-03-18 20:03:22',0,NULL),(789,1,3,'2020-03-18 20:03:22',0,NULL),(789,1,4,'2020-03-18 20:03:22',0,NULL),(790,1,2,'2020-03-18 20:03:22',0,NULL),(790,1,3,'2020-03-18 20:03:22',0,NULL),(790,1,4,'2020-03-18 20:03:22',0,NULL),(791,1,2,'2020-03-18 20:03:21',0,NULL),(791,1,3,'2020-03-18 20:03:21',0,NULL),(791,1,4,'2020-03-18 20:03:21',0,NULL),(792,1,2,'2020-03-18 20:03:19',0,NULL),(792,1,3,'2020-03-18 20:03:19',0,NULL),(792,1,4,'2020-03-18 20:03:19',0,NULL),(793,1,2,'2020-03-18 20:03:18',0,NULL),(793,1,3,'2020-03-18 20:03:18',0,NULL),(793,1,4,'2020-03-18 20:03:18',0,NULL),(794,1,2,'2020-03-18 20:03:18',0,NULL),(794,1,3,'2020-03-18 20:03:18',0,NULL),(794,1,4,'2020-03-18 20:03:18',0,NULL),(795,1,2,'2020-03-18 20:03:18',0,NULL),(795,1,3,'2020-03-18 20:03:18',0,NULL),(795,1,4,'2020-03-18 20:03:18',0,NULL),(796,1,2,'2020-03-18 20:03:18',0,NULL),(796,1,3,'2020-03-18 20:03:18',0,NULL),(796,1,4,'2020-03-18 20:03:18',0,NULL),(797,1,2,'2020-03-18 20:03:18',0,NULL),(797,1,3,'2020-03-18 20:03:18',0,NULL),(797,1,4,'2020-03-18 20:03:18',0,NULL),(798,1,2,'2020-03-18 20:03:18',0,NULL),(798,1,3,'2020-03-18 20:03:18',0,NULL),(798,1,4,'2020-03-18 20:03:18',0,NULL),(799,1,2,'2020-03-18 20:03:17',0,NULL),(799,1,3,'2020-03-18 20:03:17',0,NULL),(799,1,4,'2020-03-18 20:03:17',0,NULL),(801,1,2,'2020-03-18 20:03:17',0,NULL),(801,1,3,'2020-03-18 20:03:17',0,NULL),(801,1,4,'2020-03-18 20:03:17',0,NULL),(802,1,2,'2020-03-18 20:03:17',0,NULL),(802,1,3,'2020-03-18 20:03:17',0,NULL),(802,1,4,'2020-03-18 20:03:17',0,NULL),(804,1,2,'2020-03-18 20:03:17',0,NULL),(804,1,3,'2020-03-18 20:03:17',0,NULL),(804,1,4,'2020-03-18 20:03:17',0,NULL),(805,1,2,'2020-03-18 20:03:17',0,NULL),(805,1,3,'2020-03-18 20:03:17',0,NULL),(805,1,4,'2020-03-18 20:03:17',0,NULL),(806,1,2,'2020-03-18 20:03:17',0,NULL),(806,1,3,'2020-03-18 20:03:17',0,NULL),(806,1,4,'2020-03-18 20:03:17',0,NULL),(807,1,2,'2020-03-18 20:03:17',0,NULL),(807,1,3,'2020-03-18 20:03:17',0,NULL),(807,1,4,'2020-03-18 20:03:17',0,NULL),(808,1,2,'2020-03-18 20:03:17',0,NULL),(808,1,3,'2020-03-18 20:03:17',0,NULL),(808,1,4,'2020-03-18 20:03:17',0,NULL),(809,1,2,'2020-03-18 20:03:17',0,NULL),(809,1,3,'2020-03-18 20:03:17',0,NULL),(809,1,4,'2020-03-18 20:03:17',0,NULL),(810,1,2,'2020-03-18 20:03:17',0,NULL),(810,1,3,'2020-03-18 20:03:17',0,NULL),(810,1,4,'2020-03-18 20:03:17',0,NULL),(811,1,2,'2020-03-18 20:03:17',0,NULL),(811,1,3,'2020-03-18 20:03:17',0,NULL),(811,1,4,'2020-03-18 20:03:17',0,NULL),(813,1,2,'2020-03-18 20:03:17',0,NULL),(813,1,3,'2020-03-18 20:03:17',0,NULL),(813,1,4,'2020-03-18 20:03:17',0,NULL),(834,1,2,'2020-03-18 20:03:35',0,NULL),(834,1,4,'2020-03-18 20:03:35',0,NULL),(834,1,5,'2020-03-18 20:03:35',0,NULL),(834,1,6,'2020-03-18 20:03:35',0,NULL),(834,1,15,'2020-03-18 20:03:35',0,NULL),(834,1,16,'2020-03-18 20:03:35',0,NULL),(836,1,2,'2020-03-18 20:03:35',0,NULL),(836,1,4,'2020-03-18 20:03:35',0,NULL),(836,1,5,'2020-03-18 20:03:35',0,NULL),(836,1,6,'2020-03-18 20:03:35',0,NULL),(836,1,15,'2020-03-18 20:03:35',0,NULL),(836,1,16,'2020-03-18 20:03:35',0,NULL),(853,1,17,'2020-03-18 20:03:17',0,NULL),(853,1,18,'2020-03-18 20:03:17',0,NULL),(854,1,2,'2020-03-18 20:03:17',0,NULL),(854,1,3,'2020-03-18 20:03:17',0,NULL),(854,1,4,'2020-03-18 20:03:17',0,NULL),(856,1,2,'2020-03-18 20:03:36',0,NULL),(856,1,4,'2020-03-18 20:03:36',0,NULL),(856,1,5,'2020-03-18 20:03:36',0,NULL),(856,1,6,'2020-03-18 20:03:36',0,NULL),(856,1,15,'2020-03-18 20:03:36',0,NULL),(856,1,16,'2020-03-18 20:03:36',0,NULL),(858,1,2,'2020-03-18 20:03:17',0,NULL),(858,1,3,'2020-03-18 20:03:17',0,NULL),(858,1,4,'2020-03-18 20:03:17',0,NULL);
commit;

--
-- Dumping data for table `craft_content`
--

set autocommit=0;
INSERT INTO `craft_content` VALUES (1,1,NULL,NULL,NULL,NULL,0,NULL,'2014-01-18 03:44:25','2017-09-06 18:46:24','12e5fa1a-5b8c-44b2-8a45-27b6c8cf1f8d',1,NULL,NULL),(4,4,'About','So you want to find out more about me?','<p>\r\n	Design and back-end development are essential for the web, but the exciting area where they meet is front-end development. As a front-end developer, I get to take a design – something that’s beautiful but static – and turn it into an interface, where its components become tools for unique experiences on the web.</p><p>\r\n	So much is at stake in this stage! The best design can be mangled in the hands of someone uninterested or unwilling to juggle the complexities of cross-browser differences. The best deployment can cause problems down the road if someone didn’t build it to be reusable and adaptable. But a great front-end developer brings designs to the fullness of their intention and sets up a webpage to be flexible and successful years into the future.</p><p>\r\n	I use many tools to make websites, but these are my favorites:</p><ul>\r\n	<li><strong>HTML</strong> &mdash; Semantic markup FTW!</li>	<li><strong>CSS</strong> &mdash; Presentation Layer Perfection</li>	<li><strong>JavaScript</strong> &mdash; The little scripting language that could</li>	<li><strong>Craft</strong> &mdash; The fresh, new take on content management</li>	<li><strong>ExpressionEngine</strong> &mdash; The explosively powerful CMS</li></ul><p>\r\n	I work at <a href=\"http://viget.com/\">Viget</a> in Falls Church, VA and also do <a href=\"/work/\">freelance projects</a>. I’m a demon at basketball, I love movies, and I hope I may be so bold as to claim to be a pretty spectacular cook. I enjoy spending my free time with my adorable puppy.</p>',NULL,0,NULL,'2014-01-18 03:55:11','2020-08-10 21:12:19','abf12227-88c9-4bf0-b9b0-de99b59522de',1,NULL,NULL),(5,5,'Contact','So you want to get in touch?',NULL,NULL,0,NULL,'2014-01-18 03:55:23','2020-08-10 21:12:19','da46124c-8405-4532-ae3c-90e72d64aff4',1,NULL,NULL),(41,46,'JavaScript Execution Patterns for Non-Web Apps',NULL,'<p>I finally got back to blogging and wrote an article about <a href=\"http://viget.com/extend/javascript-execution-patterns-for-non-web-apps\">JavaScript execution patterns</a>, a topic which I recently presented on at the <a href=\"https://speakerdeck.com/trevor_davis/javascript-for-non-web-apps\">DC jQuery Meetup</a>.</p>','http://viget.com/extend/javascript-execution-patterns-for-non-web-apps',2024,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:17','846ee5ea-456a-478c-b470-3985cf490e5a',1,NULL,NULL),(42,47,'JavaScript',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','4448961d-fd54-4be9-92b3-eca0f8aabce2',1,NULL,NULL),(43,48,'Presentations',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','b67b37cb-3f0a-48c3-967e-1931d6b2ead2',1,NULL,NULL),(44,49,'Who Says the Web is Just for Squares?',NULL,'<p>I had some fun building a crazy diamond responsive grid for a project at work. <a href=\"http://viget.com/inspire/who-says-the-web-is-just-for-squares\">This article</a> explains how I did it.</p>','http://viget.com/inspire/who-says-the-web-is-just-for-squares',2023,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','efeec2f5-ac06-46ca-bfed-b55277cf8962',1,NULL,NULL),(45,50,'CSS',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','d9e1acc8-c783-4b9d-80b2-4673e5fcc2dd',1,NULL,NULL),(46,51,'Dumbwaiter Chrome Extension',NULL,'<p>I recently got around to trying out <a href=\"http://statamic.com/\">Statamic</a> to create a little <a href=\"http://recipes.trevor-davis.com/\">recipe manager</a>. Yes, I know there are tons of apps out there that do this type of stuff, but I wanted to really be able to control everything.</p>\n\n<p>I also wanted to figure out some way that my wife could bookmark recipes for us, and I didn’t expect her to login to my Statamic install and go through that whole process of adding a new entry. I wanted her to be able to click a button when she was on a site displaying a recipe that she wanted to bookmark, and an entry would then be created. That led me to create my first Chrome Extension, <a href=\"https://chrome.google.com/webstore/detail/jeeeliidcblacogbcefhcbljkllhpjdd?hl=en&amp;gl=US\">Dumbwaiter</a>.</p>\n\n<p><img src=\"//trevor-davis.com/uploads/images/content/dumbwaiter-options.png\" alt=\"Dumbwaiter Options\" /></p>\n\n<p>The basic idea is that you provide a URL that will be opened in a popup window when you click the exntension. Then you provide some JavaScript to do something on the current page you are on, and then some more JavaScript to do something with that data. So in my case, I grab the URL of the page where the recipe is coming from, grab the name of the recipe, and then whatever text is highlighted on the page. So, the process to add a recipe is to highlight the actual recipe, then click the Dumbwaiter icon, and all the data will be pre-populated into my Statamic new entry form.</p>\n\n<p>Here is some example code that I am using, but the options are limitless: whatever you can do with jQuery, you can do with Dumbwaiter.</p>\n\n<h3>Retrieve Data Code</h3>\n<pre><code>var title = jQuery(\'meta[property=\"og:title\"]\').attr(\'content\');\nvar source = window.location.href;\nvar img = jQuery(\'meta[property=\"og:image\"]\').attr(\'content\');\nvar content = window.getSelection().toString();\n\nif(!title) {\n	title = jQuery(\'title\').text();\n}\n\nvar data = {\n	title: title,\n	source: source,\n	img: img,\n	content: content\n};</code></pre>\n\n<h3>Insert Data Code</h3>\n<pre><code>function makeSlug(str) { \n	str = str.replace(/^\\s+|\\s+$/g, \'\'); // trim\n	str = str.toLowerCase();\n  \n	// remove accents, swap ñ for n, etc\n	var from = \"àáäâèéëêìíïîòóöôùúüûñç·/_,:;\";\n	var to   = \"aaaaeeeeiiiioooouuuunc------\";\n	for (var i=0, l=from.length ; i &lt; l ; i++) {\n		str = str.replace(new RegExp(from.charAt(i), \'g\'), to.charAt(i));\n	}\n  \n	str = str.replace(/[^a-z0-9 -]/g, \'\') // remove invalid chars\n	.replace(/\\s+/g, \'-\') // collapse whitespace and replace by -\n	.replace(/-+/g, \'-\'); // collapse dashes\n  \n	return str;\n};\n\n$(\'#publish-title\').val(data.title).focus();\nvar slug = makeSlug(data.title);\n$(\'#publish-slug\').val(slug);\n$(\'input[name=\"page[yaml][source]\"]\').val(data.source);\n$(\'textarea.markItUpEditor\').val(data.content);</code></pre>\n\n<p>You can <a href=\"https://chrome.google.com/webstore/detail/jeeeliidcblacogbcefhcbljkllhpjdd?hl=en&amp;gl=US\">download Dumbwaiter here</a>, and let me know if you guys find any creative uses!</p>',NULL,2021,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','9461ca7d-4a31-40e8-8f22-68389ea09516',1,NULL,NULL),(47,52,'jQuery Stick ‘em: Make Content Sticky on Scroll, to a Point',NULL,'<p>I created a plugin, <a href=\"http://viget.com/inspire/jquery-stick-em\">jQuery Stick ‘em</a>, to allow items to be “sticky” but only within a container.</p>','http://viget.com/inspire/jquery-stick-em',2019,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','fdc8fedf-c5e9-4aef-98a0-850b6a5d4f80',1,NULL,NULL),(48,53,'Asides',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','902a203b-1c4c-4d84-a0d3-9489c2bb6698',1,NULL,NULL),(49,54,'“Advanced”  Templating with ExpressionEngine',NULL,'<p>I was luckily enough to be asked to speak at the <a href=\"http://dceers.org/\">DCEERs Day conference</a> yesterday. I was asked to speak about best templating practices, which ended up being a talk about how I use <a href=\"http://devot-ee.com/add-ons/stash\">Stash</a> and how I build custom plugins to streamline templating. It was a great day filled with discussion about ExpressionEngine, and it made me look forward to EECI even more!</p>\n\n',NULL,2018,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','33f453e1-5bc8-4505-b6e5-ed210855b3e8',1,NULL,NULL),(50,55,'ExpressionEngine',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','929e0ed7-a486-4151-bea9-79cae4f2d8b0',1,NULL,NULL),(51,56,'Sass & Compass:  Never Write  Regular CSS Again',NULL,'<p>I gave a presentation last week at <a href=\"http://refresh-dc.org/\">Refresh DC</a> about <a href=\"http://sass-lang.com/\">Sass</a> &amp; <a href=\"http://compass-style.org/\">Compass</a>. After being introduced to Sass &amp; Compass about six months ago, I can’t imagine writing regular CSS ever again. I was a little hesitant at first, but now I can’t live without it. I posted my <a href=\"https://speakerdeck.com/u/trevor_davis/p/sass-and-compass-never-write-regular-css-again\">slides online</a>, and <a href=\"https://github.com/davist11/refresh-dc-compass-sass-presentation\">here is the git repo</a> with all of the code samples.</p>',NULL,2017,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','33da8d77-01c0-4fc7-afcc-77fb19ccc0c2',1,NULL,NULL),(52,57,'A Long Time Coming',NULL,'<p>It’s funny how quickly you come to hate your own site. <a href=\"//trevor-davis.com/blog/from-wordpress-to-expressionengine\">Almost exactly 2 years ago</a>, I launched a redesigned version of my site. <strong>After maybe a year, I hated it.</strong> But who has time to redo their own site? Apparently it took me 6 months to find the time to finish mine.</p>\n\n<p>Even within those 6 months, I found things that I had started on the site that I hated. My goals were to simplify things a bit, make it responsive, and play around with Sass and Compass. I also wanted to take some of the focus off of my blog, since I really don’t write too much on it anymore (I write almost all of my articles on the <a href=\"http://viget.com\">Viget Blogs</a> these days).</p>\n\n<p>Since I’m giving 2 presentations in the next few weeks (<a href=\"http://refreshdc-july2012.eventbrite.com/\">Refresh DC</a> &amp; <a href=\"http://dceers.org/\">DCEERS</a>), I wanted to get my new site up. So I may have rushed a few things, but I’m pretty happy with it. Let me know if you run into any errors.</p>',NULL,2016,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','e669c600-c3fa-4809-af14-f7db175d27bb',1,NULL,NULL),(53,58,'News',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','9b578b77-0570-44b8-8920-4fb38acf59b1',1,NULL,NULL),(54,59,'Background-clip, Text-shadow, & Gradients; Oh My!',NULL,'<p>I have been able to play around with <a href=\"http://www.viget.com/inspire/background-clip-text-shadow-gradients/\">background-clip, text-shadow, and gradients</a> on a few recent projects, and I wrote up some tricks that I have come across.</p>','http://www.viget.com/inspire/background-clip-text-shadow-gradients/',2002,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','f2d484eb-c064-45e8-80dd-065cecbc1a50',1,NULL,NULL),(55,60,'Notes From Our Default ExpressionEngine Build',NULL,'<p>I put together some <a href=\"http://www.viget.com/inspire/our-default-expressionengine-build/\">notes about Viget’s default ExpressionEngine build</a> in the hopes that you can find some tips and tricks in all of my nonsense.</p>','http://www.viget.com/inspire/our-default-expressionengine-build/',2000,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','47d35482-67f2-4577-a076-11c8bbb24a58',1,NULL,NULL),(56,61,'Is Ajax ExpressionEngine Plugin',NULL,'<p>For a recent project, I needed to detect whether a request was an AJAX request or not. <a href=\"http://devot-ee.com/add-ons/mx-ajax-detect\">MX Ajax Detect</a> already existed, but I didn’t like that you needed the extra set of tags.</p>\n\n<h2>Usage</h2>\n<pre><code>{if {exp:is_ajax} == \"true\"}\n	OH YEAAAH\n{if:else}\n	OH NOOO\n{/if}</code></pre>\n\n<h2>Download</h2>\n<p>You can find the plugin on <a href=\"http://devot-ee.com/add-ons/is-ajax\">Devot:ee</a> and <a href=\"https://github.com/davist11/is-ajax\">GitHub</a>.</p>',NULL,1999,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','e636d69b-95e9-47b9-9614-c5d37307297b',1,NULL,NULL),(57,62,'Styling HTML5 Elements: An Irresponsible Choice…Right Now',NULL,'<p>I figured it was time to post about a controversial topic that had come up recently. <a href=\"http://www.viget.com/inspire/html5-elements-irresponsible-choice-right-now/\">I just don’t see the value in using most HTML5 elements right now</a>.</p>','http://www.viget.com/inspire/html5-elements-irresponsible-choice-right-now/',1994,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','494b8c3b-3ea3-4c92-bee3-c08b1a9bc057',1,NULL,NULL),(58,63,'HTML',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','31a682c0-432b-4bb8-9e79-c250acb1f17b',1,NULL,NULL),(59,64,'Thoughts',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','74394779-852d-43cb-be7c-4033a8aa087f',1,NULL,NULL),(60,65,'A Couple of Presentations',NULL,'<p>I’ve given a couple of presentations recently, so I thought I would share them.</p>\n\n<h2><a href=\"http://www.slideshare.net/davist11/mee-ee-sitting-in-a-tree\">Mee &amp; EE: Sitting In A Tree</a></h2>\n<p>An internal presentation given to all of <a href=\"http://www.viget.com\">Viget</a> to give an overview of EE and why I love it.</p>\n\n\n\n<h2><a href=\"http://www.slideshare.net/davist11/add-some-awesomesauce\">Add Some Awesome-Sauce</a></h2>\n<p>A presentation given to Clarksburg High School students with a supporting <a href=\"http://hp.trevor-davis.com\">demo site</a> to introduce them to some HTML5 and CSS3 features.</p>\n\n',NULL,1992,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','b671b986-7db9-471b-9f2c-f16d799a7e8d',1,NULL,NULL),(61,66,'My New Best Friend: CSS Generated Content',NULL,'<p>I’ve started to use generated content more and more these days. <a href=\"http://www.viget.com/inspire/css-generated-content/\">Here are a couple of examples</a> from a recent project.</p>','http://www.viget.com/inspire/css-generated-content/',1990,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','fb7a9afa-b718-4931-a0ae-3b628225cff5',1,NULL,NULL),(62,67,'So You Want to Use .htaccess files with MAMP?',NULL,'<p>Well, this was easy in the older version of MAMP that I had. You would just drop them in place, and they worked. I was having a problem with something, so I thought maybe there was an updated version of MAMP that would solve the problem. Sure enough, there was. So I installed it and went along my way. Then, I went back to the local version of my site, and it was completely busted.</p>\n\n<p>I finally tracked it down to .htaccess files being ignored. So I opened up my <em>http.conf</em> file and went down to line 378, and sure enough this is what I saw:</p>\n\n<pre><code>&lt;Directory /&gt;\n    Options Indexes FollowSymLinks\n    AllowOverride None\n&lt;/Directory&gt;</code></pre>\n\n<p>In the older version of MAMP that I had, the default for this value was <em>All</em>. In order to get .htaccess files working in the new version, I just had to change <em>None</em> to <em>All</em>, restart the server, and everything worked normally. Just thought I would share in case anyone else runs into this problem.</p>',NULL,1989,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','45b14efd-3c3c-48c9-9f3f-78e06d4579c2',1,NULL,NULL),(63,68,'Web',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:43','2018-02-15 21:01:40','743ac754-b719-402a-a04d-70f2bd0c31d8',1,NULL,NULL),(64,69,'ExpressionEngine Config Variables Plugin',NULL,'<p>As I was in the process of moving this site into Git and having a local version, I have been trying to move as many paths as possible into the config.php. One of them included the cache path for <a href=\"http://devot-ee.com/add-ons/image-sizer/\">image sizer</a>. Since the local and production paths are different, I wanted some way for them to be dynamic. In my config.php file, I am using <em>$_SERVER[\'DOCUMENT_ROOT\']</em> to set the base_path. I could have enabled PHP in the template and then use the <em>$_SERVER[\'DOCUMENT_ROOT\']</em>, but that seemed like a silly reason to enable PHP.</p>\n\n<p>So I made a plugin that gives you access to everything in the $config array without having to use PHP.</p>\n\n<h2>Usage</h2>\n\n<pre><code>{exp:config:vars value=\"base_path\"}</code></pre>\n\n<p>To see all possible values, just pass in “all”:</p>\n\n<pre><code>{exp:config:vars value=\"all\"}</code></pre>\n\n<h2>Download</h2>\n\n<p>You can download from <a href=\"https://github.com/davist11/Config-Variables-Plugin\">GitHub</a> or <a href=\"http://devot-ee.com/add-ons/config-variables/\">Devot-ee</a>. As always, let me know if you run into any issues.</p>',NULL,1986,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','650da963-3ede-4a28-8cb5-995ca503ec74',1,NULL,NULL),(65,70,'URL Design',NULL,'<p>Great article about <a href=\"http://warpspire.com/posts/url-design/\">designing URLs</a>. It really is an art and is so easy to do so wrong.</p>','http://warpspire.com/posts/url-design/',1972,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','2a8041e1-504c-4584-bbea-6eef2d60fa9e',1,NULL,NULL),(66,71,'Hon-ee Pot Captcha for ExpressionEngine',NULL,'<p>I have a confession to make: <em>I hate captcha</em>. But on the other hand, spam is one of the most frustrating issues ever. So with that being said, I am a big fan of <a href=\"http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx\">Honeypot Captcha</a>.</p>\n\n<p>I couldn’t find any ExpressionEngine addons that added honeypot captcha functionality for both the comment form and the <a href=\"http://www.solspace.com/software/detail/freeform/\">Freeform</a> module, so I decided to go ahead and create one.</p>\n\n<h2>Basic Functionality</h2>\n<p>This extension validates the EE comment form and Freeform forms to make sure a field that is hidden with CSS is left empty.</p>\n\n<h2>Getting Started</h2>\n<ul><li><a href=\"https://github.com/davist11/Hon-ee-Pot-Captcha\">Download Hon-ee Pot Captcha</a></li>\n  <li>Unzip the folder and copy the <em>honeepot</em> folder into your /system/expressionengine/third_party/ directory.</li>\n  <li>Go to Add-ons → Extensions and “Enable extension”.</li>\n  <li>You can customize the field name for the honey pot field and the message a user receives if the field is filled in by going to the extension settings.</li>\n</ul><h3>Setup</h3>\n<p>In the Freeform module, go to Fields → Create a New Field. Now create a field with the field name matching the field name in the Hon-ee Pot Captcha settings. The default is <em>honeepot</em>.</p>\n\n<p>Now in your form, add the honey pot field:</p>\n\n<pre>&lt;li class=\"screen-reader\"&gt;\n  &lt;label for=\"honeepot\"&gt;Don\'t put anything here&lt;/label&gt;\n  &lt;input type=\"text\" name=\"honeepot\" id=\"honeepot\" /&gt;\n&lt;/li&gt;</pre>\n\n<p>In my CSS, I have a class to move things off of the page:</p>\n<pre>.screen-reader {\n  display: block !important;\n  left: -9999px !important;\n  position: absolute !important;\n  top: -9999px !important;\n}</pre>\n\n<p>You can add the same form field to your comment forms as well.</p>\n\n<h2>That is all</h2>\n<p>Hopefully this addition will help to combat some of the spam contact form submissions and comments (even though they get caught by <a href=\"http://loweblog.com/software/low-nospam/\">Low NoSpam</a>). You can <a href=\"https://github.com/davist11/Hon-ee-Pot-Captcha\">download the Hon-ee Pot Captcha extension on Github</a>. Let me know if you run into any issues.</p>',NULL,1971,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','2d6e333b-99ea-4704-b4b9-8a8b63a72912',1,NULL,NULL),(67,72,'Custom File Inputs with a Bit of jQuery',NULL,'<p>I needed to create a custom file input when building <a href=\"http://www.puma.com/cleverlittlebag\">Clever Little Bag</a>, so I’ve <a href=\"http://www.viget.com/inspire/custom-file-inputs-with-a-bit-of-jquery/\">written a tutorial on the Inspire blog</a> discussing that process.</p>','http://www.viget.com/inspire/custom-file-inputs-with-a-bit-of-jquery/',1968,NULL,'2014-01-19 12:56:43','2020-03-18 20:03:18','a39cd5d6-fc5f-4c1b-bf57-c3fc0ecddd89',1,NULL,NULL),(68,73,'Simple jQuery Refactoring',NULL,'<p>I’ve learned so much about jQuery while working at Viget. I wrote a <a href=\"http://www.viget.com/inspire/simple-jquery-refactoring/\">blog post</a> about how you can improve your jQuery through some simple refactoring.</p>','http://www.viget.com/inspire/simple-jquery-refactoring/',1963,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:18','221b5c26-b6bb-4e6d-b0d6-682e4afcdf4c',1,NULL,NULL),(69,74,'jQuery One Page Navigation Plugin',NULL,'<p>When appropriate, I am a fan of the one-page sites. I really like the ones that add smooth scrolling and highlight the navigation depending upon which part of the page you have scrolled to. Here are a few examples: <a href=\"http://www.brizk.com/\">Brizk Design</a> and <a href=\"http://crushlovely.com/\">Crush + Lovely</a>. I finally have a freelance project where a one-page site makes sense, so I needed to write the JavaScript to make the navigation work how I wanted.</p>\n\n<p>I wanted the page to scroll smoothly when the navigation was clicked, so I used the <a href=\"http://flesler.blogspot.com/2007/10/jqueryscrollto.html\">jQuery ScrollTo plugin</a>. I also wanted the page to automatically highlight the correct navigation section depending upon which section was scrolled to, and that was where I added my custom code.</p>\n\n<p>If you want to skip ahead, you can <a href=\"//trevor-davis.com/play/jquery-one-page-nav/\">check out the demo</a> and <a href=\"http://github.com/davist11/jQuery-One-Page-Nav\">download the plugin from GitHub</a>.</p>\n\n<h2>The Markup</h2>\n<p>I started with an unordered list for the navigation and a bunch of sections:</p>\n<pre><code>&lt;ul id=\"nav\"&gt;\n  &lt;li class=\"current\"&gt;&lt;a href=\"#section-1\"&gt;Section 1&lt;/a&gt;&lt;/li&gt;\n  &lt;li&gt;&lt;a href=\"#section-2\"&gt;Section 2&lt;/a&gt;&lt;/li&gt;\n  &lt;li\"&gt;&lt;a href=\"#section-3\"&gt;Section 3&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;div id=\"section-1\"&gt;\n  &lt;strong&gt;Section 1&lt;/strong&gt;\n  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor\n  incididunt ut labore et dolore magna aliqua.&lt;/p&gt;\n&lt;/div&gt;\n&lt;div id=\"section-2\"&gt;\n  &lt;strong&gt;Section 2&lt;/strong&gt;\n  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor \n  incididunt ut labore et dolore magna aliqua.&lt;/p&gt;\n&lt;/div&gt;\n&lt;div id=\"section-3\"&gt;\n  &lt;strong&gt;Section 3&lt;/strong&gt;\n  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor \n  incididunt ut labore et dolore magna aliqua.&lt;/p&gt;\n&lt;/div&gt;</code></pre>\n\n<h2>The JavaScript</h2>\n<p>Then, I added jQuery, the ScrollTo plugin, and my plugin to the page:</p>\n<pre><code>&lt;script src=\"jquery.js\"&gt;&lt;/script&gt;\n&lt;script src=\"jquery.scrollTo.js\"&gt;&lt;/script&gt;\n&lt;script src=\"jquery.nav.min.js\"&gt;&lt;/script&gt;</code></pre>\n\n<p>Finally, I just need to call my plugin on the navigation:</p>\n<pre><code>$(document).ready(function() {\n  $(\'#nav\').onePageNav();\n});</code></pre>\n\n<h3>Options</h3>\n<p>There are a few options for this plugin:</p>\n<ul><li>\n<h4>currentClass: \'current\'</h4>\nClass to add to the list item when the navigation item is selected\n</li>\n<li>\n<h4>changeHash: false</h4>\nIf you want the hash to change when the user clicks on the navigation, change this to <strong>true</strong>\n</li>\n<li>\n<h4>scrollSpeed: 750</h4>\nSpeed to scroll the page when the navigation is clicked\n</li>\n</ul><p>And that’s it. <a href=\"//trevor-davis.com/play/jquery-one-page-nav/\">Check out the demo</a> and <a href=\"http://github.com/davist11/jQuery-One-Page-Nav\">download the plugin from GitHub</a>.</p>',NULL,1962,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','e33d511d-f582-4074-b434-67dd46bff6b8',1,NULL,NULL),(70,75,'Tutorial',NULL,NULL,NULL,0,NULL,'2014-01-19 12:56:44','2018-02-15 21:01:40','4271d4c8-5803-46a4-9929-a5d48ee2230b',1,NULL,NULL),(71,76,'How I Got the Most Out of An Event Apart',NULL,'<p>I had the pleasure of attending <a href=\"http://aneventapart.com/2010/dc/\">An Event Apart</a> last week when they finally made it to DC. This was the third time I had atended An Event Apart conference, but I feel like I absorbed the most from this one.</p>\n\n<h2>Leave the Laptop at Home</h2>\n<p>The last two times I attended, I brought my laptop and took notes during the presentations. Sure I learned some things, but I think other things slipped by me as I was typing. This time, I brought a pencil &amp; notebook, and an iPad that was so graciously given to me as a <a href=\"http://www.viget.com/\">Viget</a> 10th anniversary gift.</p>\n<p>Now, I realize that not everyone has the luxury of choosing between a laptop and an iPad, but I really only used the iPad for checking email and Twitter during breaks, so I definitely could have gone without that. I really enjoyed just sitting, absorbing, and sporadically jotting down notes when I thought it was necessary. You’ve got the slides available to download, so don’t feel like you have to write down everything that is being presented to you.</p>\n\n<h2>Focus on the Speakers</h2>\n<p>I know <a href=\"http://afeedapart.com/\">A Feed Apart</a> is really cool, but do you really want to spend your time on Twitter while speakers are presenting? Try checking A Feed Apart during the breaks to catch up on what everyone thought about the speaker. Leave your phone alone and stop checking your email. You paid good money for the conference, so pay attention.</p>\n\n<h2>Stay Sober</h2>\n<p>I didn’t even make it to the opening night party this year because Thursdays are my basketball night, but I heard about numerous people who got drunk at the party. Really people? Aren’t we all adults now? Didn’t we pay good money for this conference? If you want to go re-live your college days, don’t waste $1000 to do it. So go to the party and mingle, but please don’t get sloppy drunk; we really don’t want to hear about it the next day of the conference.</p>\n\n<h2>Just Enjoy Yourself</h2>\n<p>You are surrounded by people just like you for two days; it’s fantastic. We even had lunch the first day with <a href=\"http://twitter.com/jasonsantamaria\">Jason Santa Maria</a> and <a href=\"http://twitter.com/adactio\">Jeremy Keith</a>, how badass is that?</p>\n\n<p>Much thanks goes to <a href=\"http://twitter.com/zeldman\">Zeldman</a> &amp; <a href=\"http://twitter.com/meyerweb\">Eric Meyer</a> for organizing such a fantastic conference, and I look forward to going back again <a href=\"http://aneventapart.com/news/2010/09/02/announcing-our-2011-schedule/\">next year</a>.</p>',NULL,1961,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','202930cc-1685-4256-bf5e-183ac170cf21',1,NULL,NULL),(72,77,'Find Your Own Starting Point',NULL,'<p><a href=\"http://html5boilerplate.com/\">Everyone</a> and <a href=\"http://html5reset.org/\">their mother</a> has been releasing their HTML5 “boilerplates” for others to use. There is no chance that I would just take such a set of files and start building a site. You’ve got to find a good starting place for yourself, not someone else’s.</p>\n\n<p>I have been starting from a similar point for everything that I build now, and I just finally put it out on <a href=\"http://github.com/davist11/Starter-Template\">GitHub</a>. I’m not doing this because I want someone to use this template to start a site; I’m doing this so that I can have somewhere to always access this set of files.</p>\n\n<p>With that being said, I would urge everyone to have their own starting point. You know your own coding patterns best, so just figure out the best place for yourself to start from. Sure, you can learn from everyone else’s, but it is much more beneficial to have your own. Mine is super basic, so feel free to start from mine and modify it to suit your needs.</p>\n\n<p><a href=\"http://github.com/davist11/Starter-Template\">See my starting point on GitHub</a> and feel free to fork away and modify.</p>\n\n\n',NULL,1960,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','5c200c0c-aaa4-4e6c-9091-de40a46853c1',1,NULL,NULL),(73,78,'A Couple of EE 2.x Addons',NULL,'<p>It’s no secret that I’m a big <a href=\"http://expressionengine.com/\">ExpressionEngine</a> fan. I’m really excited to get started using EE 2.x on projects, but the one thing holding me back is add-ons. I’ve never written an add-on, but I use tons of add-ons that others have written.  With that being said, I ended up porting over a couple of add-ons to work with EE 2.x:</p>\n\n<ul><li>\n    <h2>Scroll to Comment</h2>\n    First, I modified Matthew Pennell’s <a href=\"http://devot-ee.com/add-ons/scroll-to-comment/\">Scroll to Comment Extension</a>. When a user submits a comment, they are scrolled down to the newly added comment. You can find the <a href=\"http://github.com/davist11/EE-Scroll-To-Comment\">EE 2.x compatible version on GitHub</a>.\n  </li>\n  <li>\n    <h2>EE Default CP Tabs</h2>\n    We loved using <a href=\"http://devot-ee.com/add-ons/lg-add-cp-tabs/\">LG Add CP Tabs</a> in order to add a tab for <a href=\"http://buildwithstructure.com/\">Structure</a> for all users. As we were getting our EE 2.x template site setup, we noticed that this extension wasn’t converted yet. I made a slight modification so that you only get one textbox to add tabs instead of multiple boxes broken out by member group. You can find <a href=\"http://github.com/davist11/EE-Default-CP-Tabs\">my EE 2.x compatible version on GitHub</a>.\n  </li>\n</ul><p>My hope is to eventually get this site converted over to EE 2.x, and I think the only add-on holding me back is the <a href=\"http://devot-ee.com/add-ons/eeflickr/\">eeFlickr Module</a>.</p>',NULL,1956,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','959372cc-bfd0-47ed-8ae1-2904b417772e',1,NULL,NULL),(74,79,'jQuery Image Scroller Plugin',NULL,'<p>While working on the individual product page for PUMA, I had to use jQuery to create a scrollable interface for really tall products. It’s kind of hard to describe, but <a href=\"http://www.viget.com/inspire/jquery-image-scroller-plugin/\">have a look at the plugin for a better description</a>.</p>','http://www.viget.com/inspire/jquery-image-scroller-plugin/',1959,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','5b173747-fd61-4f7c-8f18-945f01fd3e19',1,NULL,NULL),(75,80,'jQuery Show Password Plugin',NULL,'<p>In a recent project at work, I had to add in functionality so that a user could see what they had typed in a password field when they click a link. One would think that it is as easy as using JavaScript to change the type attribute, but that of course doesn’t work in IE. Virtually all of the jQuery plugins that I found used a checkbox instead of a link to toggle between the two states. So, I set out to write my own.</p>\n\n<p>If you just want to get to the code, you can <a href=\"http://github.com/davist11/jQuery-Show-Password\">download the plugin from GitHub</a> or <a href=\"//trevor-davis.com/play/jquery-show-password/\">check out the demo</a>.</p>\n\n<p>This plugin works by adding a text field that takes the value of what is typed into the password field. Then, when the link is clicked the password field is hidden and the text field is shown.</p>\n\n<h2>The Markup</h2>\n<p>In the demo, we’ll just start with a simple form:</p>\n\n<pre><code>&lt;form action=\"#\"&gt;\n	&lt;ol class=\"forms\"&gt;\n		&lt;li&gt;\n			&lt;label for=\"username\"&gt;Username&lt;/label&gt;\n			&lt;input type=\"text\" id=\"username\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"password\"&gt;Password&lt;/label&gt;\n			&lt;input type=\"password\" id=\"password\" class=\"password\" /&gt;\n		&lt;/li&gt;\n		&lt;li class=\"buttons\"&gt;\n			&lt;button type=\"submit\"&gt;Submit&lt;/button&gt;\n		&lt;/li&gt;\n	&lt;/ol&gt;\n&lt;/form&gt;</code></pre>\n\n<h2>Add a Little Style</h2>\n<p>In the design that I was working on, the link to show the password actually sat on top of the password input field, so we just need to add a little bit of CSS to make that happen:</p>\n\n<pre><code>.forms li {\n	position: relative;\n}\n.show-password-link {\n	display: block;\n	position: absolute;\n	z-index: 11;\n}\n.password-showing {\n	position: absolute;\n	z-index: 10;\n}</code></pre>\n\n<p>By default, the link to show the password has the class of <em>show-password-link</em>, but that can be changed in the plugin options. Also, the <em>password-showing</em> class is added to the text field that is used to show the password, but again, that can be changed via the plugin options.</p>\n\n<h2>And Now, JavaScript Takes Over</h2>\n<p>To get started, you will need to include <a href=\"http://jquery.com/\">jQuery</a> and <a href=\"http://github.com/davist11/jQuery-Show-Password\">my plugin</a>:\n\n</p><pre><code>&lt;script type=\"text/javascript\" src=\"scripts/jquery.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"scripts/jquery.showPassword.min.js\"&gt;&lt;/script&gt;</code></pre>\n\n<p>Then, you can instantiate it like this:</p>\n\n<pre><code>$(document).ready(function() {\n	$(\':password\').showPassword();\n});</code></pre>\n\n<h3>Options</h3>\n\n<ul><li>\n    <h4>linkClass: \'show-password-link\'</h4>\n    Class for the toggle link\n  </li>\n  <li>\n    <h4>linkText: \'Show\'</h4>\n    Text for the toggle link\n  </li>\n  <li>\n    <h4>showPasswordLinkText: \'Hide\'</h4>\n    Text for the toggle link when password is not masked\n  </li>\n  <li>\n    <h4>showPasswordInputClass: \'password-showing\'</h4>\n    Class for the text input that will show the password\n  </li>\n  <li>\n    <h4>linkRightOffset: 0</h4>\n    Offset for the link from the right of parent\n  </li>\n  <li>\n    <h4>linkTopOffset: 0</h4>\n    Offset for the link from the top of parent\n  </li>\n</ul><p>So there you have it. <a href=\"//trevor-davis.com/play/jquery-show-password/\">Check out the demo</a> and <a href=\"http://github.com/davist11/jQuery-Show-Password\">download the plugin from GitHub</a>.</p>',NULL,1957,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','2cde89c8-f8fe-49e5-95bd-e281a7c4973e',1,NULL,NULL),(76,81,'jQuery Simple Validation Plugin',NULL,'<p>I find that I end up consistently adding form validation to sites, and for some reason, I never made a plugin out of it. I feel like every jQuery validation plugin that I look at is way too bloated for what I really need, so I finally whipped up a simple validation plugin that comes in at about 1.5kb.</p>\n<p>I tried to keep it really simple with this plugin: just check to see if a field that has been marked as required is not empty and check to see if an email address is valid.</p>\n<p>If you want to skip ahead, <a href=\"//trevor-davis.com/play/jQuery-Simple-Validate/\">Check out the demo</a> and <a href=\"http://github.com/davist11/jQuery-Simple-Validate\">download the plugin from GitHub</a>.</p>\n\n<h2>Start with the Markup</h2>\n<p>To get started, I would always start with a simple form marked up in an ordered list:</p>\n\n<pre><code>&lt;form action=\"thanks.htm\" method=\"post\"&gt;\n	&lt;ol class=\"forms\"&gt;\n		&lt;li&gt;\n			&lt;label for=\"name\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Name&lt;/label&gt;\n			&lt;input type=\"text\" name=\"name\" id=\"name\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"email\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Email&lt;/label&gt;\n			&lt;input type=\"text\" name=\"email\" id=\"email\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"website\"&gt;Website&lt;/label&gt;\n			&lt;input type=\"text\" name=\"website\" id=\"website\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"comment\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Comment&lt;/label&gt;\n			&lt;textarea name=\"comment\" id=\"comment\"&gt;&lt;/textarea&gt;\n		&lt;/li&gt;\n		&lt;li class=\"buttons\"&gt;&lt;button type=\"submit\"&gt;Submit&lt;/button&gt;&lt;/li&gt;\n	&lt;/ol&gt;\n&lt;/form&gt;</code></pre>\n\n<p>Then, I need some way to denote which fields should be validated. The HTML5 required attribute, just isn’t supported well enough to use, so all that is needed is to add the class of <strong>required</strong> to each field that needs to be validated.</p>\n\n<pre><code>&lt;form action=\"thanks.htm\" method=\"post\"&gt;\n	&lt;ol class=\"forms\"&gt;\n		&lt;li&gt;\n			&lt;label for=\"name\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Name&lt;/label&gt;\n			&lt;input type=\"text\" name=\"name\" id=\"name\" <strong>class=\"required\"</strong> /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"email\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Email&lt;/label&gt;\n			&lt;input type=\"text\" name=\"email\" id=\"email\" <strong>class=\"required\"</strong> /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"website\"&gt;Website&lt;/label&gt;\n			&lt;input type=\"text\" name=\"website\" id=\"website\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"comment\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Comment&lt;/label&gt;\n			&lt;textarea name=\"comment\" id=\"comment\" <strong>class=\"required\"</strong>&gt;&lt;/textarea&gt;\n		&lt;/li&gt;\n		&lt;li class=\"buttons\"&gt;&lt;button type=\"submit\"&gt;Submit&lt;/button&gt;&lt;/li&gt;\n	&lt;/ol&gt;\n&lt;/form&gt;</code></pre>\n\n<p>Since I have an email field, I also need to add the class of <strong>email</strong> to the email field:</p>\n\n<pre><code>&lt;form action=\"thanks.htm\" method=\"post\"&gt;\n	&lt;ol class=\"forms\"&gt;\n		&lt;li&gt;\n			&lt;label for=\"name\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Name&lt;/label&gt;\n			&lt;input type=\"text\" name=\"name\" id=\"name\" class=\"required\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"email\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Email&lt;/label&gt;\n			&lt;input type=\"text\" name=\"email\" id=\"email\" class=\"required <strong>email</strong>\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"website\"&gt;Website&lt;/label&gt;\n			&lt;input type=\"text\" name=\"website\" id=\"website\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"comment\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Comment&lt;/label&gt;\n			&lt;textarea name=\"comment\" id=\"comment\" class=\"required\"&gt;&lt;/textarea&gt;\n		&lt;/li&gt;\n		&lt;li class=\"buttons\"&gt;&lt;button type=\"submit\"&gt;Submit&lt;/button&gt;&lt;/li&gt;\n	&lt;/ol&gt;\n&lt;/form&gt;</code></pre>\n\n<p>I also want to tell my plugin which forms to validate, so I’ll also add a class to the form itself:</p>\n\n<pre><code>&lt;form action=\"thanks.htm\" method=\"post\" <strong>class=\"required-form\"</strong>&gt;\n	&lt;ol class=\"forms\"&gt;\n		&lt;li&gt;\n			&lt;label for=\"name\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Name&lt;/label&gt;\n			&lt;input type=\"text\" name=\"name\" id=\"name\" class=\"required\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"email\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Email&lt;/label&gt;\n			&lt;input type=\"text\" name=\"email\" id=\"email\" class=\"required email\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"website\"&gt;Website&lt;/label&gt;\n			&lt;input type=\"text\" name=\"website\" id=\"website\" /&gt;\n		&lt;/li&gt;\n		&lt;li&gt;\n			&lt;label for=\"comment\"&gt;&lt;em class=\"required\"&gt;*&lt;/em&gt; Comment&lt;/label&gt;\n			&lt;textarea name=\"comment\" id=\"comment\" class=\"required\"&gt;&lt;/textarea&gt;\n		&lt;/li&gt;\n		&lt;li class=\"buttons\"&gt;&lt;button type=\"submit\"&gt;Submit&lt;/button&gt;&lt;/li&gt;\n	&lt;/ol&gt;\n&lt;/form&gt;</code></pre>\n\n<h2>It’s JavaScript Time</h2>\n<p>Get started by including <a href=\"http://jquery.com/\">jQuery</a> and <a href=\"http://github.com/davist11/jQuery-Simple-Validate\">my Simple Validate plugin</a>. Then, include them on the page:</p>\n\n<pre><code>&lt;script type=\"text/javascript\" src=\"scripts/jquery.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"scripts/jquery.simpleValidate.min.js\"&gt;&lt;/script&gt;</code></pre>\n\n<p>Now, I just need to call my plugin on any form that has required fields:</p>\n<pre><code>$(document).ready(function() {\n	$(\'form.required-form\').simpleValidate();\n});</code></pre>\n\n<p>Just like that, the form validation will work, but I want to customize a few of the options. First, I want to change the error element to use an &lt;em&gt; tag instead of a &lt;strong&gt; tag:</p>\n\n<pre><code>$(document).ready(function() {\n	$(\'form.required-form\').simpleValidate(<strong>{\n		errorElement: \'em\'\n	}</strong>);\n});</code></pre>\n\n<p>Then, maybe I decide that I want to submit the form via AJAX. There is no need to add that kind of functionality into the plugin, AJAX is so easy with jQuery. So I just need to tell the plugin that I’m going to submit the form with AJAX, and then pass in my callback function which will fire once the form is submitted with no errors:</p>\n\n<pre><code>$(document).ready(function() {\n	$(\'form.required-form\').simpleValidate({\n		errorElement: \'em\',\n		<strong>ajaxRequest: true,\n		completeCallback: function($el) {\n			var formData = $el.serialize();\n			//Do AJAX request with formData variable\n		}</strong>\n	});\n});</code></pre>\n\n<h3>Options</h3>\n<p>Here are all of the available options for the plugin:</p>\n<ul><li><h4>errorClass: \'error\'</h4> Class for the error message text</li>\n	<li><h4>errorText: \'{label} is a required field.\'</h4> Structure for the error message text, {label} will be replaced with the associated label text</li>\n	<li><h4>emailErrorText: \'Please enter a valid {label}\'</h4> Structure for the email error message text, {label} will be replaced with the associated label text</li>\n	<li><h4>errorElement: \'strong\'</h4> Element to use for the error message text</li>\n	<li><h4>removeLabelChar: \'*\'</h4> If there is an extra character in the label to denote a required field, strip it out</li>\n	<li><h4>inputErrorClass: \'\'</h4> Class to add to an input when it is marked as having an error</li>\n	<li><h4>completeCallback: \'\'</h4> Function to call once the form is error-free</li>\n	<li><h4>ajaxRequest: false</h4> If you don\'t want to use the default form action and want to submit it via AJAX \n</li></ul><p><a href=\"//trevor-davis.com/play/jQuery-Simple-Validate/\">Check out the demo</a> and <a href=\"http://github.com/davist11/jQuery-Simple-Validate\">download the plugin from GitHub</a>. Let me know if you run into any bugs or have any feature requests.</p>',NULL,1954,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','e4a77a6e-282c-4cb8-8e07-532c28d40681',1,NULL,NULL),(77,82,'My Long Journey from WordPress to ExpressionEngine',NULL,'<p>About the time I started my new job at <a href=\"http://www.viget.com/\">Viget Labs</a> in December 2009, I decided that it was time to start working on a redesigned website. This redesign was a chance for me to play around with some of the new CSS3 properties, @font-face, &amp; jQuery.</p>\n\n<p>My first three designs have also been very white, so I wanted to try something a little different.</p>\n<img src=\"//trevor-davis.com/uploads/images/content/v1.jpg\" alt=\"Version 1\" class=\"centered\" width=\"630\" height=\"320\" /><img src=\"//trevor-davis.com/uploads/images/content/v2.jpg\" alt=\"Version 2\" class=\"centered\" width=\"630\" height=\"320\" /><img src=\"//trevor-davis.com/uploads/images/content/v3.jpg\" alt=\"Version 3\" class=\"centered\" width=\"630\" height=\"320\" /><p>I wanted to go with a dark background, and I wanted to be able to change the feel of the site very easily. So by changing the background color in the stylesheet, I can completely change how the site feels. Check it out with <a href=\"#ad1010\" class=\"color-change\">red</a>, <a href=\"#10ad53\" class=\"color-change\">green</a>, or <a href=\"#7d1baa\" class=\"color-change\">purple</a>. All that is done by just simply changing the background color on the body.</p>\n\n<p>Another big step in this redesign is finally transitioning to ExpressionEngine. My first experience with content management systems began with WordPress, and I had a good run with it, but I felt like it was time to transition to a “real” CMS. Let me just say that going transferring posts form WordPress to ExpressionEngine was a huge pain in the butt.</p>\n\n<p>ExpressionEngine can import a Movable Type format, but WordPress cannot export into that format. There are various scripts on the web that can convert WordPress to Movable Type, but all of them are outdated. So I decided to approach it by installing Movable Type on my server, importing the WordPress file, and then exporting the Movable Type file. Unfortunately, that process doesn’t work that smoothly, and Movable Type kept failing to import the WordPress file. After much searching, I finally found an <a href=\"http://www.flashgamer.com/2010/04/converting_from_wordpress_to_e.html\">AIR application</a> that can convert from WordPress to Movable Type format.</p>\n\n<p>So after some cleanup of the posts, I was finally ready to launch. I haven’t looked at the site in IE yet, and I’m sure there will be some broken URLs, but I will get to that eventually.</p>\n\n<p>I’m also hoping to get back to posting articles more regularly here, so stay tuned.</p>\n\n<h2>Some Other Notes</h2>\n<ul><li>Headings are using Aller &amp; being displayed with @font-face.</li>\n<li>Thanks go out to my friend <a href=\"http://twitter.com/neagle\">Nate Eagle</a> for helping to write my about page.</li>\n<li>Thanks also go out to <a href=\"http://twitter.com/erikreagan\">Erik Reagan</a> for helping me with some last minute htaccess rules</li>\n</ul>',NULL,1952,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','8b222af7-1576-4519-89a6-400de473ca7c',1,NULL,NULL),(78,83,'Transition',NULL,'<p>It’s been a long time since I’ve posted anything here, but I’m hoping to change that soon. I’ve been busy with <a href=\"http://www.viget.com/\">a new job</a>, <a href=\"http://www.cdiabu.com/\">teaching</a>, and I even found time to get married too.</p>\n<p>I’ve been working on building a newly designed site with ExpressionEngine, and I am finally getting to the last stages. The hardest part now is porting all of my posts and comments over. So while I am transitioning, I am going to be turning off comments for this site so that I can pull everything over and not worry about missing anything. If you need to, you can <a href=\"/contact/\">contact me through my site</a>.</p>',NULL,1951,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','a83fea15-07fe-46a6-9793-06047c85b4a9',1,NULL,NULL),(79,84,'YouTube Chromeless Video Player – jQuery Plugin',NULL,'<p>In my latest blog post on the Viget Inspire blog, I discussed a <a href=\"http://www.viget.com/inspire/youtube-chromeless-video-jquery-plugin/\">YouTube Chromeless Video jQuery Plugin</a> that I wrote while building the <a href=\"http://www.puma.com/running\">PUMA Running site</a>.</p>','http://www.viget.com/inspire/youtube-chromeless-video-jquery-plugin/',1950,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','1ccc7d08-762f-4720-b0ab-8766fa52e3cb',1,NULL,NULL),(80,85,'jQuery Presentation Plugin: Say NO to Keynote!',NULL,'<p>I’m done with Keynote and Powerpoint. I created a <a href=\"http://www.viget.com/inspire/jquery-presentation-plugin/\">jQuery Presentation Plugin</a> to use when giving presentations.</p>','http://www.viget.com/inspire/jquery-presentation-plugin/',1949,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','8100a05a-e521-43e0-af2a-a77bdb9edbbc',1,NULL,NULL),(81,86,'A Better jQuery In-Field Label Plugin',NULL,'<p>I’ve just written another article for my company blog about using <a href=\"http://www.viget.com/inspire/a-better-jquery-in-field-label-plugin/\">jQuery in-field labels</a>.</p>','http://www.viget.com/inspire/a-better-jquery-in-field-label-plugin/',1948,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','7ae26e2e-5fca-4478-b42a-790de662c7bd',1,NULL,NULL),(82,87,'On Flash',NULL,'<p>Ever since the iPad was announced and we were informed that flash wasn’t supported, everyone and their mother has been writing articles about flash. I actually thoroughly enjoyed <a href=\"http://jeffcroft.com/blog/2010/feb/01/flash/\">Jeff Croft’s take</a>.</p>','http://jeffcroft.com/blog/2010/feb/01/flash/',1947,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','24bf996b-e8da-42b2-8148-326348233adb',1,NULL,NULL),(83,88,'The importance of teaching your clients and being the boss',NULL,'<p><strong>Hallelujah</strong>: “We may check the site in a dozen browser and operating configurations but the visitors don’t, and never will, we can not forget that…”</p>','http://sam.brown.tc/entry/416/the-importance-of-teaching-your-clients-and-being-the-boss',1946,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','ab6fd620-68ad-48e8-ba4e-edf377a0fc89',1,NULL,NULL),(84,89,'Do what works best for you, not them',NULL,'<p>Cameron Moll <a href=\"http://cameronmoll.com/archives/2010/01/do_what_works_best_for_you/\">reminds us</a> that if something works for you, but isn’t recommended by others, who cares. Do what works best for you.</p>','http://cameronmoll.com/archives/2010/01/do_what_works_best_for_you/',1945,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','66ef9afe-ee05-4a9e-b364-257a33d250c2',1,NULL,NULL),(86,91,'Don’t fear the fold — people do scroll',NULL,'<p>I’m definitely in the camp of people who don’t believe in the fold in web design, and <a href=\"http://www.456bereastreet.com/archive/200912/dont_fear_the_fold_people_do_scroll/\">this user testing</a> does provide evidence to support that was of thinking. Designs should still be structured so that more important information is higher on the page though.</p>','http://www.456bereastreet.com/archive/200912/dont_fear_the_fold_people_do_scroll/',1942,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','934c9c55-6b1d-4c96-8197-ad65ce84cd0c',1,NULL,NULL),(87,92,'Simplest jQuery Slideshow',NULL,'<p>I totally agree with <a href=\"http://snook.ca/archives/javascript/simplest-jquery-slideshow\">this thinking</a>. Everyone loves jQuery plugins, but they can sometimes be extremely bloated for things that can be coded relatively simply.</p>','http://snook.ca/archives/javascript/simplest-jquery-slideshow',1941,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','5ce49a18-4096-4e34-b6ed-ae30c9b3181e',1,NULL,NULL),(88,93,'Smashing Magazine Killed The Community (Or Maybe It Was Me)',NULL,'<p>It is getting pretty tiresome <a href=\"http://www.drawar.com/articles/smashing-magazine-killed-the-community-or-maybe-it-was-me/\">reading blogs that just have lists</a> as blog posts. Every once in a while they may be ok, but try putting some thought into your posts.</p>','http://www.drawar.com/articles/smashing-magazine-killed-the-community-or-maybe-it-was-me/',1940,NULL,'2014-01-19 12:56:44','2020-03-18 20:03:19','8a90788a-dd8f-4c89-8525-949bdecfe228',1,NULL,NULL),(89,94,'Freeform + FieldFrame = ExpressionEngine Form Builder',NULL,'<p>A form builder is a regular request for some clients when they are looking for a content management system. There aren’t that many CMS that have this kind of functionality built-in, and even if they do, the implementation is usually less than desirable.</p>\n<p>If you follow along with what I’ve been up to, you can probably tell that I have been on a big <a href=\"http://expressionengine.com/\">ExpressionEngine</a> kick. I’ve been using it on a ton of projects recently, and I love it for its flexibility. Although it does lack a true form builder, I figured out a simple way to build one.</p>\n\n<p>If you are impatient and just want to get to the <a href=\"http://ee.trevor-davis.com/forms/contact-form/\">demo</a>, go ahead. Although the form will look like nothing special, as I have just added some simple styling. The real magic of the form builder happens in the Control Panel.</p>\n\n<h2>We Need Add-ons</h2>\n<p>This form builder would not be possible without the use of some awesome add-ons:</p>\n\n<ul><li><a href=\"http://devot-ee.com/add-ons/extensions/fieldframe/\"><strong>FieldFrame</strong></a><p>This one is a no-brainer. I can’t even imagine building a site without it.</p></li>\n <li><a href=\"http://devot-ee.com/add-ons/modules/freeform/\"><strong>Freeform</strong></a><p>If you need a form in EE, this is the way to do it.</p></li>\n <li><a href=\"http://devot-ee.com/add-ons/extensions/freeform-data-select/\"><strong>Freeform Data Select</strong></a><p>A new fieldtype which pulls in templates and fields from the Freeform module.</p></li>\n</ul><h2>Creating a Field Group</h2>\n<p>I built a custom Field Group called Forms, which consisted of four fields:</p>\n\n<ul><li>Template</li>\n <li>Notification Email Addresses</li>\n <li>Return Page</li>\n <li>Fields</li>\n</ul><p>The first three are pretty simple, so I will just give a quick run through on the specifications for those fields and give a more detail review of the <strong>Fields</strong> field:</p>\n\n<h3>Template</h3>\n<p>This is where you select the Freeform template that will be used for the email. This field is not completely necessary, as just using the default template should be good enough, but I figured since it was an option, to throw it in.</p>\n<ul><li><strong>Field Name</strong>: form_template</li>\n <li><strong>Field Type</strong>: Freeform Data Select</li>\n <li><strong>Populate drop-down with</strong>: Freeform Templates</li>\n</ul><h3>Notification Email Addresses</h3>\n<p>This is where you will enter the email address(es) that you want to email when the form is submitted. Since Freeform wants multiple email addresses separated by the | character, I added some help text describing that as well.</p>\n<ul><li><strong>Field Name</strong>: form_notify</li>\n <li><strong>Field Type</strong>: Text Input</li>\n <li><strong>Default Text Formatting for This Field</strong>: None</li>\n <li><strong>Hide Formatting Menu</strong></li>\n</ul><h3>Return Page</h3>\n<p>This is where you enter the URL to the thank you page. Once a user successfully submits the form, they will be redirected here.</p>\n<ul><li><strong>Field Name</strong>: form_return</li>\n <li><strong>Field Type</strong>: Text Input</li>\n <li><strong>Default Text Formatting for This Field</strong>: None</li>\n <li><strong>Hide Formatting Menu</strong></li>\n</ul><h3>Fields</h3>\n<p>This is where the magic happens. This field is a FF Matrix field type that consists of five other fields. Each row of the FF Matrix represents one field (or field group) in the form. I’ll give a brief description of each field of the FF Matrix and show you a screenshot so you can get a better picture:</p>\n\n<ul><li><strong>Field Name</strong>: form_field</li>\n <li><strong>Field Type</strong>: FF Matrix</li>\n</ul><h4>Label</h4>\n<p>This is where you will enter the label for the form field:</p>\n<ul><li><strong>Col Name</strong>: label</li>\n <li><strong>Cell Type</strong>: Text Input</li>\n</ul><h4>Field</h4>\n<p>This field pulls in all of the fields that have been entered into the Freeform module. So you are presented with a dropdown of all of the fields, and you just select the appropriate one:</p>\n\n<ul><li><strong>Col Name</strong>: field</li>\n <li><strong>Cell Type</strong>: Freeform Data Select</li>\n <li><strong>Populate drop-down with</strong>: Freeform fields</li>\n</ul><h4>Field Type</h4>\n<p>This is where you select the type of form field you want to use. I put in a few different options, but this could be expanded upon too:</p>\n\n<ul><li><strong>Col Name</strong>: type</li>\n <li><strong>Cell Type</strong>: FF Select</li>\n <li><strong>Select Options</strong>: Text Input<br />\n  Textarea<br />\n  Select<br />\n  Multi-select<br />\n  Checkbox<br />\n  Checkbox Group<br />\n  Radio Group\n </li>\n</ul><h4>Is this field required?</h4>\n<p>With most forms, there are some fields that are required and some that are not. If you want the field to be required, you just check the checkbox and the Freeform module will make sure it is filled in:</p>\n\n<ul><li><strong>Col Name</strong>: required</li>\n <li><strong>Cell Type</strong>: FF Checkbox</li>\n <li><strong>Checkbox Label</strong>: Is this field required?</li>\n</ul><h4>Options</h4>\n<p>Finally, this field is used when you select a field type that has multiple options. For example, if you select a “Select” field type, you need to provide the options to populate it. So you enter the options separated by the | character:</p>\n\n<ul><li><strong>Col Name</strong>: options</li>\n <li><strong>Cell Type</strong>: Text Input</li>\n</ul><p><a href=\"//trevor-davis.com/images/content/2009/11/ff-matrix.png\" title=\"FieldFrame Matrix Configuration\"><img src=\"//trevor-davis.com/images/content/2009/11/ff-matrix_thumb.png\" alt=\"FieldFrame Matrix Configuration\" width=\"570\" height=\"203\" class=\"pullLeft frame\" /></a></p>\n\n<p>So that is all you need for the Field Group, now go ahead and create a Forms Channel (or Weblog) and make sure to assign the Forms Field Group to it.</p>\n\n<p>Now, when you go to publish a Forms entry, you should see something like this:</p>\n\n<p><a href=\"//trevor-davis.com/images/content/2009/11/form-entry.png\" title=\"New Forms Entry\"><img src=\"//trevor-davis.com/images/content/2009/11/form-entry_thumb.png\" alt=\"New Forms Entry\" width=\"570\" height=\"258\" class=\"pullLeft frame\" /></a></p>\n\n<p>I made a <a href=\"http://ee.trevor-davis.com/forms/contact-form/\">demo form</a> showing off the various types of form fields. Here is what that entry looks like in the Control Panel:</p>\n\n<p><a href=\"//trevor-davis.com/images/content/2009/11/demo-entry.png\" title=\"Demo Form Entry in Control Panel\"><img src=\"//trevor-davis.com/images/content/2009/11/demo-entry_thumb.png\" alt=\"Demo Form Entry in Control Panel\" width=\"570\" height=\"400\" class=\"pullLeft frame\" /></a></p>\n\n<h2>Template</h2>\n<p>Now that we have our Channel and Field Group all setup, we need to deal with the template. You could really setup your template/template group in various ways, so I’m not going to get into those details. One detail that you need to know is that <strong>I enabled PHP for my template</strong>.</p>\n\n<p>First, we just need to start with a simple <strong>exp:weblog:entries</strong> tag:</p>\n\n<div class=\"codeblock\"><code>\n{exp:weblog:entries weblog=\"forms\" limit=\"1\" disable=\"categories|category_fields|member_data|pagination|trackbacks\"}<br />…<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p>Next, we want to start the Freeform form tag:</p>\n\n<div class=\"codeblock\"><code>\n{exp:weblog:entries weblog=\"forms\" limit=\"1\" disable=\"categories|category_fields|member_data|pagination|trackbacks\"}<br /> {exp:freeform:form form_name=\"{url_title}\" form_id=\"{url_title}\" template=\"{form_template}\" notify=\"{form_notify}\" return=\"{form_return}\"}<br /> …<br /> {/exp:freeform:form}<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p>Since we are inside of the exp:weblog:entries tag, we have access to everything that is being returned from that entry. If you have any questions about the various parameters, <a href=\"http://www.solspace.com/docs/detail/freeform_form/#parameters\">refer to the Freeform Documentation</a>.</p>\n\n<p>So far, the values that we are passing into the parameters are pretty straightforward, just custom fields from our entry. But, passing in the <a href=\"http://www.solspace.com/docs/detail/freeform_form/#required\">required</a> parameter is a little more challenging, since we have to loop through all of the rows in our FF Matrix.</p>\n\n<p>If we <a href=\"http://brandon-kelly.com/fieldframe/docs/ff-matrix\">refer to the FF Matrix documentation</a>, we can see how to loop through the rows in the matrix. I only want to return rows that have the required checkbox checked, and I want to separate the names of the fields with the | character. Then, I use the backspace parameter to remove the last one:</p>\n\n<div class=\"codeblock\"><code>\n{exp:freeform:form form_name=\"{url_title}\" form_id=\"{url_title}\" template=\"{form_template}\" notify=\"{form_notify}\" return=\"{form_return}\" &lt;strong&gt;required=\"{form_field search:required=\'y\' backspace=\'1\'}{field}|{/form_field}\"&lt;/strong&gt;}<br />…<br />{/exp:freeform:form} \n\n</code></div>\n\n<p>Next, we want to add a title, ordered list that will contain the form fields, and the submit button:</p>\n\n<div class=\"codeblock\"><code>\n{exp:freeform:form form_name=\"{url_title}\" form_id=\"{url_title}\" template=\"{form_template}\" notify=\"{form_notify}\" return=\"{form_return}\" required=\"{form_field search:required=\'y\' backspace=\'1\'}{field}|{/form_field}\"}<br /> &lt;h1&gt;{title}&lt;/h1&gt;<br /> &lt;ol class=\"forms\"&gt;<br />  …<br />  &lt;li class=\"buttons\"&gt;&lt;input type=\"submit\" name=\"submit\" value=\"submit\" /&gt;&lt;/li&gt;<br /> &lt;/ol&gt;<br />{/exp:freeform:form} \n\n</code></div>\n\n<p>Now here is where the code gets interesting. Just like we did with the required parameter, we want to loop through each row in the FF Matrix and display a list item for each one:</p>\n\n<div class=\"codeblock\"><code>\n{form_field}<br /> &lt;li&gt;<br /> …<br /> &lt;/li&gt;<br />{/form_field} \n\n</code></div>\n\n<p>First, let’s display the label, if there is one, and denote if the field is required or not:</p>\n\n<div class=\"codeblock\"><code>\n{if \"{label}\"}<br /> &lt;label for=\"{field}\"&gt;{if \"{required}\" == \"y\"}&lt;em class=\"required\"&gt;*&lt;/em&gt;{/if}{label}&lt;/label&gt;<br />{/if} \n\n</code></div>\n\n<p>The rest of the code is a big conditional statement which depends upon the Field Types that you specified in the FF Matrix. Let’s first take a look at the <strong>Text Input</strong>, <strong>Textarea</strong>, and <strong>Checkbox</strong> types since they are pretty straightforward:</p>\n\n<div class=\"codeblock\"><code>\n{if \"{type}\" == \"Text Input\"}<br /> &lt;input type=\"text\" name=\"{field}\" id=\"{field}\" /&gt;<br />{if:elseif \"{type}\" == \"Textarea\"}<br /> &lt;textarea name=\"{field}\" id=\"{field}\"&gt;&lt;/textarea&gt;<br />{if:elseif \"{type}\" == \"Checkbox\"}<br /> &lt;input type=\"checkbox\" class=\"checkbox\" name=\"{field}\" id=\"{field}\" /&gt;<br />…<br />{/if} \n\n</code></div>\n\n<p>So we are just checking the type column in the FF Matrix, and then displaying the rest of the data from the row in the appropriate form field.</p>\n\n<p>Next, let’s walk through what happens if you select the <strong>Select</strong> or <strong>Multi-select</strong> types:</p>\n\n<div class=\"codeblock\"><code>\n{if:elseif \"{type}\" == \"Select\" || \"{type}\" == \"Multi-select\" &amp;&amp; \"{options}\"}<br /> &lt;select name=\"{field}{if \"{type}\" == \"Multi-select\"}[]{/if}\" id=\"{field}\"{if \"{type}\" == \"Multi-select\"} multiple=\"multiple\" size=\"4\"{/if}&gt;<br />  &lt;?php $items = explode(\"|\", \'{options}\'); ?&gt;<br />  &lt;?php foreach ($items as $item) { ?&gt;<br />   &lt;option value=\"&lt;?php echo $item; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/option&gt;<br />  &lt;?php } ?&gt;<br /> &lt;/select&gt;<br />…<br />{/if} \n\n</code></div>\n\n<p>So first, we are displaying the <strong>select element</strong>, and if it is a <strong>Multi-select</strong>, we are adding <strong>[]</strong> to the name attribute, and adding the <strong>multiple</strong> and <strong>size</strong> attributes.</p>\n\n<p>Next, we want to take the string of <strong>options</strong> that are separated by the | character, and create an array out of the string using the <a href=\"http://php.net/manual/en/function.explode.php\">explode function</a>.</p>\n\n<p>Then, we loop through the array, and display the options for each one.</p>\n\n<p>Finally, we do virtually the same thing for the <strong>Radio Group</strong> and <strong>Checkbox Group</strong> field types:</p>\n\n<div class=\"codeblock\"><code>\n{if:elseif \"{type}\" == \"Radio Group\" &amp;&amp; \"{options}\"}<br /> &lt;ul class=\"group\"&gt;<br />  &lt;?php $items = explode(\"|\", \'{options}\'); $count = 1; ?&gt;<br />  &lt;?php foreach ($items as $item) { ?&gt;<br />   &lt;li&gt;&lt;input type=\"radio\" class=\"radio\" name=\"{field}\" id=\"{field}&lt;?php echo $count; ?&gt;\" value=\"&lt;?php echo $item; ?&gt;\" /&gt;<br />   &lt;label for=\"{field}&lt;?php echo $count; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/label&gt;&lt;/li&gt;<br />   &lt;?php $count++; ?&gt;<br />  &lt;?php } ?&gt;<br /> &lt;/ul&gt;<br />{if:elseif \"{type}\" == \"Checkbox Group\" &amp;&amp; \"{options}\"}<br /> &lt;ul class=\"group\"&gt;<br />  &lt;?php $items = explode(\"|\", \'{options}\'); $count = 1; ?&gt;<br />  &lt;?php foreach ($items as $item) { ?&gt;<br />   &lt;li&gt;&lt;input type=\"checkbox\" class=\"checkbox\" name=\"{field}[]\" id=\"{field}&lt;?php echo $count; ?&gt;\" value=\"&lt;?php echo $item; ?&gt;\" /&gt;<br />   &lt;label for=\"{field}&lt;?php echo $count; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/label&gt;&lt;/li&gt;<br />   &lt;?php $count++; ?&gt;<br />  &lt;?php } ?&gt;<br /> &lt;/ul&gt;<br />{/if} \n\n</code></div>\n\n<p>So that’s it really. Here is the full template:</p>\n\n<div class=\"codeblock\"><code>\n{exp:weblog:entries weblog=\"forms\" limit=\"1\" disable=\"categories|category_fields|member_data|pagination|trackbacks\"}<br /><br /> {exp:freeform:form form_name=\"{url_title}\" form_id=\"{url_title}\" template=\"{form_template}\" notify=\"{form_notify}\" return=\"{form_return}\" required=\"{form_field search:required=\'y\' backspace=\'1\'}{field}|{/form_field}\"}<br /><br />  &lt;h1&gt;{title}&lt;/h1&gt;<br />  &lt;ol class=\"forms\"&gt;<br />   {form_field}<br />    &lt;li&gt;<br />     {if \"{label}\"}<br />      &lt;label for=\"{field}\"&gt;{if \"{required}\" == \"y\"}&lt;em class=\"required\"&gt;*&lt;/em&gt;{/if}{label}&lt;/label&gt;<br />     {/if}<br />     {if \"{type}\" == \"Text Input\"}<br />      &lt;input type=\"text\" name=\"{field}\" id=\"{field}\" /&gt;<br />     {if:elseif \"{type}\" == \"Textarea\"}<br />      &lt;textarea name=\"{field}\" id=\"{field}\"&gt;&lt;/textarea&gt;<br />     {if:elseif \"{type}\" == \"Checkbox\"}<br />      &lt;input type=\"checkbox\" class=\"checkbox\" name=\"{field}\" id=\"{field}\" /&gt;<br />     {if:elseif \"{type}\" == \"Select\" || \"{type}\" == \"Multi-select\" &amp;&amp; \"{options}\"}<br />      &lt;select name=\"{field}{if \"{type}\" == \"Multi-select\"}[]{/if}\" id=\"{field}\"{if \"{type}\" == \"Multi-select\"} multiple=\"multiple\" size=\"4\"{/if}&gt;<br />       &lt;?php $items = explode(\"|\", \'{options}\'); ?&gt;<br />       &lt;?php foreach ($items as $item) { ?&gt;<br />        &lt;option value=\"&lt;?php echo $item; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/option&gt;<br />       &lt;?php } ?&gt;<br />      &lt;/select&gt;<br />     {if:elseif \"{type}\" == \"Radio Group\" &amp;&amp; \"{options}\"}<br />      &lt;ul class=\"group\"&gt;<br />       &lt;?php $items = explode(\"|\", \'{options}\'); $count = 1; ?&gt;<br />       &lt;?php foreach ($items as $item) { ?&gt;<br />        &lt;li&gt;&lt;input type=\"radio\" class=\"radio\" name=\"{field}\" id=\"{field}&lt;?php echo $count; ?&gt;\" value=\"&lt;?php echo $item; ?&gt;\" /&gt;<br />        &lt;label for=\"{field}&lt;?php echo $count; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/label&gt;&lt;/li&gt;<br />        &lt;?php $count++; ?&gt;<br />       &lt;?php } ?&gt;<br />      &lt;/ul&gt;<br />     {if:elseif \"{type}\" == \"Checkbox Group\" &amp;&amp; \"{options}\"}<br />      &lt;ul class=\"group\"&gt;<br />       &lt;?php $items = explode(\"|\", \'{options}\'); $count = 1; ?&gt;<br />       &lt;?php foreach ($items as $item) { ?&gt;<br />        &lt;li&gt;&lt;input type=\"checkbox\" class=\"checkbox\" name=\"{field}[]\" id=\"{field}&lt;?php echo $count; ?&gt;\" value=\"&lt;?php echo $item; ?&gt;\" /&gt;<br />        &lt;label for=\"{field}&lt;?php echo $count; ?&gt;\"&gt;&lt;?php echo $item; ?&gt;&lt;/label&gt;&lt;/li&gt;<br />        &lt;?php $count++; ?&gt;<br />       &lt;?php } ?&gt;<br />      &lt;/ul&gt;<br />     {/if}<br />    &lt;/li&gt;<br />   {/form_field}<br />   &lt;li class=\"buttons\"&gt;&lt;input type=\"submit\" name=\"submit\" value=\"submit\" /&gt;&lt;/li&gt;<br />  &lt;/ol&gt;<br /> {/exp:freeform:form}  <br />{/exp:weblog:entries} \n\n</code></div>\n\n<h2>Conclusion</h2>\n<p>This is not meant to be an all-inclusive form builder, as you can see there are <a href=\"http://www.solspace.com/docs/detail/freeform_form/#parameters\">many other parameters for the Freeform module</a>. But, this was meant to show a creative use of ExpressionEngine and EE add-ons to add functionality that is not directly built into the CMS.</p>\n\n<p>So go forth and create.</p>',NULL,1939,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:19','6fab4d8e-0e86-4adc-8f59-bf3d44903778',1,NULL,NULL),(90,95,'Reversed Ordered List with jQuery',NULL,'<p>At work this past week, a client requested something that I wasn’t sure how to achieve: a reversed ordered list. So basically, they wanted to have a top 10 list, with the first item being numbered 10 and the last 1.</p>\n\n<p>If you want to <a href=\"//trevor-davis.com/play/reversed-ordered-list-with-jquery/\">skip ahead to the demo</a>, go ahead.</p>\n\n<p><a href=\"//trevor-davis.com/play/reversed-ordered-list-with-jquery/\" class=\"more-link\">View Demo</a></p>\n\n<p>Now sure, I could have just written the numbers in as text, but it’s a list, and it’s ordered! Here is an example of what the client wanted:</p>\n\n<p>10. Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br />\n9. Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br />\n8. Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br />\n…<br />\n1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>\n\n<p>After some digging around, I found out that you can add the <strong>value attribute</strong> to each list item to specify the number to display. So basically, I just needed to code my list like this:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ol&gt;<br /> &lt;li value=\"10\"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &lt;li value=\"9\"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &lt;li value=\"8\"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &amp;hellip;<br /> &lt;li value=\"1\"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br />&lt;/ol&gt; \n\n</code></div>\n\n<p>Pretty straightforward, but also pretty ugly. So what happens when the client decides they want to insert another bullet in the middle of the list? Yep, that’s right, they would have to adjust the numbering for the rest of the list.</p>\n\n<p>Pretty crappy, so let’s use the powerfulness of jQuery to make this a little better.</p>\n\n<h2>The Markup</h2>\n<p>So just like before, we just want to create an ordered list, but this time, we will leave off the value attribute. We are also going to add a class to the ordered list that we will use as a hook to add in the jQuery functionality:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ol class=\"reversed\"&gt;<br /> &lt;li&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &lt;li&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &lt;li&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br /> &amp;hellip;<br /> &lt;li&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/li&gt;<br />&lt;/ol&gt; \n\n</code></div>\n\n<h2>The jQuery</h2>\n<p>Mapping out the code a bit: we want to select each element with a class of reversed, and count the total number of children list items. Then, we want to loop through the children, and update the value attribute to be the value of the total number of children minus a counter variable that we started at zero and increment each time through the loop.</p>\n\n<p>That seems relatively straightforward, so I’ll just show the code that I wrote:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'.reversed\').each(function() {<br />  var $children = $(this).children(\'li\');<br />  var totalChildren = $children.length;<br />  var start = 0;<br />  $children.each(function() {<br />   $(this).val(totalChildren - start);<br />   start++;<br />  });<br /> });<br />}); \n\n</code></div>\n\n<p><a href=\"//trevor-davis.com/play/reversed-ordered-list-with-jquery/\" class=\"more-link\">View Demo</a></p>\n\n<p>It looks like with HTML 5, we get a <a href=\"http://blog.whatwg.org/reverse-ordered-lists\">reversed attribute</a> that accomplishes the same thing, but until it’s fully supported, this quick &amp; easy solution seems to work.</p>\n\n<h2>On a Personal Note</h2>\n<p>I have been severely neglecting my blog, but for good reason. I have been teaching some intro to web development courses at <a href=\"http://www.cdiabu.com/\">CDIABU</a> in Georgetown. Also, I will be starting a new job on December 1st. I will be joining the amazing team at <a href=\"http://www.viget.com/\">Viget Labs</a> as their new front-end developer.</p>',NULL,1938,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','95187db9-e41a-4104-b2a2-5cb9384170aa',1,NULL,NULL),(91,96,'Creativity is Not Design (Design Test 2)',NULL,'<p>Andy Rutledge has created a <a href=\"http://www.andyrutledge.com/creativity-is-not-design-test-2.php\">second design test</a> to show that creativity does not necessarily mean you are an effective designer. The <a href=\"http://www.andyrutledge.com/design-test.php\">first test</a> is excellent as well. I need to learn more about design principles…</p>','http://www.andyrutledge.com/creativity-is-not-design-test-2.php',1937,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','e8588b11-e7d3-4164-bbc9-08b2c53d9b68',1,NULL,NULL),(92,97,'ExpressionEngine: Embed an Embed within Itself?',NULL,'<p>At work this week, there was discussion on how to accomplish something in ExpressionEngine. We wanted to pull in entries that were in one category, but if there were no entries, then pull in from other categories and display that instead. We were kind of stumped as to how to do that.</p>\n\n<p>I’m not sure if we were missing some easy way to do that, but we couldn’t think of a nice way to accomplish it.</p>\n\n<h2>Let’s Backup</h2>\n<p>I guess it will be helpful to give you some more context. We had created a Channel (our term for Weblog) for <strong>events</strong>. You could categorize the events, and they would publish in different places.</p>\n<p>In this instance, the homepage, we wanted to pull an event from one category, but if there were none, then just display an event from another category.</p>\n\n<h2>The Initial Code</h2>\n\n<p>This code was separated out in an embed so that we could use it in various places on the site:</p>\n\n<div class=\"codeblock\"><code>\n{assign_variable:channel_name=\"{embed:channel}\"}<br />{assign_variable:category_id=\"{embed:category}\"}<br /><br />{exp:weblog:entries weblog=\"{channel_name}\" category=\"{category_id}\" show_future_entries=\"yes\" show_expired=\"no\" limit=\"1\" disable=â€œcategory_fields|custom_fields|member_data|pagination|trackbacksâ€}<br /><br /> &lt;h2&gt;{title}&lt;/h2&gt;<br /> {if events_feature_image}<br />  &lt;p class=\"rightSide\"&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\"&gt;&lt;img src=\"{events_feature_image}\" alt=\"\" /&gt;&lt;/a&gt;&lt;/p&gt;<br /> {/if}<br /> {if events_summary}<br />  {events_summary}<br /> {/if}<br /><br /> &lt;p&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\" class=\"more\"&gt;Read more &amp;raquo;&lt;/a&gt;&lt;/p&gt;<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p>The code doesn’t really need to be explained; it’s not the important part of this post. So on the homepage, we had code that looked like this to pull in the event:</p>\n\n<div class=\"codeblock\"><code>\n{embed=\"site/.events\" channel=\"events\" category=\"7\" template_path=\"news-events/events\"} \n\n</code></div>\n\n<p>Now, what we really wanted to be able to do was to modify the <strong>exp:weblog:entries</strong> code to pull from a different category if there were no results. Something like this:</p>\n\n<div class=\"codeblock\"><code>\n{exp:weblog:entries weblog=\"{channel_name}\" category=\"{category_id}\" show_future_entries=\"yes\" show_expired=\"no\" limit=\"1\" disable=â€œcategory_fields|custom_fields|member_data|pagination|trackbacksâ€}<br />&amp;hellip;<br /> {if no_results}<br />  Code  to pull from a different category<br /> {/if}<br />&amp;hellip;<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p>But the problem was, there really was no code that we could put in there that would pull from another category since you can’t nest <strong>exp:weblog:entries</strong> tags. So that’s when I remembered that you could stick an embed file in there that could have the <strong>exp:weblog:entries</strong> tag inside of it.</p>\n\n<p>Then we realized that the code we wanted to write would be exactly like the code in the embed file we were already working with.</p>\n\n<p>So we did a little investigation and found out that <a href=\"http://expressionengine.com/docs/templates/embedding_templates.html\">according to the documentation (see notes section)</a>, you cannot embed an embed within itself.</p>\n\n<p>That makes sense, because you could create an infinite loop. But what if we knew that it would not return an infinite loop?</p>\n\n<h2>Modified Code</h2>\n\n<p>So we determined that what we could do is not pass in the category on the embed statement, and that would pull back any events.</p>\n\n<div class=\"codeblock\"><code>\n{exp:weblog:entries weblog=\"{channel_name}\" category=\"{category_id}\" show_future_entries=\"yes\" show_expired=\"no\" limit=\"1\" disable=â€œcategory_fields|custom_fields|member_data|pagination|trackbacksâ€}<br />&amp;hellip;<br /> {if no_results}<br />  {embed=\"site/.events\" channel=\"events\" template_path=\"news-events/events\"}<br /> {/if}<br />&amp;hellip;<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p>See how there is no category parameter this time? Here is the full modified code:</p>\n\n<div class=\"codeblock\"><code>\n{assign_variable:channel_name=\"{embed:channel}\"}<br />{assign_variable:category_id=\"{embed:category}\"}<br /><br />{exp:weblog:entries weblog=\"{channel_name}\" category=\"{category_id}\" show_future_entries=\"yes\" show_expired=\"no\" limit=\"1\" disable=â€œcategory_fields|custom_fields|member_data|pagination|trackbacksâ€}<br /><br /> &lt;h2&gt;{title}&lt;/h2&gt;<br /> {if events_feature_image}<br />  &lt;p class=\"rightSide\"&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\"&gt;&lt;img src=\"{events_feature_image}\" alt=\"\" /&gt;&lt;/a&gt;&lt;/p&gt;<br /> {/if}<br /> {if events_summary}<br />  {events_summary}<br /> {/if}<br /><br /> &lt;p&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\" class=\"more\"&gt;Read more &amp;raquo;&lt;/a&gt;&lt;/p&gt;<br /><br /> &lt;strong&gt;{if no_results}<br />  {embed=\"site/.events\" channel=\"events\" template_path=\"news-events/events\"}<br /> {/if}&lt;/strong&gt;<br />{/exp:weblog:entries} \n\n</code></div>\n\n<p><strong>And that worked!</strong></p>\n\n<h2>Houston, we still have a problem…</h2>\n<p>But, we then realized that the same problem would occur if there were no future events in any categories. So, we still needed to go back and solve that problem by similarly passing the value for the <strong>show_expired</strong> parameter in the embed statement as well. I left that to my colleague, so I didn’t test this code, but this is my guess of how to solve that problem:</p>\n\n<div class=\"codeblock\"><code>\n{assign_variable:channel_name=\"{embed:channel}\"}<br />{assign_variable:category_id=\"{embed:category}\"}<br />&lt;strong&gt;{assign_variable:show_expired=\"{embed:show_expired}\"}&lt;/strong&gt;<br /><br />{exp:weblog:entries weblog=\"{channel_name}\" category=\"{category_id}\" show_future_entries=\"yes\" &lt;strong&gt;show_expired=\"{show_expired}\"&lt;/strong&gt; limit=\"1\" disable=â€œcategory_fields|custom_fields|member_data|pagination|trackbacksâ€}<br /><br /> &lt;h2&gt;{title}&lt;/h2&gt;<br /> {if events_feature_image}<br />  &lt;p class=\"rightSide\"&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\"&gt;&lt;img src=\"{events_feature_image}\" alt=\"\" /&gt;&lt;/a&gt;&lt;/p&gt;<br /> {/if}<br /> {if events_summary}<br />  {events_summary}<br /> {/if}<br /><br /> &lt;p&gt;&lt;a href=\"{url_title_path=\"{embed:template_path}\"}\" class=\"more\"&gt;Read more &amp;raquo;&lt;/a&gt;&lt;/p&gt;<br /><br /> {if no_results}<br />  {embed=\"site/.events\" channel=\"events\" &lt;strong&gt;show_expired=\"yes\"&lt;/strong&gt; template_path=\"news-events/events\"}<br /> {/if}<br />{/exp:weblog:entries} \n\n</code></div>\n\n<h2>Conclusion</h2>\n<p>Was there some really easy way to do this that we completely blanked on? It seemed a little <em>hacky</em>, but the solution worked.</p>',NULL,1936,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','6e5882f2-92aa-4358-8021-d0750f0831d7',1,NULL,NULL),(93,98,'SEO FAQ',NULL,'<p>Derek Powazek <a href=\"http://powazek.com/posts/2101\">clarifies some points</a> from his latest post. Again, great stuff here.</p>','http://powazek.com/posts/2101',1935,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','546da4b2-3553-4036-bf9d-71585e909fd8',1,NULL,NULL),(94,99,'Spammers, Evildoers, and Opportunists',NULL,'<p>Derek Powazek <a href=\"http://powazek.com/posts/2090\">shares his opinion of SEO</a>. I’m not going to lie; I agree with what he is saying.</p>','http://powazek.com/posts/2090',1934,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','2784a3ac-46da-4860-9249-bfacf00c6d6a',1,NULL,NULL),(95,100,'Dear Small Businesses: Some Advice',NULL,'<p>Jonathan Longnecker has posted <a href=\"http://fortysevenmedia.com/blog/archives/dear_small_businesses_some_advice/\">a well written article</a> expressing his love and frustrations of designing websites with small businesses. Some very nice points and advice here.</p>','http://fortysevenmedia.com/blog/archives/dear_small_businesses_some_advice/',1933,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','df3ce545-c742-4bef-94ce-6d9822531b87',1,NULL,NULL),(96,101,'What Gives?',NULL,'<p>I like <a href=\"http://boxofchocolates.ca/archives/2009/10/01/what-gives/\">this</a>: “We’re working at building the most important communications network in history. What we do today matters”. Good read, things need to change.</p>','http://boxofchocolates.ca/archives/2009/10/01/what-gives/',1932,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','db6f5092-5906-44eb-b54d-4959ad4e7d98',1,NULL,NULL),(97,102,'The State of the Web Design Profession',NULL,'<p>Noah Stokes has written a fantastic article on <a href=\"http://esbueno.noahstokes.com/post/190407732/the-state-of-the-web-design-profession\">the State of the Web Design Profession</a>. Well said.</p>','http://esbueno.noahstokes.com/post/190407732/the-state-of-the-web-design-profession',1931,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','74449de3-1597-40d8-b7e6-655d5a0fdb10',1,NULL,NULL),(98,103,'Simple jQuery Text Resizer',NULL,'<p>I have done JavaScript text resizers a couple of different ways before, but I think I found my favorite way on a recent project. In previous projects, I have messed around with determining the current font size and adjusting it appropriately. But, in my opinion, simplifying things has made it a much better implementation.</p>\n\n\n<p>If you want to skip right to the <a href=\"//trevor-davis.com/play/jquery-text-resizer/\">demo</a>, feel free.</p>\n\n<p><a href=\"//trevor-davis.com/play/jquery-text-resizer/\" class=\"more-link\">View Demo</a></p>\n\n<h2>Disclaimer</h2>\n<p>Let me first say that I have started to size text in pixels and <a href=\"http://danielmall.com/archives/2007/04/20/soft_serve.php\">soft serving</a> EMs to IE6. There are tons of different font sizing techniques you can use, but this is what is working for me. So use whatever technique you please, and adjust as needed.</p>\n\n<p>Another thing: <strong>I hate text resizers</strong>. In my opinion, there is no reason to duplicate browser functionality. I feel the same about back and print links, but sometimes the functionality is requested, so I have to build it.</p>\n\n<h2>Concept</h2>\n<p>The idea is very simple: you click on the text size you want, and a class is added to the body to indicate which size the user has selected. Then, we take advantage of that body class when we are writing our CSS to size the different elements appropriately.</p>\n\n<h2>Code</h2>\n<p>Let’s first start as we always should, by creating the markup:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ul class=\"resizer\"&gt;<br /> &lt;li class=\"small\"&gt;&lt;a href=\"#\"&gt;A&lt;/a&gt;&lt;/li&gt;<br /> &lt;li class=\"medium\"&gt;&lt;a href=\"#\"&gt;A&lt;/a&gt;&lt;/li&gt;<br /> &lt;li class=\"large\"&gt;&lt;a href=\"#\"&gt;A&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<h3>jQuery</h3>\n<p>The markup was simple enough, so let’s get started on the jQuery. First, we want to execute our code when the document is loaded, and then add an event when one of the resizer links are clicked:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'.resizer a\').click(function() {<br /><br /> });<br />}); \n\n</code></div>\n\n<p>Next, we want to get the class of the parent of the link that has been clicked, remove any of the resizer classes from the body, and add the new one:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'.resizer a\').click(function() {<br />  var textSize = $(this).parent().attr(\'class\');<br />  $(\'body\').removeClass(\'small medium large\').addClass(textSize);<br /> });<br />}); \n\n</code></div>\n\n<p>We also don’t want to regular action of the link to be followed, so we need to <strong>return false</strong>:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'.resizer a\').click(function() {<br />  var textSize = $(this).parent().attr(\'class\');<br />  $(\'body\').removeClass(\'small medium large\').addClass(textSize);<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>I also think it is important to remember what text size a user has selected while browsing the site, so we will take advantage of the <a href=\"http://plugins.jquery.com/project/cookie\">jQuery Cookie plugin</a> to help us with that. We will set a cookie that denotes which size the user has selected:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'.resizer a\').click(function() {<br />  var textSize = $(this).parent().attr(\'class\');<br />  $(\'body\').removeClass(\'small medium large\').addClass(textSize);<br />  $.cookie(\'TEXT_SIZE\',textSize, { path: \'/\', expires: 10000 });<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>Finally, we just need to add a check to the beginning of the script, so that if that cookie is set, we add that size as a class to the body:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> if($.cookie(\'TEXT_SIZE\')) {<br />  $(\'body\').addClass($.cookie(\'TEXT_SIZE\')); <br /> }<br /> $(\'.resizer a\').click(function() {<br />  var textSize = $(this).parent().attr(\'class\');<br />  $(\'body\').removeClass(\'small medium large\').addClass(textSize);<br />  $.cookie(\'TEXT_SIZE\',textSize, { path: \'/\', expires: 10000 });<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<h3>CSS</h3>\n<p> Now is where we get to the really powerful part of doing the text resizing like this: the CSS. We can start by simply stating our text size when it is in the small/default state:</p>\n\n<div class=\"codeblock\"><code>\nbody { font: 12px/18px Arial, sans-serif; } \n\n</code></div>\n\n<p>Then, we just need to make a simple adjustment for the medium and large sizes:</p>\n\n<div class=\"codeblock\"><code>\n.medium { font-size: 16px; line-height: 22px; }<br />.large { font-size: 20px; line-height: 26px; } \n\n</code></div>\n\n<p>So you can just carry through this idea for the rest of the elements that have been assigned a font size:</p>\n\n<div class=\"codeblock\"><code>\nh1 { font-size: 30px; line-height: 36px; }<br />.medium h1 { font-size: 34px; line-height: 40px; }<br />.large h1 { font-size: 38px; line-height: 44px; }<br />h2 { font-size: 24px; line-height: 30px; }<br />.medium h2 { font-size: 28px; line-height: 34px; }<br />.large h2 { font-size: 32px; line-height: 38px; }<br />h3 { font-size: 18px; line-height: 24px; }<br />.medium h3 { font-size: 22px; line-height: 28px; }<br />.large h3 { font-size: 26px; line-height: 32px; } \n\n</code></div>\n\n<p><a href=\"//trevor-davis.com/play/jquery-text-resizer/\" class=\"more-link\">View Demo</a></p>\n\n<p>The idea is very simple, and it really separates the presentation and behavioral layers. So what do you think? Do you have another technique that you like?</p>',NULL,1930,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','5bb6eb6a-fdd3-47cd-8a2a-b2833e638068',1,NULL,NULL),(99,104,'Create a Newsletter with ExpressionEngine &amp; FieldFrame',NULL,'<p>I guess it is time to come back from my little hiatus to actually write a blog post. I recently moved, so I have been busy with getting settled and working on freelance projects as well. If you <a href=\"http://twitter.com/davist11\">follow me on Twitter</a>, you may have noticed that I have recently become obsessed with ExpressionEngine. I completed a <a href=\"//trevor-davis.com/work/ecfc/\">project</a> at work using it, and I realized that I could have done something much more efficiently.</p>\n\n<p><a href=\"http://ee.trevor-davis.com/newsletter/\" class=\"more-link\">View Demo</a></p>\n<p>I had to create an “online newsletter” that had issues that were made up of multiple articles. I ended up creating two separate weblogs: one for each issue, and one for individual articles. In the issues weblog, there was a <a href=\"http://brandon-kelly.com/playa\">Playa</a> custom field which could be used to pick the individual articles to be published in that issue. But, another one of Brandon Kelly’s fabulous extensions, <a href=\"http://brandon-kelly.com/fieldframe\">FieldFrame</a>, seems to be a much better choice for creating this functionality.</p>\n<p>So, download, install, &amp; enable the <a href=\"http://brandon-kelly.com/fieldframe\">FieldFrame Extension</a>, and let’s be on our way.</p>\n<h2>Creating the Custom Field Group</h2>\n<p>First, let’s create a field group named <strong>Newsletter</strong>. Now, we just need to create one custom field with the field name of <strong>newsletter_articles</strong>. Select <strong>FF Matrix</strong> as the field type.</p>\n\n<p>We want to have two cells in the FF Matrix: <strong>articles_title</strong> &amp; <strong>articles_body</strong>. The cell types should be text and textarea, respectively. Then, adjust the sizes as you see fit.</p>\n\n<p><img src=\"//trevor-davis.com/images/content/2009/08/newsletter-ff.png\" alt=\"FF Matrix Configuration\" width=\"570\" height=\"282\" class=\"frame pullLeft\" /></p>\n\n<h2>Creating the Weblog</h2>\n<p>Now that we have the custom field group setup, we need to create a new weblog called <strong>newsletter</strong> and make sure to assign our <strong>Newsletter field group</strong> to it. Now that the newsletter weblog is created, we can start adding newsletters.</p>\n\n<p><img src=\"//trevor-davis.com/images/content/2009/08/newletter-entry.png\" alt=\"Newsletter Entry Form\" width=\"570\" height=\"304\" class=\"frame pullLeft\" /></p>\n\n<p>First, fill in the main title field, and then add in one or more articles. Now, let’s get onto coding the output template.</p>\n\n<h2>Creating the Template</h2>\n<p>Let’s start by creating a new template group called <strong>newsletter</strong>. We have two different pages that we want to create: the page listing all of the newsletter entries, and the individual newsletter entry displaying all of the articles. But, we can do this with only one template.</p>\n\n<p>So, open up the index template in the newsletter template group, and we will start by setting up the structure of the template:</p>\n\n<div class=\"codeblock\"><code>\n{assign_variable:weblog=\"newsletter\"}<br />{embed=\"newsletter/.header\" title=\"{if segment_2}<br /> {!--Display individual newsletter entry title here--}<br />{if:else}<br /> Newsletters<br />{/if}<br />\"}<br /><br />{if segment_2}<br /> {!--Display full individual newsletter entry with 1 or more articles--}<br />{if:else}<br /> {!--Display list of newsletters entered--}<br />{/if}<br /><br />{embed=\"newsletter/.footer\"} \n\n</code></div>\n\n<p>We start by creating a variable to store the name of our weblog. Then, I created a simple header and footer to store some of the HTML that frames the page. I am passing in the title value in an embed variable to the header and displaying that in the browser title.</p>\n\n<p>If the segment_2 value is not null, we know that we are on an individual newsletter page, so we will display that title. If the segment_2 value is null, then we are on the main newsletter listing page, so we just display Newsletters.</p>\n\n<p>We are using the same conditional again for the content on the page. We either show the individual newsletter entry with the articles, or we show the list of newsletter entered. So let’s build out the code a little more. First, let’s finish displaying the title:</p>\n\n<div class=\"codeblock\"><code>\n{embed=\"newsletter/.header\" title=\"{if segment_2}<br /> {exp:weblog:entries weblog=\"{weblog}\" limit=\"1\" disable=\"categories|category_fields|custom_fields|member_data|pagination|trackbacks\"}<br />  {title} : {entry_date format=\"%F %j, %Y\"}<br /> {/exp:weblog:entries}<br />{if:else}<br /> Newsletters<br />{/if}<br />\"} \n\n</code></div>\n<p>Pretty simple stuff here, just displaying the title and entry date of the newsletter entry. Next, let’s tackle displaying the single newsletter entry view:</p>\n\n<div class=\"codeblock\"><code>\n{if segment_2}<br /> {exp:weblog:entries weblog=\"{weblog}\" limit=\"1\" disable=\"categories|category_fields|custom_fields|member_data|pagination|trackbacks\"}<br />  &lt;h1&gt;{title}: {entry_date format=\"%F %j, %Y\"}&lt;/h1&gt;<br /><br />  {newsletter_articles}<br />   &lt;div class=\"entry\"&gt;<br />    &lt;h2&gt;{articles_title}&lt;/h2&gt;<br />    {articles_body}<br />   &lt;/div&gt;<br />  {/newsletter_articles}<br /> {/exp:weblog:entries}<br /> &lt;p&gt;&lt;a href=\"{path=\"newsletter\"}\"&gt;&amp;laquo; Back to Newsletters&lt;/a&gt;&lt;/p&gt; \n\n</code></div>\n\n<p>The beginning should look pretty normal: just using the standard exp:weblog:entries tag to pull in the individual entry. We first display the title and entry date. Then, the next part is where we are taking advantage of the <a href=\"http://brandon-kelly.com/fieldframe/docs/ff-matrix\">FieldFrame Matrix</a>. We are basically just looping through all of the <strong>newsletter_articles</strong> and displaying them in divs.</p>\n\n<p>Finally, let’s finish up by displaying the list of newsletter entries:</p>\n<div class=\"codeblock\"><code>\n{if:else}<br /> {exp:weblog:entries weblog=\"{weblog}\" disable=\"categories|category_fields|custom_fields|member_data|pagination|trackbacks\"}<br />  {if count == 1}<br />   &lt;ul&gt;<br />  {/if}<br /><br />   &lt;li&gt;&lt;a href=\"{url_title_path=\"newsletter\"}\"&gt;{title}: {entry_date format=\"%F %j, %Y\"}&lt;/a&gt;&lt;/li&gt;<br />  {if count == total_results}<br />   &lt;/ul&gt;<br />  {/if}<br /> {/exp:weblog:entries}<br />{/if} \n\n</code></div>\n\n<p>Simple stuff again: just looping through all newsletter entries and displaying them in a list. The two conditional statements are so you don’t end up with any empty unordered lists when there are no entries.</p>\n\n<p><a href=\"http://ee.trevor-davis.com/newsletter/\" class=\"more-link\">View Demo</a></p>\n\n<p>I wish I would have realized this would have been a more efficient way to build a newsletter in EE for the project; but, this is why always learning is so important.</p>',NULL,1929,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','f202cc6d-5a93-41b7-b33b-d26c72043f09',1,NULL,NULL),(100,105,'Packt Book Giveaway Winners',NULL,'<p>Thank you everyone for participating in the <a href=\"//trevor-davis.com/blog/news/packt-book-giveaway/\">Packt Book Giveaway</a>. It was interesting to see how many more people were interested in the jQuery book compared to the others. Now, on to the winners…</p>\n\n<ul><li><p>The <strong>Choosing an Open Source CMS</strong> book was won by <a href=\"//trevor-davis.com/blog/news/packt-book-giveaway/#comment-3212\">Eric D. Greene</a> with his comment on the blog article.</p></li>\n<li><p>The <strong>WordPress 2.7 Complete</strong> book was won by <a href=\"http://twitter.com/mudd06/status/2823637564\">Adrian Turner</a> with his Twitter entry.</p></li>\n<li><p>The <strong>Learning jQuery 1.3</strong> book was won by <a href=\"//trevor-davis.com/blog/news/packt-book-giveaway/#comment-3222\">CodeJoust Chattanooga Webdesign Development</a> for their comment on the blog article.</p></li>\n</ul><p>The winners have been contacted, but if their are any problems, I will choose a new winner. Thanks everyone for the entries, and I hope to be able to do this again.</p>',NULL,1927,NULL,'2014-01-19 12:56:45','2020-03-18 20:03:20','91efb751-cd6b-4b6e-95ec-7da3c25d4ce4',1,NULL,NULL),(101,106,'Web Design is a Journey',NULL,'<p>I definitely don’t categorize myself as a designer because there is no way I can create such <a href=\"http://carsonified.com/blog/design/web-design-is-a-journey/\">amazing work as this</a>. It’s fantastic to see the <strong>very</strong> different directions that Mike went in before reaching the final design.</p>','http://carsonified.com/blog/design/web-design-is-a-journey/',1926,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','d9538e22-2936-47cd-97af-65785fb167c4',1,NULL,NULL),(102,107,'Strangers at a cocktail party',NULL,'<p><a href=\"http://www.37signals.com/svn/posts/1808-strangers-at-a-cocktail-party\">I love this way of thinking</a>. A successful environment is one where you are able to tell people when they’re full of crap.</p>','http://37signals.com/svn/posts/1808-strangers-at-a-cocktail-party',1925,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','f2e74813-7802-4dc9-aa7a-92a16166dd6a',1,NULL,NULL),(103,108,'Packt Book Giveaway: jQuery, WordPress, &amp; Open Source CMS',NULL,'<p>I am pleased to announced that I have 3 <a href=\"http://www.packtpub.com/\">Packt</a> books to giveaway: <a href=\"http://www.packtpub.com/learning-jquery-1.3/book/mid/130709nwu5nv\">Learning jQuery 1.3</a>, <a href=\"http://www.packtpub.com/wordpress-2-7-complete-2nd-edition/book/mid/130709sh1anm\">WordPress 2.7 Complete</a>, &amp; <a href=\"http://www.packtpub.com/choosing-an-open-source-cms-beginners-guide/book/mid/1307090ncy0g\">Choosing an Open Source CMS</a>. Entering to win one of these books is very simple, and you can enter in two different ways.</p>\n\n<p><img src=\"//trevor-davis.com/images/content/2009/07/packt-books.png\" alt=\"\" class=\"pullLeft\" width=\"520\" height=\"265\" /></p>\n\n<p>But first, let me provide a little more detail about the books.</p>\n\n<h2>Learning jQuery 1.3</h2>\n<p><a href=\"http://www.packtpub.com/learning-jquery-1.3/book/mid/130709nwu5nv\"><img src=\"//trevor-davis.com/images/content/2009/07/packt-jquery.jpg\" alt=\"Learning jQuery 1.3\" width=\"90\" height=\"110\" class=\"leftSide frame pullLeft\" /></a>To build interesting, interactive sites, developers are turning to JavaScript libraries such as jQuery to automate common tasks and simplify complicated ones. Because many web developers have more experience with HTML and CSS than with JavaScript, the library\'s design lends itself to a quick start for designers with little programming experience. Experienced programmers will also be aided by its conceptual consistency.</p>\n<p>Revised and updated for version 1.3 of jQuery, this book teaches you the basics of jQuery for adding interactions and animations to your pages. Even if previous attempts at writing JavaScript have left you baffled, this book will guide you past the pitfalls associated with AJAX, events, effects, and advanced JavaScript language features.</p>\n<p><a href=\"http://www.packtpub.com/learning-jquery-1.3/book/mid/130709nwu5nv\" class=\"more-link\">Full Book Detail</a></p>\n\n\n<h2>WordPress 2.7 Complete</h2>\n<p><a href=\"http://www.packtpub.com/wordpress-2-7-complete-2nd-edition/book/mid/130709sh1anm\"><img src=\"//trevor-davis.com/images/content/2009/07/packt-wordpress.jpg\" alt=\"WordPress 2.7 Complete\" width=\"90\" height=\"110\" class=\"leftSide frame pullLeft\" /></a>Using WordPress you can easily create dynamic blogs and web sites with great content and many outstanding features. It is an ideal tool for developing blogs and although it is chiefly used for blogging, it can also be used as a complete CMS with very little effort. You can customize the features, incorporate your own design, and even write your own plug-ins with ease. Its versatility and ease of use have attracted a large, enthusiastic, and helpful community of users. While it is easy to get started with WordPress, its full power is not obvious.</p>\n<p>If you want to create a powerful, fully-featured blog or non-blog web site in no time, this book is for you. It will give you a rapid and straightforward introduction to the rich and powerful features of WordPress and get you up and running with a state-of-the-art blog as quickly and painlessly as possible. It will help you learn everything WordPress has to offer, from the ground up, so you can build your complete web site. You will see many of WordPress\'s hidden powers that will help you build a fully functioning web site.</p>\n\n<p><a href=\"http://www.packtpub.com/wordpress-2-7-complete-2nd-edition/book/mid/130709sh1anm\" class=\"more-link\">Full Book Detail</a></p>\n\n<h2>Choosing an Open Source CMS</h2>\n<p><a href=\"http://www.packtpub.com/choosing-an-open-source-cms-beginners-guide/book/mid/1307090ncy0g\"><img src=\"//trevor-davis.com/images/content/2009/07/packt-cms.jpg\" alt=\"Choosing an Open Source CMS\" width=\"90\" height=\"110\" class=\"leftSide frame pullLeft\" /></a>There are many powerful open source CMSs available to take the pain away from managing a web site. These systems are feature rich, often easy to use, and free. Unfortunately, there are so many choices it\'s tough to be sure you\'re choosing the right one. How can you be sure that you are selecting and working with the right tool?</p>\n\n<p>This book will guide you through choosing the right CMS for your needs. You can be confident in your choice of CMS for the needs of your project. It will also help you make a start using the CMS, and give you a feel for what it\'s like to use it â€“ even before you install it yourself.</p>\n\n<p>Are you bewildered by the many open source CMSs available online? Open source CMSs are the best way to create and manage sophisticated web sites. You can create a site that precisely meets your business goals, and keep the site up to date easily because these systems give you full control over every aspect of your site. Because open source CMSs are free to download, you have a huge amount of choice between the various systems.</p>\n\n<p><a href=\"http://www.packtpub.com/choosing-an-open-source-cms-beginners-guide/book/mid/1307090ncy0g\" class=\"more-link\">Full Book Detail</a></p>\n\n<h2>How to Enter</h2>\n<p>There are two different ways to enter:</p>\n<ol><li>Post a comment on this blog post with the book of your choice: <strong>jQuery</strong>, <strong>WordPress</strong>, or <strong>CMS</strong>. Make sure you provide a valid email address so that I can get in touch with you if you win.</li>\n<li>Tweet about it. Here is what you need to tweet: \n<p><a href=\"http://bit.ly/5J7Gj\">http://bit.ly/5J7Gj</a> Free Packt Book Giveaway from <a href=\"http://twitter.com/davist11\">@davist11</a> I want the <strong>(BOOK NAME HERE)</strong> book.</p>\nThen just replace <strong>BOOK NAME HERE</strong> with the book of your choice: <strong>jQuery</strong>, <strong>WordPress</strong>, or <strong>CMS</strong>.</li>\n</ol><h2>Contest Details</h2>\n<p>You can enter once by submitting a comment on this post and <strong>as many times as you want on Twitter</strong>. The contest will end Friday, July 24th at 6 PM ET. Once over, I will randomly choose the winners and notify them to get their addresses.</p>\n\n<p>That’s it, now get going and enter already. <strong>Big thanks to <a href=\"http://www.packtpub.com\">Packt Publishing</a> for sponsoring the giveaway!</strong></p>',NULL,1924,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','95f0857f-c118-4592-91e6-c8a997ce456d',1,NULL,NULL),(104,109,'Misunderstanding markup',NULL,'<p>Everyone is freaking out about the XHTML 2 Working Group disbanding at the end of the year. Relax people! Jeremy Keith <a href=\"http://adactio.com/journal/1595/\">helps to explain why nobody should worry</a>.</p>','http://adactio.com/journal/1595/',1923,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','e4be25c8-7ce9-4f03-a120-5ff16ae556d7',1,NULL,NULL),(105,110,'Enough with the IE6 Whining',NULL,'<p>Seriously, I can’t go a day without reading about someone complaining about IE6. Yes, we all know it’s support is terrible. Yes, we know that Microsoft sat around and did nothing for 5 years. But look, they have stepped their game up, they have released 2 browser versions in 3 years. Yes, they are not up to par with more standards compliant browsers, but they are a major improvement over IE6.</p>\n\n<p>So I ask you: <strong>what is Microsoft supposed to do</strong>?</p>\n\n<p>It isn’t their fault that users won’t upgrade their browser.</p>\n\n<h2>Suck It Up</h2>\n\n<p>If you call yourself a web developer, you should be able to make things presentable in IE6. If you can’t, then you probably shouldn’t call yourself one. So suck it up and deal with it. <strong>Doesn’t the challenge make our jobs more interesting?</strong></p>\n\n<p>I’m not saying that your site has to look exactly the same in all browsers. <a href=\"http://dowebsitesneedtolookexactlythesameineverybrowser.com/\">We already know the answer to that question</a>. Just make it presentable. Make sure a user can access all content on the site. Remember, it’s <strong>still</strong> all about the content.</p>\n\n<h3>Better Yet</h3>\n<p>Take a look at the traffic to the site and determine to what degree you even need to support it. If IE6 visitors only compromise a very small percentage, maybe consider using <a href=\"http://forabeautifulweb.com/blog/about/universal_internet_explorer_6_css/\">Andy Clarke’s Universal Internet Explorer 6 CSS</a>. That will put the content front and center in IE6, and you won’t even have to worry about it.</p>\n\n<p>Just please, stop complaining.</p>\n\n<p><strong>&lt;/rant&gt;</strong></p>',NULL,1922,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','6c8e5ada-dbdd-4b12-9b14-9ccce14e5cf4',1,NULL,NULL),(106,111,'Walls Come Tumbling Down',NULL,'<p>Andy Clarke has posted the <a href=\"http://forabeautifulweb.com/blog/about/walls_come_tumbling_down_presentation_slides_and_transcript/\">slides and transcript</a> from his presentation at @media2009. It’s a long one, so I scanned it, but it looked like a fantastic presentation.</p>','http://forabeautifulweb.com/blog/about/walls_come_tumbling_down_presentation_slides_and_transcript/',1921,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','49b56c8b-aafa-4a4a-8ce5-a5e2a3f7ef9f',1,NULL,NULL),(107,112,'jQuery Inline Form Labels',NULL,'<p>I’ve been seeing the trend of applying inline labels on form elements more and more these days. So I definitely needed to come up with a solid solution that would help me easily apply this effect.</p>\n\n<p><a href=\"//trevor-davis.com/play/jquery-inline-form-labels/\"><img src=\"//trevor-davis.com/images/content/2009/06/jquery-inline-labels.png\" alt=\"jQuery Inline Form Labels\" width=\"280\" height=\"169\" class=\"leftSide\" /></a>Maybe I need to explain a little better what I am referring to. Instead of using a label that is next to or above the input element, the label is actually within the input. Then, when the input is focused, the label goes away and you can enter your value into it. Finally, when the input is no longer focused, if there is no value entered, the inline label is then added back in.</p>\n\n<p><a href=\"//trevor-davis.com/play/jquery-inline-form-labels/\" class=\"more-link\">See Demo</a></p>\n\n<h2>My Solution</h2>\n<p>The title attribute.</p>\n\n<p>It’s so simple, but perfect. A great benefit of using the title attribute, is that when you hover over the input, you get a little tooltip displaying the inline label. So all I need to do is add a title attribute with the text that we want to have show up as the inline label. Then, we just use a little jQuery to make it all happen.</p>\n\n<h3>The jQuery</h3>\n\n<p>First, we want to select each input that has a title attribute, once the document is loaded:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'input[title]\').each(function() {<br /> &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Next, if the value of the input element is empty, we want to take the title attribute and add it as the value of the input.</p>\n\n<pre>$(document).ready(function() {\n $(\'input[title]\').each(function() {\n  <strong>if($(this).val() === \'\') {\n   $(this).val($(this).attr(\'title\')); \n  }</strong>\n });\n});</pre>\n\n<p>After that, we want to setup a function that will fire once the input is focused. When it is focused, if the value is equal to the title attribute, we want to set the value to nothing and add a class of focused:</p>\n\n<pre>$(document).ready(function() {\n $(\'input[title]\').each(function() {\n  if($(this).val() === \'\') {\n   $(this).val($(this).attr(\'title\')); \n  }\n  \n  <strong>$(this).focus(function() {\n   if($(this).val() === $(this).attr(\'title\')) {\n    $(this).val(\'\').addClass(\'focused\'); \n   }\n  });</strong>\n });\n});</pre>\n\n<p>The reason why we add the class of focused is so that we can change the text color, border or anything to make it noticeable that the input is being focused. You can see this effect in the <a href=\"//trevor-davis.com/play/jquery-inline-form-labels/\">demo</a>.\n\n</p><p>Finally, we want to add a function that will fire when the input loses focus. When it does, if the input value is empty, we want to set the value back to the title attribute and remove the class of focused:</p>\n\n<pre>$(document).ready(function() {\n $(\'input[title]\').each(function() {\n  if($(this).val() === \'\') {\n   $(this).val($(this).attr(\'title\')); \n  }\n  \n  $(this).focus(function() {\n   if($(this).val() === $(this).attr(\'title\')) {\n    $(this).val(\'\').addClass(\'focused\'); \n   }\n  });\n  \n  <strong>$(this).blur(function() {\n   if($(this).val() === \'\') {\n    $(this).val($(this).attr(\'title\')).removeClass(\'focused\'); \n   }\n  });</strong>\n });\n});</pre>\n\n<p><a href=\"//trevor-davis.com/play/jquery-inline-form-labels/\" class=\"more-link\">See Demo</a></p>\n\n<p>And that’s it. It’s just a little bit of code, but it can go a long way. So take it and build on it.</p>',NULL,1920,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','252e73ca-2a34-4678-b5f9-9d5875622db8',1,NULL,NULL),(108,113,'Dog and Pony Show Design',NULL,'<p>Andy Rutledge continues to blow my mind with his <a href=\"http://www.andyrutledge.com/dog-and-pony-show-design.php\">fantastic articles</a>. “Multiple design options are what you visit in your design process on your way toward a solution. What you present to your client must be the most effective result of your exhaustive efforts. Nothing less.”</p>','http://www.andyrutledge.com/dog-and-pony-show-design.php',1919,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:20','55041baa-8bae-4447-8adf-a921a3d1b480',1,NULL,NULL),(109,114,'Remember, You are the Expert',NULL,'<p>I’ve been realizing lately that there is a big problem in the web design/development field: we aren’t thought of as experts. Ok maybe that’s not completely true, but I’ve seen a lot of clients “guiding” the process. But actually, maybe this is our own fault, so how can we fix it?</p>\n\n<h2>Be the Expert</h2>\n<p>We have to remember that we are the web experts in this relationship. We need to show confidence when talking with clients. Talk authoritatively about the details of the project and show them that we know what we are talking about. Just like we wouldn’t go tell an architect how to design a house, our clients need to trust us to build their website.</p>\n\n<h2>Stick to Your Guns</h2>\n<p>So let’s say a client suggests something that you know would work better if you did it a different way; don’t just say yes to the client, make your suggestion and build a case for it. Reference other examples. Site statistics. Fight for the best solution. Remember, <strong>you</strong> are the expert.</p>\n\n<h2>Read, Browse, and Read Some More</h2>\n<p>The web is full of great articles, bad examples of web sites, good examples of web sites, and much more. So by just spending time browsing the web, you can amass a huge amount of knowledge about what works and what doesn’t. This will provide you with loads of ammunition to use when clients need your guidance.</p>\n\n<h2>It’s Hard</h2>\n<p>I struggle with it all the time. It’s hard to say no to a client when they are the ones paying you. But the best thing to do is to make your suggestions, back it up with statistics &amp; examples, and hope that the client trusts your judgment.</p>\n\n<p>Remember, <strong>you</strong> are the expert.</p>',NULL,1918,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','021f2a30-cebf-4407-9b87-3aacf4c2f4cf',1,NULL,NULL),(110,115,'Of Brands and Commodities',NULL,'<p><a href=\"http://www.andyrutledge.com/of-brands-and-commodities.php\">Genius</a>: “Turning down money to make money; sounds like a dodgy strategy, but it’s more powerful than you might think. And it’s required if you want to build a brand.”</p>','http://www.andyrutledge.com/of-brands-and-commodities.php',1917,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','a2887b9a-6111-41be-a51a-96b94ea1962b',1,NULL,NULL),(111,116,'10 Cost Effective Web Development Techniques',NULL,'<p>Excellent, excellent, excellent <a href=\"http://allinthehead.com/retro/340/10-cost-effective-web-development-techniques\">presentation from Drew McLellan</a>. Wish I could have seen it in person.</p>','http://allinthehead.com/retro/340/10-cost-effective-web-development-techniques',1916,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','50ed887e-4ad5-4ea8-9942-b3cc3ec78377',1,NULL,NULL),(112,117,'Creating a Google Map with ExpressionEngine',NULL,'<p>Since I have a newfound love of ExpressionEngine, I wrote my most recent article for NETTUTS about <a href=\"http://net.tutsplus.com/tutorials/other/creating-a-google-map-with-expressionengine/\">creating a Google Map</a> with it.</p>','http://net.tutsplus.com/tutorials/cmss/creating-a-google-map-with-expressionengine/',1915,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','3300a2a9-917a-4c42-b49f-0d065c6caa82',1,NULL,NULL),(113,118,'User Experience Beyond the Web',NULL,'<p>I had the “pleasure” of having jury duty last week. This was the first time I had ever been called for it before, and I must say that the experience definitely left a lot to be desired. It is definitely clear that all of the time spent on user experience on the web ends up providing a better experience for the end user. But my question now is: <strong>why isn’t that kind of effort put in outside of the web?</strong></p>\n\n<p>There was basically no part of my jury duty experience that was pleasurable. Let me walk you through how my day went.</p>\n\n<h2>Getting Up Early</h2>\n<p>First off, I had to get up super early in order to get there on time. If I am just going to be waiting around most of the day, <strong>why do I have to be there at 8:15am?</strong></p>\n\n<h2>Parking</h2>\n<p>So I pulled into the parking lot that they told me to park in, and started to walk to the court house. But wait, I had no clue where to go. There were <strong>no</strong> signs at all. Luckily I guessed right, or I would have been late.</p>\n\n<h2>Security</h2>\n<p>Since I was going into a court house, I totally expected to have to go through security. I was told that jury duty would probably end up being a lot of waiting around, and I saw that they had wireless internet access there, so I figured I would bring my laptop and get some work done.</p>\n\n<p>First, I had to check my cellphone since it had a camera on it. I’m not really sure what I would want to take pictures with, but whatever, I checked it. I did feel a little lost without my phone though.</p>\n\n<p>Next, I had to go through the metal detectors and put my bag on the x-ray machine. The security officer asked me to take out my laptop and turn it on. I was confused as to why I would need to turn it on, but I hit the button and waited for it to power up. Then, he sees that my laptop has a built-in camera, and tells me that I can’t bring it in.</p>\n\n<p>I looked at him befuddled because I couldn’t imagine sitting with my laptop facing out in the courtroom, taking pictures, and not having someone say something to me. The security officer tells me that I have to take it back to my car. So, I had to walk the quarter of a mile back to my car, put the laptop in there, then walk back and go through security.</p>\n\n<p><strong>Seems a little ridiculous, right?</strong> I must give them credit for actually having wireless internet, but not being able to bring in my laptop really pissed me off.</p>\n\n<h2>The Waiting Room</h2>\n<p>Once I got through security and checked in, I was directed to a big room with a bunch of tables and chairs where we would wait for the next hour or so. Of course, the chairs were jammed in together, and there were not enough seats in the room for everyone.</p>\n\n<p>We watched a 15 minute training video, and then the courthouse employees tried to get us to donate money to the court system. Yeah, after you put me in a bad mood because I couldn’t bring in my laptop, I’m sure I’ll jump at the opportunity to give you money.</p>\n\n<p>What a great start to the morning.</p>\n\n<h2>The Next Waiting Room</h2>\n<p>Finally, my group got called to the courtroom, and we stood around and waited for about two hours until we finally got called into the court room to go through the jury selection process.</p>\n\n<p>So again, more waiting, that’s basically what I did all day.</p>\n\n<h2>Does anyone think about the experience?</h2>\n<p>Here we are in a situation where we are supposed to be impartial and have no biases, and I was in a piss poor mood. Why don’t they make these kind of situations as painless as possible? Why isn’t there someone making sure that the experience of having jury duty is not awful?</p>\n\n<p>Just like we devote time thinking about users’ experiences on the websites we are creating; organizations need to consider what those experiences outside of the web are like.</p>',NULL,1914,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','74d3dd57-1f83-4fcf-93bd-b15676637288',1,NULL,NULL),(114,119,'Designer, Owner, Manager - 1: Hiring the Right People',NULL,'<p><a href=\"http://www.andyrutledge.com/hiring-the-right-people.php\">Andy Rutledge’s latest article</a> seems like it will come in handy when I eventually start my own business. Some great tips here; especially numbers 6 &amp; 8.</p>','http://www.andyrutledge.com/hiring-the-right-people.php',1913,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','620c2c47-70e3-4de3-ad3d-65de28dad1d3',1,NULL,NULL),(115,120,'Let your links look like links',NULL,'<p>Roger Johansson discusses one of my big pet peeves: <a href=\"http://www.456bereastreet.com/archive/200904/let_your_links_look_like_links/\">links need to look like links</a>. Links are the most important part of the web. Make them stand out.</p>','http://www.456bereastreet.com/archive/200904/let_your_links_look_like_links/',1912,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','a3126d61-4d99-46d0-a642-a4bbffe27e27',1,NULL,NULL),(116,121,'Review: Building Websites with ExpressionEngine 1.6',NULL,'<p>I was lucky enough to be contacted by <a href=\"http://www.packtpub.com/\">Packt Publishing</a> to review the book <a href=\"http://www.packtpub.com/building-websites-with-expressionengine-1.6/book/mid/200409srne2o\">Building Websites with ExpressionEngine 1.6</a> by Leonard Murphy. I have recently become very infatuated with <a href=\"http://expressionengine.com/\">ExpressionEngine</a>, and I have devoted a lot of time to learning how to use it. This book was a great opportunity to see where my skill set was at.</p>\n\n<a href=\"http://www.packtpub.com/building-websites-with-expressionengine-1.6/book/mid/200409srne2o\"><img src=\"//trevor-davis.com/images/content/2009/04/building-site-ee.jpg\" alt=\"Building Websites with ExpressionEngine 1.6\" class=\"rightSide frame\" height=\"259\" width=\"210\" /></a>\n<h2>Who is it for?</h2>\n<p>This book is definitely aimed toward beginning users of <abbr title=\"ExpressionEngine\">EE</abbr> who have some knowledge of HTML. There is no knowledge of EE needed in order to read this book. So basically anyone who wants to learn how to use EE would benefit from reading this. While I have had some experience with EE, I found many parts of this book that were more of a review for me.</p>\n\n<h2>What I liked</h2>\n<p>I really liked that Leonard uses a lot of screenshots and code snippets to help walk through how he is doing something. They definitely would have helped me to comprehend some of the EE concepts that I did not understand until devoting a lot of time online doing research.</p>\n\n<p>This book does a great job of covering a variety of topics, from installing EE and creating a calendar to using other modules and plugins. Even though I have prior experience with EE and this book is geared toward beginners, I did learn a few things about EE from reading this book.</p>\n\n<h2>What I could do without</h2>\n<p>There seemed to be a large chunk of the book devoted to applying CSS to the examples to make them presentable. I don’t think there is any need to go through and explain the CSS; people are buying the book for information about EE.</p>\n\n<p>I also wish that the example site that is used in the book were a bit more realistic. I really learned a lot from Mike Boyink’s <a href=\"http://www.train-ee.com/courseware/free-tutorials/category/building-a-church-site/\">Building a Church Site</a> and <a href=\"http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/\">Building a Small Business Site</a> tutorials because the content and functionality of the sites were <strong>real</strong>.</p>\n\n<h2>Conclusion</h2>\n<p>This book is really the only EE book out there. So if you are one of those people who has trouble learning from online tutorials and needs a book, this is definitely a solid choice to get started with EE. You can get a preview of it by <a href=\"//trevor-davis.com/images/content/2009/04/expressionengine-sample-chapter-3-start-posting.pdf\">downloading a sample chapter</a>.</p>\n\n<h3>Update</h3>\n<p>I actually wasn’t aware of this, but Mike Boyink also has his <a href=\"http://www.train-ee.com/courseware/books/\">tutorials available as books</a>.</p>',NULL,1911,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','d2c33974-99d0-4e72-9bf9-e2795b0648ec',1,NULL,NULL),(117,122,'Dear Designer, You Suck',NULL,'<p>As usual, <a href=\"http://www.subtraction.com/2009/04/09/dear-designer-you-suck\">another well thought out post</a> from Khoi Vinh. I agree completely: I thrive on criticism. Even though I’m not a designer, I’m always looking to improve by hearing the thoughts of others.</p>','http://www.subtraction.com/2009/04/09/dear-designer-you-suck',1909,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','246b4253-45b1-4611-9422-1d2dcc2d188d',1,NULL,NULL),(118,123,'CSS Naked Day 2009',NULL,'<p>Yep, today, April 9, 2009, is <a href=\"http://naked.dustindiaz.com/\">the annual CSS Naked Day</a>. Some people may think it is a huge risk to completely strip the design from my site for a day, but I think otherwise.</p>\n\n<p>If anything, it gives visitors a chance to see my ability to code with web standards. I take the time and effort to write well structured XHTML, so it is still readable without any style applied.</p>\n<p>I am striping my design with the <a href=\"http://wordpress.org/extend/plugins/css-naked-day-noscript/\">CSS Naked Day WordPress Plugin</a>. I encourage everyone else to <strong>strip down and show off your <code>body</code></strong>.</p>\n<p>Is anyone else going naked today?</p>',NULL,1908,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','2eca6d1c-00b8-4068-b040-737414a64cc9',1,NULL,NULL),(119,124,'Creating a jQuery Word Counter',NULL,'<p>I had to code a form at work that required word limitations on each textarea. The article describing <a href=\"http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/\">how I created a jQuery word counter</a> was published on the ThemeForest blog.</p>','http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/',1907,NULL,'2014-01-19 12:58:14','2020-03-18 20:03:21','9764c30d-4752-4ee1-8b4c-f31c4b53b9c6',1,NULL,NULL),(120,125,'Presentation to Damscus High School Students',NULL,'<p>I have been noticeably absent from my blog recently, but for good reason. I was honored when <a href=\"http://teachmetheweb.org/\">Jeff Brown</a>, a teacher at Damascus High School, asked if I wanted to speak to the students in his advanced web class. I have always been interested in speaking about web development, so this seemed like a great first opportunity.</p>\n\n<p>So basically, Mr. Brown has people in the industry come in and speak to his students every Friday. After looking at the <a href=\"http://teachmetheweb.org/index.php/tmtw/blog-article/spring_2009_guest_speaker_line_up/\">list of other speakers</a>, I sure was nervous. I mean; I go to conferences to see some of these guys speak.</p>\n\n<p>Mr. Brown has a great program going, and I was glad to be a part of it. He is one of the few teachers that actually teach about web standards and is a member of the <a href=\"http://www.webstandards.org/action/edutf\">WaSP Education Task Force</a>. He also gave a presentation at <a href=\"http://refresh-dc.org/\">RefreshDC</a> about web education the night before my presentation, that I unfortunately missed.</p>\n\n<h2>My Presentation</h2>\n<p>I decided to focus my presentation on my path through web development, some tips to become successful as a front-end developer, and then how to maintain that success.</p>\n\n<p>I was pretty nervous, and I felt like I raced at times, but I think it turned out well. Mr. Brown has posted the <a href=\"http://teachmetheweb.org/index.php/tmtw/blog-article/guest_speaker_reactions_trevor_davis/\">audio from the presentation</a> on his site.</p>\n\n<div class=\"leftSide\">\n <a href=\"http://www.slideshare.net/davist11/become-a-productive-frontend-developer-continue-to-be-one?type=powerpoint\">View Presentation: Become a Productive Front-End Developer &amp; Continue to be one</a>\n</div>\n\n<p class=\"clearing\">I would love to hear any feedback on the presentation, so let me know what you all think.</p>',NULL,1906,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','3eff6aed-470b-4364-94e0-256d01f054a8',1,NULL,NULL),(121,126,'Browser Compatibility Master Tables',NULL,'<p>PPK has updated his <a href=\"http://www.quirksmode.org/compatibility.html\">browser compatibility tables</a> to include more CSS3 testing, new browsers, and more. This is a great resource to determine which browsers support what.</p>','http://www.quirksmode.org/compatibility.html',1905,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','529aab53-305f-47cc-a5c8-d285599729bf',1,NULL,NULL),(122,127,'The 13 Most Essential Plugins for WordPress',NULL,'<p>I feel like right after I install WordPress; I immediately install the same set of plugins. I figured this would be a good topic for a post, so I chose that for my <a href=\"http://net.tutsplus.com/articles/web-roundups/the-13-most-essential-plugins-for-wordpress/\">most recent article at NETTUTS</a>.</p>','http://net.tutsplus.com/articles/web-roundups/the-13-most-essential-plugins-for-wordpress/',1904,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','e616fed3-25fb-4199-a31c-d8d1c57dd348',1,NULL,NULL),(123,128,'Dynamically Set a Body Id in PHP',NULL,'<p>I have already written a couple of articles about body ids: <a href=\"//trevor-davis.com/blog/tutorial/set-a-body-id/\">\nSet a Body Id Using PHP</a> and <a href=\"//trevor-davis.com/blog/tutorial/setting-body-ids-in-expression-engine/\">Setting Body Ids in Expression Engine</a>, but in a recent project, I was looking for a more dynamic way to do it in PHP and WordPress.</p>\n\n<p>I don’t think it’s necessary to discuss the benefits of body ids because I have already discussed them in the other posts. So if you still aren’t using body ids/classes, go read the articles, and start using them.</p>\n\n<h2>The Plan</h2>\n<p>This seems so straightforward that I’m not sure why I didn’t start with this method. So basically, I look at the URI, and if it is equal to <strong>/</strong> then I give it a <strong>body id of home</strong>. Otherwise, I grab the <strong>first “folder” and set that as the body id</strong>.</p>\n\n<h3>Example</h3>\n<p>Let’s say that the URI is: <strong>/about/team/leadership/</strong>. The body id would be <strong>about</strong>. Ok, the seems easy, let’s get to the code.</p>\n\n<h2>The Code</h2>\n\n<p>Here is our setBodyId function:</p>\n\n<div class=\"codeblock\"><code>\nfunction setBodyId() {<br /> $path = $_SERVER[\'REQUEST_URI\'];<br /><br /> if($path === \'/\') {<br />  $bodyId = \'home\';<br /> } else {<br />  $bodyId = substr($path, 1, (strpos($path,\'/\',1)-1));<br /> }<br /> <br /> return $bodyId;<br />} \n\n</code></div>\n<p class=\"note\"><em>If you are using this in WordPress, put this function in your theme function.php file.</em></p>\n\n<p>Then, you want to call the function and assign it to a variable:</p>\n\n<div class=\"codeblock\"><code>\n$bodyId = setBodyId(); \n\n</code></div>\n\n<p>Finally, if the $bodyId variable is not empty, add the id attribute on the body tag:</p>\n<div class=\"codeblock\"><code>\n&lt;body&lt;?php if(!empty($bodyId)) echo \' id=\"\'.$bodyId.\'\"\';?&gt;&gt; \n\n</code></div>\n\n<h2>Conclusion</h2>\n<p>It’s so simple, yet powerful. This could also easily be recoded in other programming languages. What do you think? Any ideas for improvement?</p>',NULL,1903,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','ce480ccf-2f3a-4a2a-aa48-a05ed7edd94b',1,NULL,NULL),(124,129,'We Refuse',NULL,'<p>You know what, <a href=\"http://unitinteractive.com/blog/2009/03/07/we-refuse/\">I refuse too</a>. Just because someone tells you that you shouldn’t do something, that doesn’t mean you have to listen. Would you have gotten to where you are today by only listening to other people?</p>','http://unitinteractive.com/blog/2009/03/07/we-refuse/',1902,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','f222b7ed-1601-479a-a0d4-b863683f6246',1,NULL,NULL),(125,130,'There’s always time to launch your dream',NULL,'<p>I agree completely, <a href=\"http://www.37signals.com/svn/posts/1619-theres-always-time-to-launch-your-dream\">stop with the excuses</a>. I don’t think I tried that hard in school either. Definitely the quote of the article: “Never let your schooling interfere with your education”.</p>','http://37signals.com/svn/posts/1619-theres-always-time-to-launch-your-dream',1901,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','67b2f29c-643b-4e69-9551-e43eed8d6f9f',1,NULL,NULL),(126,131,'WordPress & jQuery Contact Form without a Plugin',NULL,'<p>There are <a href=\"http://wordpress.org/extend/plugins/search.php?q=contact\">lots of WordPress plugins for contact forms</a>, but wouldn’t it be nice to have more control over the markup? In this tutorial, I am going to show how to use a custom page template to create a contact form in WordPress without a plugin.</p>\n<p>Some people may want to skip the post and get to the demo and source files:</p><p class=\"clearfix\"><a href=\"http://wp.trevor-davis.com/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"//trevor-davis.com/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><h2>So, why not use a plugin?</h2><p>Well, I think that a contact form is so simple that a WordPress plugin that doesn’t provide exactly what I want is pretty lame. Plus, I don’t need all those fancy interfaces for building the form; I just need the code.</p><h2>The Plan</h2><p>Our plan is to create a custom <a href=\"http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates\">WordPress Page Template</a>, then create a page that uses that template. Finally, we will add in a little <strong>jQuery</strong> to improve the form. Let’s write a little pseudo code to help determine how our page template will be structured.</p><h3>Pseudo Code</h3>\n<pre>&lt;code&gt;If form was submitted validate it\n If the form was submitted successfully\n  Send email(s)\n Else\n  Set variables to show errors\n\nIf the form was submitted successfully\n Show thank you message\nElse\n Show form (with errors if there are any)</pre>\n<h3>Creating the WordPress Page Template</h3><p>Alright, so first, we are going to start with some basic stuff: define the template name, include the header/sidebar/footer, and setup the basic structure of our pseudo code.</p><pre>&lt;code&gt;&lt;?php\n/*\nTemplate Name: Contact Form\n*/\n?&gt;\n\n&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n //If there is no error, send the email\n if(!isset($hasError)) {\n\n }\n} ?&gt;\n\n&lt;?php get_header(); ?&gt;\n\n&lt;?php \n//If the email was sent, show a thank you message\n//Otherwise show form\nif(isset($emailSent) &amp;&amp; $emailSent == true) {\n?&gt;\n\n&lt;?php } else { ?&gt;\n\n&lt;?php } ?&gt;\n\n&lt;?php get_sidebar(); ?&gt;\n\n&lt;?php get_footer(); ?&gt;</pre>\n<h3>The Form</h3><p>Next, let’s code the actual form. I also want to provide the ability for the user to enter some text to go above the form, so we are going to use the regular loop:</p>\n<pre>&lt;code&gt;&lt;?php if(isset($emailSent) &amp;&amp; $emailSent == true) { ?&gt;\n\n &lt;div class=\"thanks\"&gt;\n  &lt;h1&gt;Thanks, &lt;?=$name;?&gt;&lt;/h1&gt;\n  &lt;p&gt;Your email was successfully sent. I will be in touch soon.&lt;/p&gt;\n &lt;/div&gt;\n\n&lt;?php } else { ?&gt;\n\n &lt;?php if (have_posts()) : ?&gt;\n \n  &lt;?php while (have_posts()) : the_post(); ?&gt;\n   &lt;h1&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;\n   &lt;?php the_content(); ?&gt;\n  \n   &lt;?php if(isset($hasError) || isset($captchaError)) { ?&gt;\n    &lt;p class=\"error\"&gt;\n     There was an error submitting the form.\n    &lt;p&gt;\n   &lt;?php } ?&gt;\n \n   &lt;form action=\"&lt;?php the_permalink(); ?&gt;\" id=\"contactForm\" method=\"post\"&gt;\n \n   &lt;/form&gt;\n \n  &lt;?php endwhile; ?&gt;\n &lt;?php endif; ?&gt;\n&lt; } ?&gt;</pre>\n<p>If the <strong>emailSent</strong> variable is set to true, we display the thank you message. Otherwise, we show the form. So we are outputting the title of the page, and any content that was entered. Then, we are checking to see if there was an error. Finally, we display the form:</p><pre>&lt;code&gt;&lt;ol class=\"forms\"&gt;\n &lt;li&gt;\n  &lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n  &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"\n  &lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\"\n   class=\"requiredField\" /&gt;\n  &lt;?php if($nameError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li&gt;\n  &lt;label for=\"email\"&gt;Email&lt;/label&gt;\n  &lt;input type=\"text\" name=\"email\" id=\"email\" value=\"\n  &lt;?php if(isset($_POST[\'email\']))  echo $_POST[\'email\'];?&gt;\"\n  class=\"requiredField email\" /&gt;\n  &lt;?php if($emailError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$emailError;?&gt;&lt;/span&gt;\n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li class=\"textarea\"&gt;\n  &lt;label for=\"commentsText\"&gt;Comments&lt;/label&gt;\n  &lt;textarea name=\"comments\" id=\"commentsText\" rows=\"20\" cols=\"30\" class=\"requiredField\"&gt;\n  &lt;?php if(isset($_POST[\'comments\'])) { \n   if(function_exists(\'stripslashes\')) { \n    echo stripslashes($_POST[\'comments\']); \n   } else { \n    echo $_POST[\'comments\']; \n   }\n   } ?&gt;&lt;/textarea&gt;\n  &lt;?php if($commentError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$commentError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n &lt;li class=\"inline\"&gt;\n  &lt;input type=\"checkbox\" name=\"sendCopy\" id=\"sendCopy\" value=\"true\"\n  &lt;?php if(isset($_POST[\'sendCopy\']) &amp;&amp; $_POST[\'sendCopy\'] == true) \n   echo \' checked=\"checked\"\'; ?&gt; \n  /&gt;\n  &lt;label for=\"sendCopy\"&gt;Send a copy of this email to yourself&lt;/label&gt;\n &lt;/li&gt;\n &lt;li class=\"screenReader\"&gt;\n  &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n  &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"\n  &lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\"\n  /&gt;\n &lt;/li&gt;\n &lt;li class=\"buttons\"&gt;\n  &lt;input type=\"hidden\" name=\"submitted\" id=\"submitted\" value=\"true\" /&gt;\n  &lt;button type=\"submit\"&gt;Email me »&lt;/button&gt;\n &lt;/li&gt;\n&lt;/ol&gt;</pre>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p><p>Ok, wow, that may seem like a lot. So let’s break down the name field to see what this code is actually doing:</p><pre>&lt;code&gt;&lt;li&gt;&lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"&lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\" class=\"requiredField\" /&gt;\n &lt;?php if($nameError != \'\') { ?&gt;\n  &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n &lt;?php } ?&gt;\n&lt;/li&gt;</pre>\n<p>We are displaying each form field in a list item, displaying the label, input field, and then showing an error message if there is one. We are also displaying the value in the form field if it was already submitted.</p><p>So in essence, we are just doing that for each field of the form. You could easily go into the code to add more fields.</p><p>We are also using honeypot captcha to see if a bot was trying to submit the form:</p><pre>&lt;code&gt;&lt;li class=\"screenReader\"&gt;\n &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"&lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\" /&gt;\n&lt;/li&gt;</pre>\n<p>That list item is pushed off the page with CSS, and if there is a value in that field, we can assume that it is not a human trying to submit the form:</p><pre>&lt;code&gt;.screenReader { \n left: -9999px; \n position: absolute; \n top: -9999px;\n}</pre>\n<h3>The Validation</h3><p>Next, we are going to have a conditional statement to determine if the form was submitted or not:</p><pre>&lt;code&gt;&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n\n} ?&gt;</pre>\n<p>Within that conditional, is where we are going to do all of our validation of the required fields. First, let’s check to see if our honeypot captcha form field is filled in. If it is, then we will display an error and not check anymore of the form:</p><pre>&lt;code&gt;//Check to see if the honeypot captcha field was filled in\nif(trim($_POST[\'checking\']) !== \'\') {\n $captchaError = true;\n} else {\n\n}</pre>\n<p>So if the captcha field was left blank, we will continue to validate the required fields:</p><pre>&lt;code&gt;//Check to make sure that the name field is not empty\nif(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}\n\n//Check to make sure sure that a valid email address is submitted\nif(trim($_POST[\'email\']) === \'\')  {\n $emailError = \'You forgot to enter your email address.\';\n $hasError = true;\n} else if (!eregi(\"^[A-Z0-9._%-]+@[A-Z0-9._%-]+.[A-Z]{2,4}$\", trim($_POST[\'email\']))) {\n $emailError = \'You entered an invalid email address.\';\n $hasError = true;\n} else {\n $email = trim($_POST[\'email\']);\n}\n \n//Check to make sure comments were entered \nif(trim($_POST[\'comments\']) === \'\') {\n $commentError = \'You forgot to enter your comments.\';\n $hasError = true;\n} else {\n if(function_exists(\'stripslashes\')) {\n  $comments = stripslashes(trim($_POST[\'comments\']));\n } else {\n  $comments = trim($_POST[\'comments\']);\n }\n}</pre>\n<p>Again, that may seem like a little much, so let’s just take a look at the validation on the name field:</p><pre>&lt;code&gt;if(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}</pre>\n<p>If the name field if empty, set a variable that will display the name error and set a flag saying that there was an error on the form. Otherwise, set a variable that will contain the name value from the form.</p><h3>Sending the Email</h3><p>Now, we want to send the email if there are no errors:</p>\n<pre>&lt;code&gt;//If there is no error, send the email\nif(!isset($hasError)) {\n\n $emailTo = \'&lt;strong&gt;me@somedomain.com&lt;/strong&gt;\';\n $subject = \'Contact Form Submission from \'.$name;\n $sendCopy = trim($_POST[\'sendCopy\']);\n $body = \"Name: $name nnEmail: $email nnComments: $comments\";\n $headers = \'From: My Site &lt;\'.$emailTo.\'&gt;\' . \"rn\" . \'Reply-To: \' . $email;\n \n mail($emailTo, $subject, $body, $headers);\n\n if($sendCopy == true) {\n  $subject = \'You emailed &lt;strong&gt;Your Name&lt;/strong&gt;\';\n  $headers = \'From: &lt;strong&gt;Your Name&lt;/strong&gt; &lt;&lt;strong&gt;noreply@somedomain.com&lt;/strong&gt;&gt;\';\n  mail($email, $subject, $body, $headers);\n }\n\n $emailSent = true;\n\n}</pre>\n<p class=\"note\"><em>Note: Items bolded are values that you will want to change before implementing.</em></p><p>I personally like to have the contact form submission come from myself. That way, I just setup a filter in Gmail, and I can guarantee that it won’t get caught in my spam filter. The second email is only sent if the user checks the checkbox to send a copy to themselves.</p><p><a href=\"//trevor-davis.com/images/content/2009/02/contact-form.txt\" class=\"more-link\">View Entire Custom Page Template</a></p><h3>Creating the Page in WordPress</h3><p>First, you want to upload the <a href=\"//trevor-davis.com/images/content/2009/02/contact-form.zip\">contact-form.php</a> page template to your themes folder. Next, you will create the page in WordPress and select <strong>Contact Form</strong> as the page template.</p><p class=\"pullLeft\"><img src=\"//trevor-davis.com/images/content/2009/02/wordpress-page-template.png\" alt=\"Adding WordPress page template\" class=\"frame\" height=\"341\" width=\"570\" /></p><p>Then, just publish your page and you will have your contact form. Well, the form will be usable, but we are going to add in some CSS and jQuery to finish it off.</p><h3>Styling the Form</h3><p>I recently wrote <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">an article about styling forms</a>, so we are just going to stick with some basic styles:</p><pre>&lt;code&gt;.screenReader { left: -9999px; position: absolute; top: -9999px; }\n.thanks { background: #F2F3F6; border: 1px solid #7E8AA2; padding: 10px; }\n\n/*****Forms*****/\nol.forms { float: left; list-style: none; margin: 0; width: 100%; }\nol.forms li { \n clear: both; \n float: left; \n margin-bottom: 18px; \n position: relative;\n width: 100%;\n}\nol.forms label {\n cursor: pointer;\n display: block;\n float: left;\n font-weight: bold;\n padding-right: 20px;\n width: 100px;\n}\nol.forms input, ol.forms textarea {\n border: 1px solid #7E8AA2;\n border-radius: 3px;\n font: inherit;\n -moz-border-radius: 3px;\n padding: 2px;\n -webkit-border-radius: 3px;\n width: 214px;\n}\nol.forms textarea { height: 300px; width: 334px; }\nol.forms input:focus, ol.forms textarea:focus { background-color: #f2f3f6; border-color: #ff9800; }\n.error { color: #f00; }\nol.forms li .error { font-size: 12px; margin-left: 20px; }\nol.forms li.textarea .error {\n display: block;\n position: absolute;\n right: 0;\n top: 0;\n width: 100px;\n}\nol.forms li.screenReader { margin-bottom: 0; }\nol.forms li.buttons button {\n background: #ff9800;\n border: none;\n color: #000;\n cursor: pointer;\n font: 16px/16px \"Avenir LT Std\", Helvetica, Arial, sans-serif;\n overflow: hidden;\n padding: 6px 3px 3px 3px;\n text-transform: uppercase;\n width: auto;\n}\nol.forms li.buttons button:hover { color: #222; }\nol.forms li.buttons button:active { left: -1px; position: relative; top: -1px; }\nol.forms li.buttons, ol.forms li.inline { float: right; width: 460px; }\nol.forms li.inline input { width: auto; }\nol.forms li.inline label { display: inline; float: none; width: auto; }</pre>\n<p>So drop that CSS in your theme stylesheet and you will see the form start to look much better.</p><h3>Enhancing the form with some jQuery</h3><p>I have also already written about creating <a href=\"//trevor-davis.com/blog/ajax-forms-with-jquery/\">AJAX forms with jQuery</a>, but I thought I would specifically talk about an AJAX script for a contact form.</p><p>First, we want to execute our jQuery when the document is ready and the form was submitted:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  \n  return false;\n });\n});</pre>\n<p>Next, we want to hide any error messages if there are any and validate any required fields which are denoted with a class of <strong>requiredField</strong>:</p><pre>&lt;code&gt;$(\'form#contactForm .error\').remove();\nvar hasError = false;\n$(\'.requiredField\').each(function() {\n   \n});</pre>\n<p>After that, we want to validate that the field is not empty and append an error message if it is:</p><pre>&lt;code&gt;if(jQuery.trim($(this).val()) == \'\') {\n var labelText = $(this).prev(\'label\').text();\n $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n hasError = true;\n}</pre>\n<p>If the field is not empty and also has a class of <strong>email</strong>, we want to validate that the email address is valid:</p><pre>&lt;code&gt; else if($(this).hasClass(\'email\')) {\n var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n if(!emailReg.test(jQuery.trim($(this).val()))) {\n  var labelText = $(this).prev(\'label\').text();\n  $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n  hasError = true;\n }\n}</pre>\n<p>If there are no errors, then we want to replace the submit button with a loading image:</p><pre>&lt;code&gt;if(!hasError) {\n$(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n});</pre>\n<p class=\"note\"><em>Note: You will need to update the source of the image to wherever you upload it in your theme.</em></p><p>Finally, let’s submit the form via an AJAX request, slide the form up, and show a thank you message:</p><pre>&lt;code&gt;var formInput = $(this).serialize();\n$.post($(this).attr(\'action\'),formInput, function(data){\n $(\'form#contactForm\').slideUp(\"fast\", function() {       \n  $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n });\n});</pre>\n<p>Take a look at the entire script:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  $(\'form#contactForm .error\').remove();\n  var hasError = false;\n  $(\'.requiredField\').each(function() {\n   if(jQuery.trim($(this).val()) == \'\') {\n    var labelText = $(this).prev(\'label\').text();\n    $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n    hasError = true;\n   } else if($(this).hasClass(\'email\')) {\n    var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n    if(!emailReg.test(jQuery.trim($(this).val()))) {\n     var labelText = $(this).prev(\'label\').text();\n     $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n     hasError = true;\n    }\n   }\n  });\n  if(!hasError) {\n   $(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n    $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n   });\n   var formInput = $(this).serialize();\n   $.post($(this).attr(\'action\'),formInput, function(data){\n    $(\'form#contactForm\').slideUp(\"fast\", function() {       \n     $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n    });\n   });\n  }\n  \n  return false;\n  \n });\n});</pre>\n<p>Just include it in the head of your document after jQuery, and you are good to go:</p><pre>&lt;code&gt;&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/jquery.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/contact-form.js\"&gt;&lt;/script&gt;</pre>\n<p class=\"note\"><em>Note: You may need to change the source depending upon where you upload the files in your theme.</em></p><h2>Conclusion</h2><p class=\"clearfix\"><a href=\"http://wp.trevor-davis.com/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"//trevor-davis.com/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><p>That’s it! Just upload the files and you’ve got your form. Since you’ve got the code right in front of you, it should be very easy to tweak and add on to. Enjoy!</p><p class=\"ad\">\nCenturyLink Deals: <a href=\"http://www.centurylinkquote.com/bundles.html\">Internet, Phone, &amp; TV Bundles</a></p>',NULL,1900,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','7fe9adc4-75de-4502-a86c-caf9337a8bf8',1,NULL,NULL),(127,132,'Orange You Sorry About Tropicana?',NULL,'<p>Khoi Vinh discusses <a href=\"http://www.subtraction.com/2009/02/24/orange-you-sorry-about-tropicana\">the disastrous Tropicana redesign</a> and wonders if the branding agency behind it, Arnell, did it just for the press. I certainly agree that it was a disaster, as I felt like I was trying to find my orange juice for 5 minutes.</p>','http://www.subtraction.com/2009/02/24/orange-you-sorry-about-tropicana',1899,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:21','58f28708-9938-4027-846b-3a2cfc6294de',1,NULL,NULL),(128,133,'Achieve Your Big Goals With Incremental Persistence',NULL,'<p><a href=\"http://www.devlounge.net/strategy/achieve-your-big-goals-with-incremental-persistence\">Incremental success</a> really helps in working toward your larger goals. I’ve been trying to improve something on my site every day. Recent examples: <a href=\"//trevor-davis.com/work/\">tooltips on my portfolio</a> &amp; <a href=\"//trevor-davis.com/blog/\">better pagination on my blog</a>.</p>','http://www.devlounge.net/strategy/achieve-your-big-goals-with-incremental-persistence',1898,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','f79ac9c9-d322-4d79-8a33-4f3a2bba03f9',1,NULL,NULL),(129,134,'10 tips for efficient design',NULL,'<p>Paul Boag says that “being a good designer is not always enough to survive hard economic times. You need to be efficient too.” With that, he gives us <a href=\"http://boagworld.com/design/10_tips_for_efficient_design/\">10 tips for efficient design</a>. I think #10 should be <em>emphasized</em> and then <strong>emphasized again</strong>; it’s so important!</p>','http://boagworld.com/design/10-tips-for-efficient-design',1877,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','e182de88-c003-42c9-8035-a9c79817ff19',1,NULL,NULL),(130,135,'5 Ways to Instantly Write Better CSS',NULL,'<p>In my most recent article at NETTUTS: <a href=\"http://nettuts.com/tutorials/html-css-techniques/5-tips-to-writing-better-css/\">5 Ways to Instantly Write Better CSS</a>, I share some tips that have helped me to write better CSS.</p>\n\n<p>This is definitely not me trying to tell you to code in a certain way; they are just some tips that I have found to become very useful for myself. I hope you enjoy, and feel free to <a href=\"http://nettuts.com/tutorials/html-css-techniques/5-tips-to-writing-better-css/#add\">share other tips</a>.</p>',NULL,1876,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','91d69150-6188-41ea-a761-fde7042aeb03',1,NULL,NULL),(131,136,'CSS3 Feedback: Selector Blocks',NULL,'<p>Ohh, please make <a href=\"http://meyerweb.com/eric/thoughts/2009/02/12/selector-blocks/\">the ability to do this</a> happen. It would make CSS so much more lightweight and easier to write.</p>','http://meyerweb.com/eric/thoughts/2009/02/12/selector-blocks/',1875,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','0bbea380-50cf-4fbe-87e2-9f69508df70b',1,NULL,NULL),(132,137,'Fixing a Twitter WordPress Plugin with jQuery',NULL,'<p>I use the fantastic <a href=\"http://wordpress.org/extend/plugins/twitter-for-wordpress/\">Twitter for WordPress plugin</a> on my website. Sometimes though, <a href=\"http://twitter.com\">Twitter</a> decides that it doesn’t want to make my tweets available. The plugin has accounted for this, and it displays <strong>No public Twitter messages</strong> when this happens. That kinda sucks though.</p>\n\n<p>It’s definitely nice that the plugin doesn’t throw an error, but I really don’t want that message displayed on my site. So what’s the solution? <strong>jQuery of course</strong>.</p>\n\n<h2>When the Tweet Comes Through</h2>\n<p>Here is the markup that is displayed on my site when a tweet comes through successfully:</p>\n\n<div class=\"codeblock\"><code>\n&lt;div id=\"twitterContainer\"&gt;<br /> &lt;a class=\"twitter-link\" href=\"http://twitter.com/davist11/status/1200405534\"&gt;<br />  I feel like I\'m in an episode of Seinfeld right now.<br /> &lt;/a&gt;<br />&lt;/div&gt; \n\n</code></div>\n\n<h2>When the Tweet Doesn’t Come Through</h2>\n<p>This is what you end up with:</p>\n<div class=\"codeblock\"><code>\n&lt;div id=\"twitterContainer\"&gt;<br /> No public Twitter messages.<br />&lt;/div&gt; \n\n</code></div>\n\n<h2>The jQuery</h2>\n<p>My thinking is that I will check the contents of <strong>div#twitterContainer</strong> to see if it is <strong>No public Twitter messages</strong>. If it is, I think it would be useful to replace that text with a link to <a href=\"http://twitter.com/davist11\">my Twitter account</a> with a message telling people to follow me.</p>\n\n<p>So first, let’s execute the jQuery code when the document is loaded:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> <br />}); \n\n</code></div>\n\n<p>Next, we are going to check and see <strong>if the contents of div#twitterContainer is No public Twitter messages</strong>:\n\n</p><div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> &lt;strong&gt;if(jQuery.trim($(\'div#twitterContainer\').text()) == \'No public Twitter messages.\') {<br />   <br /> }&lt;/strong&gt;<br />}); \n\n</code></div>\n\n<p>Finally, let’s just replace this text with a link to my Twitter feed:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> if(jQuery.trim($(\'div#twitterContainer\').text()) == \'No public Twitter messages.\') {<br />  &lt;strong&gt;$(\'div#twitterContainer\').html(\'&lt;a href=\"http://twitter.com/davist11\" class=\"twitter-link\"&gt;Follow Me on Twitter&lt;/a&gt;\');&lt;/strong&gt;  <br /> }<br />}); \n\n</code></div>\n\n<div class=\"clearfix\">\n<p><img src=\"//trevor-davis.com/images/content/2009/02/twitter-plugin-fixed.jpg\" alt=\"Screenshot of fixed Twitter plugin\" class=\"rightSide frame\" height=\"164\" width=\"150\" /><strong>That’s it</strong>. This is just <a href=\"//trevor-davis.com/blog/tutorial/improving-a-flickr-plugin-with-jquery/\">another example of how I have used jQuery to improve a WordPress plugin on my site</a>.</p>\n\n<p>You can see this in action on my site, or <a href=\"//trevor-davis.com/play/fixing-twitter-plugin/\">take a look at the demo</a>.\n\n</p><p><a href=\"//trevor-davis.com/play/fixing-twitter-plugin/\" class=\"more-link\">See Demo</a></p>\n</div>',NULL,1874,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','0ade46e2-3d73-428e-a72c-59904a45a17a',1,NULL,NULL),(133,138,'No more pixel perfectionism in IE 6',NULL,'<p>I do just like <a href=\"http://www.456bereastreet.com/archive/200902/no_more_pixel_perfectionism_in_ie_6/\">Roger Johansson says</a>: I make sites perfectly usable in IE, but <strong>not necessarily exactly the same</strong>. As long as everything is accessible, it’s good enough for me.</p>','http://www.456bereastreet.com/archive/200902/no_more_pixel_perfectionism_in_ie_6/',1873,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','9e478743-6d24-49c0-a923-c23c1ac9d315',1,NULL,NULL),(134,139,'10 Harsh Truths About Corporate Websites',NULL,'<p>The legendary Paul Boag gives us a <a href=\"http://www.smashingmagazine.com/2009/02/10/10-harsh-truths-about-corporate-websites/\">reality check</a>. While it’s hard to believe, I think I agree with all of them.</p>','http://www.smashingmagazine.com/2009/02/10/10-harsh-truths-about-corporate-websites/',1872,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','58ab0af7-bfa8-4c4a-b9bd-32189656b782',1,NULL,NULL),(135,140,'42 Web Design Companies: Designs That Move Me',NULL,'<p>There are so many <a href=\"http://designmovesme.com/42-web-design-companies/\">web design companies that have amazing websites</a>. I felt inspired after looking through these. Now it’s just a matter of execution…</p>','http://designmovesme.com/42-web-design-companies/',1871,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','adde8f24-c586-4bd3-a134-3e7f53e33000',1,NULL,NULL),(136,141,'Setting Body Ids in Expression Engine',NULL,'<p><a href=\"http://expressionengine.com/\">Expression Engine</a> has become a popular choice to power many sites. I have just begun experimenting with it, and I have been very impressed. One thing that I have been interested in determining was to figure out if I could set an id on the body like I do when building other sites. I have already written one article showing how to do this in <a href=\"//trevor-davis.com/blog/tutorial/set-a-body-id/\">PHP and WordPress</a>, but this will show how to do it dynamically in Expression Engine.</p>\n\n<h2>Why are Body Ids Useful?</h2>\n<p>Body ids can be useful for styling sections differently, displaying certain parts of a dynamic template, displaying current navigation states, and many other things.</p>\n\n<h3>A Simple Example</h3>\n<p>Let’s say that I want to have my font size be 14 pixels, <strong>except on the homepage</strong>. It would be as easy as this:</p>\n\n<div class=\"codeblock\"><code>\nbody { font-size: 14px; }<br />body#home { font-size: 12px; } \n\n</code></div>\n\n<p><strong>Pretty useful.</strong> By using body ids, we now have a unique hook for each section of the website.</p>\n\n<h2>Why not Body Classes?</h2>\n<p>I do utilize body classes as well. I typically use the body id to indicate the section, then other various items for the body classes.</p>\n\n<h3>For Example</h3>\n<p>For my own blog, I have some pages that I want to have a left gutter on it so that I can push images, quotes, etc. into the column. I also have another class that indicates when it is a blog article page. So, I can just continue to use multiple classes on the body to help me control the width and layout of the page.</p>\n\n<p>Here is what the body element looks like on a blog article on my site:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body id=\"blog\" class=\"subpage leftGutter article\"&gt; \n\n</code></div>\n\n<p>The <strong>subpage class</strong> just indicates that it is not the homepage. Not completely necessary since I already have a specific id on the homepage, but it can sometimes become useful.</p>\n\n<p>The <strong>leftGutter class</strong> is used to push the content area to the right and make it narrower. Then, I can pull elements into the left-hand gutter as well.</p>\n\n<p>The <strong>article class</strong> is useful because some of the markup for the blog entry information is the same as the homepage and archive pages. Using this class, I can be more specific with my styles to change the way that these elements are displayed on the blog article page.</p>\n\n<p>I always try and add classes and id attributes as high up in the tree as possible. This let’s me utilize descendant selectors in the CSS without having to add additional classes and ids lower down.</p>\n\n<h2>Setting the Body Id in Expression Engine</h2>\n<p>I want to have complete control over the body id, so I want to be able to have it set dynamically and also be able to set it statically.</p>\n\n<p>So my thought behind this is that first, I want to check to see if the body id was set statically. When I say statically, I mean passing the variable in as an attribute on my embed statement. Next, I will then set the body id dynamically.</p>\n\n<h3>Setting the Id Statically</h3>\n<p>In order to make changes to the overall website structure simpler, I have a header template the sits in the includes template group. So in all of the other template groups, I embed the header on the page:</p>\n\n<div class=\"codeblock\"><code>\n{embed=\"includes/header\"} \n\n</code></div>\n\n<p>Then, if for some reason I want to specifically pass in a body id, I can just change it to this:</p>\n\n<pre><code>{embed=\"includes/header\" <strong>body_id=\"contact-us\"</strong>}</code></pre>\n\n<p>So the first step in the header is to check to see if the <strong>embed:body_id</strong> variable is set:</p>\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{/if}<br />&gt; \n\n</code></div>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<h3>Dynamically Setting the Id</h3>\n<p>If we are not statically setting the body id, we want to then do it dynamically. My thinking is that I will take advantage of Expression Engine’s <a href=\"http://expressionengine.com/docs/templates/globals/url_segments.html\">URL segments</a> to determine which section we are in.</p>\n\n<p>Here is an example of URL segments using the following URL:</p>\n\n<div class=\"codeblock\"><code>\nhttp://ee.trevor-davis.com/index.php/about/me/education/ \n\n</code></div>\n\n<ul><li>Segment 1 = <strong>about</strong></li>\n <li>Segment 2 = <strong>me</strong></li>\n <li>Segment 3 = <strong>education</strong></li>\n</ul><p>Then, we can reference each segment like so:</p>\n\n<ul><li>Segment 1 = <strong>{segment_1}</strong></li>\n <li>Segment 2 = <strong>{segment_2}</strong></li>\n <li>Segment 3 = <strong>{segment_3}</strong></li>\n</ul><p>So basically what we want to do is assign the body id the value of <strong>{segment_1}</strong> if it is not empty. So continuing on our example:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{if:elseif segment_1}<br /> id=\"{segment_1}\"<br />{/if}<br />&gt; \n\n</code></div>\n\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p><strong>But wait, what about the homepage?</strong> The homepage will have nothing for the value of <strong>{segment_1}</strong>, so we can just put in an else statement:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{if:elseif segment_1}<br /> id=\"{segment_1}\"<br />{if:else}<br /> id=\"home\"<br />{/if}<br />&gt; \n\n</code></div>\n\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p>Here is the line of code without any line wrapping:</p>\n<div class=\"codeblock\"><code>\n&lt;body{if embed:body_id} id=\"{embed:body_id}\"{if:elseif segment_1} id=\"{segment_1}\"{if:else} id=\"home\"{/if}&gt; \n\n</code></div>\n\n<p>I created a <a href=\"http://ee.trevor-davis.com/index.php/\">demo Expression Engine site</a> to test this functionality.</p>\n\n<p><a href=\"http://ee.trevor-davis.com/index.php/\" class=\"more-link\">View Demo Site</a></p>\n\n<h2>Walking Through the Demo Site</h2>\n<p>Since we have body ids for each section and an id on each list item in the navigation, I have created the current state for the navigation with a few simple line of CSS:</p>\n<div class=\"codeblock\"><code>\nbody#home ul#primaryNav li#homeNav a,<br />body#about ul#primaryNav li#aboutNav a,<br />body#services ul#primaryNav li#servicesNav a,<br />body#contact-us ul#primaryNav li#contactNav a {<br /> background: #B3602D;<br /> border-top-color: #B3602D;<br /> color: #fff;<br />} \n\n</code></div>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p>I also want to show the sidebar on all of the subpages, so I just need 1 more conditional:</p>\n<div class=\"codeblock\"><code>\n{if embed:body_id || segment_1}<br /> &lt;div id=\"sidebar\"&gt;<br /> &lt;/div&gt;<br />{/if} \n\n</code></div>\n\n<p>This is checking to see if {embed:body_id} or {segment_1} are not empty, and displaying the sidebar if one or both are set.</p>\n\n<p>These are just a few examples of using a body id in Expression Engine, but the possibilities are endless.</p>\n\n<h2>One More Thing</h2>\n<p>Another thing that I was trying to figure out was how to create a variable that I could reuse in multiple embed files. So what I want to do is in my conditional statement, determine that the body id should be and assign it to a variable. Then, I want to be able to access that variable in the footer without have to use the same conditional statement.</p>\n\n<p><strong>Is this possible?</strong> I was messing around with the <strong>{assign_variable}</strong> tag, but that didn’t seem to do the job because it can only be used in the same template. <strong>Anyone know how to do this?</strong> I’m relatively new to Expression Engine, so I am still learning. </p>',NULL,1870,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','61f279f6-5b3e-4d91-a3f3-f7b2302d7db1',1,NULL,NULL),(137,142,'I’m a Weekly NETTUTS Writer',NULL,'<p>As I noted in my <a href=\"//trevor-davis.com/blog/tutorial/exactly-how-to-create-a-custom-jquery-accordion/\">last post</a>, I submitted a tutorial to <a href=\"http://nettuts.com/\">NETTUTS</a> to be considered as a weekly writer. I am very happy to announce that <strong>they chose me</strong>!</p>\n<p>In my second article, <a href=\"http://nettuts.com/tutorials/javascript-ajax/creating-a-filterable-portfolio-with-jquery/\">Creating a “Filterable” Portfolio with jQuery</a>, I take a look at creating a portfolio that can be filtered by category.</p>\n\n<p>This tutorial was kind of inspired by the effect that I created on <a href=\"http://www.matrixgroup.net/portfolio/\">my company’s portfolio</a>.</p>\n\n<h2>How will this effect my web site?</h2>\n<p>Yes, I am not going to be able to write articles as frequently on my blog, but I am still going to be posting some articles. I will also post a note each week discussing my weekly NETTUTS article.</p>\n<p>I hope you all enjoy the articles.</p>',NULL,1869,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','ad226786-e863-4cef-abed-38dc76698526',1,NULL,NULL),(138,143,'Twitter Chatter During the Super Bowl',NULL,'<p>The New York Times created an <a href=\"http://www.nytimes.com/interactive/2009/02/02/sports/20090202_superbowl_twitter.html\">interactive information graph of tweets during the super bowl</a>. I love how at halftime, there was an explosion of Springsteen tweets.</p>','http://www.nytimes.com/interactive/2009/02/02/sports/20090202_superbowl_twitter.html',1868,NULL,'2014-01-19 12:58:15','2020-03-18 20:03:22','0ebf80fc-09dd-4a12-b5c8-4ece048c5b78',1,NULL,NULL),(139,144,'WebAIM screenreader survey…the results are in',NULL,'<p><a href=\"http://www.webstandards.org/2009/01/31/webaim-screenreader-survey-results/\">The WebAIM screenreader survey results are in</a>. Not surprisingly: 76% of users always or often navigating by headings; 72% of screen reader users reported that Flash is very or somewhat difficult.</p>','http://www.webstandards.org/2009/01/31/webaim-screenreader-survey-results/',1867,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:22','59b07315-6322-4ca8-9dbe-f3d59aa8e235',1,NULL,NULL),(140,145,'How we reduced chargebacks by 30%',NULL,'<p>Jason Fried discusses <a href=\"http://www.37signals.com/svn/posts/1545-how-we-reduced-chargebacks-by-30-as-a-percentage-of-sales\">how they reduced chargebacks by 30%</a>. My favorite part of this is how 37Signals determines the problem and quickly finds the simple solution to it.</p>','http://37signals.com/svn/posts/1545-how-we-reduced-chargebacks-by-30-as-a-percentage-of-sales',1866,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:22','0684a472-b081-44c6-8989-3c5519f0931d',1,NULL,NULL),(141,146,'Sprite Optimization',NULL,'<p>Dave Shea is <a href=\"http://mezzoblue.com/archives/2009/01/27/sprite_optim/\">starting to notice the use of huge CSS Sprites</a>. I think I am in his state of mind: optimize when possible, but I’m not too interested in making one of those huge sprites.</p>','http://mezzoblue.com/archives/2009/01/27/sprite_optim/',1865,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:22','49085ee9-4c51-46f2-a71c-b90b2a174117',1,NULL,NULL),(142,147,'My First WordPress Plugin',NULL,'<p>In a recent project at work, I had to integrate WordPress and bbPress. It proved to be a little more difficult than I anticipated, and I had to write my first WordPress plugin: <a href=\"http://wordpress.org/extend/plugins/add-bbpress-default-role/\">Add bbPress Default Role</a>.</p>','http://wordpress.org/extend/plugins/add-bbpress-default-role/',1864,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:22','282f9d71-d742-4363-92e7-0a3239b27964',1,NULL,NULL),(143,148,'Exactly How to Create a Custom jQuery Accordion',NULL,'<p>Yesterday, I saw that <a href=\"http://nettuts.com/articles/news/a-staff-writer-position-has-opened/\">NETTUTS was looking for another staff writer</a>. I figured that I would give it a shot and write a tutorial about creating a custom jQuery accordion (just like the one on the sidebar of my website). Well what do you know, <a href=\"http://nettuts.com/tutorials/javascript-ajax/exactly-how-to-create-a-custom-jquery-accordion/\">they published it</a>.</p>','http://net.tutsplus.com/tutorials/javascript-ajax/exactly-how-to-create-a-custom-jquery-accordion/',1863,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','19c2f4c7-7f47-42f4-99e3-f2d3a2426205',1,NULL,NULL),(144,149,'A List Apart: Issue 276',NULL,'<p><a href=\"http://www.alistapart.com/issues/276\">This issue</a> focuses around one of the biggest problems in web development: education, or lack thereof. I know I would have loved to actually go to school for web development.</p>','http://www.alistapart.com/issues/276',1862,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','baef789a-3fc2-4c89-8caa-9eab9027e2e7',1,NULL,NULL),(145,150,'Design Share, an Event Series',NULL,'<p>Viget’s write up about the <a href=\"http://www.viget.com/inspire/design-share-event-series/\">design share event</a> that I attended and <a href=\"//trevor-davis.com/blog/news/design-share/\">summarized</a>. This one with video!</p>','http://www.viget.com/inspire/design-share-event-series/',1861,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','3b7e3d52-576d-47ea-9897-58d7a416877e',1,NULL,NULL),(146,151,'Web Development Project Estimator',NULL,'<p>“<a href=\"http://estimator.astuteo.com/\">A simple tool</a> that allows web designers and site developers to quickly and thoroughly estimate the time and materials required for a proposed web project.” Yes, all of this could be accomplished through other programs, but this is a pretty nice interface.</p>','http://estimator.astuteo.com/',1860,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','c85892b3-4bd5-437d-a9dc-0513fa9c002d',1,NULL,NULL),(147,152,'Use jQuery to Enhance your WordPress Comment Form',NULL,'<p>I have already completed a couple of tutorials on forms and jQuery (<a href=\"//trevor-davis.com/blog/tutorial/ajax-forms-with-jquery/\">Ajax Forms with jQuery</a> and <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">Flexible and Semantic Forms with a Little jQuery</a>), but I wanted to show another example of using a simple jQuery script to enhance functionality. This example will be about the comment form on a WordPress powered site.</p>\n\n<p><img src=\"//trevor-davis.com/images/content/2009/01/wordpress-validation.gif\" alt=\"WordPress Validation Screenshot\" width=\"330\" height=\"106\" class=\"leftSide pullLeft col6 frame\" />Depending upon your configuration, WordPress will validate the comment form for required fields. In my configuration, I want to make sure that users fill in their name and email address If you submit my comment form without those, WordPress will perform server side validation.</p>\n\n<p>But, do you really want users to see this error page? <strong>Wouldn’t it be so much better if we used to JavaScript to validate on the client side so that they never have to leave the form</strong>?</p>\n\n<p>I think so. Before we get started, I created <a href=\"//trevor-davis.com/play/wordpress-comment-form/\">a sample of the WordPress comment form</a>.</p>\n\n<p><a href=\"//trevor-davis.com/play/wordpress-comment-form/\" class=\"more-link\">See Example Page</a></p>\n\n<h2>Creating the Markup</h2>\n<p>I have tweaked my markup somewhat from the default WordPress comment form, so you will need to make changes to account for your markup. Here is the markup for my form:</p>\n\n<div class=\"codeblock\"><code>\n&lt;form action=\"#\" method=\"post\" id=\"commentform\"&gt;<br /> &lt;p class=\"required\"&gt;* Denotes Required Field&lt;/p&gt;<br /> &lt;ol class=\"forms\"&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"author\"&gt;Name &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;input type=\"text\" class=\"requiredField\" name=\"author\" id=\"author\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"email\"&gt;E-Mail &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;input type=\"text\"  class=\"requiredField\" name=\"email\" id=\"email\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"url\"&gt;Website&lt;/label&gt;<br />   &lt;input type=\"text\" name=\"url\" id=\"url\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"textarea\"&gt;<br />   &lt;label for=\"comment\"&gt;Comments &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;textarea  class=\"requiredField\" name=\"comment\" id=\"comment\" cols=\"100%\" rows=\"10\"&gt;&lt;/textarea&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"subscribe-to-comments\"&gt;<br />   &lt;input type=\"checkbox\" name=\"subscribe\" id=\"subscribe\" value=\"subscribe\"  /&gt;<br />   &lt;label for=\"subscribe\"&gt;Notify me of followup comments via e-mail&lt;/label&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"buttons\"&gt;<br />   &lt;button type=\"submit\" name=\"submit\" id=\"submit\"&gt;Add Comment &amp;raquo;&lt;/button&gt;<br />  &lt;/li&gt;<br /> &lt;/ol&gt;<br />&lt;/form&gt; \n\n</code></div>\n\n<p>I don’t think there is much that I need to discuss about that markup; it is pretty standard. The only thing to mention is the class name of <strong>requiredField</strong> on the form fields that I want to be required. <em>Note: I also removed the action on the form so that the sample form cannot really be submitted to the database.</em></p>\n\n<h2>The jQuery</h2>\n<p>I of course am going to show this example using jQuery, but you could create something comparable with any other JavaScript library or just with some plain old JavaScript.</p>\n\n<p>Once the document is loaded, let’s start by adding a function for when the comment form is submitted:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br /> &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Next, we want to remove any errors if they are showing, and create a flag that will let us know if an error has occured:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  &lt;strong&gt;$(\'form#commentform .error\').remove();<br />  var hasError = false;&lt;/strong&gt;<br />  &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Ok, here is where we really start to do some coding. I want to take each form field that has a class of <strong>requiredField</strong>, check to see if it is empty, copy the name of the label (<em>and remove the required asterisk</em>), traverse to the parent list item, and append the error message. Here is where we will also set the hasError flag so that we know an error has occurred:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  $(\'form#commentform .error\').remove();<br />  var hasError = false;<br />  &lt;strong&gt;$(\'.requiredField\').each(function() {<br />   if(jQuery.trim($(this).val()) == \'\') {<br />    var labelText = $(this).prev(\'label\').text().replace(\' *\',\'\');<br />    $(this).parent().append(\'&lt;span class=\"error\"&gt;\'+labelText+\' is a required field.&lt;/span&gt;\');<br />    hasError = true;<br />   }<br />  });&lt;/strong&gt;<br />  &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Finally, you want to check the <strong>hasError</strong> variable to determine whether or not you should submit the form to the server:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  $(\'form#commentform .error\').remove();<br />  var hasError = false;<br />  $(\'.requiredField\').each(function() {<br />   if(jQuery.trim($(this).val()) == \'\') {<br />    var labelText = $(this).prev(\'label\').text().replace(\' *\',\'\');<br />    $(this).parent().append(\'&lt;span class=\"error\"&gt;\'+labelText+\' is a required field.&lt;/span&gt;\');<br />    hasError = true;<br />   }<br />  });<br />  &lt;strong&gt;if(hasError) {<br />   return false;<br />  }&lt;/strong&gt;<br /> });<br />}); \n\n</code></div>\n<p class=\"note\"><em>Note: The end of the script is slightly different on the example form because I did not want to actually submit the form.</em></p>\n\n<h2>Conclusion</h2>\n<p>Just another simple example of how we can improve the user experience by using jQuery. Like usual, there are jQuery plugins out there that can do the same thing, but I think it is important to understand how to do things yourself. Plus, that is only 17 lines of JavaScript compared to much, much more for a plugin.</p>\n\n<p>Anyone have any ideas on how to improve the script?</p>',NULL,1859,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','348eacd3-df24-4329-a589-f9b0ba1abae3',1,NULL,NULL),(148,153,'CSS Testing of Selectors and Pseudo Selectors',NULL,'<p><a href=\"http://kimblim.dk/css-tests/selectors/\">A list of selectors and their supported browsers</a>. There seems to be a trend of the non-supported ones…</p>','http://kimblim.dk/css-tests/selectors/',1858,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','f01ea5c6-e499-40c2-a954-6110db5f423c',1,NULL,NULL),(149,154,'The State of the Web 2008',NULL,'<p>The <a href=\"http://www.webdirections.org/the-state-of-the-web-2008/\">detailed report from the State of the Web Survey</a> has been compiled. Wow, 62% of the people using JavaScript libraries are using jQuery; I love it.</p>','http://www.webdirections.org/the-state-of-the-web-2008/',1857,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','cb713748-099b-44fa-a420-a9dc9be91675',1,NULL,NULL),(150,155,'Design Share',NULL,'<p>I had the pleasure of being invited to <strong>Design Share</strong> at <a href=\"http://viget.com/\">Viget Labs</a> Wednesday night. The idea of the event was that 6 presenters would each give a 5 minute presentation on design, and then there was a question and answer period. It was especially great since I am not really a designer. Always great to learn new things.</p>\n\n\n<h2><a href=\"http://www.brian-talbot.com/\" class=\"inline\">Brian Talbot</a> National Geographic</h2>\n<p>Brian started the night off by discussing the process of bringing the National Geographic <a href=\"http://www.thegreenguide.com/\">Green Guide</a> online. It was quite an undertaking since they were taking a print publication and creating a supporting website.</p>\n<p>Usually, something gets lost in translation going from print to the web. So, they wanted to still have these <strong>interesting layouts and help tie in the site to the printed collateral</strong>. They also wanted to get the community involved in providing information and commentary.</p>\n\n<p>I think a lot of the screenshots that he showed us are not in production yet, but they looked great. There were charts, information organization in a sensible manor, and nice simple layouts.</p>\n\n<h2><a href=\"http://www.thirstyinteractive.com/\" class=\"inline\">Jay Moore</a> Thirsty Interactive</h2>\n<p>Next, Jay discussed his “<strong>Papa Bear, Mama Bear, &amp; Baby Bear</strong>” approach to mood boards. The example he used was from his experience in building the mood boards for the <a href=\"http://www.bered.com/\">AOL Red</a> redesign.</p>\n\n<h3>Papa Bear Mood Board</h3>\n<p>This is the “safety” board. It’s comfortable because it was similar to the previous design. They wanted to show that they incorporated elements to meet the goals of the project.</p>\n\n<h3>Mama Bear Mood Board</h3>\n<p>With this board, they do not expect it to be chosen. It’s edgier and purposely a little bit too far over the top. The idea of this board is that it will help to generate thought and ideas.</p>\n\n<h3>Baby Bear Mood Board</h3>\n<p>This board is kind of the best of the Mama &amp; Papa bear boards. It is that happy medium. It has the familiar feel of the Papa bear board, but that edginess that will help to cater to the teen audience.</p>\n\n<p>Of course, the final decision was to use elements from each board.</p>\n\n<p>The most interesting part of this talk was that <strong>real design elements were actually worked into the mood boards</strong>. I haven’t seen too many mood boards, but all of the ones I had seen were very abstract. This was a nice change.</p>\n\n<h2><a href=\"http://www.ericlohman.com/\" class=\"inline\">Eric Lohman</a> AKQA</h2>\n<p>Eric had the opportunity to help re-brand and redesign the <a href=\"http://www.nhl.com/\">NHL</a> website. Before his company was involved, the NHL had no real brand; they had all of these different banners with different treatments of their logo. They helped to standardize the logo and provide a simple system for expanding it.</p>\n\n<p><img src=\"//trevor-davis.com/images/content/2009/01/nhl-team-logos.gif\" alt=\"NHL Team Logos\" width=\"220\" height=\"220\" class=\"leftSide pullLeft col4\" />So AKQA developed mood boards, and <strong>the entire design concept was inspired by one image: black ice</strong>. This is where the dark concept came from. It really gives the site a sleek look, and it makes the large action shots really pop.</p>\n\n<p>Another difficult task that they encountered was dealing with the teams logos. They were all odd shaped and nothing tied them all together. They decided to do some intense cropping to gain consistency between the logos.</p>\n\n<p>Finally, Eric talked about adding more interactivity to the site. You can see game highlights, watch games live, and even look through an enormous photo gallery. The new NHL site is a tremendous design success.</p>\n\n<h2><a href=\"http://caviarfrenchfries.tumblr.com/\" class=\"inline\">Ari Kushimoto</a> CaviarFrenchFries </h2>\n<p>Ari was tasked with developing 3 mood boards for an intranet that had a Web 2.0 feel (yuck, I hate saying that). Of course she had a tight deadline. This is where she found that her bookmarking service really paid off. <strong>All of that time she spent bookmarking cool sites and ideas really paid off and saved time</strong>.</p>\n\n<p>She took screenshots, organized into different folders, and then got started on the mood boards. She setup a consistent grid for the boards, and this made it easier to swap things in and out.</p>\n\n<p>There was some good discussion afterward about good tools that help to organize screenshots: <a href=\"http://www.realmacsoftware.com/littlesnapper/\">LittleSnapper</a> and <a href=\"http://derailer.org/paparazzi/\">Paparazzi</a></p>\n\n<h2><a href=\"http://www.robsoule.com/\" class=\"inline\">Rob Soulé</a> Viget Labs</h2>\n<p>Rob talked about the Viget design process. The project begins by sending a couple of surveys to the client. The surveys ask some abstract questions like “What kind of car would your company be” and “What magazine(s) describe your company”. These surveys help the client to focus on their thoughts of their brand and <strong>help to give the designers a better idea of what the client is looking for</strong>.</p>\n\n<p>Once a project is ready to be designed, a lead designer is assigned the project, and they sit down with 2 other designers. They discuss 3 directions that they want to go in and discuss elements that they want to include in the mood boards. While this is going on, the user experience designer is working on the wireframes.</p>\n\n<p>One thing that I thought was really interesting was that they discuss specific elements to add to the mood boards. So for example, a submit button for a form, a headline, and the navigation. While sometimes they also do abstract mood boards, I think <strong>it seems more useful to real elements</strong> that you would see on a site.</p>\n\n<h2><a href=\"http://sixtwothree.org/\" class=\"inline\">Jason Garber</a> Mixx</h2>\n<p>When Jason used to work at AOL, he was involved in creating <a href=\"http://ficlets.com/\">Ficlets</a> which is basically an online community for short story writers. It became popular relatively quickly, and they had a solid community. A few years later…Jason and the others who helped to create Ficlets no longer work at AOL, and suddenly, AOL decided they are going to shut down Ficlets.</p>\n<p>It is not really clear what the reasoning is, basically AOL just sucks. Well, Jason and the others who created it didn’t want the site to go away. It was successful and had a solid community. So Jason and friends decided to basically recreate it.</p>\n<p>This is quite an opportunity for anyone creating a website. <strong>They were able to examine the way that users were using Ficlets and found some ways to improve it</strong>. They are facing some tough decisions trying to determine what to do with past Ficlets’ stories and the community. Somehow, they need to transport the community from Ficlets to <a href=\"http://ficly.com/\">Ficly</a>, which will be the new home starting on January 15th.</p>\n\n<h2>Conclusion</h2>\n<p>It was very interesting to hear about the process and experience of so many talented people. I think the format of the 5 minute presentation also helped to focus the discussion. All in all, it was a good time.</p>',NULL,1856,NULL,'2014-01-19 12:58:16','2020-03-18 20:03:23','b3733917-2868-42f0-87b8-7f52fa2efc3c',1,NULL,NULL),(151,156,'Jason Santa Maria is Leaving Happy Cog',NULL,'<p>Probably my favorite designer out there right now <a href=\"http://jasonsantamaria.com/articles/leaving-happy-cog/\">is going freelance</a>. Hey Jason, want to come work at my company instead?</p>','http://jasonsantamaria.com/articles/leaving-happy-cog/',1855,NULL,'2014-01-19 12:59:09','2020-03-18 20:03:23','a869ba8e-cfca-4220-8ae0-3c14af7e3420',1,NULL,NULL),(152,157,'A Plea for WordPress Help',NULL,'<p>I love using WordPress to power websites.</p>\n\n<p>While it began strictly as a blogging platform, it has evolved into a pretty solid CMS, but there is one little thing that has been bugging me for a while now.</p>\n\n<p>With the launch of my redesigned site, I was interested in using the <a href=\"http://wordpress.org/extend/plugins/wp-pagenavi/\">WP-PageNavi plugin</a> because I think it provides much better paging than the default WordPress previous/next.</p>\n\n<p>The problem is that WordPress includes <strong>/category/</strong> in the URL, and I hate it. For example, on my <a href=\"//trevor-davis.com/blog/\">blog page</a>, you can click the older entries link at the bottom of the content area, and you can see that the link points to here:</p>\n<div class=\"codeblock\"><code>\n//trevor-davis.com/blog/page/2/ \n\n</code></div>\n\n<p>But, you will notice that you actually get redirected to:</p>\n<div class=\"codeblock\"><code>\n//trevor-davis.com/category/blog/page/2/ \n\n</code></div>\n\n<p>I had to do this because <a href=\"//trevor-davis.com/blog/page/2/\">/blog/page/2/</a> returned a 404 error. You can see this by going <a href=\"//trevor-davis.com/blog/page/3/\">directly to the third page</a>.</p>\n\n<h2>Some Suggested Fixes</h2>\n<p>I read through <a href=\"http://wordpress.org/extend/ideas/topic.php?id=359\">a couple</a> of <a href=\"http://wordpress.org/support/topic/98005\">forum posts</a>  discussing the problem, but none of the fixes mentioned seemed to work.</p>\n<p>The most discussed suggestion was to change the category base permalink to <strong>/.</strong>, but that did not work for me. Surprisingly, some people said it worked for them. That was pretty bizarre to me, so I kept looking.</p>\n<p>Another suggestion was to edit a core WordPress file, which I do not want to do.</p>\n\n<h2>Plugins to Fix the Problem?</h2>\n<p>I came across 3 plugins that were supposed to fix the problem, but none of them worked for me either.</p>\n<ul><li><a href=\"http://wordpress.org/extend/plugins/top-level-cats/\">Top Level Categories</a></li>\n <li><a href=\"http://wordpress.org/extend/plugins/decategorizer/\">Decategorizer</a></li>\n <li><a href=\"http://www.brianshoff.com/wordpress/category-base-removal-plugin.htm\">Category Base Killer</a></li>\n</ul><h2>My Idea</h2>\n<p>So I am not the greatest with regular expressions and htaccess and all that jazz, but my thinking is that I can use the <a href=\"http://wordpress.org/extend/plugins/redirection/\">Redirection plugin</a> to use a pass-through to rewrite any link like this:</p>\n<div class=\"codeblock\"><code>\n/blog/page/(*)/ \n\n</code></div>\n<p>To this:</p>\n<div class=\"codeblock\"><code>\n/blog/page/$1/ \n\n</code></div>\n\n<p><em>Is that not possible?</em> I could not get it to work. Does anyone know how to get something like this to work? <strong>WordPress team, why has this been a problem for so long?</strong></p>',NULL,1854,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','5a5abf76-efc2-4de8-b468-d4f51baf23c9',1,NULL,NULL),(153,158,'Tabinta',NULL,'When editin<p>g stuff in WordPress, I was always so annoyed that I could not tab in the textareas. <a href=\"https://addons.mozilla.org/en-US/firefox/addon/3955/\">Tabinta</a> Firefox plugin to the rescue.</p>','https://addons.mozilla.org/en-US/firefox/addon/3955/',1853,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','9e8c2a32-448a-4f27-a03f-2660db523470',1,NULL,NULL),(154,159,'Design Decisions: The new Highrise signup chart',NULL,'<p><a href=\"http://www.37signals.com/svn/posts/1496-design-decisions-the-new-highrise-signup-chart\">Jason Fried discusses the many design iterations</a> for the Highrise signup chart. <a href=\"http://www.highrisehq.com/signup\">What they ended up with</a> is very appealing and accomplishes they goals they seemed to set out.</p>','http://37signals.com/svn/posts/1496-design-decisions-the-new-highrise-signup-chart',1852,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','89ae4c3c-01e3-45fb-b11f-8ee5c1181ebe',1,NULL,NULL),(155,160,'WordPress Cheat Sheet',NULL,'<p>This <a href=\"http://wpcandy.com/articles/tutorials/the-wordpress-help-sheet.html\">WordPress cheat sheet</a> seems like it could be pretty useful. I think there are some important functions that are left off though, and it’s definitely geared more towards beginners.</p>','http://wpcandy.com/articles/tutorials/the-wordpress-help-sheet.html',1851,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','45eac9c5-4da7-49b1-9d3d-68566b73474b',1,NULL,NULL),(156,161,'WordPress Art Direction Plugin',NULL,'<p>Inspired by <a href=\"http://jasonsantamaria.com/\">Jason Santa Maria’s “art directed” site</a>, Noel Jackson decided to create an <a href=\"http://noel.io/wordpress-art-direction-plugin/\">art direction plugin for WordPress</a>, which allows you to add per post styling. Interesting.</p>','http://noel.io/wordpress-art-direction-plugin/',1850,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','98f6f00c-b0d2-4cb6-92af-dca8834f9030',1,NULL,NULL),(157,162,'Jeffrey Zeldman: Understanding Web Design',NULL,'<p>A video of <a href=\"http://www.aiga.org/content.cfm/video-gain-2008-zeldman\">Jeffrey Zeldman presenting his talk on Understanding Web Design</a>. I saw this presentation at <a href=\"//trevor-davis.com/blog/web/an-event-apart-chicago/\">An Event Apart</a>, and I am still amazed at how great of a speaker he is.</p>','http://www.aiga.org/content.cfm/video-gain-2008-zeldman',1849,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','1313a274-b13a-4467-9385-72ff7c462b21',1,NULL,NULL),(158,163,'Google pushing users away from IE?',NULL,'<p>When users use <a href=\"http://www.techradar.com/news/internet/google-pushing-users-away-from-ie--496216\">Gmail in Internet Explorer</a>, a red link appears at the top right of the page that says “Get faster Google Mail”. The link takes you to a <a href=\"http://mail.google.com/support/bin/answer.py?&amp;answer=107906&amp;hl=en-GB\">page suggesting faster browsers</a>. Love it.</p>','http://www.techradar.com/news/internet/google-pushing-users-away-from-ie--496216',1848,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','19ac4cb2-8e3b-4c1c-8254-d857bb2e5e04',1,NULL,NULL),(159,164,'The Death Throes of Print?',NULL,'<p>Jason Santa Maria wonders if <a href=\"http://jasonsantamaria.com/articles/the-death-throes-of-print/\">print really is nearing its death</a>. I still can’t imagine reading a book online though.</p>','http://jasonsantamaria.com/articles/the-death-throes-of-print/',1847,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','f5765a87-efc9-447b-9a0f-9ae162638d0a',1,NULL,NULL),(160,165,'Using jQuery Clone',NULL,'<p>I love how I can use jQuery to solve all of my problems. When I was working on a website for <a href=\"http://www.thenationaltree.org/\">The Lighting of the National Christmas Tree</a>, I had to create a page that displayed all of the ornaments. Thank god for the jQuery <a href=\"http://docs.jquery.com/Manipulation/clone\">clone()</a> method, which saved me loads of time and effort.</p>\n\n<h2>The Situation</h2>\n<p>I was on a tight deadline, and had to figure out some way to layout all of the state ornaments. Not to mention the fact that I had to crop and resize 56 images to 2 different sizes. Yes, I know there are only 50 states, but the US territories were included as well.</p>\n<p>So the layout had to be easy enough for everyone to see all the ornaments and be able to click to get a more detailed photo and some information about the ornament. I really was not interested in creating 56 separate pages with information about each ornament, so I went scouring through the jQuery documentation to see how I could copy elements.</p>\n<p>Before I get started describing what I had to do, <a href=\"//trevor-davis.com/play/using-jquery-clone-for-a-lightbox/\">here is a demo page that I created</a>.</p>\n<h2>My Solution</h2>\n<p>So basically, this is what I wanted to happen when an ornament was clicked:</p>\n<ol><li>Get the source of the larger image to be shown</li>\n<li>Copy the description text about the ornament</li>\n<li>Append the image and text and open it in a modal window</li>\n</ol><p>The styling of the example is nothing special, so I will stick to explaining the script.</p>\n<h3>The Script</h3>\n<p>First, we want all of this to happen after the document is loaded and when the ornament links are clicked:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul.ornaments a\').click(function() {<br />  return false;<br /> });<br />}); \n\n</code></div>\n<p>Next, we want to setup the modal window with a couple of empty divs: <em>(Note: line breaks added for readability)</em></p>\n<div class=\"codeblock\"><code>\n$(\'body\').append(\'&lt;div id=\"overlay\"&gt;&lt;/div&gt;<br /> &lt;div id=\"modal\"&gt;<br />  &lt;div id=\"modalInner\"&gt;<br />   &lt;a href=\"#\" id=\"close\" title=\"Close\"&gt;Close&lt;/a&gt;<br />   &lt;div id=\"modalImageColumn\"&gt;&lt;/div&gt;<br />   &lt;div id=\"modalTextColumn\"&gt;&lt;/div&gt;<br />   &lt;div class=\"clearing\"&gt;&lt;/div&gt;<br />  &lt;/div&gt;<br /> &lt;/div&gt;\'); \n\n</code></div>\n<p>Since IE6 doesn’t support fixed positioning, we need to get the actual height of the page so we can apply that height to the overlay:</p>\n<div class=\"codeblock\"><code>\nif($.browser.msie &amp;&amp; $.browser.version &lt;= 6.0) {<br /> var windowHeight = $(document).height();<br /> $(\'#overlay\').height(windowHeight);<br />} \n\n</code></div>\n<p>Next, we set the opacity of the overlay, start to fade it in, position the modal window, and start to fade it in.</p>\n<div class=\"codeblock\"><code>\n$(\'#overlay\').css(\'opacity\', 0.5).fadeIn(\'fast\');<br />$(\'#modal\').fadeIn(\'slow\');  <br />var scrollPos = $(window).scrollTop() + 50;  <br />$(\'div#modal\').css(\'top\',scrollPos+\'px\'); \n\n</code></div>\n<p>The order of these things can be moved around some, but this is what I ended up doing, and everything looked good.</p>\n<p>Next, we want to close and remove the modal window when the close button is clicked or the background overlay is clicked:</p>\n<div class=\"codeblock\"><code>\n$(\'div#modal a#close,div#overlay\').bind(\'click\', function() {<br /> $(\'div#modal\').fadeOut(\'fast\',function() {<br />  $(\'div#overlay\').fadeOut(\'fast\',function() {<br />   $(this).remove();          <br />  });<br />  $(this).remove();          <br /> });<br /> return false;<br />}); \n\n</code></div>\n<p>Next, we grab the url of the link that was clicked, which goes to the full size image, and append the image to the modal window. Once the image has been loaded, we fade it in:</p>\n<div class=\"codeblock\"><code>\nvar imgUrl = $(this).attr(\'href\');<br />$(\'div#modalImageColumn\').append(\'&lt;img src=\"\'+imgUrl+\'\" alt=\"\" class=\"frame\" height=\"400\" id=\"ornament\" width=\"400\" /&gt;\');<br />$(\'img#ornament\').load(function() {<br /> $(this).fadeIn();        <br />}); \n\n</code></div>\n<p>Finally, we get to use the clone() method. We target the div with the class of <strong>stateDescription</strong> that is a sibling of the link we clicked, clone it, and append it to the modal window:</p>\n<div class=\"codeblock\"><code>\n$(this).siblings(\'.stateDescription\').clone().appendTo(\'div#modalTextColumn\'); \n\n</code></div>\n<h2>Conclusion</h2>\n<p>Pretty cool stuff if I say so myself. I don’t think there are any jQuery plugins out there that would have helped me achieve this, which is why it is important to actually understand jQuery.</p>\n\n<p><a href=\"//trevor-davis.com/play/using-jquery-clone-for-a-lightbox/\" class=\"more-link\">See Demo</a></p>\n\n<p><a href=\"//trevor-davis.com/images/content/2008/12/modal.js\">Here is the full script to download</a>. You can also take a look at the <a href=\"http://www.thenationaltree.org/visit-santa/pathway-of-peace/\">final product on the National Christmas Tree site</a>.</p>\n\n<p>But, I would encourage you to actually understand jQuery instead of just grabbing code and using it.</p>',NULL,1846,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','2f3a2f46-66e3-4416-ba3b-1559772c242d',1,NULL,NULL),(161,166,'Version 3 Launched',NULL,'<p>Well, I finally think my redesign is good enough for the public eye. There are definitely some tweaks that I need to make, but it’s good enough for now.</p>\n\n<p>I plan on tweaking stuff for the rest of the week and doing some clean up on some of the older articles.</p>\n\n\n<p>This goal of this design was to adhere to a very strict grid, and I used the 16 column <a href=\"http://960.gs/\">960 grid</a>.</p>\n\n<p><a href=\"//trevor-davis.com/blog/news/version-3-launched/?grid=true\" class=\"viewGrid more-link\">View Grid</a> <em>(click on the grid to remove it)</em></p>\n\n<p>I also wanted to have a stronger focus on some of the things that I can do with jQuery. Check out the accordion and recent work in the sidebar and the comments on the blog articles.</p>\n\n<p>Well, that is enough for now. I’m sure I will have more to talk about later, but I have to run. Please give me your feedback. I by no means call myself a designer, which is why I tried to go simplistic.</p>',NULL,1845,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','128ca9e0-99a6-40e5-986e-31c51e98c005',1,NULL,NULL),(162,167,'A List Apart: Issue 274',NULL,'<p><a href=\"http://www.alistapart.com/issues/274\">This issue</a> has 2 excellent articles focused on content strategy. “A website without a content strategy is like a speeding vehicle without a driver.”</p>','http://www.alistapart.com/issues/274',1844,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','0f035c1a-67e2-407c-bfb1-1c4e9650e5c1',1,NULL,NULL),(163,168,'Redesign',NULL,'<p>Just a quick note to everyone that I am planning on launching my redesign tomorrow at some point. Some things are defintely going to need some clean up after launch, but I just feel like it is at a point where small things shouldn’t hold it up.</p>\n\n<p>So if something looks broken, I will be fixing it soon.</p>',NULL,1843,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:23','decaf6b5-7cf5-4ad2-8f24-0ea5e4ab781d',1,NULL,NULL),(164,169,'Weekly Link Round-Up #59',NULL,'<p>Nice, 2 days off this week, so hopefully I will be able to get my redesign finished up. Here are a few interesting links from this past week:</p>\n<ul><li><a href=\"http://cameronmoll.com/archives/2008/12/four_resources_when_starting_a_project/\">Four resources to consider when starting a project</a>\n<p class=\"last\">Cameron gives a nice list of resources to use before starting a project:</p>\n<ol><li>Precedent: Who’s done it already and how?</li>\n<li>External data.</li>\n<li>Internal data &amp; knowledge.</li>\n<li>Educated guesses.</li>\n</ol></li>\n<li><a href=\"http://www.maxdesign.com.au/2008/12/12/sign-in/\">Sign in, register, join?</a>\n<p>This is a really interesting collection of data. What terms are used for new and existing users? Another interesting thing that I found was people using “Login” vs. “Log in”.</p>\n</li>\n<li><a href=\"http://visitmix.com/Articles/Web-Standards-Where-the-ROI-is\">Web Standards: Where the ROI is</a>\n<p>Sometimes it’s hard to sell web standards to people, but Molly gives some excellent points to help back us up.</p>\n</li>\n</ul>',NULL,1842,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','f51f15df-7727-4581-bf2f-ee4c7851815f',1,NULL,NULL),(165,170,'Unobtrusive JavaScript Print Link (with jQuery)',NULL,'<p>There are times when I have to implement designs that have print links on them. While I may think they are useless, I still have to make them work as they are a part of an approved comp. Sure, it is easy to have a link and then add an onclick event to launch the print window, but is that the right thing to do?</p>\n\n<p>Clicking a JavaScript print link does nothing more than launch the browser’s print window. If a person has JavaScript disabled, nothing will happen when they click a link like this:</p>\n<div class=\"codeblock\"><code>\n&lt;a href=\"#\" onclick=\"window.print(); return false;\"&gt;Print&lt;/a&gt; \n\n</code></div>\n\n<p>Ideally, we do not want to have things on a page that do not work without JavaScript enabled. So the solution is to write the print link into the DOM using JavaScript, then attach a click event to the link. Luckily, I use jQuery on every project, so it makes the process much easier.</p>\n\n<h2>The Solution</h2>\n<p>In this example, we are going to prepend a list item with a link to an unordered list with the id of <strong>tools</strong>. Then, we attach a click event to the link we have just added to the DOM. Finally, we <strong>return false</strong> to override the action of the link.</p>\n\n<p><strong>Here is the script:</strong></p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul#tools\').prepend(\'&lt;li class=\"print\"&gt;&lt;a href=\"#print\"&gt;Click me to print&lt;/a&gt;&lt;/li&gt;\');<br /> $(\'ul#tools li.print a\').click(function() {<br />  window.print();<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>Take a look at the <a href=\"//trevor-davis.com/play/javascript-print-link/\">demo page</a> to see it in action. The script is nothing complex; it is just another example of using jQuery to improve a user’s experience.</p>',NULL,1841,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','82f6d0c7-25bc-4b6a-acb9-436aa2bb51e9',1,NULL,NULL),(166,171,'Weekly Link Round-Up #58',NULL,'<p>Man, it’s tough to get work done on my own site when I am so busy with freelance work. Slowly but surely, I am making progress, and I am hoping that by having some days off this month, I will be able to get it done soon. Here are the links that I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.airbagindustries.com/archives/airbag/cholesterol.php\">Cholesterol.</a>\n<p>I think having debate in the workplace is so important to reaching the best decision. This is why I think Obama will be successful in office; he is not just surrounding himself with “yes” men.</p>\n</li>\n<li><a href=\"http://psdtuts.com/articles/9-information-design-tips-to-make-you-a-better-web-designer/\">9 Information Design Tips to Make You a Better Web Designer</a>\n<p>Some nice tips that are focused more on the organization side than the design side.</p>\n</li>\n<li><a href=\"http://jasonsantamaria.com/articles/cultivating-conversations/\">Cultivating Conversations</a>\n<p>Jason brings up the point that sometimes comments become overwhelming on blog posts. He suggests that the author should use “milemarker” comments so that readers can get a quick snapshot of the comments so far.</p>\n</li>\n</ul><ul><li><a href=\"http://surveys.webdirections.org/index.php?sid=38693\">The State of the Web 2008</a>\n<p>Do you make websites? Take the survey.</p>\n</li>\n<li><a href=\"http://freelanceswitch.com/finding/six-valuable-things-web-design-clients-wont-tell-you/\">Six Valuable Things Web Design Clients Won’t Tell You</a>\n<p>I wish clients would admit things like this. I guess the solution to that is to educate the client.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/12/04/20-signs-you-dont-want-that-web-design-project/\">20 signs you don’t want that web design project</a>\n<p>Wow, I can’t believe some of these things actually happened.</p>\n</li>\n<li><a href=\"http://www.designobserver.com/archives/entry.html?id=38855\">Chris Pullman: What I’ve Learned </a>\n<p>Chris shares ten important lessons that he learned while working for WGBH for 35 years.</p>\n</li>\n<li><a href=\"http://www.miltonglaser.com/pages/milton/essays/es3.html\">Ten Things I Have Learned</a>\n<p>Milton Glaser’s talk from 2001 was also linked around this week. It’s great to see so many tips from these guys with so much experience.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/273\">A List Apart: Issue 273</a>\n<p>I know some about IA, but I definitely learned some new ideas while reading <a href=\"http://www.alistapart.com/articles/flexiblefueleducatingtheclientonia\">Flexible Fuel: Educating the Client on IA</a>. I really hadn’t heard much about agile design, but <a href=\"http://www.alistapart.com/articles/gettingrealaboutagiledesign\">Getting Real About Agile Design</a> was helpful in learning more about it.</p>\n</li>\n</ul>',NULL,1840,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','5a90debb-30a7-49ae-9c0c-39032830c575',1,NULL,NULL),(167,172,'Weekly Link Round-Up #57',NULL,'<p>We need to have 4 day weekends more often. I got so much work done on my redesign. I’m currently in the process of dealing with IE6, then I am going to start creating the theme. So there is a possibility that I will have something launched sometime this week. Just a few interesting items from this past week:</p>\n\n<ul><li><a href=\"http://www.questionablecharacters.com/\">Questionable Characters</a>\n<p>I found this site so amusing. The premise is that you ask a question, and you get two witty responses from the two designers running the site.</p>\n</li>\n<li><a href=\"http://fontfeed.com/archives/nyu-researchers-discover-defining-factor-for-legibility/\">NYU Researchers Discover Defining Factor for Legibility</a>\n<p>There are plenty of tweaks you can make to refine your typography, but NYU researchers claim that spacing is the most important factor for legibility. So let’s all think about increasing our margins and line height.</p>\n</li>\n</ul><ul><li><a href=\"http://www.37signals.com/svn/posts/1431-mixed-content-warning-how-i-loathe-thee\">“Mixed content warning”, how I loathe thee!</a>\n<p>Ugh, I hate those stupid warnings! David brings up a good point:</p>\n<blockquote><p>This is why it would be ever so wonderful if you could refer to a non-SSL asset from an SSL page. That way you could say â€œthis stuff is private, donâ€™t share itâ€ when serving over SSL and at the same time take advantage of HTTP caching for things that pose no security risk, like drag_handle.gif.</p></blockquote>\n</li>\n<li><a href=\"http://24ways.org/\">24 Ways</a>\n<p>I still can’t believe is December already. But at least we have 24 ways to impress your friends to get us through the month. We already have 2 great articles.</p>\n</li>\n<li><a href=\"http://www.gerrymcgovern.com/nt/2008/nt-2008-11-24-content-migration.htm\">Web content migration: disastrous strategy</a>\n<p>Is there anything worse than content migrations? Well, maybe content audits. Regardless, Gerry brings up some good points, and I love the milk analogy. I think that the whole process of content migrations should be re-evaluated.</p>\n</li>\n</ul>',NULL,1839,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','fe4c8b61-2855-4861-a554-3bf9aa9c3682',1,NULL,NULL),(168,173,'My 2008 Web Thanksgiving List',NULL,'<p>Happy Thanksgiving to all! I thought I would take this opportunity to say what I am thankful for on the web. <strong>I am thankful for:</strong></p>\n\n<ul><li><strong><a href=\"http://www.zeldman.com/\">Jeffrey Zeldman</a> and <a href=\"http://meyerweb.com/\">Eric Meyer</a> (and others)</strong>\n<p>They really helped to spearhead the Web Standards movement, and without them, I probably wouldn’t be in the field today.</p>\n</li>\n<li><strong><a href=\"http://www.simplebits.com/publications/bulletproof/\">Bulletproof Web Design</a></strong>\n<p>This is one of the first web development books I had ever read, and it definitely helped to provide a strong foundation to build on. Thank god for Dan Cederholm’s brilliance.</p>\n</li>\n</ul><ul><li><strong><a href=\"http://twitter.com/\">Twitter</a></strong>\n<p>What I first saw as a silly little web app, really has become a great networking tool. I can post a question and someone is always around to answer.</p>\n</li>\n<li><strong><a href=\"http://www.cssmastery.com/\">CSS Mastery</a></strong>\n<p>I really took a big step forward in my ability after reading this book. Instead of just being a novice at CSS, I feel like I can tackle anything now.</p>\n</li>\n<li><strong><a href=\"http://code.google.com/p/ie7-js/\">Dean Edwards’ IE7 Script</a></strong>\n<p>I can’t tell you how many times I have used it. While I have begun to use it less and less, it saved my life when slicing early in my career.</p>\n</li>\n<li><strong><a href=\"http://wordpress.org/\">WordPress</a></strong>\n<p>It really is a flexible CMS. I honestly try and suggest it for every single site I am creating.</p> \n</li>\n<li><strong><a href=\"http://jquery.com/\">jQuery</a></strong>\n<p>I am in love with it. I knew some JavaScript before, but  after easily learning jQuery, I feel much more comfortable writing JavaScript now.</p>\n</li>\n</ul><p><strong>So what are you thankful for?</strong></p>',NULL,1838,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','5ec65dbc-243a-4436-8ad8-2b96377a0960',1,NULL,NULL),(169,174,'Weekly Link Round-Up #56',NULL,'<p>I’m really looking forward to this Thanksgiving break. I’ve been working on some blog articles and the redesign of my site. So stay tuned, changes are coming soon hopefully. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.alistapart.com/issues/272\">A List Apart: Issue 272</a>\n<p>Two solid articles from A List Apart again, but I thought <a href=\"http://www.alistapart.com/articles/thisishowthewebgetsregulated\">This is How the Web Gets Regulated</a> was especially interesting. There are definitely holes in web accessibility, and people like Joe Clark are helping to fill those holes. <a href=\"http://www.alistapart.com/articles/amoreuseful404\">A More Useful 404</a> was an interesting concept, but I’m not sure how I feel about it being done with Perl and SSI.</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1409-heres-a-demo-of-some-thoughtful-ui-on-ffffoundcom\">Demo of some thoughtful UI on Ffffound.com</a>\n<p>Wow, I had heard of Ffffound but didn’t know that it had so much thought put into the UI. Definitely some great minds behind it.</p>\n</li>\n</ul><ul><li><a href=\"http://www.readwriteweb.com/archives/college_stops_giving_students_new_email_accounts.php\">College Stops Giving Students New Email Accounts: Start Of New Trend?</a>\n<p>Definitely a smart move at Boston College. It definitely seems unnecessary to give students another email account when they probably already have at least one.</p>\n</li>\n<li><a href=\"http://stylizedweb.com/2008/11/16/10-steps-to-a-client-friendly-wordpress-cms/\">10 Steps to a Client Friendly WordPress CMS</a>\n<p>WordPress is a great choice as a CMS for powering small sites, but for the non-techie user, it can be a little challenging. Here are a few tips to help make it easier for them.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/11/24/now_boarding/\">Now Boarding</a>\n<p>Dave Shea decided that he was going to try and fly without using a paper boarding pass, and he was only going to use the digital version of the boarding pass on his iPhone. This definitely seems like it is going to be the way boarding passes are handled in the future, but we still may be a little ways away from that.</p>\n</li>\n</ul>',NULL,1837,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','b2c2b08a-c0e0-47fa-bcb7-f8712d249328',1,NULL,NULL),(170,175,'Weekly Link Round-Up #55',NULL,'<p>Just another busy week and some interesting links from the week:</p>\n\n<ul><li><a href=\"http://www.456bereastreet.com/archive/200811/writing_good_alt_text/\">Writing good alt text</a>\n<p>Roger Johansson provides some instructions for writing good alt text.</p>\n</li>\n<li><a href=\"http://cssglobe.com/post/3181/100-css-compatibility-or-degrade-correctly\">100% CSS compatibility or degrade correctly?</a>\n<p>In my opinion, the correct answer is to degrade correctly. The only problem is trying to sell the client on that idea.</p>\n</li>\n<li><a href=\"http://cameronmoll.com/archives/2008/11/showering_and_thinking/\">Why thinking in the shower may be an ideal model for “creative pause”</a>\n<p>I definitely get a lot of good thinking done in the shower. Someone just needs to invent some way of writing stuff in the shower.</p>\n</li>\n</ul><ul><li><a href=\"http://www.google.com/webmasters/docs/search-engine-optimization-starter-guide.pdf\">Google Search Engine Optimization Starter Guide</a>\n<p>This is a good beginner’s guide to SEO. Even though there is nothing new or profound here, it is always interested to see what Google recommends as good practice.</p>\n</li>\n<li><a href=\"http://www.protonotes.com/\">Protonotes</a>\n<p>This application provides the ability to add notes to prototypes and comps. I thought this would be useful for our company when we send them to clients.</p>\n</li>\n<li><a href=\"http://www.themaninblue.com/experiment/JS-909/\">JS-909</a>\n<p>Cameron Adams created a drum machine using straight-up JavaScript. That’s pretty hot.</p>\n</li>\n</ul>',NULL,1836,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','848af664-d262-4699-8f22-f0409ecff018',1,NULL,NULL),(171,176,'How to Preload Images When You Can’t Use CSS Sprites',NULL,'<p>I have already shown <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/#cssSprites\">how to use css sprites</a>, but there are times when you just cannot use them. Sometimes you still want the benefit of preloading the image, so you have to get creative.</p>\n<h2>An Example</h2><p class=\"leftSide pullLeft col1\">\n<a href=\"//trevor-davis.com/play/css-sprites/\"><img src=\"//trevor-davis.com/images/content/2008/11/sprite-vert.gif\" alt=\"CSS Sprite\" class=\"imageRight frame\" height=\"40\" width=\"21\" /></a></p><p>I have created a <a href=\"//trevor-davis.com/play/css-sprites/\">demo of a CSS sprite in action</a>. The sprite has the two images sitting on top of each other, and each link is using the image as a background image and then shifting the position of it when hovering.</p><p class=\"codeblock\"><code>\na.spriteVert { &lt;br /&gt; background: url(//trevor-davis.com/images/content/2008/11/sprite-vert.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { background-position: bottom left; } </code></p><p>It works great in the first example, but <strong>what happens if the user resizes their text?</strong> The sprite starts to break. When I am building a site, I am always thinking with the <a href=\"http://simplebits.com/publications/bulletproof/\">bulletproof mentality of Dan Cederholm</a>, so this is just not an acceptable solution.</p><p>Now, we obviously couldn’t position the images next to each other because we would still have a problem when shifting the image around.</p><h2>The Solution</h2><p>Typically when you are using CSS sprites, there is another element containing the anchor. Whether it’s a list item, paragraph, div, etc; <strong>this solution will work unless you have a background image on that element as well</strong>.</p><h3>Example</h3><p class=\"leftSide pullLeft col1\"><a href=\"//trevor-davis.com/play/css-sprites/preload-image/\"><img src=\"//trevor-davis.com/images/content/2008/11/sprite-hover.gif\" alt=\"Background image for hover state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a><a href=\"//trevor-davis.com/play/css-sprites/preload-image/\"><img src=\"//trevor-davis.com/images/content/2008/11/sprite-off.gif\" alt=\"Background image for unactive state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a></p><p>I have created a second <a href=\"//trevor-davis.com/play/css-sprites/preload-image/\">demo that “fixes” the first example</a>. The idea behind it is that instead of combining the images into 1 image, you split it into 2. Then you <strong>place the image that is being shown on hover as the background image on another element</strong> (preferably a containing element), just positioned off the screen.</p><p>Then when you hover, you switch the background image, which has already been preloaded, so you don’t get that “white flicker”. That may be a little hard to understand, so I’ll give an example.</p><h4>The Markup</h4><p class=\"codeblock\"><code>\n&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert2\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert3\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt; </code></p><p><em>Note: The extra classes of spriteVert2 and spriteVert3 are just used to change the font size.</em></p><h4>The CSS</h4><p class=\"codeblock\"><code>\np.spriteContainer { &lt;br /&gt; background: url(//trevor-davis.com/images/content/2008/11/sprite-hover.gif) no-repeat -9999px -9999px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert {&lt;br /&gt; background: url(//trevor-davis.com/images/content/2008/11/sprite-off.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { &lt;br /&gt; background-image: url(//trevor-davis.com/images/content/2008/11/sprite-hover.gif);&lt;br /&gt;} </code></p><h4>More Explanation</h4><p>So looking at the previous example, I am adding the background image that I want to appear on hover as the <strong>background image on the paragraph with a class of spriteContainer</strong>, and I am positioning it way off the screen.</p><p>Then when I hover over an anchor with a class of spriteVert, <strong>I change the background image to be the one from the paragraph</strong> with a class of spriteContainer.</p><h2>Conclusion</h2><p>While this is not as ideal as using CSS sprites because you increase the number of hits to your server, it can help to eliminate the white flicker that you get if the image is not preloaded.</p>',NULL,1835,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','e4bd5dc2-971b-4546-a525-e646b149597c',1,NULL,NULL),(172,177,'Weekly Link Round-Up #54',NULL,'<p>Well, unfortunately I’m still doing weekly link round-ups. That means that my redesign still isn’t finished. Hopefully I will have more time to finish it up soon. Here are the links that I found interesting this past week:</p>\n\n<ul><li><a href=\"http://www.37signals.com/svn/posts/1375-in-the-past-historic-front-page-moments\">QUESTION: In the past, historic front-page moments</a>\n<p>This is a great question considering the historic moment we had last week. We had people lining up for hours to buy newspapers, but were people taking screenshots of websites?</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/extract_know_your_site/\">Extract: Know Your Site</a>\n<p>We get to read an excerpt from Paul Boag’s book <em>Website Owner’s Manual</em> about analyzing your website.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/271\">A List Apart: Issue 271</a>\n<p>This was an excellent article this week with <a href=\"http://www.alistapart.com/articles/writingcontentthatworksforaliving\">Writing Content that Works for a Living</a> and <a href=\"http://www.alistapart.com/articles/progressiveenhancementwithjavascript\">Progressive Enhancement with JavaScript</a>. Well written content and unobtrusive JavaScript, is there anything better?</p>\n</li>\n<li><a href=\"http://www.robertnyman.com/obtrusive-javascript-checker/\">Obtrusive JavaScript Checker</a>\n<p>This plugin will traverse a webpage and highlight obtrusive JavaScript.</p>\n</li>\n<li><a href=\"http://www.andyrutledge.com/web-02.php\">Web 0.2</a>\n<p>Andy Rutledge describes how he thinks the economy will affect web development firms and freelancers.</p>\n</li>\n</ul>',NULL,1834,NULL,'2014-01-19 12:59:10','2020-03-18 20:03:24','13a8b544-fcac-46be-96ba-40b5080f1f37',1,NULL,NULL),(173,178,'An Event Apart Chicago',NULL,'<p>I was lucky enough to have my company pay for myself and my two colleagues, <a href=\"http://gdarb.com/\">Brad</a> and <a href=\"http://seeyouin1984.com/\">Adrian</a>, to go to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>. Like my <a href=\"//trevor-davis.com/blog/web/an-event-apart-boston-summary/\">An Event Apart Boston Summary</a>, I thought I would create a similar post. This is going to end up being a <strong>really long post</strong>, so I would recommend reading it in pieces or skimming. I am going to split it up into two pages so that the page does not get even more ridiculously long. So be sure to go on to the next page after reading the first one.</p>\n\n<h2>Understanding Web Design – Jeffrey Zeldman</h2>\n<p>Zeldman is such an amazing speaker and web evangelist. He first begins by asking the question “What does a web designer need most?” CSS? PHP? Ruby on Rails? Nope. Empathy (ok, he joked that we need Advil too).</p>\n\n<p>He described this more by showing a screenshot of the old <a href=\"http://real.com/\">RealPlayer</a> site and labeling everything that looked like a link. The truth was, not that many of them were actually links. The web designer for RealPlayer has to respond to two different internal strategies: help a user find the free player and sell the free player. Those two strategies are basically competing and fight against each other. As Zeldman says, “It’s <strong>rough out there</strong> for a web designer”.</p>\n\n<p>The key to good design is that the user needs to be able to use the website with a short learning curve. Like Steve Krug says, “<strong>Don’t make me think</strong>”. He uses another site, <a href=\"http://www.consumersearch.com/\">Consumer Search</a>, as an example. Take a look at the site. Doesn’t it look like a phishing website? We have no clue what this site actually does.</p>\n\n<h3>College? What for?</h3>\n<p>Another hard part of being a web designer is the lack of good education programs for the field. Just because someone can learn how to use Photoshop, it does not mean they are a designer. “Teaching <strong>Excel</strong> is not the same as teaching <strong>business</strong>”.</p>\n\n<p>After reviewing all of the data from the <a href=\"//trevor-davis.com/blog/news/i-took-the-web-design-survey-2007/\">2007 Web Design Survey</a>, Zeldman wonders if education is even relevant. 47% of people surveyed said that what they studied in college was unrelated to what they do today. I can’t remember how I responded, but very little of what I learned in college do I use today. They also determined that as income increases, relevance decreases. This actually makes sense since the more money you make, the longer you have been out of college. Technology changes. Fast.</p>\n\n<h3>No Respect</h3>\n<p>Think about when you meet someone who says they are an architect or surgeon, you are usually pretty impressed with the person. But think about when people meet web designers, they think that they just play on the internet. No respect.</p>\n\n<p>But did we bring this onto ourselves? There is no standardization of titles, no standardization of departmental organization, and not that much money in the web field.</p>\n\n<h3>In Search of Excellence</h3>\n<p>Another problem with the perception of the web, I that non-web people don’t understand it. All they here in the news is how important Facebook’s redesign is, how MySpace is adding music to profiles, how much money some startup got, and other crap like that. Is that really what’s important?</p>\n\n<p>So fine, maybe they so all these sites that claim they have won awards. Take the <a href=\"http://www.coca-cola.com/\">Coca Cola</a> site. Really? Award winning? Some kind of rainbow exploding from a bottle? Go ahead and disable JavaScript and try to visit the site. Yeah, you can’t get past the first page. Award winning (note the sarcasm).</p>\n\n<h3>Web Design is Different</h3>\n<p>The web is different than print design. Comparing illustration to web sites it just wrong. People spend time on normal web sites usually: their bank, insurance, news, etc. sites. Nobody spends time on the Coca Cola website.</p>\n\n<p>“Good design is <em>invisible</em>. Good web design is about the character of the content, not the character of the designer.” Nobody comes to your site to see your “awesome” stock photo. They come for the words.</p>\n\n<h3>12 Tips to Empathetic Web Design</h3>\n<ol><li>Start with the user / <em>your passion</em>.</li>\n<li>Know yourself, know what your limitations are.</li>\n<li>Find the right clients (job) – during initial client meetings, shows your true personality. If the clients don’t like it, tell them to take a hike.</li>\n<li>Sell ideas, not pixels!</li>\n<li>Saying “I don\'t know” is okay. Just tell them you’ll find out later.</li>\n<li>Build trust. Show that you really care about the project, ask questions.</li>\n<li>Bring out the big guns, reference articles by experts when necessary, it gives clients reassurance.</li>\n<li>Create a paper trail. Always be able to refer back to something.</li>\n<li>Never underprice your work.</li>\n<li><a href=\"http://www.no-spec.com/\">Say no to SPEC</a>.</li>\n<li>Say no to rush jobs. Lack of planning on your part does not constitute an emergency on my part.</li>\n<li>End with the user / your passion.</li>\n</ol><p>Man, Zeldman is awesome. I’m glad that he’s on our side.</p>\n\n<h2>Debug / Reboot – Eric Meyer</h2>\n<p>This was one of the more technical talks of the conference, and it was a good one. Eric first started by showing a code snippet:</p>\n\n<div class=\"codeblock\"><code>\n&lt;p&gt;&lt;a href=\"\"&gt;&lt;/a&gt;&lt;/p&gt; <br />&lt;p&gt;&lt;img src=\"\" alt=\"\" title=\"\" /&gt;&lt;/p&gt; \n\n</code></div>\n\n<p>Yep, perfectly valid. According to a validator. Validators can’t tell you everything. This is why good web development will never be able to be completely done by machines. But validators really are just tools for us to use to make sure we are doing things correcty.</p>\n\n<h3>Debug CSS</h3>\n<p>I had previously read Eric’s article about <a href=\"http://meyerweb.com/eric/thoughts/2007/09/07/diagnostic-styling/\">Diagnostic Styling</a>, but I guess I didn’t really think too much about using it. This could definitely be useful when creating pages, but it is <strong>definitely not for production use</strong>. It can easily be added as a user stylesheet using the web developer toolbar.</p>\n\n<p>A couple of new CSS things that I learned were the <a href=\"http://www.w3.org/TR/css3-selectors/#empty-pseudo\">empty</a> and <a href=\"http://www.w3.org/TR/css3-selectors/#negation\">not pseudo selectors</a>. The <strong>empty pseudo selector</strong> will select elements that do not have any nodes as children, text included. So it could be useful to use on some content management systems that generate a lot of extra empty elements. Here is an example of hiding all empty paragraphs:</p>\n\n<div class=\"codeblock\"><code>\np:empty { display: none; } \n\n</code></div>\n\n<p>The <strong>not pseudo selector</strong> will select elements that are not something. To better explain that, here is an example of giving a border to all images that do not have an alt attribute defined:</p>\n\n<div class=\"codeblock\"><code>\nimg:not([alt]) { border: 2px solid red; } \n\n</code></div>\n\n<p>With debug CSS, there are some times when you style all of a type of element, then override the style for the elements that have what you are looking for. This example should explain it a little better:</p>\n\n<div class=\"codeblock\"><code>\nth { border: 1px solid red; }<br />th[scope=\"col\"], th[scope=\"row\"] { border: none; } \n\n</code></div>\n\n<p>So what is happening here is that you are styling all table header cells with a red border, then table header cells that have a scope attribute will have no border. Which accomplishes the goal of giving all table header cells without a scope attribute of col or row a red border.</p>\n\n<p>The important thing about Eric’s debug CSS is that you should modify it to fit your situation. Eric is just creating this to show an example of what is possible, not to be the only solution. So get creative.</p>\n\n<p>Another point that Eric made when debugging CSS, was to use the outline property instead of a border. Since borders affect the layout of elements, they can sometimes change the layout of the page. But outlines do not affect the layout, which I didn’t realize until now.</p>\n\n<h3>Reboot CSS (not reset)</h3>\n<p>Eric then went on to talk about his infamous <a href=\"http://meyerweb.com/eric/thoughts/2008/01/15/resetting-again/\">reset stylesheet</a>. The main point of this part of Eric’s discussion was that you should not just drop in his reset stylesheet if there is an more effective way to accomplish the same thing.</p>\n\n<p>For example, don’t set the ol and ul list-style equal to none if you are just going to redefine it later to have a list-style. Instead, turn the reset into a baseline. Modify the reset stylesheet to suit your project, don’t use his reset stylesheet without modifying anything. Don’t reset then re-style, reboot instead.</p>\n\n<p>Eric reinforced this point by saying he did not like the use of CSS frameworks. He thinks everyone should create their own “framework”. He said that once you get into someone else’s framework and try to modify their code, you have to change the way that you think about coding and try to think like the person who created the framework. He also thinks that they end up being bloated.</p>\n\n<p>His reset CSS has evolved over time after just thinking about the concept more. For example, he changed it so that it does not use <strong>font: inherit</strong> because of lack of support in IE. He also stopped using generated content to add quotes to the quote and blockquote elements. He compared relying on a browser to generate content to relying on a browser to have JavaScript enabled. There are still some browsers that do not support generated content, and if the quotes are important enough, they should be in the actual content.</p>\n\n<h2>Storytelling by Design – Jason Santa Maria</h2>\n<p>Jason has been one of my favorite designers for a while now. With his <a href=\"http://jasonsantamaria.com/\">recently redesigned site</a>, he has reaffirmed how great of a designer he is.</p>\n\n<p>As a child we are taught to look for the meaning from images in stories, this is called <strong>graphic resonance</strong>. Images are used to reinforce the story. Remember the saying, a picture can tell a thousands words?. Yeah, that’s what he was talking about.</p>\n\n<p>Designers need to consider themselves as the narrator. The first example that Jason gave was of Charles Joseph Minard’s <a href=\"http://www.edwardtufte.com/tufte/graphics/poster_OrigMinard.gif\">Map of Napoleon’s March</a>. This information could have easily been represented as a bar graph, but Charles’ map has much more impact. Seeing how Napoleon’s troops dwindle in size really help us to visualize the magnitude of what happened.</p>\n\n<p>The second example Jason gave was the article in <em>Wired</em> magazine, <a href=\"http://www.wired.com/wired/archive/14.08/spamking.html\">The Sleazy Life and Nasty Death of Russia’s Spam King</a>. He showed the spread from the actual printed magazine, and they really captured the feeling of the article. But then he showed how the article was translated onto the web, and it was quite boring. “Basically, we’ve distilled the stories down to just content”.</p>\n\n<p>We all know that <strong>content is king</strong>, but that doesn’t mean we can’t enhance the content and tell a story with images. As David Carson said, <strong>“Design can’t not communicate”</strong>.</p>\n\n<p><a href=\"http://www.jasonsantamaria.com/\">Jason’s own site</a> is an incredible example of telling a story with each blog entry. Jason is basically “art directing” each article on its own.</p>\n\n<h3>Why Are We Plagued By Sameness?</h3>\n<p>There is so much of the web today that is so similar. Logos look the same. Sites all have similar layouts. Web designers complain that they are restricted by the browser, but is that really the reason why everything is similar? There are plenty of sites that really break from the mold: <a href=\"http://noonebelongsheremorethanyou.com/\">No One Belongs Here More Than You</a>, <a href=\"http://abriefmessage.com/\">A Brief Message</a>, <a href=\"http://www.fray.com/\">Fray</a>, and <a href=\"http://www.jasonsantamaria.com/\">Jason’s site</a> just to name a few.</p>\n\n<p>Armin Vit recently inquired <a href=\"http://www.underconsideration.com/speakup/archives/004033.html\">Landmark Web Sites, Where Art Thou?</a> Well, a simple reason is because the web really is young. Now is when we are going to start seeing landmark websites. There are still advancements to be made, and still new stuff to figure out. There isn’t only one way to present information. Jason realized that when designing, you always start from a blank slate, whether it’s a piece of paper or a blank Photoshop canvas.</p>\n\n<h3>The Nature of the Medium</h3>\n<p>Jason then went on to describe four common principles of the web:</p>\n\n<ol><li>The metaphorical page</li>\n<li>Ubiquity &amp; WYSIWYG</li> \n<li>Collections of pages</li>\n<li>Layout</li>\n</ol><h4>The metaphorical page</h4>\n<p>If we take a look back in history, the canvas that designers has changed drastically, from stone, to paper, to digital canvases. But still, it is all starting from a blank slate. The web is the one place that is basically infinite. It’s fluid. Most of the web runs on a single fixed dimension: width. It’s not like we are given a 8′x10′ book cover to design. The web really has no finite value.</p>\n\n<p>Jason gave the example of Ladislav Sutnar, who created the two page spread. Ladislav probably could not fit everything on one page, so he decided to break the convention and spread it across two pages. “If you have new problems, look for new solutions”.</p>\n\n<h4>Ubiquity &amp; WYSIWYG</h4>\n<p>Another reason why the web is so different is because we have no idea what kind of device people will be looking at websites on. With a printed newspaper, there is only one way to look at it. With advancing technology, people can visit websites online, on an iPhone, screen-reader, and more. When people click something on a website, things can happen. The web is an experience.</p>\n\n<h4>Collections of pages</h4>\n<p>With a book, you can flip to the last page and see what you have ahead of you. With websites, there is no real way to grasp the depth. Take a look at <a href=\"http://harpers.org/archive\">Harper’s Magazine’s Archive</a>. Sure, you can grasp that there are 158 years and 12 months per year, but there are tons of articles per month. You cannot ever grasp how large the site is without clicking into every article. By the time you finished with that, there would probably be new articles.</p>\n\n<h4>Layout</h4>\n<p>Most people have probably heard of the <a href=\"http://en.wikipedia.org/wiki/Golden_ratio\">golden ratio</a> and the <a href=\"http://en.wikipedia.org/wiki/Rule_of_thirds\">rule of thirds</a>. But again, since the web can be viewed on so many different devices, they do not always apply. “Design ideals rely on predictable dimensions” But on the web, we can’t predict what dimension that will be.</p>\n\n<h3>Conclusion</h3>\n<p>As Jason summed it up, he said that “Design for the web has been chiefly driven forward by the technology rather than the message. The form of design should be driven by the story.” So the question is: <strong>how do you stand out from all the other crap online?</strong>\n\n\n</p><h2>Design Criteria: Actionable Ideas – Sarah Nelson</h2>\n<p>I had never heard of Sarah Nelson before, and I was a little worried because she was presenting right before lunch. It ended up being a great presentation, and she had me captivated the entire time.</p>\n\n<h2>What are Design Criteria?</h2>\n<p>Design Criteria are a set of 5-7 short, memorable strategic directives your team can use to focus design activities, and unlike project goals, success metrics brand statements, universal design principles or mission statements, design criteria emphasize specific rules your team will follow when tackling the problem at hand.</p>\n\n<p>Instead of looking at design criteria as a constraint, we should look at them as freedom. They help us generate ideas, evaluate ideas, make decisions, and move forward. Here are a few examples of familiar constraints that Sarah gave:</p>\n\n<ul><li>Budget</li>\n<li>Time</li>\n<li>People</li>\n<li>Information</li>\n<li>Media</li>\n<li>Resources</li>\n</ul><p>Sarah also gave an example of some constraining tools:</p>\n\n<ul><li>Mission Statements</li>\n<li>Brand Guidelines</li>\n<li>Personas/Demographics</li>\n<li>Design Principles/Best Practices</li>\n</ul><p>These tools are used to help designers to focus their designs. If design constraints are defined well at the beginning of a project, it makes creating the actual design much easier.</p>\n\n<p>I’m sure everyone has heard of the term “think outside the box” well Sarah said that before you can think outside the box, you have to know and define the box. The problem is, we don’t work alone, so we cannot define the box ourselves. Once we all understand the box, we can use that as a platform to generate ideas and figure out which ideas are the most actionable.</p>\n\n<h3>The Creative Process</h3>\n<p>The creative process is comprised of divergence and convergence approaches, which each have a very distinct way of thinking.</p>\n\n<h4>Divergence</h4>\n<p>You use a divergent approach when you are trying to discover new things. This is the process where there is no wrong answer, and you are really just in discovery mode. This is comprised of research activities. The next step is to determine what is actionable and find the “solution”.</p>\n\n<h4>Convergence</h4>\n<p>This is when you are seeking a conclusion. You are examining the actionable ideas and solving the problem. The point of design is to solve a problem.</p>\n\n<p>I found Sarah’s talk to be very interesting. As I have never been formally trained in graphic design, it is important for me to understand the process.</p>\n\n<h2>On-the-Spot Usability Reviews – Robert Hoekman, Jr.</h2>\n<p>Instead of having a formal presentation, Robert took websites suggested from the crowd and did a usability review.</p>\n\n<p>The 3 most important things when determining the usability of a site is the purpose, benefit, and usage. Before creating a site, we must determine what a person would want to find.</p>\n\n<p>When using large branding images on a site they should be considered billboards on a highway. Do they convey the message when driven by at 60 mph? To help this, less and more concise text is preferable. <strong>Do the images help to tell the story of the content?</strong></p>\n\n<p>When you have a form with many steps, there should be some sort of progress meter to let the user know what they are up against. If you can avoid them, select menus on forms are generally bad for usability. Out of sight, out of mind.</p>\n\n<p>When creating calls to actions, people generally do better when they think about doing instead of structure. So when things are organized by task, instead of object, users succeed more.</p>\n\n<h3>5 Second Usability Test</h3>\n<p>This is a similar idea to the billboard example. It is a quick and easy way to determine the usability of a page. Robert suggests the following steps:</p>\n\n\n<ol><li>Take a page and show it to someone for 5 seconds</li>\n<li>Take it away and ask them to write down everything they remember about the page</li>\n<li>One of the things they write down should be the most important thing that you want them to do</li>\n</ol><p>If the user does not list the most important thing you are trying to convey on the page, then you are in trouble and should re-evaluate the page. An easy way to do this is to use the website <a href=\"http://fivesecondtest.com/\">Five Second Test</a>.</p>\n\n<p>Robert created a test and had everyone take the test. One interesting thing about it was that he twittered the link. Twitter is such a simple tool, and it was perfect for this situation.</p>\n\n\n<h2>Designing the Details: Web-App UI Design Beyond the Basics – Jason Fried</h2>\n\n<p>The basis of Jason’s talk was the idea of <strong>craftsmanship</strong>. He started with the comparison of an Ikea desk to a desk made by a craftsman. Sure, the Ikea desk is perfectly usable, but it feels a little cheap. The desk made by the craftsman is sturdy and solid. So if we just add a little bit of craftsmanship to our design, we can vastly improve them.</p>\n\n<h3>Weak, Normal, Strong</h3>\n<p>On the web, there is normal text, and emphasized (strong) text, but there is no de-emphasized element. So how do we de-emphasize? Using design of course.</p>\n\n<p>For example, instead of making everything emphasized, de-emphasize something by giving it a lighter color. Most people focus on the normal and emphasized text, but not enough focus on the weak. Jason then went through some of the 37 Signals applications to show us examples.</p>\n\n<h3>Think About the Flow, Anticipate the Next Action</h3>\n<p>Jason discussed how the functionality of iPrioritize and Ta-da List were very similar, but Ta-da List thinks about what the user wants to do next. Ta-da list takes less clicks and streamlines the process of using the application.</p>\n\n<p>You should consider the <strong>before, during, and next</strong> actions of the application flow. If a user goes to a page with a form on it, focus the first form field so they don’t have to click anywhere. You should always focus the user’s attention on the next thing you think they want to do.</p>\n\n<h3>The Details</h3>\n<p>It’s amazing how much little details can make a difference. Designers should consider words as important as pixels. Copywriting is an integral part of interface design. For example, if you are doing a search for contacts, and only 1 contact is returned, say that <strong>1 contact</strong> was found. if 10 were found, say that <strong>10 contact</strong> were found. Just one simple letter. All it takes is a little bit of extra coding.</p>\n\n<p><strong>Write in your applications like you talk</strong>. For example, use the phrase, “who can see this person” instead of “permissions”. Always be clear over clever. Instead of “advanced search”, use “search by city, state, country, zip, phone, or email”. Think about how you would say something in real conversation, make it more human-like. Label the button “Save This Item” instead of “Save Item”.</p>\n\n<p>When developing an application, you definitely do not want to spent too much time at the beginning on these small details. The flow and functionality should be established, then work on the fine details. Jason said at 37 Signals they use sharpies instead of pencils when sketching at the beginning of the process. </p>\n\n<p>When you have to explain something, like instructions for a form, use 3 sentences. The sentences should be structured as follows:</p>\n\n<ol><li>Explain what is going to happen</li>\n<li>Give an example</li>\n<li>Provide a suggestion/recommendation</li>\n</ol><p><strong>Timing is everything</strong>. If you have a drop down menu, allow for a mistake when hovering. If the hover off of it for a second, then hover back over it, don’t make the menu disappear.</p>\n\n\n<p><strong>Have a photographic memory</strong>. If someone is entering a lot of items in a row, remember the settings from the last time they entered it. It is most likely that they will want to have the same preferences checked.</p>\n\n<p><strong>Give the user feedback on that just happened</strong>. Gracefully fade something out instead of quickly hiding it. Give a slight flash of yellow before fading back to white. Give the user an update in words so that they know what happened.</p>\n\n<p><strong>Not everything needs to be equally obvious</strong>. There are two different users: regular users and power users. You do not need to make advanced tasks obvious for everyone. As long as regular users can accomplish the same task through a different path, it’s not a problem. For example, not many people know that in Backpack, you can drag items to the sidebar to create a new page.</p>\n\n<p>There is a lot of planning you can do for an application, but you never know if a product is going to be any good until you actually use it. So like the popular saying: <a href=\"http://en.wikipedia.org/wiki/Dogfooding\">eat your own dogfood</a>.</p>\n\n<h2>Underpants Over My Trousers – Andy Clarke</h2>\n<p>I had never heard Andy talk, but I loved his book <em>Transcending CSS</em>. His talk was a little contradictory to what most of the “experts” say, but I thought it was great. His talk was centered around the thought that we can gain inspiration for designing from comic books.</p>\n\n<p>Every time you pick up a new comic book, you have to learn how to read it. Taking the inverse of Steve Krug’s “<strong>Don’t Make Me Think</strong>” mentality, Andy suggests that we should engage the user and make them think. Obviously he is not suggesting that we make things hard to understand; he just thinks that we can create much more interesting and compelling layouts.</p>\n\n<p>Andy recommends that you stick to a grid, and be uniform, but then break out to enforce a specific, dramatic message. What goes on between the panels is just as important as what happens in them. Comics make the user be creative and fill in the story between the panels. He recommended reading Scot McCloud’s <em>Understanding Comic Books</em> to understand a lot of techniques that are used in comic books.</p>\n\n<p>Not everyone visits your website be going to the homepage first. Just as not everyone starts reading a comic from the beginning of the series. Make all of your pages unique. Don’t get stuck in a template.</p>\n\n<p>Andy’s talk was definitely more inspirational than anything. It was quite interesting to see the examples of comics and examining the way that they flow from panel to panel.</p>\n\n<h2>Special Adobe Session: Web Workflow with the Adobe Creative Suite – Adam Pratt</h2>\n<p>This was a different kind of session, more like a sponsor session, but it was interesting to see some of the new stuff in Creative Suite 4. Adam popped open the different applications and gave us a quick overview of the new stuff.</p>\n\n<p>First off, Adam said that Flash is on 98% of devices (not just computers, phones as well). Probably on of the most anticipated features in Photoshop is the content aware scaling. Basically, you can cram more parts of the photo into a smaller area without squishing or stretching it. I also noticed that Photoshop added the tabbed interface that a lot of the other Adobe applications already had.</p>\n\n<p>Flash can run natively in all CS4 application. So that means you can run things like Adobe Kuler in Photoshop to get color scheme ideas.</p>\n\n<p>You can also get real time screen sharing with up to 2 people . As long as one person has CS4, the others just need flash and an internet connection. You can give control to the others that do not have CS4. You can see everything on the computer, not just CS4 applications.</p>\n\n<p>You can drop a PSD in Dreamweaver, and when the PSD changes, you can update the image in Dreamweaver with just the click of a button. When you open a file in Dreamweaver, it also pulls in all CSS and JS that are being called on the page. In it’s live code mode, it is now running Webkit. You can freeze JavaScript, and use the code navigation to see where the styles come from.</p>\n\n<p>Now if CS4 weren’t so damn expensive, that’d be great.</p>\n\n<p><a href=\"//trevor-davis.com/blog/web/an-event-apart-chicago/2/\">Continue to Page 2 »</a></p>\n\n\n<h2>Eric Meyer Live Code Workshop</h2>\n<p>Eric gave attendees the opportunity to submit CSS problems they were having, and he would go through and help them fix it. I didn’t have any unresolved issues, so I just enjoyed listening to what Eric had to say. Nothing groundbreaking, but there are a few points that I took away.</p>\n\n<p>One thing that I guess I don’t really think about is setting a background color on the body element if the design calls for white. If a browser changed their default background color, then the design could drastically change.</p>\n\n<p>There has been some talk recently about using absolute font sizes since a lot of the newer browsers have full page zoom functionality. I have actually decided the switch to use absolute font sizes and to “<a href=\"http://danielmall.com/archives/2007/04/20/soft_serve.php\">soft serve</a>” relative sizes to IE6. Eric suggested to use an absolute font size as the base size and then relative sizes from there on out. I’m not sure if I agree with that though, because you may not want all font sizes to be affected by changing the base size.</p>\n\n<p>There are a couple of ways to contain floats: float the container or assign the container a property of overflow with a value of hidden or auto. Using the overflow property feels a little bit like a hack, but it gets the job done. I’m not really clear on why this actually contains the float, and I wonder if browsers will break this functionality at any point.</p>\n\n<p>Surprising as it may be, Eric even advocated using a table for laying out a form. Although, I really do prefer using an <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">ordered list for laying out forms</a>.</p>\n\n<p>Someone even asked if Eric knew a way to remove the yellow background on form fields that the Google Toolbar automatically adds to fields it knows how to fill in. He came to the conclusion that you could probably remove it with JavaScript, but it could destroy any focus background color that a user could have setup. Also, if the user has the Google Toolbar installed, then that probably means they may use the ability to automatically fill in the forms.</p>\n\n<h2>Design Lessons in Chess – Rob Weychert</h2>\n<p>Who would have thought that you could learn design lessons from learning chess? Well Rob Weychert did of course, and he shared his lessons with us. First, he started with a couple of basic correlations between chess and web design.</p>\n\n<h3>Chronology</h3>\n<p>Chess involves playing the beginning, middle, and end game. Web design has a similar chronology: information architecture, visual design, and the site build out. Just as you need to research your opponent before playing them, you need to do research to begin any project.</p>\n\n<h3>Opponents</h3>\n<p>In chess, you are only playing one opponent, but when working on a website, you are typically facing three opponents: the users, the client, and your colleagues. You want to limit the users’s options on the web site and help them focus on the task at hand. With the client, you want to work together with them to reach the goal of the web site. It is important to surround yourself with colleagues that will challenge you. Collaborating and challenging each other is the best way to grow in this industry.\n\n</p><h3>The Lessons</h3>\n<p>Rob then went on to describe the 8 lessons that he learned from playing chess.</p>\n\n<h4>1. Content is King</h4>\n<p>We have all heard it before, but sometimes it is easy to lose sight of this. In chess, the game is decided on the king. It is easy to get so focused on the king that you forget about the rest of the pieces. Sometimes we are so wrapped up in AJAX, jQuery, Photoshop, etc that we forget that the foundation of a website is its content. Yes, the other stuff is important, but the content is what needs to be served. So use your design to enhance the content.</p>\n\n<h4>2. Know Your Story</h4>\n<p>Rob gave us the example of project that needed to be like a newspaper from a specific time period. So what did Rob do? He researched the project by looking at old newspaper ads. Then to top it off, he used a typeface that really existed in the era.</p>\n\n<h4>3. Think Ahead</h4>\n<p>The web is constantly changing, and there are many ways for users to receive the content. It is not like a static medium like newspapers or books. You must plan for content to change and grow.</p>\n\n<h4>4. Don’t Get too Attached</h4>\n<p>While you think you may have come up with a great idea, keep looking, the changes are that you will probably come up with a better idea.</p>\n\n<h4>5. Act with Purpose</h4>\nFamous chess player Siegbert Tarrasch said “One badly-placed piece makes your whole position bad”. What Rob took from this was that we should be able to justify every one of the decisions we make. He broke down his slide design and gave reasoning behind every single one of his decisions.\n\n<h4>6. Obey Circumstance</h4>\n<p>Don’t put the solution before the problem and rely on your old bag of tricks. Each problem should come with its own solution.</p>\n\n<h4>7. Principles are Your Friends. Except When They’re Not</h4>\n<p>Principles are great to provide a foundation for a project. The best place to be is in the middle ground: you want to understand the principles, but understand with experience how to break them. Ralph Waldo Emerson said “The man who knows how will always have a job. The man who also knows why will always be his boss.”</p>\n\n<h4>8. The Journey is as Important as the Goal</h4>\n<p>In order to succeed, you need to have failures. You should learn something from every project, whether you fail or succeed. With this knowledge, you should be able to use a process of elimination to become successful.</p>\n\n<h2>Implementing Design: Bulletproof A-Z – Dan Cederholm</h2>\n<p>Derek Powazek was actually scheduled to talk, but he was unable to attend so Dan Cederholm stepped in. I enjoyed Dan’s talk last year at An Event Apart, and he definitely did not disappoint this year.</p>\n\n<p>Dan’s entire talk focused around the idea of <strong>craftsmanship</strong> in implementation. He wanted to take a look at ideas for <strong>bulletproofness</strong>, <strong>progressive enrichment</strong> (basically really cool stuff that doesn’t work in IE), and <strong>reexamining past methods</strong>.</p>\n\n<p>To show these ideas, Dan created a website called <a href=\"http://icedorhot.com/\">Iced or Hot</a>, and decided to come up with something for every letter of the alphabet.</p>\n\n<h3>a: Anchor Links with Meta Information</h3>\n<p>On the right hand side of Iced or Hot, there is a list of popular drinks. Dan decided to include the number of drinks within the anchor tag. Instead of absolutely positioning the number of drinks within the anchor and risk overlap with a really long drink name, Dan just floated the number of drinks to avoid collision.</p>\n\n<h3>b: Border-Radius</h3>\n<p>While CSS3 is still not officially implemented in all browsers, there are some browsers that are offering vendor specific properties (-webkit-border-radius, -moz-border-radius) to achieve CSS3 properties. So if you want to add rounded corners to something, and do not want to deal with slicing all those images, then just use border-radius. It degrades fine, and most of the time, rounded corners are kind of like an added bonus. This could also be useful when prototyping, before slicing the real images (if the corners are necessary in all browsers). Dan used these properties in a few places on Iced or Hot.</p>\n\n<h3>c: Color Transparency with RGBa</h3>\n<p>Browsers are starting to implement the opacity property (or a vendor specific version), but the problem with opacity is that it is applied to all of the element’s children. When you apply RGBa to an element, it will not affect its children. The one downside to RGBa is that it does not look like you can use hex values anymore, which are probably the more commonly used and easier to remember values. You would apply a .7 transparent black background like so: <code>background-color: rgba(0,0,0,.7)</code>. Again, this might be something that is great for prototyping, but then in implementation, you would use PNGs.</p>\n\n<h3>d: Do Websites Need to Look Exactly the Same in Every Browser</h3>\n<p><a href=\"http://dowebsitesneedtolookexactlythesameineverybrowser.com/\">NO!</a>. It’s great to work with decision makers who get it. These tiny visual enhancements that do not affect layout should not be necessary in every browser.</p>\n\n<h3>e: Easy-Clearing Floats</h3>\n<p>Dan has been using the <a href=\"http://positioniseverything.net/easyclearing.html\">clearfix</a> method of clearing, but has decided that naming the class clearfix might not be the best idea. Instead, he names the class group. While the clearfix method is just one of many methods for clearing floats, it looks like it will work in IE8 because it will support generated content.</p>\n\n<h3>f: Frameworks</h3>\n<p>Dan writes his own. Instead of using some bloated framework that someone else has written, Dan has created his own “framework” that he uses from project to project.</p>\n\n<h3>g: Gridlasticnus (grid layout using ems)</h3>\n<p>We all know that grids should be used to help structure your designs, but you can use an em-based layout to ensure ultimate flexibility. Dan then gave a couple of tips when creating an em-based layout:</p>\n\n<ul><li>Set a max-width on the outermost container (max-width: 100%;)</li>\n<li>Try to avoid setting font-size and width on same element</li>\n<li>Think from the outside in</li>\n</ul><h3>h: Horizontal Grid? Sure. Vertical Grid? Sort of.</h3>\n<p>When designers design comps, they typically design columns to be equal and blocks of text to be the same height as an image. In reality, the actual content will not be the same. So in order to have the appearance of a vertical grid, use classed groups for the columns so that the tops of the columns can align.</p>\n\n<h3>i: IE8, Still Refuses to Resize Text Set in Pixels</h3>\n<p>WTF? Yes, IE does have the page zoom functionality, but if someone goes in and changes the text size, it will not scale absolute units. So do we stick with relative units? I am going to use absolute units and <a href=\"http://www.danielmall.com/archives/2007/04/20/soft_serve.php\">soft serve</a> relative units to IE.</p>\n\n<h3>j: jQuery</h3>\n<p>It has a familiar CSS-like syntax and is really powerful. jQuery is my language of choice as well.</p>\n\n<h3>k: Kitty</h3>\n<p>Dan realized that trying to come up with 26 items was really hard. So he decided to show a picture of his cat.</p>\n\n<h3>l: .last</h3>\n<p>On the Iced or Hot popular drinks list, Dan has a bottom border, margin, and padding on each list item. On the last list item, he did not want any of them. So he created a class of last which zeroed out all of those properties. He then used jQuery to add a class of last to the last-child of the list. This is such an elegant solution until we get full CSS3 support.</p>\n\n\n<h3>m: Must Skip a Few Letters if We’re Going to Get Through This</h3>\n<p>In order to save time, Dan skipped m-r.</p>\n\n<h3>s: Shifting Backgrounds (Parallax Backgrounds for the Lazy)</h3>\n<p><a href=\"http://www.silverbackapp.com/\">Silverback</a> made the parallax background popular, and it’s pretty simple to do. Basically all you need to do is to position the background with a negative percentage. The header of Iced or Hot uses a subtle parallax background.</p>\n\n<h3>t: A Testimonial for Reset.css</h3>\n<p>Dan found out that on the mtv.com redesign, he used <code>margin: 0</code> and <code>padding: 0</code> a total of 155 times. if he would have just used a reset at the beginning, he would have saved himself a lot of those instances.</p>\n\n<h3>u: Your Stats</h3>\n<p>You may be asked when you can drop support for a certain browser. The answer should be found by looking at your statistics. Global statistics might be very different from your own, so you have to consider those with a grain of salt.</p>\n\n\n<h2>The In-House Designer – Cameron Moll</h2>\n\n<p>Cameron Moll decided to share the lessons that he has learned working as an in-house designer.</p>\n\n<h3>Lesson One – “Let’s take that offline.”</h3>\n<p>I&amp;rsquom sure you’ve heard the phrase “<strong>Let’s take that offline</strong>”? Well, who knew that so much of a designer’s time should be spent not designing. Khoi Vinh broke down how he thought he should successfully spend his time when he was “doing design”, and he concluded that he should spend 20% of his time doing the actual work, 40% working on the publicity of the design, and 40% creating relationships.</p>\n\n<p><strong>Lesson Learned:</strong> Create relationships that will engender trust and confidence in your work as a designer. Remember, it’s 40% of your job.</p>\n\n<h3>Lesson Two – “Let’s take a 5-minute bio break.”</h3>\n<p>Cameron gave an example of communicating with his IT department, and he was asking for an email alias to be created. The IT department emailed him and asked what he would like it to be called. Cameron then responded with “is dl-mobile available?” The IT department then asked the person who created the aliases to create an alias for the following address:  dl-mobile-available@.</p>\n\n<p>Cameron recommended reading <em>The Anatomy of Peace</em> to understand how to deal with conflicts.</p>\n\n<p><strong>Lesson Learned:</strong> Great communication skills create the shortest distance between an initial idea and a successful user experience. Besides, itâ€™s another 40% of your job.</p>\n\n<h3>Lesson Three – “Who owns that action item?”</h3>\n<p>Cameron showed us this quote from Paola Antonelli: “Ideas are a dollar a pound. Greatness \nis in picking which ones you want to make happen”. He decided to modify it a little:  “Ideas are a dollar a pound. Wisdom is in picking which ones you want to make happen. Greatness is in making them happen”.</p>\n\n<p>You should not fall into the trap of thinking that you cannot make a difference in your organization.</p>\n\n<p><strong>Lesson Learned:</strong> Smallify the organization. Develop &amp; foster relationships with change makers, not just decision makers.</p>\n\n<h3>Lesson Four – “Let’s not try to boil the ocean.”</h3>\n<p>You should always present things low fidelity. People get too distracted by small things that only the designer should worry about, like color, typography, etc.</p>\n\n<p><strong>Lesson Learned:</strong> Bring people along in your thinking. Paint the big picture, and then avoid the “illusion of agreement” by prototyping early and often. Remove fidelity when it isn’t necessary for agreement.</p>\n\n<h3>Lesson Five – “Do we have the bandwidth?”</h3>\n<p>You should always try and build on your knowledge and capabilities. Cameron recommends having an annual and weekly design review. They hold in-house workshops and have a budget for conferences. You should always be looking to improve yourself.</p>\n\n<p>You want to establish influential relationships with as many people as possible: internal departments, local colleges &amp; universities, vendors, etc.</p>\n\n<p>At Cameron’s company, the designers have a <a href=\"http://northtemple.com/\">blog</a>.</p>\n\n<p><strong>Lesson Learned:</strong> Establish the culture and environment \nnecessary for good design to flourish.</p>\n\n<h3>Lesson Six – “We’re determined to leverage our synergy with this new initiative.”</h3>\n\n<p>Create an inspirational culture and environment. The surroundings in the office should help to inspire yourself and others. Work from home sometime. Change your surroundings.</p>\n\n<p><strong>Lesson Learned:</strong> Uninspiring workplaces are a detriment to creativity only if you allow them to be. Find inspiration everywhere.</p>\n\n<h3>Lesson Seven – “I just got dilberted. Again.”</h3>\n\n<p><strong>Lesson Learned:</strong> Know when to exit. It’s as simple as that.</p>\n\n\n<h2>The Arts &amp; Crafts of Web Design or What Would William Do? – Curt Cloninger</h2>\n<p>I didn’t know Curt by name, but apparently I read one of his books. Curt did his presentation a little differently than everyone else, he actually wrote his presentation in HTML and linked to images when necessary. Curt based his presentation on William Morris, who helped to spearhead the English arts and crafts movement.</p>\n\n<h3>1. Stay True to Nature and Materials</h3>\n<p>Remember people, this is the web. There is no need to simulate physical material (wood, metal, etc) on the screen. Typography should be seen as a material. Push CSS typography. There are a lot of text properties that are rarely used. Behavior should be seen as a material. It should look like it does what it does. Interstitial animation should help to tell the story of progressing through the site.</p>\n\n<h3>2. Unite Art (Design) and Hand Craft</h3>\n<p>Everything that you touch should be great. If you have to slice someone else’s design, do it ingeniously. Push the limits of possibility.</p>\n \n<h3>3. Unite the Microcosmic and Macrocosmic</h3>\n<p>If it doesn’t need to be scalable, don’t automate it. Make each section of a website different and unique.</p>\n\n<h3>4. Value Utility. Value Beauty.</h3>\n<p>“Have nothing in your house that you do not know to be useful or believe to be beautiful.” Anyone can build a cookie cutter site with templates; the added value is beauty and customization. Add small ornamentation to the site and show your real craftsmanship.</p>\n\n<h3>5. Enjoy Work</h3>\n<p>Outsource or mechanize the un-pleasurable, but try and do as much of the entire process yourself at least once. This will help you when you are trying to find someone to do that job for you.</p>\n\n<h3>6. Redesign the Whole World</h3>\n<p>If current goods and tools are unsatisfactory, make your own.</p>\n\n<blockquote>\n<p>“Life doesn\'t simply happen to us; we produce it…”</p>\n<p>–<cite>Bruce Mau</cite></p>\n</blockquote>\n\n<h2>Designing the Next Generation of Web Apps – Jeffrey Veen</h2>\n<p>The future of the web is very bright. There are web applications released every day. All of the web applications revolve around entering and digesting data. The future of the web is going to be creating these tools that will enable users to participate and interact with the data. As designers, we need to design the data so that it will be easy to digest and interact with. Then, you should use filters to clarify the data. Like many of the other presenters said, it’s easy to lose track of the fact that design is just communication.</p>\n\n<p>So where do we get our sources of inspiration? History, the current state of things, who users are, etc. Jeff gave the example of John Snow, who was a physician in Britain researching a cholera outbreak. John used a map to illustrate that the source was actually a water pump and not airborne like everyone else thought.</p>\n\n<p>Inspiration should come from everywhere. Jeff got the inspiration for the Google Analytics graph from watching <em>Raiders of the Lost Ark</em>. Visuals are most impacful than numbers.</p>\n\n<blockquote>\n<p>Statistics can feel abstract and anesthetizing, making it difficult to connect with and make meaning.</p>\n<p>–<cite>Chris Jordan</cite></p>\n</blockquote>\n\n<p>The designer’s job is to find a story in the data and to remove everything that isn’t telling the story. The difference between print and interactive designers is that interactive designers have to give up some control to their users. People can resize their text; they can change their screen size; they have much more control then someone reading the newspaper.</p>\n\n\n<p>Jeff made three specific points about design:</p>\n<ul><li>storytelling is enabling users to discover</li>\n<li>visual cues allow for interactivity</li>\n<li>instead of editing, allow for filtering</li>\n</ul><p>Jeff also recommended some books:</p>\n<ul><li>The Ghost Map</li>\n<li>Edward Tufte’s books</li>\n<li>Visualizing Data</li>\n<li>Mental Models</li>\n</ul><h2>A Panel Apart</h2>\n<p>The last session was really just an opportunity for people to ask questions to Jeffrey Zeldman, Eric Meyer, Cameron Moll, and Jeffrey Veen. It was certainly interesting to hear what they had to say about the current state of web design.</p>\n\n<h2>Conclusion</h2>\n<p>I absolutely loved the conference. I always feel inspired when I come back to work. I would certainly recommend the Event Apart conferences to anyone.</p>',NULL,1833,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','8913535b-88b5-4f35-8d8f-43c342a513f6',1,NULL,NULL),(174,179,'Change We Can Believe In',NULL,'<p><img src=\"//trevor-davis.com/images/content/2008/11/change-we-can-believe-in.gif\" alt=\"change-we-can-believe-in\" width=\"468\" height=\"119\" /></p>\n\n<p>Thank you America for doing the <strong>right thing</strong>.</p>',NULL,1832,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','2d38d2bb-9ad4-4a8f-a44c-8d2577e9a9c1',1,NULL,NULL),(175,180,'Weekly Link Round-Up #53',NULL,'<p>Another busy week for me. I’ve finally finished my review of my experience at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I will be publishing it later this week. Yes, I know it’s weeks late, but it is really long and was helpful in helping me remember what I learned. So, here are the links I found interesting last week:</p>\n\n<ul><li><a href=\"http://attackadgenerator.com/a/editor\">Attack Ad Generator</a>\n<p>A political attack ad generator full jQuery goodness.</p>\n</li>\n<li><a href=\"http://freesitevalidator.com/\">Free Site Validator</a>\n<p>Scan your entire website to search for validation errors. Although, when I tried it, it didn’t seem to get further than the home page. Good idea in concept at least.</p>\n</li>\n</ul><ul><li><a href=\"http://jontangerine.com/log/2008/10/font-face-in-ie-making-web-fonts-work\">@font-face in IE: Making Web Fonts Work</a>\n<p>Jon Tangerine discuses how the current state of @font-face embedding and how to implement it.</p>\n</li>\n<li><a href=\"http://www.boxesandarrows.com/view/prototyping-with\">Prototyping with XHTML</a>\n<p>Really nice overview of the process of prototyping. It’s not anything we don’t already know, but it’s nice to see the entire process described in words.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/10/29/expressionengine-developers-toolbox/\">Expression Engine Developer’s Toolbox</a>\n<p>Expression Engine seems to be the hot new thing and for good reasons. I have begun to play with a little bit, but I am trying to learn as much as possible about it.</p>\n</li>\n</ul>',NULL,1831,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','ecfbbde5-35fe-41c6-b1e5-ac7874fbf920',1,NULL,NULL),(176,181,'Weekly Link Round-Up #52',NULL,'<p>Well hopefully this is going to be one of my last weekly round-ups. In my redesign, I am going to have an area made especially for asides where I can just post a link and a little description. The problem is just finding time to finish my design. So here are the links I enjoyed in the past week:</p>\n\n<ul><li><a href=\"http://particletree.com/features/interfaces-and-color-blindness/\">Be Kind to the Color Blind</a>\n<p>Chris Campbell, who has a color vision deficiency, shares techniques to make sure that your designs are still effective to those who have vision issues with color.</p>\n</li>\n<li><a href=\"http://meyerweb.com/eric/thoughts/2008/10/22/javascript-will-save-us-all/\">JavaScript Will Save Us All</a>\n<p>Since browser development is so slow, Eric talks about utilizing JavaScript to extend the browser to support CSS3.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/\">Everything You Know About CSS Is Wrong</a>\n<p>Rachel Andrew’s discusses how we will be able to utilize the table value of the display property to make layout much easier.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/270\">A List Apart: Issue 270</a>\n<p>Aaron Gustafson discusses <a href=\"http://www.alistapart.com/articles/progressiveenhancementwithcss\">Progressive Enhancement with CSS</a> and the A List Apart readers provide <a href=\"http://www.alistapart.com/articles/workingfromhomereadersrespond\">some tips from working from home</a>. I’m not sure I agree with Aaron’s technique of using multiple stylesheets. I think using just one makes it easier to manage, but to each his own.</p>\n</li>\n<li><a href=\"http://www.darrenhoyt.com/2008/10/22/creating-custom-listings-with-expression-engine-part-ii/\">Creating Custom Listings with Expression Engine, Part II</a>\n<p>I have been trying to learn as much about EE as possible, and this tutorial definitely give some insight on how to customize it and utilize its power.</p>\n</li>\n<li><a href=\"http://jasonsantamaria.com/articles/on-the-subject-of-design/\">On the Subject of Design</a>\n<p>This is just a simple list of design books that Jason recommends, but I just love the way he lays things out.</p>\n</li>\n<li><a href=\"http://www.guardian.co.uk/help/insideguardian/2008/oct/22/full-fat-rss-feed-upgrade\">Upgrading our RSS feeds</a>\n<p>The Guardian becomes the first major newspaper to provide full RSS feeds. According to my <a href=\"//trevor-davis.com/blog/web/still-publishing-summary-rss-feeds/\">poll from last week</a>, this makes sense.</p>\n</li>\n<li><a href=\"http://www.wilsonminer.com/posts/2008/oct/20/relative-readability/\">Relative readability</a>\n<p>Wilson Miner discusses why 16 pixels is the most readable font size to use on the web.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/is_css3_rgba_ready_to_rock/\">Is CSS3 RGBa ready to rock? (screencast)</a>\n<p>Andy Clarke talks about Dan Cederholm’s talk at An Event Apart Chicago on RGBa. I had never really heard of it until Dan talked about it, but it sounds really promising.</p>\n</li>\n</ul>',NULL,1830,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','29d7daf6-f13d-4dc1-9d20-1ce2f9d1ad23',1,NULL,NULL),(177,182,'Weekly Link Round-Up #50/51',NULL,'<p>Well again, I am slow getting a blog post written. I have 4 drafts saved right now! I spent last weekend at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I really enjoyed myself. So, here are some links from the past 2 weeks:</p>\n\n<ul><li><a href=\"http://dev.opera.com/articles/view/automatic-numbering-with-css-counters/\">Automatic numbering with CSS Counters</a>\n<p>Wow, I never knew this existed. Although if a user does not have a CSS capable browser, you better make sure the numbers are not essential to the content.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/concept_design_tools/\">Concept Design Tools</a>\n<p>I love the backup software example.</p>\n</li>\n<li><a href=\"http://www.snook.ca/archives/javascript/jquery-bg-image-animations/\">Using jQuery for Background Image Animations</a>\n<p>Jonathan Snook shows how some simple jQuery can add some interesting hover effects.</p>\n</li>\n</ul><ul><li><a href=\"http://www.thinkvitamin.com/features/design/designing-user-centric-web-sites\">Designing User-Centric Web Sites</a>\n<p>A discussion about creating a <em>user-centric</em> site. In the future, this definitely seems like it is going to be the direction that a lot of websites are going to go in.</p>\n</li>\n<li><a href=\"http://gmailblog.blogspot.com/2008/10/new-in-labs-stop-sending-mail-you-later.html\">New in Labs: Stop sending mail you later regret</a>\n<p>A new Labs feature, Mail Goggles, will try to prevent you from sending those late night drunk emails. It asks you to solve math problems when sending emails late at night on the weekends.</p>\n</li>\n<li><a href=\"http://www.cabel.name/2008/10/on-wedding-design.html\">On Wedding Design</a>\n<p>While I’m not a big design nerd, I found this recap of Cabel’s wedding and all of the design he did for it really interesting. I definitely want a photo booth at my wedding!</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/10/07/zoom/\">Zoom</a>\n<p>Dave Shea starts a good discussion about whether browsers using page zoom will change the way that we slice websites. I actually have begun sizing my text absolutely and “<a href=\"http://danielmall.com/archives/2007/04/20/soft_serve.php\">soft-serving</a>” relative units to IE6.</p>\n</li>\n<li><a href=\"http://www.airbagindustries.com/archives/airbag/foxworthy.php\">Foxworthy</a>\n<p>I’m definitely a perfectionist, not a purist.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/269\">A List Apart: Issue 269</a>\n<p>I love that Aaron Gustafson compares the web to an M&amp;M in his article entitled <a href=\"http://www.alistapart.com/articles/understandingprogressiveenhancement\">Understanding Progressive Enhancement</a>. Zeldman gets sentimental and talks about A List Apart after <a href=\"http://www.alistapart.com/articles/tenyears\">Ten Years</a>.</p>\n</li>\n</ul>',NULL,1829,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','10b1d03a-ec2f-478b-affd-67442655819d',1,NULL,NULL),(178,183,'Still Publishing Summary RSS Feeds?',NULL,'<p>While there is no “correct” choice in the full vs. summary RSS feed debate, I came across a situation this weekend that reinforced my opinion for full feeds.</p>\n\n<p>The past few days, I was at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I only had access internet access on Monday and Tuesday during the day. Now, I wanted to read my RSS feeds at other times, so I took my Google Reader offline with <a href=\"http://gears.google.com/\">Gears</a>, and started to read through them.</p>\n\n<p>This worked great until I got to feeds that only gave a summary. How was I supposed to read the article? Stop begging for page views and give me the content.</p>\n\n<p>I guess it’s just one more thing to consider when trying to decide whether to choose full vs. summary. Have your own opinion? Vote below.</p>\n\n<h2>Which do you prefer?</h2>\n[polldaddy poll=1001137]',NULL,1828,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','69d04336-cafb-4098-be4f-b0341529195a',1,NULL,NULL),(179,184,'Weekly Link Round-Up #48/49',NULL,'<p>Let me first apologize for being a terrible blogger. Two weeks without a word from me. I have been very busy at work, doing a bunch of freelance, and working on the redesign for this site.</p>\n\n<p>I also took a two day trip to New York for work to attend a gala for the <a href=\"http://www.nationalparks.org/\">National Park Foundation</a>. So basically, this is two weeks worth of links in one blog article.</p>\n\n<p>I’m hoping to launch the redesign before I head to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart</a> on the 11th. So here it is, some interesting stuff from the past 2 weeks:</p>\n\n<ul><li><a href=\"http://www.markboulton.co.uk/journal/comments/design_by_community/\">Design By Community</a>\n<p>I agree that design by committee doesn’t work, but Mark discusses design by <strong>community</strong>, and it looks like it has some promise.</p>\n</li>\n<li><a href=\"http://www.airbagindustries.com/archives/airbag/hire.php\">Hire.</a>\n<p>Airbag created an awesome <a href=\"http://rfp.airbagindustries.com/\">RFP</a> form to improve the communication at the beginning of projects.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/09/17/anchor_butto/\">Anchor Buttons</a>\n<p>Dave Shea plays with the button element. While the buttons look basically the same in all browsers, I know that <a href=\"//trevor-davis.com/blog/tutorial/input-vs-button/\">there are some programmatic issues using the button element</a>. We have also found that some version of Windows Mobile don’t support it.</p>\n</li>\n</ul><ul><li><a href=\"http://www.zeldman.com/2008/09/18/a-list-apart-is-changing/\">A List Apart is changing</a>\n<p>There are only so many ground-breaking CSS tricks that can be come up with. Expanding the topics of A List Apart’s articles to cater to <strong>all</strong> people who build websites seems like a great move.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/time_to_stop_showing_clients_static_design_visuals/\">Time to stop showing clients static design visuals</a>\n<p>While I think Andy Clarke has a good idea here, I don’t think it is very realistic. It is just a very risky move to basically create the sliced template before the design has even been signed off on. You would really need to have some trusting clients.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/268\">A List Apart: Issue 268</a>\n<p>So A List Apart starts off with the new direction in fine fashion with <a href=\"http://www.alistapart.com/articles/webstandards2008\">Web Standards 2008: Three Circles of Hell</a> and <a href=\"http://www.alistapart.com/articles/testdriven\">Test-Driven Progressive Enhancement</a>. Molly’s article gives a great insider’s perspective on some of the groups that are working to continue the advancement of web standards.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/five_css_design_browser_differences_i_can_live_with/\">Five CSS design browser differences I can live with</a>\n<p>I agree totally with Andy here. I think as long as what you are doing with advanced CSS selectors is not essential to being able to read the content, I say we go for it. There is only one problem: clients. I guess we will just have to work hard trying to educate our clients.</p>\n</li>\n<li><a href=\"http://ajaxian.com/archives/jquery-finds-its-way-into-microsoft-and-nokia-stacks\">jQuery finds its way into Microsoft and Nokia stacks</a>\n<p>It’s great to see jQuery getting usage from some big names; it can only do good things for the library.</p>\n</li>\n<li><a href=\"http://jeffcroft.com/blog/2008/sep/30/when-can-we-stop-talking-about-supporting-browsers/\">When can we stop talking about “supporting” certain browsers?</a>\n<p>I think Jeff makes a great point here: if you know what you are doing with web development, your sites should be “supported” in <strong>all</strong> browsers.</p>\n</li>\n<li><a href=\"http://www.thinkvitamin.com/features/webapps/the-future-of-web-apps-in-an-integrated-world\">The Future Of Web Apps In An Integrated World</a>\n<p>This is an awesome article discussing what our world could be like if our phones could control everything. I want to live in that world.</p>\n</li>\n</ul>',NULL,1827,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','f2729a94-7ef4-4127-a86f-cc8f97cdd13f',1,NULL,NULL),(180,185,'Web Designer Guide',NULL,'<p>About a week ago, I was asked if I wanted to be included in Web Hosting Search’s <a href=\"http://www.webhostingsearch.com/web-design-companies.php\">Web Designer Guide</a>. The project seems like a great idea, and below is a quote from the organizer, Eva, about the project:</p>\n\n<blockquote>\n<p>“This guide will aide visitors in finding a web designer in their local area. Say you want to start a website and sell hats and you are based in Tennessee but you have no idea how to make a website. Well, you can look at our list of designers, find one in Tennessee and connect. Instead of searching on Google everywhere, this list already has great designers since WHS has contact with every company listed. We also geographically separated them since many people want to work with someone in their area.”</p>\n</blockquote>\n\n<p>You can read more about the project <a href=\"http://www.webhostingsearch.com/blogs/hosting-events/?p=16\">on their blog</a>. It’s pretty cool to even be asked to be included, and I’m interested to see how the guide will grow.</p>',NULL,1826,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:24','64971c8d-78a0-4e5c-b5d0-614cabe3f498',1,NULL,NULL),(181,186,'Weekly Link Round-Up #47',NULL,'<p>Ah, football season is so great. It’s hard to get any work done on my redesign when there is so much football on TV though. Oh well, here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://jeffcroft.com/blog/2008/sep/11/two-thousand-twenty-two/\">Two thousand twenty two</a>\n<p>This post by Jeff is kind of like a tragic comedy. While it is laughable how ridiculous it is that it will take that long for the HTML 5 spec to become “Proposed Recommendation”, it is also sad how long it takes for advances in browsers to actually happen.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/09/12/dear-aiga-where-are-the-web-designers/\">Dear AIGA, where are the web designers?</a>\n<p>Jeffrey Zeldman points out that AIGA is really not catering to Web Designers. I think they need to reevaluate their thinking because the Web is almost more important than any other form of media these days.</p>\n</li>\n</ul><ul><li><a href=\"http://freelanceswitch.com/money/how-to-keep-the-freelancing-spark-without-burning-out/\">How To Keep The Freelancing Spark (Without Burning Out)</a>\n<p>Some nice tips to keep in mind to prevent from burning out. This is especially important to people like me who have a full-time job and freelance on the side.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/09/15/a-modest-proposal/\">A modest proposal</a>\n<p>While Zeldman’s proposal will never happen, this article really shows why he is such a prominent figure in the Web community. Even though this is not a web related article, he is such a great communicator.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/09/15/wordpress-developers-toolbox/\">WordPress Developer’s Toolbox</a>\n<p>WordPress is my tool of choice these days, and this is a nice collection of resources.</p>\n</li>\n</ul>',NULL,1825,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','97be0d66-4caa-465e-bfc3-938855ef09f8',1,NULL,NULL),(182,187,'Make Your Content Smarter With jQuery',NULL,'<p>At work today, we were asked by a client to add a link to download Adobe Acrobat onto every page that had a PDF linked on it. Since the site was mostly static, with some content coming from the content management system, we were not interested in adding it to all of the static pages and changing the programming of the CMS output pages.</p>\n\n<p><a href=\"http://seeyouin1984.com/\">My co-worker</a> and I decided that the best way to do it would be with JavaScript. Since the site was already using jQuery, our company’s library of choice, it turned out to be quite a simple task. If you just want to get to the code, <a href=\"//trevor-davis.com/play/jquery-pdf-links/\">take a look at the demo</a>.</p>\n<h2>The Idea</h2>\n<ol><li>We add the link to download Adobe Acrobat to the site’s template</li>\n<li>We hide the link using CSS</li>\n<li>We use jQuery to see if there are any links on the page linking to a PDF</li>\n<li>If there are, we use jQuery to show the link</li>\n</ol><h2>The Execution</h2>\n<p>Ok, simple enough, just add the link to the source of the document:</p>\n<div class=\"codeblock\"><code>\n&lt;p id=\"acrobatDownload\"&gt;&lt;a href=\"http://www.adobe.com/products/acrobat/readstep2.html\"&gt;Download Adobe Acrobat to view the PDFs on this page&lt;/a&gt;&lt;/p&gt; \n\n</code></div>\n\n<p>Then, hide it with CSS:</p>\n<div class=\"codeblock\"><code>\n#acrobatDownload { display: none; } \n\n</code></div>\n\n<h3>The jQuery</h3>\n<p>First, we want to check and see if any of the links on the page end with <strong>.pdf</strong>. Then, if there are any, we fade in the link:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> if($(\'a[href$=.pdf]\').length &gt; 0) {<br />  $(\'#acrobatDownload\').fadeIn(\'slow\');<br /> }<br />}); \n\n</code></div>\n<p>I have created <a href=\"//trevor-davis.com/play/jquery-pdf-links/\">a demo page with a PDF link on it</a> to see this in action.</p>\n\n<h2>Conclusion</h2>\n<p>I can’t even imagine how much time and hassle we saved ourselves by doing this with JavaScript. Plus, it could provide useful to someone who doesn’t have Acrobat (although I can’t imagine that there are many).</p>\n\n<p>The concept is actually quite simple, and my mind is grinding away trying to think of other ways to use jQuery to do things like this.</p>\n\n<p>Can you all think of anything?</p>',NULL,1824,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','a41f6378-4a92-4c71-81a5-d8e3d66407e3',1,NULL,NULL),(183,188,'Weekly Link Round-Up #47',NULL,'<p>It is amazing how fast these weeks have been flying by. I have a couple of “real” blog posts that I have been working on, and I need to finish them up and get them published. Here are a few things that I found interesting in the last week:</p>\n\n<ul><li><a href=\"http://labs.mozilla.com/2008/08/introducing-ubiquity/\">Introducing Ubiquity</a>\n<p>After watching the <a href=\"http://adaptivepath.com/aurora/\">Aurora</a> concept videos, it is great to see something similar already be in development.</p>\n</li>\n<li><a href=\"http://www.devlounge.net/publishing/finding-harmony-between-categories-and-tags-on-blogs\">Finding Harmony Between Categories and Tags on Blogs</a>\n<p>Using categories and tags effectively is an integral part to information organization on blogs.</p>\n</li>\n</ul><ul><li><a href=\"http://www.idolhands.com/personal/obama-is-restful/\">Obama is RESTful</a>\n<p>I love that we are comparing presidential candidates based on their websites. Obama wins.</p>\n</li>\n<li><a href=\"http://snook.ca/archives/opinion/shelf-life/\">The Shelf Life of a Web Site</a>\n<p>After just redesigning our company website, Jonathan Snook brings up an interesting question on the shelf life of technology.</p>\n</li>\n</ul>',NULL,1823,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','140baea3-546f-4bd6-86c3-11f663e6df76',1,NULL,NULL),(184,189,'Weekly Link Round-Up #46',NULL,'<p>Ah, long weekends are the best. I got a lot of freelance work done, and I’m hoping to finish up the couple of projects I am working on so that I can redesign my site. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/08/26/how-simple-web-design-helps-your-business/\">How Simple Web Design Helps Your Business</a>\n<p>This is a list showing how some nice design decisions have helped these e-commerce sites.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/web_design_by_designers/\">Web Design by Designers</a>\n<p>When award-winning design firms design their website, they should let their work be the focus of the site.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/266\">A List Apart: Issue 266</a>\n<p>Aaron Rester discusses a new way of thinking when developing a site in <a href=\"http://www.alistapart.com/articles/mappingmemory\">Mapping Memory: Web Designer as Information Cartographer</a>, and Dave Shea shows us how to add a little “flair” to CSS Sprites with jQuery in <a href=\"http://www.alistapart.com/articles/sprites2\">CSS Sprites2 – It’s JavaScript Time</a>.</p>\n</li>\n<li><a href=\"http://www.guardian.co.uk/technology/2008/aug/28/internet.captcha\">How Captcha was foiled: Are you a man or a mouse?</a>\n<p>Spam is obviously one of the biggest issues on the web, but are we attacking it incorrectly with captcha? Some think we are: Matt Mullenweg’s answer is to focus on the content rather than the user.</p>\n</li>\n</ul>',NULL,1822,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','256df3a3-72a1-448b-afb2-a7fd468270d4',1,NULL,NULL),(185,190,'Weekly Link Round-Up #45',NULL,'<p>Hopefully I am getting down to the last month of so of doing these weekly round-ups. On my new site, I plan on having an aside section for posting a link and a short blurb. Here are a few links that I found interesting this week:</p>\n\n<ul><li><a href=\"http://nettuts.com/site-builds/build-your-first-facebook-app/\">Build Your First Facebook App</a>\n<p>While there is an abundance of Facebook Apps (and a lot of annoying ones), this is a nice tutorial about creating them.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/08/18/sneakernet_s/\">Sneakernet SVN</a>\n<p>Dave Shea describes his technique of <strong>source control</strong>. While using an USB key may not be the most elegant solution, it works for him. Source control is a major issue, and I think we will see more and more elegant solutions in the future.</p>\n</li>\n<li><a href=\"http://nettuts.com/html-css-techniques/10-principles-of-the-css-masters/\">10 Principles of the CSS Masters</a>\n<p>This is kind of like my post about <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/\">The 6 Most Important CSS Techniques You Need To Know</a>. So much so that a part of the article was even included.</p>\n</li>\n</ul>',NULL,1821,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','1d3aec02-1686-45fb-8d76-8fb66c867c49',1,NULL,NULL),(186,191,'jQuery Tabbed Navigation',NULL,'<p>It seems like more and more these days, JavaScript tabbed interfaces are being used. There are plenty of scripts out there, but I think it is important to be able to do things yourself. A lot of JavaScript “plugins” that you will find online will give you way more than you really need, and you may understand how to use it, but you will not really understand what it is really doing.</p>\n\n<p>First, I thought I would walk through creating a tabbed navigation script with jQuery, and then modifying it so that it works without JavaScript.</p>\n\n<p>If you want to skip ahead, <a href=\"//trevor-davis.com/play/javascript-tabbed-navigation/\">take a look at the sample jQuery tabbed interface</a>.</p>\n\n<h2>The Markup</h2>\n<p>I’m going to set this up using classes so that it is possible to use this multiple times on a page. There are two different pieces to the markup: the navigation and the actual content for the tabs.</p>\n\n<h3>The Navigation</h3>\n<div class=\"codeblock\"><code>\n&lt;ul class=\"tabNav\"&gt;<br /> &lt;li class=\"current\"&gt;&lt;a href=\"#\"&gt;Tab 1&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 2&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 3&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 4&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 5&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n<p>Pretty straightforward, just an un-ordered list. The JavaScript will accommodate any number of tabs. Notice that the first tab has a class of <strong>current</strong>. This will be the class to style to show the active tab.</p>\n\n<h3>The Tab Content</h3>\n<div class=\"codeblock\"><code>\n&lt;div class=\"tabContainer\"&gt;<br /> &lt;div class=\"tab current\"&gt;<br />  &amp;hellip;Content for Tab 1&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 2&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 3&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 4&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 5&amp;hellip;<br /> &lt;/div&gt;<br />&lt;/div&gt; \n\n</code></div>\n<p>Again, pretty straightforward: a container and a div for each of the tabs’ content. A couple of things to note: the first tab content also has a class of <strong>current</strong>, and the tabs’ content divs need to appear in the same order as the navigation.</p>\n\n<h2>Some Basic CSS</h2>\n<p>I’m not going to explain how I completely style my example, but I will highlight the necessary styles for the tabs to work.</p>\n\n<p>To highlight the active tab, this is what you want to style:</p>\n<div class=\"codeblock\"><code>\nul.tabNav li.current a { &amp;hellip; } \n\n</code></div>\n\n<p>In order to hide all of the tabs’ contents except for the active tab, these are the styles that are necessary:</p>\n<div class=\"codeblock\"><code>\ndiv.tabContainer div.tab { display: none; }<br />div.tabContainer div.current { display: block; } \n\n</code></div>\n\n<h2>The JavaScript</h2>\n<p>Ok, this is definitely the meat of the post. Since I wanted this to be as generic and simple as possible, I made heavy use of the <a href=\"http://docs.jquery.com/Traversing/parent\">parent</a> and <a href=\"http://docs.jquery.com/Traversing/children\">children</a> selectors.</p>\n\n<p>So to start, we want to <strong>add onclick events to the tabs</strong>:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>When each tab is clicked, we want to see which tab was clicked on so that we can show the appropriate content. So we count the previous number of siblings of the parent (the list item) and store it in the <strong>curChildIndex</strong> variable:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  &lt;strong&gt;var curChildIndex = $(this).parent().prevAll().length + 1;&lt;/strong&gt;<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>Next, we want to remove the class of current from the currently selected tab, and add the class of current to the tab we just clicked:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  var curChildIndex = $(this).parent().prevAll().length + 1;<br />  &lt;strong&gt;$(this).parent().parent().children(\'.current\').removeClass(\'current\');<br />  $(this).parent().addClass(\'current\');&lt;/strong&gt;<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>The final step is to hide the tab content that is currently showing and to show the tab content that matches the tab that was just clicked on. This is where we will make use of the <strong>curChildIndex</strong> variable and the <a href=\"http://docs.jquery.com/Selectors/nthChild\">nth Child Selector</a>:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  var curChildIndex = $(this).parent().prevAll().length + 1;<br />  $(this).parent().parent().children(\'.current\').removeClass(\'current\');<br />  $(this).parent().addClass(\'current\');<br />  &lt;strong&gt;$(this).parent().parent().next(\'.tabContainer\').children(\'.current\').slideUp(\'fast\',function() {<br />   $(this).removeClass(\'current\');<br />   $(this).parent().children(\'div:nth-child(\'+curChildIndex+\')\').slideDown(\'normal\',function() {<br />    $(this).addClass(\'current\');<br />   });<br />  });&lt;/strong&gt;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>The previous snippet of the code is traversing from the clicked tab ,<strong>(this)</strong>, to the current content that has a class of <strong>current</strong>, sliding that up, and removing the class of current. Once that is complete, we are selecting the tab content that matches the tab clicked, sliding it down, and adding the class of current.</p>\n\n<p><a href=\"//trevor-davis.com/play/javascript-tabbed-navigation/\">Take a look at the sample jQuery tabbed interface</a> to see it in action.</p>\n\n<h2>Making it Work for Non-JavaScript Users</h2>\n<p>Now, that works great, but what about people who don’t have JavaScript enabled? Sure it’s a very small number, but we still want to account for those people.</p>\n<p>Most other JavaScript tab scripts use JavaScript to hide the non-active tab content sections or to write in the tabbed navigation, but then you get that flash of changing content. My idea is to use CSS to hide the non active tab content (which I discussed earlier) and pass a parameter into the URL to select which tab to show.</p>\n<h3>The Code</h3>\n<p>Below is the new code for the tab navigation:</p>\n<div class=\"codeblock\"><code>\n&lt;ul class=\"tabNav\"&gt;<br /> &lt;li&lt;?php if(!isset($_GET[\'tab\'])) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"\"&gt;Tab 1&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 2) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=2\"&gt;Tab 2&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 3) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=3\"&gt;Tab 3&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 4) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=4\"&gt;Tab 4&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 5) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=5\"&gt;Tab 5&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<p>Basically, I am checking to see if the variable <strong>tab</strong> is set in the URL, and determining the value of it. I also use the same logic for the tab content. <a href=\"//trevor-davis.com/play/javascript-tabbed-navigation/?tab=3\">This is the example page with tab 3 displaying</a>. So basically, if the user does not have JavaScript, it would reload the entire page and display the correct tab.</p>\n\n<h2>Conclusion</h2>\n<p>This was just a simple example of jQuery, and the possibilities are endless. Instead of being so quick to use a plugin or someone’s code, try to do it yourself. You will become a much better programmer because of it. Even if you aren’t doing things as efficiently as possible, you will learn something new every time.</p>',NULL,1820,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','a42986f3-abcd-4d05-8ff6-030868f2e880',1,NULL,NULL),(187,192,'Weekly Link Round-Up #44',NULL,'<p>Another busy week with freelance,  but hopefully I’ll be able to finish them up shortly so I can work more on my redesign/realign. My hope is to finish it before I go to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a> in October. Just a few interesting things I found this week:</p>\n\n<ul><li><a href=\"http://www.thinkvitamin.com/features/webapps/developing-a-better-cms\">Developing a better CMS</a>\n<p>This is an interesting article describing the process of creating the CMS <strong>Firerift</strong>. Firerift looks interesting, but the website unfortunately doesn’t give enough details.</p>\n</li>\n<li><a href=\"http://www.simplebits.com/notebook/2008/08/14/ampersands.html\">Use the Best Available Ampersand</a>\n<p>As Dan has discussed before, you should always use the best possible ampersand. He gives a nice collection of great looking ampersands.</p>\n</li>\n</ul>',NULL,1819,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','b586c642-15a3-4187-bc67-d203d4ae1d4c',1,NULL,NULL),(188,193,'Weekly Link Round-Up #43',NULL,'<p>It’s hard to believe that it’s already the middle of August. This week was a bit crazy: managing two freelance projects and getting <a href=\"http://www.matrixgroup.net/\">my company website launched</a>. My CEO agreed that if we got the site launched by Friday, she would send myself and my fellow Front-End Developers to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>. So yeah, that’s going to be awesome. Now, here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://adaptivepath.com/aurora/\">Aurora Concept Video</a>\n<p>Adaptive Path created videos for the Mozilla Labs concept browser series. This whole series was really cool, but I think that the user interaction is a long time from showing up. I also wonder how “non-technical” users would respond to an interface like this.</p>\n</li>\n<li><a href=\"//trevor-davis.com/blog/web/why-is-there-no-float-center/\">Why is there no float: center?</a>\n<p>I posed this very simple question last week, and there was some <a href=\"//trevor-davis.com/blog/web/why-is-there-no-float-center/#comments\">great discussion</a> that ended up happening.</p>\n</li>\n<li><a href=\"http://psdtuts.com/drawing/create-a-citrus-fruit-design-from-scratch-in-photoshop/\">Create a Citrus Fruit Design From Scratch in Photoshop</a>\n<p>And this is why I will never be a graphic designer. How do you even do that? So amazing.</p>\n</li>\n</ul><ul><li><a href=\"http://www.thinkvitamin.com/features/biz/the-5-hidden-costs-of-running-a-cms\">The 5 hidden costs of running a CMS</a>\n<p>I think these are definitely costs that are not really considered when deciding whether to power your site by a CMS, and which CMS to use.</p>\n</li>\n<li><a href=\"http://www.techcrunch.com/2008/08/06/an-evolving-cultural-curiosity-we-need-a-fake-follow/\">An Evolving Cultural Curiosity: We Need A Fake Follow</a>\n<p>This is an excellent point that Michael brings up. On Twitter, if someone chooses to follow you, but you do not follow them, there is this sense of rejection from the person who decided to follow you. But honestly, they have no idea what your life is like. Maybe you are just so busy, that you only care to follow your closest friends. I think this is something that Twitter and other social networking sites should seriously consider.</p>\n</li>\n</ul>',NULL,1818,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','578fb243-322c-4e6e-8d95-efdcd7bc037c',1,NULL,NULL),(189,194,'Why is there no float: center?',NULL,'<p>When they were writing the specifications for CSS, why didn’t they allow things to be <strong>floated center</strong>?</p>\n\n<p>I was looking through an old site at work this week, that was developed long before me, and I saw someone tried to do this: <strong>float: center</strong>. So that got me thinking, why would they include the specification to float left and right, but not center?</p>\n\n<p>Imagine the posibilities…the following are just a couple of simple examples of what could be possible, <strong>they are not meant to be used in a production environment</strong>.</p>\n<ul><li><a href=\"//trevor-davis.com/play/float-center/\">Float an Image Between Two Columns</a>\n<p>In this example, I just floated the image to the right, and gave it a -100px right margin (half the width of the image). Then I just added an empty div to the right hand column, floated it left, and gave it a height and width.</p></li>\n<li><a href=\"//trevor-davis.com/play/float-center/image-align-center/\">Float an Image in the Middle of One Column</a>\n<p>This one is really hacky. I absolutely positioned the image, chose a monospaced font, and then added non-breaking spaces so that the image was no longer covering the text.</p></li>\n</ul><p>I think being able to float something in the center could really make pages more interesting. I would be curious to know if there was any specific explanation for why you cannot float to the center.</p>',NULL,1817,NULL,'2014-01-19 12:59:11','2020-03-18 20:03:25','50dbe1ae-f61f-41ff-9b3b-447e1c6dab96',1,NULL,NULL),(190,195,'Hiring Web Designers and Developers',NULL,'<p>My company, <a href=\"http://www.matrixgroup.net/\">Matrix Group International</a>, is currently looking to hire Web Designers, Web Developers, Python Software Engineers, a Product Manager, and an Executive Assistant to the CEO.</p>\n<p>We are located just outside of Old Town Alexandria, VA. We are having <a href=\"http://www.matrixgroup.net/events/index.cfm?fa=details&amp;Calendar_ID=30358\">an Open House on Friday from 4-7pm</a>. So if you or anyone you know could fill those spots, come join us on Friday.</p>',NULL,1816,NULL,'2014-01-19 12:59:12','2020-03-18 20:03:25','3510aea8-6fc3-4335-a594-c76962730f06',1,NULL,NULL),(191,196,'Weekly Link Round-Up #42',NULL,'<p>I just found out today that if we get our company website launched by Wednesday, our company is going to send myself and the other Front-End Developers to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, so that’s pretty awesome. Just a few links from this week:</p>\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/07/31/a-small-survey-of-big-blogs-further-findings/\">A Small Study Of Big Blogs: Further Findings</a>\n<p>After an article last week discussing some of the findings from a survey of the 50 most popular blogs, Smashing Magazine reveals more.</p>\n</li>\n<li><a href=\"http://patterntap.com/\">Pattern Tap</a>\n<p>Great collection of web design patterns.</p>\n</li>\n<li><a href=\"http://blueflavor.com/blog/2008/aug/04/time-web-forward-movement/\">Time for a Web-Forward Movement</a>\n<p>I definitely agree with what Kenny has to say. I feel like there was this huge push for standards a few years ago, and it has really started to slow down. <strong>We should not be satisfied!</strong> There is still so much more to do.</p>\n</li>\n</ul>',NULL,1815,NULL,'2014-01-19 12:59:12','2020-03-18 20:03:25','29054e9a-9bfc-4232-a45d-a43afbe7523b',1,NULL,NULL),(192,197,'I Took the 2008 Survey (for people who make websites)',NULL,'<p><a href=\"http://alistapart.com/articles/survey2008\"><img src=\"//trevor-davis.com/images/content/2008/07/i-took-the-2008-survey.gif\" alt=\"I Took The 2008 Survey\" width=\"180\" height=\"46\" class=\"imageRight frame\" /></a>It’s that time of the year again, <a href=\"http://alistapart.com/articles/survey2008\">the A List Apart 2008 Survey</a> is out.</p>\n<p>It only takes a few minutes to fill out, and the data compiled at the end is awesome. I look forward to seeing the results in the next few weeks.</p>',NULL,1814,NULL,'2014-01-19 12:59:12','2020-03-18 20:03:25','11754a86-c561-4dd4-8ae6-c78aba687405',1,NULL,NULL),(193,198,'Weekly Link Round-Up #41',NULL,'<p>Well, another week and weekend flew by. I’m finally starting to work on my redesign/realign, and I hope that I can get it launched in not too long. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://meyerweb.com/eric/thoughts/2008/07/23/any-element-linking-demo/\">Any-Element Linking Demo</a>\n<p>Eric Meyer created a demo of his proposed “any-element” linking. This could be an awesome addition to HTML 5 (although who knows how long it will take to actually be implemented).</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1149-modal-overlays-beyond-the-dialog-box\">Modal overlays beyond the dialog box</a>\n<p>Modal overlays definitely have become an integral part of the web these days. This is a nice discussion about good and bad uses.</p>\n</li>\n</ul><ul><li><a href=\"http://getfirebug.com/lite.html\">Firebug Lite</a>\n<p>Instead of only being able to use Firebug in Firefox, you can use the lite version (a bit of JavaScript) to utilize Firebug functionality in other browsers. It was definitely finicky, but it’s a big upgrade from other debugging tools.</p>\n</li>\n<li><a href=\"http://www.silverbackapp.com/\">Silverback</a>\n<p>The much anticipated Silverback finally launched. I’m going to have to find the right time to use that 30 day trial. This looks so awesome.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/07/24/a-small-study-of-big-blogs/\">A Small Design Study Of Big Blogs</a>\n<p>Blogs are obviously a huge part of the web. Smashing Magazine takes the time to examine the 50 most popular Technorati blogs to investigate design trends and more. Definitely a good read.</p>\n</li>\n</ul>',NULL,1813,NULL,'2014-01-19 12:59:12','2020-03-18 20:03:25','1219e5ea-e1c3-45f4-9777-d7ba0743d909',1,NULL,NULL),