
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// general
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function trim (str) {
   str = this != window? this : str;
   return str.replace(/^s+/, "").replace(/s+$/, "");
}
function getPageSize(){
   var de = document.documentElement;
   var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
   var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight
   arrayPageSize = new Array(w,h)
   return arrayPageSize;
}

function numOrdRand() { return (Math.round(Math.random())-0.5); }
function rndSortImageArray (anArray) {
   anArray.sort( numOrdRand );
}

function getFilenameFromURL(anURL) {
   return anURL.substring( anURL.lastIndexOf("/")+1 );
}
function imgSetSize(imgObject, OriX, OriY) {
   var imgWidth;
   var imgHeight;
   var imgRatio;
   var popupsize= getPageSize();

   var x = popupsize[0] - 26;
   var y = popupsize[1] - 50;

   imgWidth = OriX ;
   imgHeight = OriY ;

   imgRatio = imgWidth / imgHeight;

   if (imgWidth > x) {
      imgWidth = x;
      imgHeight = Math.round(imgWidth / imgRatio);
   }
   if (imgHeight > y) {
      imgHeight = y;
      imgWidth = Math.round(imgHeight * imgRatio);
   }

   imgObject.width = imgWidth;
   imgObject.height = imgHeight;
}
// preload images
var imgPreloader = new Array();
var imgLoadedCounter=0;
function loadImages() {
   if (document.images) {
      imgLoadedCounter=0;
      for (var i = 0; i < loadImages.arguments.length; i++){
         imgPreloader[i] = new Image();
         imgPreloader[i].src = arguments[i];

         imgPreloader[i].onload = function() {
               imgLoadedCounter++;
            }
      }
   }
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// customize
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function MM_findObj(n, d) { //v4.0
     var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
       d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
     if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
     if(!x && document.getElementById) x=document.getElementById(n); return x;
   }
// Show layer
function MM_showHideLayers() { //v3.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
      if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
   }
// Allow layer to float
function P7_Snap() { //v2.62 by PVII
  var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,args=P7_Snap.arguments;a=parseInt(a);
  for (k=0; k<(args.length-3); k+=4)
   if ((g=MM_findObj(args[k]))!=null) {
    el=eval(MM_findObj(args[k+1]));
    a=parseInt(args[k+2]);b=parseInt(args[k+3]);
    x=0;y=0;ox=0;oy=0;p="";tx=1;da="document.all['"+args[k]+"']";
    if(document.getElementById) {
     d="document.getElementsByName('"+args[k]+"')[0]";
     if(!eval(d)) {d="document.getElementById('"+args[k]+"')";if(!eval(d)) {d=da;}}
    }else if(document.all) {d=da;}
    if (document.all || document.getElementById) {
     while (tx==1) {p+=".offsetParent";
      if(eval(d+p)) {x+=parseInt(eval(d+p+".offsetLeft"));y+=parseInt(eval(d+p+".offsetTop"));
      }else{tx=0;}}
     ox=parseInt(g.offsetLeft);oy=parseInt(g.offsetTop);var tw=x+ox+y+oy;
     if(tw==0 || (navigator.appVersion.indexOf("MSIE 4")>-1 && navigator.appVersion.indexOf("Mac")>-1)) {
      ox=0;oy=0;if(g.style.left){x=parseInt(g.style.left);y=parseInt(g.style.top);
      }else{var w1=parseInt(el.style.width);bx=(a<0)?-5-w1:-10;
      a=(Math.abs(a)<1000)?0:a;b=(Math.abs(b)<1000)?0:b;
      x=document.body.scrollLeft + event.clientX + bx;
      y=document.body.scrollTop + event.clientY;}}
   }else if (document.layers) {x=g.x;y=g.y;var q0=document.layers,dd="";
    for(var s=0;s<q0.length;s++) {dd='document.'+q0[s].name;
     if(eval(dd+'.document.'+args[k])) {x+=eval(dd+'.left');y+=eval(dd+'.top');break;}}}
   if(el) {e=(document.layers)?el:el.style;
   var xx=parseInt(x+ox+a),yy=parseInt(y+oy+b);
   if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)>4){xx+="px";yy+="px";}
   if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1){
    xx+=parseInt(document.body.leftMargin);yy+=parseInt(document.body.topMargin);
    xx+="px";yy+="px";}e.left=xx;e.top=yy;}}
}


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// open new pop-up windows
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function setPopupParams(attribs) {
   var screensize = getPageSize();
   var popupWidth = screensize[0] - 50;;
   var popupHeight = screensize[1] - 60;
   var popupAttribs = "toolbar=yes,location=yes,status=yes,directories=no,menubar=yes,scrollbars=yes,resizable=yes";

   if (attribs) { popupAttribs = attribs; }

   return (popupAttribs +
           ",width="   + popupWidth +
           ",height="  + popupHeight +
           ",left="    + ( (screensize[0]/2) - (popupWidth/2) ) +
           ",top=20");
}

var winPhotoObj="";
function Open_winPhoto(aBaseLocation, aPic, anAuthor, aMode) {
   var winPhotoName="Photowin";
   var winPhotoParams=setPopupParams("toolbar=no,location=no,status=no,directories=no,menubar=no,scrollbars=no,resizable=yes");

   if (winPhotoObj) {
      winPhotoObj.close();
      winPhotoObj=null;
   }

   winPhotoObj=window.open("about:blank", winPhotoName,winPhotoParams );
   if (winPhotoObj.opener == null) { winPhotoObj.opener = self; }

   winPhotoObj.focus();
   winPhotoObj.location.href= aBaseLocation + "/include/popup.asp?pic=" + aPic + "&author=" + anAuthor;
}


