/*
Site Design
Kevin Douglas :: Satarah Studios
kdouglas@satarah.com [satarah.com]
*/


var body, imgsPath, isWin=0, isMac=0, isFF=0, isFF15=0, isIE=0, isNN=0, isOP=0, isFubar;

window.onload = function () {

  body = document.getElementsByTagName('body').item(0);

  if ( document.getElementById('secure') ) {
    if ( typeof domMode != 'undefined' && !domMode() ) {
      alert ( 'Your browser does not comply with the world-wide standards neccessary for Instructors\' Tools to function. Please use another browser :: consider Safari (for Mac) or Firefox (for Windows) :: or update the version of the browser you are currently using.\nSorry for any inconvenience this may cause you.' );
      return;
    }
  }

  if ( typeof domMode != 'undefined' && !domMode() ) return;
  if ( typeof sniffer != 'undefined' ) sniffer ();

  switch ( body.id ) {
    case 'secure':
      imgsPath = '../images/';
      break;
    default:
      imgsPath = 'images/';
  }

  if ( typeof fixPing != 'undefined' && isWin && isIE ) fixPing ();
  if ( typeof pepperMap != 'undefined' && document.getElementById('mapBox') ) pepperMap ();
  if ( typeof pepperLinks != 'undefined' ) pepperLinks ();
  if ( typeof preloadImgs != 'undefined' ) preloadImgs ();

//  if( typeof flashVersion != 'undefined' && body.id == 'home' && !isNN && !isMac && !isOP && !isFF15 ) flashVersion( 5 );
    // Do not use Flash in 'wmode=transparent' with Netscape, Mac IE, and Opera is giving me issues too //
    // NOTES: flashVersion() loads the flashVersion.swf version-sniffer //
    // which passes the client version back to flashVersion() //
    // If the client version passes, flashVersion() loads header.swf //
    // when header.swf is loaded it calls movieLoaded() //
    // when movieLoaded() is called it removes the duplicate graphical elements //
    // **flashVersion() acts according to the type of information passed to it** //

  if ( typeof readySecure != 'undefined' ) readySecure ();
  if ( document.getElementById('searchBox') ) document.getElementById('searchBox').focus();

}



function addWinLoad ( addFunc ) {
  if ( typeof window.onload == 'function' ) {
    var winLoad = window.onload;
    window.onload = function () {
      winLoad ();
      addFunc ();
    }
  } else {
    window.onload = addFunc;
  }
  return true;
}


function sniffer () {

  // Used to mitigate poor results due to poor standards compliance //
  isFF = ( /Firefox/.test( navigator.userAgent ) ) ? true : false;
  isFF15 = ( /Firefox\/1\.5/.test( navigator.userAgent ) ) ? true : false;
    // Firefox ver 1.5 fucks up CSS position:fixed/absolute for Flash Object/Embed //
  isOP = ( /Opera/.test( navigator.userAgent ) ) ? true : false;
  isIE = ( /MSIE (5\.5|[6-9])/.test( navigator.userAgent ) && !isOP ) ? true : false;
    // Necessary to uncloak Opera in IE impersonation mode //
  isNN = ( /Netscape/.test( navigator.userAgent ) ) ? true : false;
  isWin = ( /Win32/.test( navigator.platform ) ) ? true : false;
  isMac = ( /Mac/.test( navigator.platform ) ) ? true : false;
  isFubar = ( isMac && isIE ) ? true : false;
}



function movieLoaded () {
//window.setTimeout( function () {
  var siteMenu = document.getElementById('siteMenu');
  siteMenu.style.display = 'none';

  var words = document.getElementById('words');
  words.style.display = 'none';

  var crystal = document.getElementById('crystal');
  crystal.style.display = 'none';

  var drop = document.getElementById('drop');
  drop.style.display = 'none';

  var title = document.getElementById('title');
  title.style.display = 'none';
//  }, 2000
//);
}



