$(document).ready(setupHideEmptyFields);

function isInt(i) {
   if (isNaN(parseInt(i))) {
      return false;
   } else {
      return true;
   }
}

function isFloat(f) {
   if (isNaN(parseFloat(f))) {
      return false;
   } else {
      return true;
   }
}

function isValidEmail(strEmail) {
   var strPattern = "^[-_.\\w]+@((([\\w]|[\\w][\\w-]*[\\w])\\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$";
   return new RegExp(strPattern).test(strEmail.toLowerCase());
}

function isNotEmpty(s) {
   return (s.trim() != '');
}



function setupHideEmptyFields() {
   var switchBut = $('.formprint_button');
   var formfields = $('.formfield input, .formfield textarea');
   var swapState, swapFunction;
   var emptyFields = new Array();

   var swapFunctions = [
      hideFields,
      showFields
   ]

   switchBut.click(function () {
      //swap link texts "hide fields" and "show fields"
      var x = this.getAttribute('alttext');
      this.setAttribute('alttext', this.innerHTML);
      this.innerHTML = x;

      /// Toggle function for hiding and showing empty fields

      //try {
      //get state from button
      swapState = Number(switchBut.attr('state'));

      //choose correct swapfunction based on state
      swapFunction = swapFunctions[swapState];

      //invert state value and put it back in the button
      switchBut.attr('state', Number(!Boolean(swapState)));

      //call the selected swap function.
      swapFunction();

      //}
      //catch (err) {
         //alert('swap:'+ err.description);
      //}

      return false;
   });


   function hideFields() {
      formfields.each(function () {
         if (this.value == '') {
            $(this.parentNode).hide();
            emptyFields.push(this.parentNode);
         }
      })
   }
   function showFields() {
      //try {
      for (var i=0; i < emptyFields.length; i++) {
         $(emptyFields[i]).show();
      }

      emptyFields.length = 0;
      //}
      //catch (err) {
         //alert('showfields:'+ err.description);
      //}
   }

}
