diff --git a/video_embed_field.field.inc b/video_embed_field.field.inc
index 22418e7..5a6daaa 100644
--- a/video_embed_field.field.inc
+++ b/video_embed_field.field.inc
@@ -56,6 +56,16 @@ function video_embed_field_field_widget_info() {
         'default value' => FIELD_BEHAVIOR_DEFAULT
       ),
     ),
+    'video_embed_field_custom' => array(
+      'label' => 'Video (Custom)',
+      'description' => 'Provides a field where you can enter your own HTML for embedding videos, in addition to the URL field',
+      'field types' => array('video_embed_field'),
+      'settions' => array(),
+      'behaviors' => array(
+        'multiple values' => FIELD_BEHAVIOR_DEFAULT,
+        'default value' => FIELD_BEHAVIOR_DEFAULT
+      ),
+    )
   );
 }
 
@@ -64,6 +74,8 @@ function video_embed_field_field_widget_info() {
  */
 function video_embed_field_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
   // Don't need to check the type right now because we're only defining one
+  $widget = $instance['widget']['type'];
+  
   $element += array(
     '#type' => 'fieldset'
   );
@@ -78,9 +90,39 @@ function video_embed_field_field_widget_form(&$form, &$form_state, $field, $inst
       )
     ),
     '#default_value' => isset($items[$delta]['video_url'])?$items[$delta]['video_url']:'',
-    '#required' => $element['#required']
+    '#required' => $element['#required'],
+    '#states' => array(
+      'visible' => array(
+        ':input[name*="use_embed_code"]' => array('checked' => FALSE),
+      ),
+    ),
   );
   
+  if($widget == 'video_embed_field_custom'){
+    //Initially hidden, unless checkbox is checked
+    $element['embed_code'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Embed code'),
+      '#description' => t('Place HTML embed code provided by video host here.'),
+      '#default_value' => isset($items[$delta]['embed_code'])?$items[$delta]['embed_code']:'',
+      '#attributes' => array(
+        'class' => array('video-embed-field-embed-text'),
+      ),
+      '#maxlength' => 1024,
+      '#states' => array(
+        'invisible' => array(
+          ':input[name*="use_embed_code"]' => array('checked' => FALSE),
+        ),
+      ),
+    );
+    
+    $element['use_embed_code'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Use HTML embed code'),
+      '#default_value' => isset($items[$delta]['use_embed_code'])?$items[$delta]['use_embed_code']:0,
+    );
+  }
+  
   // Add the description field if enabled.
   if (!empty($instance['settings']['description_field'])) {
     $element['description'] = array(
@@ -90,7 +132,7 @@ function video_embed_field_field_widget_form(&$form, &$form_state, $field, $inst
       '#description' => t('The description which may be used as a label.'),
     );
   }
-
+  
   return $element;
 }
 