function pepperMap () {

  var gone;

  var mapBox = document.getElementById('mapBox');
  var mapClose = document.getElementById('mapClose');
  var mapMap = document.getElementById('mapMap');

  var quickList = document.getElementById('quickList');
  var stateName = document.getElementById('stateName');
  var stateCaption = document.getElementById('stateCaption');
  var stateList = document.getElementById('stateList');
  var stateNameTxt = stateName.firstChild;
  var stateCaptionTxt = stateCaption.firstChild;

  var mapIconBox = document.getElementById('mapIconBox');
  var mapIcon = document.getElementById('mapIcon');
  var mapForm = document.getElementById('mapForm');

  mapIconBox.style.display = 'block';
  mapForm.style.display = 'none';
  mapClose.onclick = function () {
    mapBox.style.display = 'none';
  }
  mapIcon.onclick = function () {
    mapBox.style.display = 'block';
  }

  var areas = mapMap.getElementsByTagName('area');

  for ( var i=0; i<areas.length; i++ ) {

    areas.item(i).onmousemove = function ( event ) {

      var offsetX = ( trackMouse( event )[0] -240 < 0 ) ? 60 : -240;
      var offsetY = ( trackMouse( event )[1] -60 < 0 ) ? 10 : -60;

      var state = this.getAttribute('name');
      if ( gone ) clearTimeout ( gone );
      quickList.style.display = 'block';
      quickList.style.top = trackMouse( event )[1] + offsetY + 'px';
      quickList.style.left = trackMouse( event )[0] + offsetX + 'px';
      stateNameTxt.nodeValue = states[state] + ' (' + eval(state).length + ')';
      if ( eval(state).length ) {
        stateCaptionTxt.nodeValue = 'Click ' + states[state] + ' for details';
      } else {
        stateCaptionTxt.nodeValue = 'No listing for ' + states[state];
      }

      while ( stateList.childNodes.length ) {
        stateList.removeChild( stateList.firstChild );
      }

      try {
        for ( var s=0; s<eval(state).length; s++ ) {
          var li = document.createElement('li');
          var dat = eval(state)[s].match( /^[\w\d-]+\s*\|([\w\s-]+)\s*:{0,2}\s*([\w\s-]*)/ );
          var nameTxt = document.createTextNode( dat[1] );
          var stateTxt = document.createTextNode( '('+ dat[2] +')' );
          li.appendChild( nameTxt );
          li.appendChild( document.createElement('br') );
          if ( dat[2] ) {
            li.appendChild( stateTxt );
          }
          stateList.appendChild( li );
        }
      } catch ( error ) {
        // silently discard: "eval(state) is not defined" warning
      }
    }

    areas.item(i).onmouseout = function () {
      var state = this.getAttribute('name');
      gone = window.setTimeout( function () {
         quickList.style.display = 'none';
        }, 500
      );
    }

    areas.item(i).onclick = function () {
      var state = this.getAttribute('name');
      quickList.style.display = 'none';
      mapBox.style.display = 'none';
      if ( state == 'CAN' ) {
        location = 'listing.php?country=CAN';
      } else if ( state == 'MEX' ) {
        location = 'listing.php?country=MEX';
      } else if ( state == 'OTHER' ) {
        location = 'listing.php?country=OTHER';
      } else {
        location = 'listing.php?state=' + state;
      }
    }
  }
}



function pepperLinks () {

  var links = document.getElementsByTagName('a');

  for ( var i=0; i<links.length; i++ ) {
    if ( links.item(i).parentNode.parentNode.id == 'siteMenu' ) {
      links.item(i).onmouseover = function () {
        var img = this.firstChild;
        var swap = this.id.match( /^(\w+)Page$/ )[1] + '1.png';
        img.src = imgsPath + swap;
        if ( isWin && isIE ) {
          img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader( src="' + imgsPath + swap + '", sizingMethod="scale" );';
          img.src = imgsPath + 'pixit.gif';
        }
      }

      links.item(i).onmouseout = function () {
        var img = this.firstChild;
        var swap = this.id.match( /^(\w+)Page$/ )[1] + '0.png';
        img.src = imgsPath + swap;
        if ( isWin && isIE ) {
          img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader( src="' + imgsPath + swap + '", sizingMethod="scale" );';
          img.src = imgsPath + 'pixit.gif';
        }
      }
    } // end if...siteMenu
  } // end for...loop
}



