
/*  --------------------------------------------    
    core.js
    com.airportbags.www
    regi e.(regi@pushhere.com, Lead Dev)
    - Requires(Location):
      [mootools-core.js]
      (script/core.js)
    --------------------------------------------  */
    
    
/*  Object: Core
    -----------------------------------------------  */
    if(typeof Core != 'undefined') throw ('Core is already defined.');
    var Core = {

        init: 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.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
          },
          {
            prop: window.opera,
            identity: "Opera"
          },
          {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
          }
        ],
        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"
          }
        ]
    };
    
    
/*  Implement: Truncate String
    -----------------------------------------------  */
    String.implement({   	
      truncate: function(length, truncation) {
        length = $pick(length, 30);
        truncation = $pick(truncation, '...');
        return this.length > length ?
          this.slice(0, length - truncation.length) + truncation : String(this);
      }
    });
    


/*  Ready()
    -----------------------------------------------  */
    window.addEvent('domready', function() {
       Core.init();
    });
    
    