var winFormObj="";
function Open_winForm(aLocation) {
   var winFormName="Formwin";
   var winFormParams=setPopupParams();

   if (winFormObj) {
      winFormObj.close();
      winFormObj=null;
   }

   winFormObj=window.open("about:blank", winFormName,winFormParams );
   if (winFormObj.opener == null) { winFormObj.opener = self; }

   winFormObj.focus();
   winFormObj.location.href= aLocation;
}


function Open_winNew(aLocation) {
   var winNewObj="";
   var winNewParams=setPopupParams();

   winNewObj=window.open("", "",winNewParams );
   if (winNewObj.opener == null) { winNewObj.opener = self; }

   winNewObj.focus();
   winNewObj.location.href= aLocation;
}


function popupClose() {
   window.close();
}


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// fade image
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var fade_time = 250;
var fade_speed = 25;
var fade_processing = false;
var fade_mode = 0;
// MODES
// 0: swap pictures
// 1: hide pic -> fade in
// 2: fadeout -> show pic
// 3: fadeout -> fadein
// 4: cross fade
// 5: random
var timerID = 0;
var imgObject;
var imgBGObject;
var imgNext;


function set_Globals (anImgObj, aImgBGObject, aFadeMode) {
   imgObject = anImgObj;
   imgBGObject = aImgBGObject;

   if (aFadeMode==5) {
      fade_mode = Math.round( Math.random()*(4) );
   } else {
      fade_mode = aFadeMode;
   }
}
function changeOpac(anOpacity, anObjStyle) {
   if (anOpacity == 100) {
      anOpacity = 99;
   }
   anObjStyle.opacity = (anOpacity / 100);
   anObjStyle.MozOpacity = (anOpacity / 100);
   anObjStyle.KhtmlOpacity = (anOpacity / 100);
   anObjStyle.filter = "alpha(opacity=" + anOpacity + ")";
}
function fade_out_image(currOpacity) {
   if(currOpacity == null) {
      fade_processing = true;
      currOpacity = 100;
   }
   var increment;
   increment = Math.round((1 / (fade_time / fade_speed)) * 100);
   if (fade_mode==4) {
      increment = Math.round((1 / (fade_time / fade_speed *4) ) * 100);
   }

   if(currOpacity >= 0) {
      changeOpac(currOpacity, imgObject.style );
      currOpacity -= increment;
      setTimeout( "fade_out_image(" + currOpacity + ");", fade_speed);
   } else {
      if (fade_mode==1) {
         imgObject.src = imgNext.src;
         setTimeout("fade_in_image(0);", fade_speed);
      }
      if (fade_mode==2) {
         imgObject.src = imgNext.src;
         setTimeout("fade_in_image(80);", fade_speed);
      }
      if (fade_mode==3) {
         imgObject.src = imgNext.src;
         fade_in_image();
      }
      if (fade_mode==4) {
         imgObject.src = imgNext.src;
         setTimeout("fade_in_image(100);", fade_speed);
      }

      fade_processing = false;
   }
}
// fade image in
function fade_in_image(currOpacity) {
   if(currOpacity == null) {
      fade_processing = true;
      currOpacity = 0;
   }

   var increment = Math.round((1 / (fade_time / fade_speed)) * 100);

   if(currOpacity <= 100) {
      changeOpac(currOpacity, imgObject.style );
      currOpacity += increment;
      setTimeout("fade_in_image(" + currOpacity + ");", fade_speed);
   } else {
      changeOpac(100, imgObject.style );

      fade_processing = false;
   }
}
function fadeMain() {
   if (fade_mode==0) {
      imgBGObject.style.background = "";
      imgObject.src = imgNext.src;
   }
   if (fade_mode==1) {
      imgBGObject.style.background = "";
      fade_out_image(0);
   }
   if (fade_mode==2) {
      imgBGObject.style.background = "";
      fade_out_image();
   }
   if (fade_mode==3) {
      imgBGObject.style.background = "";
      fade_out_image();
   }
   if (fade_mode==4) {
      imgBGObject.style.background = "url('" + imgNext.src + "') no-repeat  1px 1px";
   }

}


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// rotate header picture
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function playHeaderShow (currImgIndex, NumOfBGImages, prefix, timing, fademode) {
   var currImg = getFilenameFromURL(headerpic.src);
   var nextImg = currImg;

   clearTimeout(timerID);

   // until new picture is selected
   while ( getFilenameFromURL(currImg) == getFilenameFromURL(nextImg) ) {
      // get next picture in array
      currImgIndex = ++currImgIndex;

      if ( currImgIndex >= NumOfBGImages ) {
         // re-shuffle array
         rndSortImageArray( imgHeaderList );
         currImgIndex=0;
      }

      nextImg = imgHeaderList[ currImgIndex ];
   }

   // preload next picture
   imgNext = new Image();
   imgNext.src = nextImg;

   set_Globals ( headerpic, pageheader, fademode );

   fadeMain();

   timerID = setTimeout("playHeaderShow('" + currImgIndex + "','" + NumOfBGImages + "','" + prefix + "','" + timing + "','" + fademode + "')", timing );
}

