if( typeof (YAPTrackerFormWindow)=="undefined" ){

    YAPTrackerFormWindow = {}
    YAPTrackerFormWindow.FormPane = new function() {

        var HOST_URL = "http://www.yaptracker.com/";
        var WINDOW_WIDTH = 600;
        var WINDOW_HEIGHT = 400;
        var WINDOW_INNER_HTML = '<!--[if IE]><style type="text/css">#bluepane-title { background: #000 !important; }</style><![endif]--><div id="bm-bg"><div id="bluepane-title"></div><div id="bl-closebutton" class="bluepane-closebutton-off"><input id="bl-closebutton-button" type="button" style="visibility:hidden;"></input></div><iframe name="content" id="bl-iframe" class="bluepane-iframe" width="' + (WINDOW_WIDTH-18) + '" height="'+ (WINDOW_HEIGHT-40) + '" scrolling="yes" frameborder="0"></iframe></div>';
        
   
   
        //Called on load
        this.init = function(){
        
        includeStylesheet();
        includeWindowDiv();
        convertBlueLinks();
        }
        
       

        function includeStylesheet(){
            if ( $("yaptracker-window.css") == null ){
              var link = document.createElement('link');
              link.setAttribute('href', "/yaptracker-window.css" );
              link.setAttribute('rel', 'stylesheet');
              link.setAttribute('type', 'text/css' );
              link.setAttribute('id', "yaptracker-window.css" );
              getDocumentBody().appendChild( link );
            }
        }

        function includeWindowDiv(){


            if ( $("bl-window") != null ){
                getDocumentBody().removeChild( $("bl-window") );
                getDocumentBody().removeChild( $("bl-bglayer") );
            }
                var div = document.createElement( 'div' );
                div.setAttribute( 'id', 'bl-window' );
                div.setAttribute( 'style', 'width:' + WINDOW_WIDTH + 'px;height:' + WINDOW_HEIGHT + 'px;display:none;');

                div.innerHTML = WINDOW_INNER_HTML;

                var divBg = document.createElement( 'div' );
                divBg.setAttribute( 'id', 'bl-bglayer' );

                getDocumentBody().appendChild( div );
                getDocumentBody().appendChild( divBg );
     //       }
         
        }

        function getDocumentBody(){
            return document.getElementsByTagName('body').length == 0 ? document.documentElement :
                            document.getElementsByTagName('body').item(0);
        }

        function convertBlueLinks(){
            var links = document.getElementsByTagName( "a" );
            for ( var i = 0; i < links.length; i++ ){
                if ( links[i].getAttribute("blueKey") && links[i].getAttribute("bluelink") == null  ){
                    var str = replaceVars( BLUELINK_INNER_HTML, [ "title", "blueKey", "link"],
                            [ links[i].innerHTML, links[i].getAttribute("blueKey"), links[i].href ] );
                    var span = document.createElement( 'span' );
                    span.innerHTML = str;
                    links[i].parentNode.replaceChild( span, links[i] );
                }
            }
        }

        //Public
        this.displayImage = function( event, image ){
            // IE doesn't pass event into the parameter
            if ( !event ){
                event = window.event;
            }
            // IE doesn't have the property "target".
            var target = event.target ? event.target : event.srcElement;
            target.src = image;
        }

        //Public
        this.showBLWindow = function( src ) {
            var flashElements = setFlashTransparency();
            $("bl-iframe").src = src;

            initWin( flashElements );
            displayWin();
            displayBglayer();
        };
        
         this.setoptions = function(height, width, scrollbar)
	 {
	     WINDOW_WIDTH = width;
             WINDOW_HEIGHT = height;
	             
	        
	     WINDOW_INNER_HTML = '<!--[if IE]><style type="text/css">#bluepane-title { background: #000 !important; }</style><![endif]--><div id="bm-bg" style="height:  '+(WINDOW_HEIGHT)+'px; width: '+(WINDOW_WIDTH)+' px;"><div id="bl-closebutton"      style="left : '+(WINDOW_WIDTH-25)+'px; top : 11px;" class="bluepane-closebutton-off"><input id="bl-closebutton-button" type="button" style="visibility:hidden;"></input></div><iframe name="content" id="bl-iframe" class="bluepane-iframe" width="' + (WINDOW_WIDTH-18) + '" height="'+ (WINDOW_HEIGHT-40) + '" frameborder="0"></iframe></div>';

	        
        }

        function initWin( flashElements ) {
            $('bl-closebutton').onmouseover = function() {
                $('bl-closebutton').className = "bluepane-closebutton-over";
            }
            $('bl-closebutton').onmouseout = function() {
                $('bl-closebutton').className = "bluepane-closebutton-off";
            }
            $('bl-closebutton').onclick = function() {
                hideBLWindow( flashElements );
            }
        }

        function hideBLWindow( flashElements ) {
            $("bl-bglayer").style.display = "none";
            $("bl-window").style.display = "none";
            resetFlashTransparency( flashElements );
        }

        function setFlashTransparency(){
            var flashElements = new Map();
            var iframes = document.getElementsByTagName( "iframe" );
            var iframeElements = [];
            for ( var i = 0; i < iframes.length; i++ ){
                if ( iframes[i].id != "bl-iframe" ){
                    var id = iframes[i].id;
                    if ( id == "" ){
                        id = "blueIframe" + i;
                        iframes[i].id = id;
                    }
                    iframeElements[ id ] = iframes[i].style.visibility;
                    iframes[i].style.visibility = "hidden";
                }
            }
            flashElements.put( "iframe", iframeElements );

            var embeds = document.getElementsByTagName( "embed" );
            var embedElements = [];
            for ( var i = 0; i < embeds.length ; i++ ){
                var id = embeds[i].id;
                if ( id == "" ) {
                    id =  "blueEmbed" + i;
                    embeds[i].id = id;
                }
                if ( embeds[i].style.display != "none" ){
                    embeds[i].style.display = "block";  //this is a no-op, doing this "reloads" the flash
                    embedElements[ id ] = embeds[i].wmode == null ? "" : embeds[i].wmode;
                    embeds[i].setAttribute( "wmode", "transparent" ); //or opaque?
                }
            }
            flashElements.put( "embed", embedElements );

//            var objects = document.getElementsByTagName( "object" );
//            for ( var i = 0; i < objects.length; i++ ){
//                var parent = objects[i].parentNode;
//                var html = parent.innerHTML.toLowerCase();
//                var match = html.match(/<param name="wmode"/);
//                if ( match == null ){
//                    var index = html.match(/<param name=/)["index"];
//                    html = html.substring(0, index) + '<param name="wmode" value="transparent">' + html.substring(238);
//                }
//                parent.innerHTML = html;
//            }
            return flashElements;
        }

        function resetFlashTransparency( flashElements ){
            var iframeElements = flashElements.get( "iframe" );
            var iframes = document.getElementsByTagName( "iframe" );
            for ( var i = 0; i < iframes.length; i++ ){
                if ( iframes[i].id != "bl-iframe" ){
                    iframes[i].style.visibility = iframeElements[ iframes[i].id ];
                }
            }

            var embedElements = flashElements.get( "embed" );
            var embeds = document.getElementsByTagName( "embed" );
            for ( var i = 0; i < embeds.length ; i++ ){
                if ( embedElements[ embeds[i].id ] == "" ){
                    embeds[i].removeAttribute( "wmode" );
                }
                else {
                    embeds[i].setAttribute( "wmode", embedElements[ embeds[i].id ] );
                }
            }
        }

        function displayWin() {
            if (self.innerWidth) {
                var w = self.innerWidth;
                var h = self.innerHeight;
            }
            else if (document.documentElement && document.documentElement.clientWidth) {
                var w = document.documentElement.clientWidth;
                var h = document.documentElement.clientHeight;
            }
            else if (document.body) {
                var w = document.body.clientWidth;
                var h = document.body.clientHeight;
            }

            if (self.pageYOffset) {
                x = self.pageXOffset;
                y = self.pageYOffset;
            }
            else if (document.documentElement && document.documentElement.scrollTop){
                x = document.documentElement.scrollLeft;
                y = document.documentElement.scrollTop;
            }
            else if (document.body) {
                x = document.body.scrollLeft;
                y = document.body.scrollTop;
            }

            $("bl-window").style.left = (x + (w/2) - (WINDOW_WIDTH/2)) + "px";
            $("bl-window").style.top = (y + (h/2) - 20 - (WINDOW_HEIGHT/2)) + "px";
            $("bl-window").style.display = "block";
        }

        function displayBglayer(){
            var pageWidth = null;
            var pageHeight = null;
            
            if( document.documentElement && ( document.documentElement.scrollWidth || document.documentElement.scrollHeight )) {
                pageWidth = (document.documentElement.scrollWidth > pageWidth) ? document.documentElement.scrollWidth : pageWidth;
                pageHeight = (document.documentElement.scrollHeight > pageHeight) ? document.documentElement.scrollHeight : pageHeight;
            }
            if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) {
                pageWidth = (document.body.scrollWidth > pageWidth) ? document.body.scrollWidth : pageWidth;
                pageHeight = (document.body.scrollHeight > pageHeight) ?  document.body.scrollHeight : pageHeight;

            }
            if( document.body && document.body.offsetWidth ) {
                pageWidth = (document.body.offsetWidth > pageWidth) ? document.body.offsetWidth : pageWidth;
                pageHeight = (document.body.offsetHeight > pageHeight) ? document.body.offsetHeight : pageHeight;

            }

            if(pageWidth == null || pageHeight == null) {
                pageWidth='100%';
                pageHeight='100%';
            }
            else {
                pageWidth += "px";
                pageHeight += "px";
            }
            $("bl-bglayer").style.display = "block";
            $("bl-bglayer").style.width = pageWidth;
            $("bl-bglayer").style.height = pageHeight;
        }

        function replaceVars( str, keys, values ) {
            var replaced = str;
            for ( var i = 0; i < keys.length; i++ ) {
                replaced = replaced.replace( new RegExp("%" + keys[i] + "%", "gm" ), values[i] );
            }
            return replaced;
        }

        function $(id) {
            return document.getElementById(id);
        }

    }

    if (document.addEventListener) { //Mozilla
        document.addEventListener("DOMContentLoaded", function(){
         //   YAPTrackerFormWindow.FormPane.init();
            this.removeEventListener( "DOMContentLoaded", arguments.callee, false );
        }, false);
    }
    else if ( window.attachEvent ){ // IE
        window.attachEvent( "onload", function(){
         //   YAPTrackerFormWindow.FormPane.init();
            this.detachEvent( "onload", arguments.callee );
        });
    }
//    else if(/Safari/i.test(navigator.userAgent)){ //Safari
//        var timer = setInterval( function(){
//            if( /loaded|complete/.test( document.readyState ) ){
//                clearInterval( timer )
//                YAPTrackerFormWindow.FormPane.init();
//        }}, 10)
//    }
    
}

function Map() {
	this.keys = new Object();
}

Map.prototype.put = function( key, value ) {
    if ( value == null ) value = key;
    this.keys[ key ] = value;
}

Map.prototype.get = function( key ) {
    var result = this.keys[ key ];
    return ( typeof(result) == 'undefined' || (result == undefined) ) ? null : result;
}
