﻿// Copyright Active Discovery, Inc., 2005, 2006

var preloadObjects=new Array(); // This array will hold one preloadObject for each time the function is called
var preloadIndex=0; // Contains the index for the preloadObject currently loading
var mozIndex=0;
var temp;

function embedFlash(src, scndPath){

	// Originally made by Robert. Needs to be enhanced with new flash detection

	var myFlash, param, objectNode, tmpImage, hasFlash, str, len , i ;
		
		//check for the file type if we support 
		if(getFileType(src)!=".swf"){
			alert("File type not supported");
			return null;
		}
		hasFlash=detectFlash();
		if(!hasFlash){
			window.alert("This website shows better if you have Macromedia Flashplayer installed");
			if(typeof(scndPath)!="undefined"){	
				tmpImage = new Image();
				tmpImage.src=scndPath;
				tmpImage.style.position="absolute";				
				return tmpImage;
			}	
			else{
				tmpImage = rectangle();
				return tmpImage;
			}
		}				
        myFlash=document.createElement("embed");
        myFlash.style.position="absolute";
        myFlash.src=src;
        myFlash.setAttribute("menu","false");
        if (navigator.appName!="Microsoft Internet Explorer") {
                 //this is for mozilla browser it is required to put into append the paramnode to the object node
               myFlash.pluginspage="http://www.macromedia.com/go/getflashplayer";
               myFlash.type="application/x-shockwave-flash";
               objectNode=document.createElement("object");
               objectNode.setAttribute("data", src);  //use the data preoperty than src in order to use the movie param
               //   objectNode.setAttribute("type", 'application/x-shockwave-flash');
               //  objectNode.setAttribute ("menu", "false");
               objectNode.style.position="absolute";
               paramNode=document.createElement("param");
               paramNode.setAttribute("movie", src);
               paramNode.setAttribute ("menu", "false");     
               objectNode.appendChild(paramNode);
				objectNode.myFlash=true;
               return objectNode;
         }
	//myFlash.setAttribute("wmode", "transparent");
        myFlash.setAttribute("menu", "false");
        myFlash.myFlash=true;
        return myFlash;
}


