/**
 * framework.js
 * $Id: framework.js,v 1.1 2008/08/14 21:31:42 wliu Exp $
 */ 
var adns = {
    register: function(name){
        var chk = false;
        var cob = '';
        var spc = name.split('.');
        for (var i=0; i<spc.length; i++){
            if (cob!=''){
                cob += '.';
            }
            cob += spc[i];
            chk = this.exists(cob);
            if (!chk){
                this.create(cob);
            }
        }
        if (chk){
            throw 'namespace: ' + name + ' is already defined';
        }
    },
    
    create: function(src){
        eval('window.'+src+'=new Object();');
    },
    
    exists: function(src){
        eval('var ne = false; try {if ('+src+'){ne = true;}else{ne = false;}}catch(err){ne = false;};');
        return ne;
    }
}

adns.register('com.innovectra.Browser')
adns.register('com.innovectra.Href')
adns.register('com.innovectra.Func')

adns.register('PUB_DATA')

com.innovectra.Browser = function (){
    var name = navigator.appName;
    if (name == "Netscape"){
        this.name = "ns";
    }else if (name == "Microsoft Internet Explorer"){
        this.name = "ie";
    }else{
        this.name = "other";
    }
    var agent = navigator.userAgent;
    if (/Firefox[\/\s](\d+\.\d+)/.test(agent)){
        this.version = new Number(RegExp.$1);
        this.app = "Firefox";
    }else if (/MSIE (\d+\.\d+);/.test(agent)){
        this.version = new Number(RegExp.$1);
        this.app = "IE";
    }else if (/Opera[\/\s](\d+\.\d+)/.test(agent)){
        this.version = new Number(RegExp.$1);
        this.app = "Opera";
    }else if (/Version[\/\s](\d+\.\d+)(\.\d+)?\sSafari/.test(agent)) {
        this.version = new Number(RegExp.$1);
        this.app = "Safari";
    }else{
        this.version = 0;
        this.app = "other";
    }
      
    this.isDOM   = (document.createElement
                    && document.appendChild
                    && document.getElementsByTagName) ? true : false;

    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf ("win") > - 1){
        this.platform = "win";
    }else if (ua.indexOf("mac") > -1){
        this.platform = "mac";
    }else{
        this.platform="other";
    }
    
    return {
        name: this.name,
        app: this.app,
        version: this.version,
        platform: this.platform
    };
}

com.innovectra.Href = function(location){
    var loc = location;
    return {
	    protocol: loc.protocol,
	    host: loc.host,
	    pathname: loc.pathname,
	    search: loc.search
    }
}

com.innovectra.Func = function(){
    function update(windowHandler, content){
	    windowHandle.document.open();
	    windowHandle.document.write(content);
	    windowHandle.document.close();    
    }
    
    return {
	    supportObject: function(){
		    if (document.object){
		        return true;
		    }else{
		        return false;
		    }
	    },
	    
	    supportImages: function(){
		    if (document.images){
		        return true;
		    }else{
		        return false;
		    }
	    },
	    
	    parentLoaded: function(){
		    if (parent == self){
		        return false;
		    }else{
		        return true;
		    }
	    },
	    
	    openWindow: function(url, name, params, timeout){
		    var windowHandler = window.open(url, name, parames);
		    if (!windowHandler.opener){
		        windowHandler.opener = self;
		    }
		    content = '';
		    setTimeout('update('+windowHandler+',\''+content+'\')',timeout);
		    
		    return windowHandler;
		},
		
		solvePathPrefix: function() {
		    var browser = new com.innovectra.Browser();
		    var href = new com.innovectra.Href(window.document.location);    
		    var pathPrefix = "";
		    
		    if (browser.app == "Firefox" && browser.version < 3 && href.protocol == "file:"){
		        pathPrefix = "";
		    }
		    return pathPrefix;
		},
		
		element: function(id){
            if (document.getElementById){
                return document.getElementById(id);                
            }else{
                throw 'your browser doesn\'t support running this script'
            }
		},
		
		writeHtml: function(doc, strings){
            if (strings && strings.length && strings.length > 0){
                var output = '';
                for (var i=0; i<strings.length; i++){
                    output += strings[i] + ' ';
                }
                doc.writeln(output);
            }else{
                throw 'There is no arguments'
            }
		}
	};
}

var func = new com.innovectra.Func();
var version = "5.2";
var pathPrefix = func.solvePathPrefix();
var states = ['CA',];

fameworkLoaded = true;
