/************************************************************\
* Analogue Object Initialization v1.705 (c) analogueweb.com
\************************************************************/
if (!analogue) { var analogue = new Object(); };
analogue.enabled = function() { 
  if (document.getElementById && document.getElementsByTagName) { return true; }; return false;
};
analogue.onload = function() {
  if (this.enabled) { for (var module in this) { if (this[module].onload) { this[module].onload(); }; }; };
};
analogue.onresize = function() {
  if (this.enabled) { for (var module in this) { if (this[module].onresize) { this[module].onresize(); }; }; };
};
/************************************************************\
* Browser Fix Module v1.705 (c) analogueweb.com
\************************************************************/
analogue.fix = {
  onload : function() {
    this.links();
    if (window.attachEvent) this.setsize();
    if (navigator.userAgent.indexOf("Safari")!=-1) this.setfooter();
  },
  onresize : function() {
    if (window.attachEvent) this.setsize();
  },
  links : function() { // Opens links to external domains in a new window
    var exDomains = ["cpnw.com|analogueweb.com"]; regDomains = new RegExp(exDomains,"i");
    for (var i=0; i<=(document.links.length-1); i++){
      if (document.links[i].href.search(regDomains) == -1 && document.links[i].href.indexOf("http:") != -1) {
        document.links[i].target = "_blank";
        document.links[i].title = "Link opens in new window";
      };
    };
  },
  setsize : function() { // Mimics min-width and min-height in MSIE
    var objBody = document.getElementById("cpnw");
    (this.width() <= 770) ? objBody.style.width = "770px" : objBody.style.width = "100%";
    (this.height() <= 450) ? objBody.style.height = "450px" : objBody.style.height = "100%";
  },
  setfooter : function() { // Mimics min-height in Safari
    var objFooter = document.getElementById("footer");
    if (this.height() > 0) {
      var contentHeight = document.getElementById("cpnw").offsetHeight;
      var footerHeight = objFooter.offsetHeight;
      if (this.height - (contentHeight + footerHeight) >= 0) {
        objFooter.style.position = "relative";
        objFooter.style.top = (this.height - (contentHeight + footerHeight)) + "px";
      } else {
        objFooter.style.position = "static";
      };
    };
  },
  width : function() {
    var winWidth = 0;
    if (typeof(window.innerWidth) == "number") {
      winWidth = window.innerWidth;
    } else {
      if (document.documentElement && document.documentElement.clientWidth) {
        winWidth = document.documentElement.clientWidth; 
      } else {
        if (document.body && document.body.clientWidth) {
          winWidth = document.body.clientWidth;
        };
      };
    };
    return winWidth;
  },
  height : function() {
    var winHeight = 0;
    if (typeof(window.innerHeight) == "number") { 
      winHeight = window.innerHeight;
    } else {
      if (document.documentElement && document.documentElement.clientHeight) {
        winHeight = document.documentElement.clientHeight;
      } else {
        if (document.body && document.body.clientHeight) {
          winHeight = document.body.clientHeight;
        };
      };
    };
    return winHeight;
  }
};
/************************************************************\
* Suckerfish CSS Component (credit http://www.htmldog.com/) 
\************************************************************/
analogue.css = {
  onload : function() {
    if (window.attachEvent) { // Easy Accurate IE Filter
      this.suckerfish("hover", "DIV", "content");
      if (document.getElementById("contact")) {
        this.suckerfish("focus", "INPUT", "contact", "text");
        this.suckerfish("focus", "TEXTAREA", "contact");
      };
    };
  },
  suckerfish : function(sfType, objTag, parentID, objType) {
	  var sfElements = (parentID == null)?document.getElementsByTagName(objTag):document.getElementById(parentID).getElementsByTagName(objTag);
    switch(sfType) {
      case "hover" : this.hover(sfElements); break;
      case "focus" : this.focus(sfElements, objType); break;
	  };
  },
  hover : function(sfElements) {
    for (var i=0; i<sfElements.length; i++) {
      sfElements[i].onmouseover = function() { 
        this.className += " hover"; 
      };
      sfElements[i].onmouseout = function() { 
        this.className = this.className.replace(new RegExp(" hover\\b"), ""); 
      };
    };
  },
  focus : function(sfElements, objType) {
    for (var i=0; i<sfElements.length;	i++) {
      if (sfElements[i].type.toLowerCase() == objType || objType == null) {
        sfElements[i].onfocus = function() { 
          this.className += " focus"; 
        };
        sfElements[i].onblur = function() { 
          this.className = this.className.replace(new RegExp(" focus\\b"), ""); 
        };
      };
    };
  }
};
/************************************************************\
* Dynamic Text Replacement Module v1.705 (c) analogueweb.com
\************************************************************/
analogue.replace = {
  onload : function() {
    this.livedate(); this.livegreeting();
  },
  date : new Date(),
  livedate : function() {
    if (document.getElementById("date")) {
      var currentDay = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
      var currentMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
      var currentOrdinal = new Array("","st","nd","rd","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","st","nd","rd","th","th","th","th","th","th","th","st","nd");
      var objDate = "<p>" + currentDay[this.date.getDay()] + ",<br \/>" + currentMonth[this.date.getMonth()] + " " + this.date.getDate() + currentOrdinal[this.date.getDate()] + ", " +  (this.date.getYear() < 200 ? this.date.getYear() + 1900 : this.date.getYear()) + "<\/p>";
      document.getElementById("date").innerHTML = objDate;
    };
  },
  livegreeting : function() {
    if (document.getElementById("greeting")) {
      var hour = this.date.getHours();
      var greeting = "Still awake? Thank you for visiting!";
      if (hour >= 5 && hour <= 11) { var greeting = "Good morning and thank you for visiting!"; }
      else if (hour == 12) { var greeting = "Welcome, thank you for visiting!"; }
      else if (hour >= 13 && hour <= 17) { var greeting = "Good afternoon and thank you for visiting!"; }
      else if (hour >= 18 && hour <= 22) { var greeting = "Good evening and thank you for visiting!"; }
      document.getElementById("greeting").innerHTML = greeting;
    };
  }
};
/************************************************************\
* Form Validation Module ~ v.0.6
\************************************************************/
analogue.forms = {
  onload : function() {
    var objForms = document.getElementsByTagName("form");
    for (var i=0; i<objForms.length; i++) {
      if (typeof objForms[i].onsubmit != "function") {
        objForms[i].onsubmit = function() {
          return analogue.forms.onsubmit(this);
        };
      };
    };
  },
  onsubmit : function(objForm) {
    if (/required/.test(objForm.innerHTML)) {
      return this.validate.form(objForm);
    };
  },
  validate : {
    form : function(objForm) {
      var formElements = objForm.elements;
      for (var i=0; i<formElements.length; i++) {
        if (/required/.test(formElements[i].className)) {
          var valid = true;
          switch(formElements[i].tagName.toLowerCase()) {
            case "input" :
            switch(formElements[i].type.toLowerCase()) {
              case "checkbox" : valid = formElements[i].checked; break;
              case "radio" : valid = formElements[i].checked; break;
              default : valid = !this.empty((formElements[i].value));
            };
            break;
            case "select" :
            valid = !this.empty(formElements[i].options[formElements[i].selectedIndex].value);
            if (valid) {
              valid = !formElements[i].selectedIndex == "0";
            };
            break;
            case "textarea" :
            valid = !this.empty(formElements[i].value);
            break;
          };
          if (!valid) {
            if (formElements[i].title != "") {
              alert(formElements[i].title);
            } else {
              alert("Please enter the required field!");
            };
            formElements[i].focus();
            return false;
          };
         if (formElements[i].id == "email") {
            var objResponse = this.email(formElements[i].value);
            if (objResponse != "True") {
              alert("Please enter a valid email address!");
              formElements[i].focus();
              return false;
            };
          };
        };
      };
      return true;
    },
    empty : function(strTest) {
      var regExpression = /^\s+$/;
      return ((strTest == null) || (strTest.length == 0) || regExpression.test(strTest));
    },
    email : function(strTest) {

        var regExpression = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/;
        return (regExpression.test(strTest))?"True":"False";
    }
  }
};
/************************************************************\
* Initialize the modules
\************************************************************/
window.onload  = function() { analogue.onload(); };
window.onresize = function() { analogue.onresize(); };
if (window != top) { top.location.href = location.href; };
