<?php
function sitehelper_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   if($node->type == 'cinfo') {
      switch ($op) {
         case 'update':
         break;
         case 'view':
         break;
         case 'validate':
         $newgcd = trim($node->field_gcd_user_id[0][value]);
         if(!preg_match("/^[a-z]{6}_[0-9]{4}$/i", $newgcd)) {
            // VALIDATION GOES HERE 
            form_set_error('field_gcd_user_id', 'Please enter a valid GCD User ID.');
         }
         $newfed = trim($node->field_federal_id_number_0[0][value]);
         if(!preg_match("/^([0-9]{3}-?[0-9]{2}-?[0-9]{4}|[0-9]{2}-[0-9]{7})$/", $newfed)) {
            form_set_error('field_federal_id_number_0', 'Please enter a valid Federal ID number.');
         }
         if($node->field_are_you_a_route_operator[0][value] == 'Yes') {
            $newmdr = trim($node->field_mdr_number[0][value]);
            if(!preg_match("/^[0-9]{7}-[0-9]{3}-MDR$/", $newmdr)) {
               form_set_error('field_mdr_number', 'If you are a Route Operator, you must enter a valid MDR Number.');
            }
         }
         break;
         case 'delete':
         break;
      }
   }
   elseif($node->type == 'linfo') {
      switch ($op) {
         case 'insert':
         break;
         case 'update':
         break;
         case 'view':
         break;
         case 'validate':
         if(db_result(db_query("SELECT field_inactivel_value FROM {content_type_linfo} 
            WHERE field_inactivel_value = '%s' AND nid = %d", inactive, $node->nid))) {
            form_set_error('field_inactivel', 'This location is inactive. Updates are unavailable.');
         } else {
            if($node->field_inactivel[0][value] == 'inactive' && 
               db_result(db_query("SELECT field_parentnid_value, field_inactive_value FROM {content_type_minfo} 
               WHERE field_parentnid_value = %d AND field_inactive_value = '%s'", 
               $node->nid, active))) {
               form_set_error('field_inactivel', 'All machines must be removed from this location before the location
                  can be removed.');
            }
            $newgcdl = trim($node->field_gcd_user_id[0][value]);
            if(!preg_match("/^[a-z]{6}_[0-9]{4}$/i", $newgcdl)) {
               // VALIDATION GOES HERE 
               form_set_error('field_gcd_user_id', 'Please enter a valid GCD User ID.');
            }
            $newfedl = trim($node->field_federal_id_number_0[0][value]);
            if(!preg_match("/^([0-9]{3}-?[0-9]{2}-?[0-9]{4}|[0-9]{2}-[0-9]{7})$/", $newfedl)) {
               form_set_error('field_federal_id_number_0', 'Please enter a valid Federal ID number for this location.');
            }
            $newgoa = trim($node->field_goa[0][value]);
               if(!preg_match("/^[0-9]{7}-[0-9]{3}-GOA$/", $newgoa)) {
                  form_set_error('field_goa', 'The location\'s GOA number is required.');
            }
         }
         break;
         case 'delete':
         break;
      }
   }
   elseif($node->type == 'minfo') {
      switch ($op) {
         case 'view':
         break;
         case 'insert':
         break;
         case 'update':
         break;    
         case 'validate':
         if(db_result(db_query("SELECT field_inactive_value FROM {content_type_minfo} 
            WHERE field_inactive_value = '%s' AND nid = %d'", inactive, $node->nid))) {
            form_set_error('field_inactive', 'This machine is inactive. Updates are unavailable.');
         } else {
            $newvgm = trim($node->field_vgm_id_number[0][value]);
            if(!preg_match("/^[0-9]{6}$/", $newvgm)) {
               form_set_error('field_vgm_id_number', 'Please enter a valid VGM ID number that is 6 digits long.');
            } elseif(db_result(db_query("SELECT nid, field_vgm_id_number_value FROM {content_type_minfo} 
               WHERE field_vgm_id_number_value = '%s' AND field_inactive_value = '%s' AND nid != %d", 
               $newvgm, active, $node->nid))) {
               form_set_error('field_vgm_id_number', 'That VGM ID number is already in use. If you have a machine with 
                  this VGM ID number in another location, please remove it before enrolling it in this location.');
            }
            foreach (array(1,2,3,4) as $matrixrow) {
               foreach (array(1,2) as $matrixcol) {
                  $newmeter = trim($node->field_beginning_meter_readings[matrix][$matrixrow][$matrixcol]);
                  if(!preg_match("/^[0-9]+$/", $newmeter)) {
                     form_set_error('field_beginning_meter_readings', 'Please enter only numbers into meter readings, 
                        leaving off any decimals (If a meter reading is 525.25, enter it as 52525).');
                     break;
                  }
               }
            }
         }
         break;
         case 'delete':
         break;
      }
   }
}