//
// WebApp.js - Softwise Common Web Application Class
//
// Copyright © 2001-2009 Softwise Inc. Software Works ™     All Rights Reserved.
// 
// 6 Whittier Place, Suite # 11N, Boston, MA 02114   http://www.SoftwiseUSA.com
//
function WebApp( )
{
    // User Browser and Screen Attributes
    this.TimerOutEnlargeImageV1 = -1;
    this.UserAgent     = navigator.userAgent;
    this.IsIE          = this.UserAgent.indexOf('MSIE') != -1;
    this.IsNetscape    = this.UserAgent.indexOf('Netscape/') != -1;
    this.IsFirefox     = this.UserAgent.indexOf('Firefox/') != -1;
    this.UserAgentName = navigator.appName;
    this.TiltleNewLine = (this.IsIE ? '\n' : ' ');
    this.AvailScreenWidth   = window.screen.availWidth;
    this.AvailScreenHeight  = window.screen.availHeight;
    
    // Utility Methods: 
    this.Element           = function( e ) { return document.all ? document.all[e] : (document.getElementById ? document.getElementById(e) : null); }
    this.OpenSoftwisePage  = function( u ) { window.open( "http://www.SoftwiseUSA.COM/" + u ); }
    this.OpenSoftwisePageV2= function( u ) { window.open( "http://www.SoftwiseUSA.COM/" + u ); }
    this.GetEventSource    = function( e ) { if ( !e || e == undefined ) e=window.event; return e.srcElement ? e.srcElement : e.target; }
       
    // Event Subscriber Arrays
    this.BodyOnLoadEventSubscribers   = new Array();
    this.BodyOnResizeEventSubscribers = new Array();
    this.FormOnSubmitEventSubscribers = new Array();

    // HTML Body Event Handlers/Delegates: BodyOnLoad, BodyOnResize
    this.BodyOnLoad = function(me,e)
    {
        this.Solution = _vmnSolution;

        for ( var i=0; i<this.BodyOnLoadEventSubscribers.length; ++i ) 
        {
            var f = this.BodyOnLoadEventSubscribers[i]; if (typeof(f) == 'function') { try { f(me,e); } catch ( e ) { ; } }
        }
    }
    this.BodyOnResize = function(me,e)
    {
        for ( var i=0; i<this.BodyOnResizeEventSubscribers.length; ++i ) 
        {
            var f = this.BodyOnResizeEventSubscribers[i]; if (typeof(f) == 'function') { try { f(me,e); } catch ( e ) { ; } }
        }  
    }
    // HTML Form Event Handlers/Delegates: FormOnSubmit
    this.FormOnSubmit = function(me,e)
    {
        var rv = true;
        for ( var i=0; i<this.FormOnSubmitEventSubscribers.length; ++i ) 
        {
            var f = this.FormOnSubmitEventSubscribers[i]; if (typeof(f) == 'function') { try { rv=f(me,e); } catch ( e ) { ; } }
        }
        return rv;    
    }
        
    // Event Subscription Methods
    this.AttachBodyOnLoadEventHandler = function( f ) { this.BodyOnLoadEventSubscribers[this.BodyOnLoadEventSubscribers.length]=f; }
    this.AttachBodyOnResizeEventHandler = function( f ) { this.BodyOnResizeEventSubscribers[this.BodyOnResizeEventSubscribers.length]=f; }
    this.AttachFormOnSubmitEventHandler = function( f ) { this.FormOnSubmitEventSubscribers[this.FormOnSubmitEventSubscribers.length]=f; }
    
    // Utility Methods: DefaultTransformOpen, DefaultTransformClose
    this.DefaultTransformClose = function( parentPanel, mbPanel, filterName )
    {
        if (parentPanel && mbPanel)
        {
            if ( this.IsIE ) 
            {
                parentPanel.style.filter='progid:DXImageTransform.Microsoft.'+filterName+(filterName.indexOf('(')!=-1 ?'' :'()');
                parentPanel.filters[0].apply();  
            }
            mbPanel.style.display='none'; if ( this.IsIE ) parentPanel.filters[0].play();
         } else if (mbPanel) mbPanel.style.display='none';
    }
    this.DefaultTransformOpen = function( parentPanel, mbPanel, filterName )
    {
        if (mbPanel && mbPanel.style.display!='none') this.DefaultTransformClose(parentPanel,mbPanel,filterName);
        if (mbPanel && parentPanel)
        {
            if (  this.IsIE ) 
            {  
               parentPanel.style.filter='progid:DXImageTransform.Microsoft.'+filterName+(filterName.indexOf('(')!=-1 ?'' :'()'); 
               parentPanel.filters[0].apply(); 
            }       
            mbPanel.style.display=''; if ( this.IsIE ) parentPanel.filters[0].play();
        } else if ( mbPanel ) mbPanel.style.display='';
    } 
    
    this.FormatFileSize = function( bytes )
    {
        var s_K = 1024.0;
        if ( bytes < s_K ) return bytes + ' byte' + (bytes > 1 ? 's' : '');
        var kbSize = bytes  / s_K; if ( kbSize < s_K ) return Math.round(kbSize) + ' KB';
        var mbSize = kbSize / s_K; if ( mbSize < s_K ) return mbSize + ' MB';
        var gbSize = mbSize / s_K; return gbSize + ' GB'; 
    }

    // ADDED FOR TestSites
    this.XorVisibility = function( d, i, mini, maxi )
    {
       if ( this.Element(d) )
         if (this.Element(d).style.display == 'none')
         {
           this.Element(d).style.display=''; 
           if (this.Element(i)) { this.Element(i).src=mini; this.Element(i).alt='Click to collapse'; }
         }
         else
         {
           this.Element(d).style.display='none';
           if (this.Element(i)) { this.Element(i).src=maxi; this.Element(i).alt='Click to expand'; }
         }
    }
    this.XorVisibility1 = function( d, i )
    {
       if ( this.Element(d) )
         if (this.Element(d).style.display == 'none')
         {
           this.Element(d).style.display=''; 
           if (this.Element(i)) { this.Element(i).src='Images/min1.gif'; this.Element(i).alt='Click to collapse'; }
         }
         else
         {
           this.Element(d).style.display='none';
           if (this.Element(i)) { this.Element(i).src='Images/max1.gif'; this.Element(i).alt='Click to expand'; }
         }
    }
    this.IsValidEmail = function(email)
    {   
        var invalidChars = ' /:,;', atPos, periodPos;
        for (i=0; i<invalidChars.length; i++) if (email.indexOf(invalidChars.charAt(i),0) != -1) return false;
        if ((atPos=email.indexOf("@",1))==-1 || email.indexOf("@",atPos+1) != -1) return false;
        if ((periodPos=email.indexOf(".",atPos))==-1 || periodPos+3 > email.length) return false;
        return true;
    }

     this.OnOverEnlargeImageV1 = function(u,w,h) 
     { 
        this.Element('sswImgImage').src=u; 
        this.Element('sswImgImage').style.width=w+'px'; 
        this.Element('sswImgImage').style.height=h+'px'; 
        this.Element('sswDivImage').style.top=(this.Element('sswBody').scrollTop+10)+'px'; 
        this.Element('sswDivImage').style.left=(this.Element('sswBody').scrollLeft + 
                                                  ((this.Element('sswBody').clientWidth-w)/2)) + 'px';
        _webApp.Element('sswDivImage').style.display=''; 
        if ( this.TimerOutEnlargeImageV1 != -1 ) clearTimeout( this.TimerOutEnlargeImageV1 );
     }

     this.OnOutEnlargeImageV1 = function() 
     { 
        this.TimerOutEnlargeImageV1 = setTimeout( "_webApp.TimeoutEnlargeImageV1()", 100 );
     }
     this.TimeoutEnlargeImageV1 = function() 
     {
       this.Element('sswDivImage').style.display='none'; this.TimerOutEnlargeImageV1 = -1;
     }    
     this.OnOverEnlargeFrameV1 = function() 
     {
        if ( this.TimerOutEnlargeImageV1 != -1 ) clearTimeout( this.TimerOutEnlargeImageV1 );
     }
}
var _webApp = new WebApp(); // One and only Web Application Object.