// Next from Flash support site
function JSGetSwfVer(i){ // Just rename to avoid confusion with the one in the functions file
	// We can leave it here and remove from the functions file
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// End from Flash support site 
 
function detectFlash() {

	if (navigator.userAgent.indexOf("MSIE")>=0) {
		flashVersion=VBGetSwfVer(1); 
	}
	else
		flashVersion=JSGetSwfVer();
	return (flashVersion!=-1);
}
 
function f2(evt) {
	if (typeof(event)=="object") { // apparently IE
		if ((event.srcElement.readyState=="complete")||(event.srcElement.readyState=="loaded")) {
			event.srcElement.myReadyState=true;
			if (typeof(event.srcElement.myHandler)=="function") // call my handler
				event.srcElement.myHandler(); // is called twice, why?
			// else nothing to do
		}
	}
		// else just wait for the next readystatechange
	else { // Tested for Firefox
		if (typeof(evt)=="object") { // assume the event object is passed as a parameter
			if (typeof(evt.currentTarget)=="object") {
				evt.currentTarget.myReadyState=true;
				if (typeof(evt.currentTarget.myHandler)=="function") // call my handler
					evt.currentTarget.myHandler();
			}
			else
				window.alert("Browser not supported"); // Wouldn't know where else to look
		}
		else
			window.alert("Browser not supported"); // Don't know what to do else at the moment
	}
}

function loadScript(src, type, encoding, onloadFunc) {

	// Tested for IE6, IE7, Firefox, Mozilla and Netscape
	
	// Does not work in Opera

	var scr, eventAttached;

	if (typeof(src)!="string")
		return null;
	// else
	
	scr=document.createElement("script");
	scr.src=src;
	scr.type=type;
	scr.myReadyState=false;
	//scr.encoding=encoding;
	document.getElementById("headId").appendChild(scr);

	if (typeof(scr.readyState)!="undefined") {
		if ((scr.readyState=="complete")||(scr.readyState=="loaded")) {
			scr.myReadyState=true;
			if (typeof(onloadFunc)=="function") {
				window.setTimeout(onloadFunc,0);
				return scr;
			}
			if (typeof(onloadFunc)=="string") {
				window.setTimeout(onloadFunc,0);
				return scr;
			}
		}
		else { // readyState exists, but is not complete or loaded
			scr.myHandler=onloadFunc;
			scr.attachEvent("onreadystatechange",f2);
			return scr;
		}
	}
	else { 
		if (typeof(scr.addEventListener)=="function") { // This works for Firefox
			scr.myHandler=onloadFunc;
			// and the next does not work for Opera
			scr.addEventListener("load", f2, false);
		}
		else
			window.alert("Browser not supported");
	}
	return scr;
}

function objectReady2(obj) { // added the 2 to prevent interaction with same function in functions file

        var tag;

        if (typeof(obj)!="object")
                window.alert("Invalid function call objectReady2, type must be object");
        else {
                if (typeof(obj.tagName)!="string")
                        window.alert("Invalid function call objectReady2, object must have tagName");
                else {
					window.alert(typeof(obj.complete));
					if (typeof(obj.complete)=="boolean") // probably Mozilla
						return obj.complete;
					else {
						 if (typeof(obj.readyState)!="undefined") { // probably IE
								tag=obj.tagName.toUpperCase();
								switch (tag) {
									case "SCRIPT": {
                                        return ((obj.readyState=="loaded")||(obj.readyState=="complete")); // a script is complete when loaded
									}
									default:
                                        return (obj.readyState=="complete");
                                } // switch
                          } // if
                          else
								window.alert("Browser not supported");
					} // else
                } // else
        } //else
} // function

function stopPreloading() {
        // Not implemented yet. Seems it should just remove the objects from the array.
}

function checkLoadObjectStatus(preloadObject) { // Add just to simplify the code

        // checks whether a prelaodObject is loaded

        objectsLoaded=true;
        i=0;
        l=preloadObject.objects.length; // first get the number of objects to be loaded for the current preloadObject
        while ((i<l)&&(objectsLoaded)) {
                objectsLoaded=objectReady2(preloadObject.objects[i]);
                i++;
        }
        return objectsLoaded;
}

function checkStatus() {

        var i, l;

        // window.alert("This is checkStatus");
        // the function will only be called if preload has been called, so there will be always one object
        // this might change when we implement the "stop" method. The "stop" method is needed if the user goes somewhere else then we think
        
        // We'll first check the object which is preloaded now, supposedly starting with the index

        if (checkLoadObjectStatus(preloadObjects[preloadIndex])) {
                // The current object is loaded, so check if we have more things to load
                preloadObjects[preloadIndex].loaded=true;
                if (preloadIndex<(preloadObjects.length-1)) {
                        preloadIndex++; // we'll check the next thing to be loaded
                        checkStatus(); // we'll just check the next object straight away
                }
                // else we don't have to do anything anymore
        }
        else // we'll just wait for another while
                window.setTimeout(checkStatus, 100);
}

function getFileType(filename) {

        var index, s, fileExtension;

        s=filename;
        index=s.lastIndexOf(".");
        // We have the last "."
        if (index!=-1) {
                s=s.substr(index);
                return s.toLowerCase();
        }
        else
                return "unknown";
}

function preload(files) {

        // input: array of filenames
        // Last change: shouldn't use objects, but filenames, otherwise we won't be able to control anything

		return; // Shouldn't affect the site, just safer now

        var i, l, preloadObject;

        if (files.length==0)
                return null;
        // else
        preloadObject=new Object();
        preloadObject.loaded=false;
        preloadObject.stop=stopPreloading;
        preloadObject.fileNames=files;
        preloadObject.objects=new Array();
        l=files.length;
        i=0;
        while (i<l) {
                switch (getFileType(files[i])) {
                        case ".jpg":
                        case ".png":
                        case ".bmp":
                        case ".gif":
                        case ".jpeg":
                                {
                                preloadObject.objects[i]=new Image();
                                preloadObject.objects[i].src=files[i];
                                //window.alert("Object for \""+files[i]+"\" created");
                                break;
                        } // end ".jpg"
                        case ".js": {
                                preloadObject.objects[i]=document.createElement("script");
                                preloadObject.objects[i].src=files[i];
                        //        window.alert("Object for \""+files[i]+"\" created");
                                break;
                        }
                        default: { // just set to "complete"
                                preloadObject.objects[i]=new Object();
                                preloadObject.objects[i].tagName="unknown";
                                preloadObject.objects[i].readyState="complete";
                                break;
                        } // end default
                } // end switch
                i++;
        } // end while
        // prepare for further use, so put in array
        l=preloadObjects.length;
        preloadObjects[l]=preloadObject;
        checkStatus();

        if(preloadObjects.length==1){//we assume that we load first the important js file
                  if(preloadObjects[0].objects[1].addEventListener){//for mozilla
                          for(i=0; i<preloadObjects[0].objects.length; i++){
                                  preloadObjects[0].objects[i].onload=mozLoad;
                          }
                  }
                  else{ //Internet Explorer
                          myTime=window.setInterval("firstObject()", 10);
                  }
        }

        return preloadObjects[l];
}

function firstObject(){
           var i, fromNet, isLoad;
             allLoaded= true;

                        i=0;
                        myVal=0;

                        while(i<preloadObjects[0].objects.length){

                              if(preloadObjects[0].objects[i].readyState=="complete" || preloadObjects[0].objects[i].readyState=="loaded"){
                                        myVal++;

                                }
                        i++;
                        }

                        if(myVal==preloadObjects[0].objects.length){
                        //        clearBody()
                        //        init();
                        // preloadObjects[0].onload=init;
                        window.clearInterval(myTime);
             }
}

function clearBody(){

return;

var i, myChild;
   //this is for the progress bar to be remove if we have final loader this is temporary for now
             bar1.togglePause();
             clearInterval(bar1.tid);
   //clear the children of the body
             for(i=0; i<document.body.childNodes.length; i++){
                      myChild=document.body.childNodes[i];
                      document.body.removeChild(myChild);
             }

    //double check if there is any element left;
             if(document.body.childNodes.length>0){
                         clearBody()
             }

}
function mozLoad(){

           mozIndex++;
         if(mozIndex==preloadObjects[0].objects.length){
                 preloadObjects[0].onload=init;

         }

}