/*  This file is used to house all of the scripts related to ad rendering.  
    It is utilized by ad_handler.jsp */

var resizeSource = "";
var resizeReason = "";
var showAd = false;
var needsBanner = false;

//Used to set up the adSpace before an ad is rendered
//handles resizing and displaying of ad/label spaces
//NOTE: only the Ad server templates have the call
//      to this method.
handleAdSettings = function() {
    if (!showAd) {
    	collapseAd("showAd = false");
    }
}

handleAdSettingsIFrame = function() {
    if (!showAd) {
    	collapseAdIFrame("showAd = false");
    }
}

//collapse the iFrame that houses the ad
collapseAdIFrame = function(resizeReason) {
    var label = document.getElementById( "adText" );
    if(label) {
    	label.style.display = "none";
    }

    resizeIFrame(0, resizeReason);
}

collapseAd = function(resizeReason) {
    var label = document.getElementById( "adText" );
    if(label) {
    	label.style.display = "none";
    }
    if (typeof alternateContentId != 'undefined') {
        var alternateContent = document.getElementById(alternateContentId);
        if (alternateContent){
            alternateContent.style.display = "block";
        }
    }

    if (typeof sflyAdCallback == 'function') {
        var args = new Object();
        args.adShown = false;
        args.resizeReason = resizeReason;
        if (typeof showMiniPromo != 'undefined') {
            args.showMiniPromo = showMiniPromo;
        }
        sflyAdCallback(args);
    }
}


//resizes the outer IFrame that houses the ad
resizeIFrame = function(height, resizeReason) {
    resizeSource = standardDomain + "incl_/thirdparty/adServer/iFrameAdjuster.html?height=" + height + "&iframeid=showAds" + positionId + "&containerid=" + containerId + "&alternatecontentid=" + alternateContentId + "&resizeReason=" + resizeReason;

    resizeSource += "&cbarg_adShown=false";
    resizeSource += "&cbarg_resizeReason=" + resizeReason;
    if (typeof showMiniPromo != 'undefined') {
        resizeSource += "&cbarg_showMiniPromo=" + showMiniPromo;
    }

    var innerIFrame = document.getElementById("innerIFrame");
    if(innerIFrame) {
    	innerIFrame.src = resizeSource;
    }
}
 
//check the images included in the ad.
checkGeneratedImages = function() {
    document.close();
    var anchors = document.getElementsByTagName("a");
    var images = document.getElementsByTagName("img");
    var scripts = document.getElementsByTagName("script");
    var objects = document.getElementsByTagName("object");
    var embeds = document.getElementsByTagName("embed");
    
    var objectsFound = false;
    if(objects.length > 0) {
        objectsFound = true;
    }
    
    var imageNode;
    var scriptNode;
    var objectNode;
    var embedNode;
    
    var browser=navigator.appName;
    var b_version=navigator.appVersion;
    var version=parseFloat(b_version);
    
    var incomplete = false;
    if(anchors) {
    	for(var i = 0; i < anchors.length; i++) {
	        anchorNode = anchors[i];
	        if(anchorNode.href.indexOf("CID=fffff") > -1) {
	            incomplete = true;
	            resizeReason = resizeReason + "Atlas Error returned CID=fffff...";
	        }
	    }
    }
    if(images && !incomplete) {
	    for(i = 0; i < images.length; i++) {
	        imageNode = images[i];
	        if(!imageNode.complete) {
	            imageNode.src = "http://web1.shutterfly.com/application/adserver_error.gif?errorType=SlowConnection&errorDetails=" + escape( imageNode.src ) + "&acc_random=" + timeStamp;
	            if(!objectsFound) {
	                incomplete = true;
	                resizeReason = resizeReason + "image " + imageNode.id + " failed to load; ";
	            }
	        }
	    }
	}
    //in IE, we can use readyState to determine whether HTML objects have finished loading
    //unfortunately, FireFox does not yet support readyState
    if(browser == "Microsoft Internet Explorer" && version >= 4) 
    {
    	if(scripts && !incomplete) {
	        for(i = 0; i < scripts.length; i++) {
	            scriptNode = scripts[i];
	            if(scriptNode.readyState != "complete") {
	                scriptNode.src = "";
	                scriptNode.text = "";
	                incomplete = true;
	                resizeReason = resizeReason + "script " + scriptNode.id + " failed to load; ";
	            }
	        }
	    }
	    if(objects && !incomplete) {
	        for(i = 0; i < objects.length; i++) {
	            objectNode = objects[i];
	            if(objectNode.readyState != 4) {
	                objectNode.codebase = "";
	                incomplete = true;
	                resizeReason = resizeReason + "object " + objectNode.id + " failed to load; ";
	            }
	        }
	    }
	    if(embeds && !incomplete) {
	        for(i = 0; i < embeds.length; i++) {
	            embedNode = embeds[i];
	            if(embedNode.readyState != "complete") {
	                embedNode.src = "";
	                incomplete = true;
	                resizeReason = resizeReason + "embed " + embedNode.id + " failed to load; ";
	            }
	        }
	    }
    }
    if(incomplete) { //ad rendering too slow -- collapse
        collapseAd(resizeReason);
    }
}

noAd = function(reason){
    collapseAd(reason);
}

//called when we're not displaying any ads at all
noAdIFrame = function(reason) {
    collapseAdIFrame(reason);
}

