// Shedstore UK

var req;
var reqDiv;

function ajaxDiv(url, div) {
    req = false;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest && !(window.ActiveXObject)) {
        try {
            req = new XMLHttpRequest();
        } catch (e) {
            req = false;
        }
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                req = false;
            }
        }
    }
    if (req) {
        reqDiv = div;
        document.getElementById(reqDiv).innerHTML = "Loading ...";
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    }
}

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            document.getElementById(reqDiv).innerHTML = req.responseText;
        } else {
            //document.getElementById(reqDiv).innerHTML = "<div class='p5'>This feature is undergoing maintentance (status: " + req.status + " statusText: " + req.statusText + ").</div>";
        }
    }
}

function showDivInline(strDivID) {
    try {
        document.getElementById(strDivID).style.visibility = 'visible';
        document.getElementById(strDivID).style.display = 'inline';
    } catch (e) { }
}
function showDiv(strDivID) {
    try {
        document.getElementById(strDivID).style.visibility = 'visible';
        document.getElementById(strDivID).style.display = 'block';
    } catch (e) { }
}
function hideDiv(strDivID) {
    try {
        document.getElementById(strDivID).style.visibility = 'hidden';
        document.getElementById(strDivID).style.display = 'none';
    } catch (e) { }
}
function makeBold(strDivID) {
    try {
        document.getElementById(strDivID).style.fontWeight = 'bold';
    } catch (e) { }
}
function makeNormal(strDivID) {
    try {
        document.getElementById(strDivID).style.fontWeight = 'normal';
    } catch (e) { }
}

function jumpToSection(strSectionName) {
    var strCurrentURL;
    var strTargetURL;
    strCurrentURL = window.location.href;
    if (window.location.href.indexOf('#') > -1) {
        // has # in URL
        strTargetURL = left(window.location.href, window.location.href.indexOf('#')) + '#' + strSectionName;
        location.href = strTargetURL;
    } else {
        location.href = window.location.href + '#' + strSectionName;
    }
}

function showPhoto(strPath) {
    $('#v1photo').attr("src", strPath);
    $('#v1photolayer').show();
    //$('#v1photolayer').fadeIn(500);
}

function hidePhoto() {
    $('#v1photolayer').hide();
    //$('#v1photolayer').fadeOut(500);
    //$('#v1photo').attr("src", "http://i.shedstore.co.uk/white.png");
    hidetip();
}

function left(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0, n);
}
function right(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}

// deprecated
function pageLoaded() {
    $('#shed-search').focus();
}