var imagelist = new Array (
  'words.png',
  'title.png',
  'titleSml.png',
  'home1.png',
  'home2.png',
  'hydro1.png',
  'hydro2.png',
  'gallery1.png',
  'gallery2.png',
  'products1.png',
  'products2.png',
  'instructors1.png',
  'instructors2.png',
  'bulletin1.png',
  'bulletin2.png',
  'contact1.png',
  'contact2.png',
  'mapIcon.jpg',
  'hadoMap.png'
);


function preloadImgs () {

  if ( typeof imagelist != 'undefined' && imagelist.length > 0 ) {
    if ( document.images ) {
      if ( !document.imageset ) document.imageset = new Array();
      for ( var i=0; i<imagelist.length; i++ ) {
        document.imageset[ document.imageset.length ] = new Image();
        document.imageset[ document.imageset.length -1 ].src = imgsPath + imagelist[i];
      }
    }
  }
}



function zoom ( target, label, params ) {

  if ( !label ) var label = 'proto';

  var scrW = screen.availWidth;
  var scrH = screen.availHeight;

  var protoW = ( scrW > 740 ) ? 740 : scrW;
  var protoH = ( scrH > 540 ) ? 540 : scrH;
  var protoX = ( scrW - protoW > 1 ) ? Math.round( ( scrW - protoW ) * 0.3 ) : '0';
  var protoY = ( scrH - protoH > 20 ) ? 20 : '0';

  var attributes = '';
  attributes += 'width=' + protoW;
  attributes += ',height=' + protoH;
  attributes += ',left=' + protoX;
  attributes += ',top=' + protoY;
  attributes += ',scrollbars=yes';
  attributes += ',resizable=yes';
  attributes += ',menubar=no';
  attributes += ',toolbar=yes';
  attributes += ',location=yes';
  attributes += ',status=no';

  var href = target;
  if ( params ) href += '?' + params;

  proto = window.open( href, label, attributes );
  proto.focus();

  return false;
}



function scrollXY () {

  var left = 0;
  var top = 0;

  if (  typeof window.pageXOffset == 'number' || typeof window.pageYOffset == 'number' ) {
    left = window.pageXOffset; // Gecko compliant
    top = window.pageYOffset;
  } else if ( document.body & document.body.scrollLeft || document.body.scrollTop ) {
    left = document.body.scrollLeft; // DOM compliant
    top = document.body.scrollTop;
  } else if ( document.documentElement && document.documentElement.scrollLeft || document.documentElement.scrollTop ) {
    left = document.documentElement.scrollLeft; // IE 6 in Standards compliant
    top = document.documentElement.scrollTop;
  }
  return [left, top];
}



trackMouse.x, trackMouse.y;
function trackMouse ( event ) {

  if ( !event ) var event = window.event;

  if ( event.x || event.y ) {
    trackMouse.x = event.x;
    trackMouse.y = event.y;
  } else if ( event.pageX || event.pageY ) {
    trackMouse.x = event.pageX;
    trackMouse.y = event.pageY;
  }
 // window.status = 'x: ' + trackMouse.x + 'px;  y: ' + trackMouse.y + 'px';
  return [trackMouse.x, trackMouse.y];
}



function fixPing () {

  // first fix html-embedded .png images //
  for ( var img, i = 0; i<document.images.length; i++ ) {
    if ( /\.png$/.test( (img = document.images[i]).src ) ) { 
      img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader( src="' + img.src + '", sizingMethod="scale" );';
      img.src = imgsPath + 'pixit.gif';
    }
  }

  // now fix qualified (listed) background images //
  if ( typeof divimages != 'undefined' && divimages.length > 0 ) {
    for ( var di=0; di<divimages.length; di++ ) {
      var idx = divimages[di].indexOf(':');
      var dxi = divimages[di].lastIndexOf(':');
      var did = divimages[di].slice(0,idx);
      var src = divimages[di].slice(dxi +1);

      var div = document.getElementById( did );
      div.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader( src="' + src + '", sizingMethod="scale" )'; 
      div.style.background = '';

    }
  }
}