@@ -99,31 +141,33 @@ function video_embed_field_field_widget_form(&$form, &$form_state, $field, $inst
  */
 function video_embed_field_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
   foreach ($items as $delta => $item) {
-    if (!empty($item['video_url'])) {
-      $item['video_url'] = trim($item['video_url']);
-      if (stristr($item['video_url'], '.') && !stristr($item['video_url'], 'http://') && !stristr($item['video_url'], 'https://')) {
-        $item['video_url'] = 'http://' . $item['video_url'];
-      }
-      
-      $parts = parse_url($item['video_url']);
-      if (!$parts || !isset($parts['host'])) {
-        $errors[$field['field_name']][$langcode][$delta][] = array(
-          'error' => t('Invalid Url'), 
-          'message' => t('Video: Invalid Video URL.', array('%name' => $instance['label'])),
-        );
-      }
-      else {
-        $host = $parts['host'];
-        if (stripos($host, 'www.') > -1) {
-          $host = substr($host, 4);
+    if(isset($item['use_embed_code']) == 0){
+      if (!empty($item['video_url'])) {
+        $item['video_url'] = trim($item['video_url']);
+        if (stristr($item['video_url'], '.') && !stristr($item['video_url'], 'http://') && !stristr($item['video_url'], 'https://')) {
+          $item['video_url'] = 'http://' . $item['video_url'];
         }
-        $domains = _video_embed_field_get_provider_domains();
-        if (!array_key_exists($host, $domains)) {
+        
+        $parts = parse_url($item['video_url']);
+        if (!$parts || !isset($parts['host'])) {
           $errors[$field['field_name']][$langcode][$delta][] = array(
-            'error' => t('Unsupported Video Provider'), 
-            'message' => t('%name: This video provider is not currently supported.', array('%name' => $instance['label'])),
+            'error' => t('Invalid Url'), 
+            'message' => t('Video: Invalid Video URL.', array('%name' => $instance['label'])),
           );
         }
+        else {
+          $host = $parts['host'];
+          if (stripos($host, 'www.') > -1) {
+            $host = substr($host, 4);
+          }
+          $domains = _video_embed_field_get_provider_domains();
+          if (!array_key_exists($host, $domains)) {
+            $errors[$field['field_name']][$langcode][$delta][] = array(
+              'error' => t('Unsupported Video Provider'), 
+              'message' => t('%name: This video provider is not currently supported.', array('%name' => $instance['label'])),
+            );
+          }
+        }
       }
     }
   }
@@ -168,7 +212,12 @@ function video_embed_field_field_presave($entity_type, $entity, $field, $instanc
  * Implements of hook_field_is_empty().
  */
 function video_embed_field_field_is_empty($item, $field){
-  return empty($item) || empty($item['video_url']) || $item['video_url'] === '';
+  if($item['use_embed_code'] == 0){
+    return empty($item) || empty($item['video_url']) || $item['video_url'] === '';
+  }
+  else{
+    return empty($item) || empty($item['embed_code']) || $item['embed_code'] === '';
+  }
 }
 
 /**
@@ -314,13 +363,22 @@ function video_embed_field_field_formatter_view($entity_type, $entity, $field, $
     }
     //Render the field
     if ($display['type'] == 'video_embed_field') {
-      $element[$delta] = array(
-        array(
-          '#theme' => 'video_embed_field_embed_code',
-          '#url' => $item['video_url'],
-          '#style' => $display['settings']['video_style'],
-        ),
-      );
+      if($item['use_embed_code'] == 0){
+        $element[$delta] = array(
+          array(
+            '#theme' => 'video_embed_field_embed_code',
+            '#url' => $item['video_url'],
+            '#style' => $display['settings']['video_style'],
+          ),
+        );
+      }
+      else{
+        $element[$delta] = array(
+          array(
+            '#markup' => $item['embed_code'],
+          ),
+        );
+      }
     }
     else if ($display['type'] == 'video_embed_field_thumbnail') {
       if (isset($item['thumbnail_path'])) {
diff --git a/video_embed_field.install b/video_embed_field.install
index 9c54cbd..20d970c 100755
--- a/video_embed_field.install
+++ b/video_embed_field.install
@@ -27,6 +27,10 @@ function video_embed_field_field_schema($field){
           'length' => 1024,
           'default' => ''
         ),
+        'use_embed_code' => array(
+          'type' => 'int',
+          'default' => 0,
+        ),
         'description' => array(
           'type' => 'text',
           'not null' => FALSE,
@@ -190,4 +194,37 @@ function video_embed_field_update_7003() {
  */
 function video_embed_field_update_7004() {
   variable_set('colorbox_load', 1);
+}
+
+/**
+ *  Add field for 'use_embed_code'
+ */
+function video_embed_field_update_7005(){
+  // Get the list of fields of type 'video_embed_field'.
+  $video_embed_fields = array();
+  foreach (field_info_fields() as $field_name => $field_info) {
+    if ($field_info['type'] == 'video_embed_field') {
+      $video_embed_fields[$field_name] = field_read_field($field_name);
+    }
+  }
+  
+  foreach ($video_embed_fields as $field) {
+    if ($field['deleted']) {
+      $table = "field_deleted_data_{$field['id']}";
+      $revision_table = "field_deleted_revision_{$field['id']}";
+    }
+    else {
+      $table = "field_data_{$field['field_name']}";
+      $revision_table = "field_revision_{$field['field_name']}";
+    }
+    $column = $field['field_name'] . '_' . 'use_embed_code';
+    db_add_field($table, $column, array(
+      'type' => 'int',
+      'default' => 0,
+    ));
+    db_add_field($revision_table, $column, array(
+      'type' => 'int',
+      'default' => 0,
+    ));
+  }
 }
\ No newline at end of file