// wrap as a jQuery plugin and pass jQuery in to our anoymous function
(function($) {
    $.fn.cross = function(options) {
        return this.each(function(i) {
            // cache the copy of jQuery(this) - the start image
            var $$ = $(this);

            // get the target from the backgroundImage + regexp
            var target = $$.css('backgroundImage').replace(/^url|[\(\)'"]/g, '');

            // nice long chain: wrap img element in span
            $$.wrap('<span style="position: relative;"></span>')
            // change selector to parent - i.e. newly created span
                    .parent()
            // prepend a new image inside the span
                    .prepend('<img>')
            // change the selector to the newly created image
                    .find(':first-child')
            // set the image to the target
                    .attr('src', target);

            // the CSS styling of the start image needs to be handled
            // differently for different browsers
            if ($.browser.msie || $.browser.mozilla) {
                $$.css({
                    'position': 'absolute',
                    'left': 0,
                    'background': '',
                    'top': this.offsetTop
                });
            } else if ($.browser.opera && $.browser.version < 9.5) {
                // Browser sniffing is bad - however opera < 9.5 has a render bug 
                // so this is required to get around it we can't apply the 'top' : 0 
                // separately because Mozilla strips the style set originally somehow...                    
                $$.css({
                    'position': 'absolute',
                    'left': 0,
                    'background': '',
                    'top': "0"
                });
            } else { // Safari
                $$.css({
                    'position': 'absolute',
                    'left': 0,
                    'background': ''
                });
            }

            // similar effect as single image technique, except using .animate 
            // which will handle the fading up from the right opacity for us
            $$.hover(function() {
                $$.stop().animate({
                    opacity: 0
                }, 250);
            }, function() {
                $$.stop().animate({
                    opacity: 1
                }, 250);
            });
        });
    };

})(jQuery);

// note that this uses the .bind('load') on the window object, rather than $(document).ready() 
// because .ready() fires before the images have loaded, but we need to fire *after* because
// our code relies on the dimensions of the images already in place.
$(window).bind('load', function() {
    $('img.panel-top-logo').cross();
});



// ================================================================================
// Crossfader for Target Feature

var useBSNns;

if (useBSNns) {
    if (typeof (bsn) == "undefined")
        bsn = {}
    var _bsn = bsn;
} else {
    var _bsn = this;
}

_bsn.Crossfader = function(divs, fadetime, delay) {
    this.nAct = -1;
    this.aDivs = divs;

    for (var i = 0; i < divs.length; i++) {
        document.getElementById(divs[i]).style.opacity = 0;
        document.getElementById(divs[i]).style.position = "absolute";
        document.getElementById(divs[i]).style.filter = "alpha(opacity=0)";
        document.getElementById(divs[i]).style.visibility = "hidden";
    }
    this.nDur = fadetime;
    this.nDelay = delay;
    this._newfade();
}

_bsn.Crossfader.prototype._newfade = function() {

    if (this.nID1)
        clearInterval(this.nID1);

    this.nOldAct = this.nAct;
    this.nAct++;
    if (!this.aDivs[this.nAct]) this.nAct = 0;

    if (this.nAct == this.nOldAct)
        return false;

    document.getElementById(this.aDivs[this.nAct]).style.visibility = "visible";

    this.nInt = 50;
    this.nTime = 0;

    var p = this;
    this.nID2 = setInterval(function() { p._fade() }, this.nInt);
}

_bsn.Crossfader.prototype._fade = function() {
    this.nTime += this.nInt;

    var ieop = Math.round(this._easeInOut(this.nTime, 0, 1, this.nDur) * 100);
    var op = ieop / 100;
    document.getElementById(this.aDivs[this.nAct]).style.opacity = op;
    document.getElementById(this.aDivs[this.nAct]).style.filter = "alpha(opacity=" + ieop + ")";

    if (this.nOldAct > -1) {
        document.getElementById(this.aDivs[this.nOldAct]).style.opacity = 1 - op;
        document.getElementById(this.aDivs[this.nOldAct]).style.filter = "alpha(opacity=" + (100 - ieop) + ")";
    }

    if (this.nTime == this.nDur) {
        clearInterval(this.nID2);

        if (this.nOldAct > -1)
            document.getElementById(this.aDivs[this.nOldAct]).style.visibility = "hidden";

        var p = this;
        this.nID1 = setInterval(function() { p._newfade() }, this.nDelay);
    }
    if (this.stopping) {
        if (this.nTime == this.nDur) {
            clearInterval(this.nID1);
            clearInterval(this.nID2);
        }
    }
}

_bsn.Crossfader.prototype._easeInOut = function(t, b, c, d) {
    return c / 2 * (1 - Math.cos(Math.PI * t / d)) + b;
}

function stopFader(target, navdiv) {
    target.stopping = true;
    if (target.nTime < target.nDur) {
        //alert(target.nTime);
        document.getElementById(target.aDivs[target.nAct]).style.opacity = 1;
        document.getElementById(target.aDivs[target.nAct]).style.filter = "alpha(opacity=" + (100) + ")";
        if (target.aDivs[target.nOldAct]) {
            document.getElementById(target.aDivs[target.nOldAct]).style.opacity = 0;
            document.getElementById(target.aDivs[target.nOldAct]).style.filter = "alpha(opacity=" + (0) + ")";
            document.getElementById(target.aDivs[target.nOldAct]).style.visibility = "hidden";
        }
    }
    target.nTime = 0;
    clearInterval(target.nID1);
    clearInterval(target.nID2);

    document.getElementById(navdiv).style.visibility = 'visible';
}

function startFader(target, navdiv) {
    target.stopping = false;
    target.nTime = 0;
    clearInterval(target.nID1);
    clearInterval(target.nID2);
    target.nID1 = setInterval(function() { target._newfade() }, target.nDelay);
    document.getElementById(navdiv).style.visibility = 'hidden';
}

function nextDiv(target, navdiv) {
    target.nOldAct = target.nAct;
    target.nAct++;
    if (!target.aDivs[target.nAct]) target.nAct = 0;
    document.getElementById(target.aDivs[target.nOldAct]).style.opacity = 0;
    document.getElementById(target.aDivs[target.nOldAct]).style.filter = "alpha(opacity=" + (0) + ")";
    document.getElementById(target.aDivs[target.nOldAct]).style.visibility = "hidden";
    document.getElementById(target.aDivs[target.nAct]).style.opacity = 1;
    document.getElementById(target.aDivs[target.nAct]).style.filter = "alpha(opacity=" + (100) + ")";
    document.getElementById(target.aDivs[target.nAct]).style.visibility = "visible";
    document.getElementById(navdiv).style.visibility = 'hidden';
}

function prevDiv(target, navdiv) {
    target.nOldAct = target.nAct;
    target.nAct--;
    if (target.nAct < 0) target.nAct = target.aDivs.length - 1;
    document.getElementById(target.aDivs[target.nOldAct]).style.opacity = 0;
    document.getElementById(target.aDivs[target.nOldAct]).style.filter = "alpha(opacity=" + (0) + ")";
    document.getElementById(target.aDivs[target.nOldAct]).style.visibility = "hidden";
    document.getElementById(target.aDivs[target.nAct]).style.opacity = 1;
    document.getElementById(target.aDivs[target.nAct]).style.filter = "alpha(opacity=" + (100) + ")";
    document.getElementById(target.aDivs[target.nAct]).style.visibility = "visible";
    document.getElementById(navdiv).style.visibility = 'hidden';
}

// ================================================================================
// Old Flash Inclusion

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion() {
    var version;
    var axo;
    var e;

    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }

    if (!version) {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful. 

            // default to the first public version
            version = "WIN 6,0,21,0";

            // throws if AllowScripAccess does not exist (introduced in 6.0r47)		
            axo.AllowScriptAccess = "always";

            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");

        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }

    return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer() {
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;

    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;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    // 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;
    else if (isIE && isWin && !isOpera) {
        flashVer = ControlVersion();
    }
    return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
    versionStr = GetSwfVer();
    if (versionStr == -1) {
        return false;
    } else if (versionStr != 0) {
        if (isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
            tempString = tempArray[1]; 		// "2,0,0,11"
            versionArray = tempString.split(","); // ['2', '0', '0', '11']
        } else {
            versionArray = versionStr.split(".");
        }
        var versionMajor = versionArray[0];
        var versionMinor = versionArray[1];
        var versionRevision = versionArray[2];

        // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}

function AC_AddExtension(src, ext) {
    if (src.indexOf('?') != -1)
        return src.replace(/\?/, ext + '?');
    else
        return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) {
    var str = '';
    if (isIE && isWin && !isOpera) {
        str += '<object ';
        for (var i in objAttrs) {
            str += i + '="' + objAttrs[i] + '" ';
        }
        str += '>';
        for (var i in params) {
            str += '<param name="' + i + '" value="' + params[i] + '" /> ';
        }
        str += '</object>';
    }
    else {
        str += '<embed ';
        for (var i in embedAttrs) {
            str += i + '="' + embedAttrs[i] + '" ';
        }
        str += '> </embed>';
    }

    document.write(str);
}

function AC_FL_RunContent() {
    var ret =
    AC_GetArgs
    (arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
    AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent() {
    var ret =
    AC_GetArgs
    (arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
    AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType) {
    var ret = new Object();
    ret.embedAttrs = new Object();
    ret.params = new Object();
    ret.objAttrs = new Object();
    for (var i = 0; i < args.length; i = i + 2) {
        var currArg = args[i].toLowerCase();

        switch (currArg) {
            case "classid":
                break;
            case "pluginspage":
                ret.embedAttrs[args[i]] = args[i + 1];
                break;
            case "src":
            case "movie":
                args[i + 1] = AC_AddExtension(args[i + 1], ext);
                ret.embedAttrs["src"] = args[i + 1];
                ret.params[srcParamName] = args[i + 1];
                break;
            case "onafterupdate":
            case "onbeforeupdate":
            case "onblur":
            case "oncellchange":
            case "onclick":
            case "ondblClick":
            case "ondrag":
            case "ondragend":
            case "ondragenter":
            case "ondragleave":
            case "ondragover":
            case "ondrop":
            case "onfinish":
            case "onfocus":
            case "onhelp":
            case "onmousedown":
            case "onmouseup":
            case "onmouseover":
            case "onmousemove":
            case "onmouseout":
            case "onkeypress":
            case "onkeydown":
            case "onkeyup":
            case "onload":
            case "onlosecapture":
            case "onpropertychange":
            case "onreadystatechange":
            case "onrowsdelete":
            case "onrowenter":
            case "onrowexit":
            case "onrowsinserted":
            case "onstart":
            case "onscroll":
            case "onbeforeeditfocus":
            case "onactivate":
            case "onbeforedeactivate":
            case "ondeactivate":
            case "type":
            case "codebase":
            case "id":
                ret.objAttrs[args[i]] = args[i + 1];
                break;
            case "width":
            case "height":
            case "align":
            case "vspace":
            case "hspace":
            case "class":
            case "title":
            case "accesskey":
            case "name":
            case "tabindex":
                ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i + 1];
                break;
            default:
                ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i + 1];
        }
    }
    ret.objAttrs["classid"] = classid;
    if (mimeType) ret.embedAttrs["type"] = mimeType;
    return ret;
}
