
/*  ----------------------------------------------
    core.js
    author: Regi E. (rellis@pushhere.com, Lead Dev)
    
    req/location
      scripts/mootools.js
      scripts/core.js
    ----------------------------------------------  */
    
    if(typeof Core != 'undefined') throw ('Scriptable is already defined.');
    var Core = new Class({

        initialize: function() {
            this.name = 'Core Library';
            this.version = '0.0.1';

            this.scriptable();
            
            this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
            this.version = this.searchVersion(navigator.userAgent)
              || this.searchVersion(navigator.appVersion)
              || "an unknown version";
            this.OS = this.searchString(this.dataOS) || "an unknown OS";
            
            $$('html').addClass(this.browser + this.version + ' ' + this.OS);
        },

        scriptable: function(other) {
         if ( other === false
            || !document.createTextNode
            || !Array.prototype.push
            || !Object.hasOwnProperty
            || !document.createElement
            || !document.getElementsByTagName
            ) {
                return false;
            }
            $$('html').addClass('scriptable');
        },

        searchString: function (data) {
          for (var i=0;i<data.length;i++)  {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
              if (dataString.indexOf(data[i].subString) != -1)
                return data[i].identity;
            }
            else if (dataProp)
              return data[i].identity;
          }
        },
        
        searchVersion: function (dataString) {
          var index = dataString.indexOf(this.versionSearchString);
          if (index == -1) return;
          return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        dataBrowser: [
          {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
          },
          {  string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
          },
          {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
          },
          {
            prop: window.opera,
            identity: "Opera"
          },
          {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
          },
          {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
          },
          {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
          },
          {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
          },
          {    // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
          },
          {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
          },
          {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
          },
          {    // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
          }
        ],
        dataOS : [
          {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
          },
          {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
          },
          {
            string: navigator.userAgent,
            subString: "iPhone",
            identity: "iPhone/iPod"
            },
          {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
          }
        ]
    });
    
    if(typeof Choice != 'undefined') throw ('Choice is already defined.');
    var Choice = new Class({
        
        initialize: function(select, element) {
            this.field_display(select, element);
        },
        
        field_display: function(select, element) {
          var select = $(select);
          var element = $(element);
          
          element.setStyle('display', 'none');
          
          select.addEvent('change', function() {
              (this.get('value') == 'yes') ? element.setStyle('display', 'block') : element.setStyle('display', 'none');
          });
          
          // console.log(select.value + element);
        },

    });

    window.addEvent('domready', function(){
        new Core();
    });
    

    

