// Where applicable, (c) Marcus Engene Pond5.com. All rights reserved

P5 = {};
P5._l = {};
p5l = {};
P5._l.tt = {};
P5._l.tt.state = 0;
P5._mb = {};
P5._seqno = 1;
P5._top = 0;
P5._active_popup = null;
P5._carth = null;
P5._body = null;
P5._hc = 'p5';
P5._hcs = [];
P5._mu = {};
P5._mu._pl = [];
P5._nbrClipsChecked = 0;
P5._jsSc = $A([]);
P5._pondSeq = 0;
P5._assoc = [];
P5._epl = false;
P5._eplId = 0;
P5._epPuId = 0;
P5._embTooPrev = 0;
P5._eplAn = false;

P5._seo = [
    "video-sound-effects-music",
    "stock-video-footage",
    "music",
    "video-music",
    "sound-effects",
    "video-sound-effects",
    "sound-effects-music",
    "video-sound-effects-music"
];

function nop() { }

// TODO redo with p.js
P5.addLoadEvent = function(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        };
    }
};

P5.popupwin = function (url, title, args) {
    var tt = P5._pondSeq++;
    var remote = window.open (url, title + tt, args);
    if (remote.opener === null) {
        remote.opener = window;
    }
    remote.opener.name = "opener"; 
    P5._latestRemote = remote;
};

P5.F = function (v) { return $F(v); };

P5.FRadio = function (form, rname) { return Form.getInputs($(form), 'radio', rname).find(function(radio) { return radio.checked; }).value; };

P5.seo = function(bm)
{
    return P5._seo[((bm & 15) ? 1 : 0) + ((bm & 16) ? 2 : 0) + ((bm & 32) ? 4 : 0)];
};

P5.ov = function(id,what)
{
    var obj = $(id);
    P5.OverText = obj.innerHTML;
    if (1 == what) {
        obj.update('Add to Cart');
    } else if (2 == what) {
        obj.update('Add to Clip Bin');
    } else if (3 == what) {
        obj.update('Clip Options');
    }
};

P5.ou = function(id)
{
    $(id).update(P5.OverText);
};

P5.getRegion = function (in_elem) {
    var el = $(in_elem);
    var co = el.cumulativeOffset();
    var retVal = {};

    retVal.left = co[0];
    retVal.top = co[1];
    retVal.right = co[0] + el.getWidth();
    retVal.bottom = co[1] + el.getHeight();
    retVal.width = el.getWidth();
    retVal.height = el.getHeight();
    
    return retVal;
};

P5.generateId = function () {
    P5._seqno++;
    return "P5gId" + P5._seqno;
};

P5.somewhatRnd = function () {
    var daten = new Date();
    return Math.round(daten.getTime() / 100);
};

P5.disableEnterKey = function(e) {
    var key;
    if(window.event) { key = window.event.keyCode; } else { key = e.which; }
    if(key == 13) { return P5.cancelEvent(e); }
    return true;
};

P5.getViewport = function ()
{
    var vp = document.viewport.getDimensions();
    if (Prototype.Browser.Opera) {
        if (screen.width < vp.width) {
            vp.width = screen.width;
        }
        if (screen.height < vp.height) {
            vp.height = screen.height;
        }
    }
    return vp;
};

// dhtdg 164 
P5.cancelEvent = function (evt)
{
    evt=(evt)?evt:((event)?event:null);
    if(evt){
        if(evt.returnValue){evt.returnValue=false;}
        else if(evt.preventDefault){evt.preventDefault();}
        else{return false;}
    }
};

// TODO no p.js for this?
P5.getElementC = function (element, xAxis)
{
	var c = 0;

	while (element !== null)
	{
		c += (xAxis) ? element.offsetLeft : element.offsetTop;
		if (element.style.position == "absolute") {
			break;
		} else {
			element = element.offsetParent;
        }
	}

	var elementWnd = document.window;
	if (!elementWnd) { return c; }

	if (!elementWnd.frameElement) { return c; }

	return c + P5.getElementC(elementWnd.frameElement, xAxis);
};

P5.getElementX = function (object) {return P5.getElementC(object, true);};
P5.getElementY = function (object) {return P5.getElementC(object, false);};

P5.hideSelectBoxes = function (object)
{
	if (!object) { return; }
	
	var in_IE6 = false;
	
	if (navigator.appName.substring(0,9) == "Microsoft")
	{ // Check if IE version is 6 or older

		var appVer = navigator.appVersion.toLowerCase();
		var iePos = appVer.indexOf('msie');
		if (iePos !=-1) {
			var is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
			var is_major = parseInt(is_minor,10); 
            if (is_major <= 6) { 
                in_IE6 = true;
            }
		}
	}
		
	if (in_IE6) {
        if (!object.sboxes) {
            object.sboxes = [];
        }

        var ol = P5.getElementX(object);
        var ot = P5.getElementY(object);
        var ow = object.offsetWidth;
        var oh = object.offsetHeight;
        var i = 0;
        var sboxes = document.all.tags("select");
        for (i=0; i<sboxes.length; i++)
        {
            var node = sboxes[i].parentNode;
            while (node != object && node.tagName != "BODY") {
                node = node.parentNode;
            }

            var skip = (node == object);
            if (skip) { continue; }
            var t = P5.getElementY(sboxes[i]);
            var l = P5.getElementX(sboxes[i]);
            var w = sboxes[i].offsetWidth;
            var h = sboxes[i].offsetHeight;
            var ver = false;
            if (t > ot && t < (ot + oh)) {
                ver = true;
            } else if ((t + h) > ot && (t + h) < (ot + oh)) {
                ver = true;
            }
            var hor = false;
            if (l > ol && l < (ol + ow)) {
                hor = true;
            } else if ((l + w) > ol && (l + w) < (ol + ow)) {
                hor = true;
            } else if (l < ol && (l + w) > ol) {
                hor = true;
            }
            if (ver && hor && sboxes[i].style.visibility != "hidden") {
                object.sboxes[object.sboxes.length] = sboxes[i];
            }
        }
        for (i=0; i<object.sboxes.length; i++) {
            object.sboxes[i].style.visibility = "hidden";
        }
    }
};

P5.showSelectBoxes = function (object)
{
	if (!object) { return; }
	if (!object.sboxes) { return; }
	for (var i=0; i<object.sboxes.length; i++) {
		object.sboxes[i].style.visibility = "";
    }
	object.sboxes = [];
};

P5.enlarge = function (_target, _obj, _offset) { // relativ boxen cart
	var _box = $(_obj);
	var _off = 0;
	if ((typeof(_offset) != "undefined") && !document.all || window.opera)
	{	
		_off = P5._top;
	}
	if (_box) {
		P5._active_popup = _obj;
		var xy = Position.cumulativeOffset(_target);
        //alert ((xy[0] +_target.offsetWidth/2 - _box.offsetWidth/2) + " " + (xy[1] - _box.offsetHeight + _off));
		_box.style.top = (xy[1] - _box.offsetHeight + _off) + "px";
		_box.style.left = (xy[0] +_target.offsetWidth/2 - _box.offsetWidth/2) + "px";
		P5.hideSelectBoxes(_box);
	}
};

P5.dynboxAdd = function ()
{
    P5.dynbox.depth++;
    var o = P5.dynbox.depth;
    if ((P5.dynbox.depth + 1) > P5.dynbox.popupPildown.length) {
        P5.dynbox.popupPildown[o] = new Element('div', { id: 'popup-pilner' + o });
        P5.dynbox.popupPilleft[o] = new Element('div', { id: 'popup-pilleft' + o });
        P5.dynbox.popupDynbox[o] = new Element('div', { id: 'popup-dynbox' + o });
        P5.dynbox.popupDynboxSh[o] = new Element('div', { id: 'popup-dynbox-sh' + o });
        $(document.body).appendChild (P5.dynbox.popupPildown[o]);
        $(document.body).appendChild (P5.dynbox.popupPilleft[o]);
        $(document.body).appendChild (P5.dynbox.popupDynbox[o]);
        $(document.body).appendChild (P5.dynbox.popupDynboxSh[o]);
    }
    return o;
};

P5.dynboxOn = function (in_str, in_x, in_y, in_wh)
{
    var newXpos = 0;
    var newYpos = 0;
    var newXX = 0;
    if (! P5.dynbox) {
        P5.dynbox = {};
        P5.dynbox.depth = -1;
        P5.dynbox.popupPildown = [];
        P5.dynbox.popupPilleft = [];
        P5.dynbox.popupDynbox = [];
        P5.dynbox.popupDynboxSh = [];
    }
    var o = P5.dynboxAdd();
    P5.dynbox.popupDynbox[o].update(in_str);
    // Assuming I don't have to timeout(0) for element to update its width. 
    var di = P5.getRegion($('popup-dynbox' + o));
    var vp = P5.getViewport();
    var newH = di.bottom - di.top;
    var newW = di.right - di.left;
    if (2 == in_wh) {
        newXpos = in_x + 30;
        newYpos = in_y - (newH / 2);
        newXX = newXpos;
    } else {
        newXpos = in_x - Math.round (newW / 2);
        newYpos = in_y - 8 - 19 - newH;
        newXX = newXpos;
        if (vp.width < (newXX + newW)) {
            newXX = vp.width - newW - 4;
        }
        if (newXX < 4) {
            newXX = 4;
        }
    }
    P5.dynbox.popupDynbox[o].setStyle({left:newXX+"px", top:newYpos+"px"});
    P5.dynbox.popupDynboxSh[o].setStyle({left:(newXX+3)+"px", top:(newYpos+3)+"px", width:newW+"px", height:newH+"px"});
    if (2 == in_wh) {
        P5.dynbox.popupPilleft[o].setStyle({left:(newXX - 10)+"px", top:(in_y - 10)+"px"});
    } else {
        P5.dynbox.popupPildown[o].setStyle({left:(in_x - 17)+"px", top:(in_y - 20 - 8)+"px"});
    }
    P5.hideSelectBoxes(P5.dynbox.popupDynbox[o]);
};

P5.dynboxOff = function ()
{
    if (!P5.dynbox || 0 > P5.dynbox.depth) { return; }
    var o = P5.dynbox.depth;
    P5.showSelectBoxes(P5.dynbox.popupDynbox[o]);
    P5.dynbox.popupDynboxSh[o].setStyle({top:"-9999px",left:"-9999px"});
    P5.dynbox.popupDynbox[o].setStyle({top:"-9999px",left:"-9999px"});
    P5.dynbox.popupPildown[o].setStyle({top:"-9999px",left:"-9999px"});
    P5.dynbox.popupPilleft[o].setStyle({top:"-9999px",left:"-9999px"});
    P5.dynbox.popupDynbox[o].update('');
    P5.dynbox.depth--;
};

P5.enlarge3 = function (_target, _obj) {
	var _box = document.getElementById(_obj);
	if (_box) {
		var xy = Position.cumulativeOffset(_target);
		_box.style.top = xy[1] + _target.offsetHeight - 1 + "px";
		_box.style.left = xy[0] +"px";
		_box.style.width = _target.offsetWidth - 20 + "px";
		P5.hideSelectBoxes(_box);
	}
};

P5.phide = function (ob) {
    $(ob).hide();
};

// was nameconflict
P5.hide = function (_obj) {
	var _box = $(_obj);
	if (_box) {
		P5._active_popup = null;
		_box.style.top = "-9999px";
		_box.style.left = "-9999px";
		P5.showSelectBoxes(_box);
	}
};

P5.enlargeTTDelay = function ()
{
	var _off = 0;
    var _box = $('popup-tt');
    var dimTT = P5.getRegion(_box);
    var so = document.viewport.getScrollOffsets();
    var dimEl;
    var vp = P5.getViewport();
    if (P5._l.tt.el) {
        dimEl = P5.getRegion(P5._l.tt.el);
        if (Element.hasClassName(P5._l.tt.el,"CartImgPos") && (!document.all || window.opera)) {
            _off = P5._top;
        }
    }
    if (1 != P5._l.tt.state) {
        return;
    }
    P5._l.tt.state = 2;
    // default wh == 2
    var x;
    var y;
    if (9 == P5._l.tt.wh) {
        x = (vp.width / 2) - ((dimTT.right - dimTT.left) / 2);
        y = (vp.height / 2) - ((dimTT.bottom - dimTT.top) / 2);
    } else if (10 == P5._l.tt.wh) {
        var coors = [Math.round(dimEl.width / 2 + dimEl.left), Math.round(dimEl.height / 2 + dimEl.top)];
        var rx, ry;
        var tt;
        rx = coors[0] - (dimTT.width / 2);
        ry = coors[1] - dimTT.height - 0; // - 40
        var ryorg = ry;
        
        if (rx < (0 + so.left)) {
            rx = so.left;
        }
        
        tt = so.left + vp.width - dimTT.width - 10;
        if (rx > tt) {
            rx = (so.left > tt) ? so.left : tt;
        }
        
        if (ry < so.top) {
            ry = coors[1] + 20;
        }
        
        if (ry > ryorg) {
            ry = dimEl.bottom + 20;
        }
        x = rx;
        y = ry;
    } else if (1 == P5._l.tt.wh) {
        x = Math.round((dimEl.right + dimEl.left) / 2 - (dimTT.right - dimTT.left) / 2);
        y = dimEl.top - P5._l.tt.pv - (dimTT.bottom - dimTT.top);
    } else if (4 == P5._l.tt.wh) {
        x = dimEl.right + P5._l.tt.ph;
        y = dimEl.bottom + P5._l.tt.pv;
    } else if (6 == P5._l.tt.wh) {
        x = dimEl.left - P5._l.tt.ph - (dimTT.right - dimTT.left);
        y = dimEl.bottom + P5._l.tt.pv;
    } else if (8 == P5._l.tt.wh) {
        x = dimEl.left - P5._l.tt.ph - (dimTT.right - dimTT.left);
        y = dimEl.top - P5._l.tt.pv - (dimTT.bottom - dimTT.top);
    } else { // 2 is def
        x = dimEl.right + P5._l.tt.ph;
        y = dimEl.top - P5._l.tt.pv - (dimTT.bottom - dimTT.top);
    }
    if (9 == P5._l.tt.wh) {
        x += so.left;
        y += so.top;
    }
    y += _off;
    _box.style.left = x + "px";
    _box.style.top = y + "px";
    if (9 != P5._l.tt.wh) {
        $('popup-tt-sh').setStyle({width:dimTT.width+"px", height:dimTT.height+"px", left:(x+3)+"px", top:(y+3)+"px"});
    }
    P5.hideSelectBoxes(_box);
};

P5.clearTTto = function ()
{
    if ('undefined' != typeof P5._l.tt.timeout) {
        clearTimeout (P5._l.tt.timeout);
        P5._l.tt.timeout = undefined;
    }
};

P5.hideTT = function ()
{
    P5.clearTTto();
    if (2 == P5._l.tt.state) {
        var _box = $('popup-tt');
        $('popup-tt-inner').update('<div><!-- --></div>');
        if (P5._l.tt.cls) {
            Element.removeClassName(_box, P5._l.tt.cls);
            P5._l.tt.cls = false;
        }
        P5._l.tt.showMe = false;
        _box.setStyle({top:"-9999px",left:"-9999px"});
        $('popup-tt-sh').setStyle({top:"-9999px",left:"-9999px"});
        P5.showSelectBoxes(_box);
    }
    P5._l.tt.state = 0;
};

// tw=width, wh=1,2..., ph=10, pv=10, st=0|1, cl=1|2
P5.enlargeTT = function (in_evt, in_str, in_arg)
{
    var ev = in_evt || window.event;
    var opts = in_arg || {};
    if (0 !== P5._l.tt.state) {
        P5.hideTT();
    }
    P5.clearTTto();
    P5._l.tt.str = opts.str || in_str;
    P5._l.tt.tw = opts.tw || 120; // 15 in padding on inner
    P5._l.tt.ph = opts.ph || 8;
    P5._l.tt.pv = opts.pv || 8;
    P5._l.tt.wh = opts.wh || 4; 
    P5._l.tt.st = opts.st || 0; // sticky
    P5._l.tt.cl = opts.cl || 1;
    P5._l.tt.cls = opts.cls || false;
    if (1 == P5._l.tt.st) {
        $('tt-close').show();
    } else {
        $('tt-close').hide();
    }
    var ttDiv = $('popup-tt');
    Element.removeClassName(ttDiv, 'popuptt');
    Element.removeClassName(ttDiv, 'popupttmsg');
    if (1 == P5._l.tt.cl) {
        Element.addClassName(ttDiv, 'popuptt');
    } else {
        Element.addClassName(ttDiv, 'popupttmsg');
    }
    if (P5._l.tt.cls) {
        Element.addClassName(ttDiv, P5._l.tt.cls);
    }
    $('popup-tt-inner').update(P5._l.tt.str);
    P5._l.tt.tw += 30;
    $('popup-tt').setStyle({width:P5._l.tt.tw+"px"});
    P5._l.tt.state = 1;
    if (1 == P5._l.tt.cl) {
        P5._l.tt.px = Event.pointerX(ev);
        P5._l.tt.py = Event.pointerX(ev);
        P5._l.tt.el = Event.element(ev);
    } else {
        P5._l.tt.px = 0;
        P5._l.tt.py = 0;
        P5._l.tt.el = undefined;
    }
    setTimeout(P5.enlargeTTDelay,1);
};

P5.messageTTout = function ()
{
    P5._l.tt.timeout = undefined;
    P5.hideTT();
};

P5.messageTT = function (in_str, in_tio)
{
    var tio = in_tio || 1400;
    P5.enlargeTT (null, in_str, {cl:2,wh:9,tw:160});
    P5._l.tt.timeout = setTimeout (P5.messageTTout, tio);
};

P5.rot13init = function ()
{
  var map = [];
  var s   = "abcdefghijklmnopqrstuvwxyz";
  var i = 0;
  for (i=0; i<s.length; i++) {
    map[s.charAt(i)] = s.charAt((i+13)%26);
  }
  for (i=0; i<s.length; i++) {
    map[s.charAt(i).toUpperCase()]	= s.charAt((i+13)%26).toUpperCase();
  }
  return map;
};

P5.rot13 = function (a)
{
  if (!P5.rot13map) {
    P5.rot13map=P5.rot13init();
  }
  var s = "";
  for (var i=0; i<a.length; i++)
  {
      var b = a.charAt(i);

      s	+= (b>='A' && b<='Z' || b>='a' && b<='z' ? P5.rot13map[b] : b);
  }
  return s;
};

P5.setBit = function (bit, nbr)
{
    return nbr | (1 << bit);
};

P5.clearBit = function (bit, nbr)
{
    return nbr & ~(1 << bit);
};

P5.setCookie = function ( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
};

P5.setP5Cookie = function (name, value)
{
    P5._jsCookie.set(name,value);
    P5.setCookie('js_cookie', P5._jsCookie.invoke('join','@').join('/'), 1000, '/', P5._cookieDomain);
};

P5.rmP5Cookie = function (name)
{
    P5._jsCookie.unset(name);
    P5.setCookie('js_cookie', P5._jsCookie.invoke('join','@').join('/'), 1000, '/', P5._cookieDomain);
};

P5.setSc = function (value)
{
    if (-1 == P5._jsSc.indexOf (value)) {
        P5._jsSc[P5._jsSc.size()] = value;
    }
    P5.setCookie('sc', P5._jsSc.join('/'), 1000, '/', P5._cookieDomain);
};

P5.getP5CookieNvl = function (name, alt)
{
    var val = P5._jsCookie.get(name);
    return ("undefined" == typeof val) ? alt : val;
};

P5.setP5CookieBit = function (in_c, in_b, in_v)
{
    var val = P5.getP5CookieNvl (in_c, 0);
    if (0 === in_v) {
        val = P5.clearBit (in_b, val);
    } else {
        val = P5.setBit (in_b, val);
    }
    P5.setP5Cookie (in_c, val);
};

P5.slideMessage = function (in_body, in_arguments)
{
    var args = { width: 400, title: "Information"};
    if (typeof in_arguments != "undefined") {
        if (typeof in_arguments.width != "undefined") {
            args.width = in_arguments.width;
        }
        if (typeof in_arguments.title != "undefined") {
            args.title = in_arguments.title;
        }
    }
    Modalbox.show('<div>' + in_body + '</div>', args);
};

// pjsfwd 0764579088 p498; remove? p.js wants a hash instead.
P5.addPostParam = function (sParams, sParamName, sParamValue)
{
    if (sParams.length > 0) {
        sParams += "&";
    }
    return sParams + encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
};

P5.XHRdef = function (json)
{
    P5.messageTT(json.out_str);
};

P5.XHRupdate = function (post_page, post_data, xhr_result)
{
    var postBody;
    var ps;
    
    if (Object.isString(post_data)) {
        postBody = post_data;
    } else {
        ps = post_data;
    }
    
    if (typeof xhr_result != "object" && typeof xhr_result !== "string" && typeof xhr_result !== "function") {
        P5.slideMessage("No decent destination object was received.");
        return;
    }
    var req = new Ajax.Request(post_page, {
        method: (null === post_data) ? 'get' : 'post',
        asynchronous: true,
        postBody: postBody,
        parameters: ps,
        onException: function (r,x) {
            if ("r.responseJSON has no properties" == x.message) {
                var pde = '';
                pde = P5.addPostParam(pde, "felblaffa", r.transport.responseText);
                pde = P5.addPostParam(pde, "org_url", post_page);
                if (post_data) {
                    pde = P5.addPostParam(pde, "org_post", post_data);
                }
                var freq = new Ajax.Request('/index.php?page=malformed_json_ajax', { method:'post', asynchronous: true, postBody: pde });
            } else {
                alert (x.message);
            }
        },
        onSuccess: function (r) {
            if (r.responseJSON.has_error) {
                if (r.responseJSON.js) {
                    eval(r.responseJSON.js);
                } else {
                    P5.slideMessage (r.responseJSON.errstr);
                }
            } else {
                if (xhr_result === 'errstr') {
                    P5.slideMessage(r.responseJSON.errstr);
                } else if (typeof xhr_result === "function") {
                    xhr_result(r.responseJSON);
                } else {
                    xhr_result.update(r.responseJSON.out_str);
                }
                
                if (r.responseJSON.js) {
                    eval(r.responseJSON.js);
                }
            }
        }
    });
};

P5.popupseltotxt = function (selid,destid)
{
    var sourcen = $(selid);
    if (!sourcen) { return; }
    if (window.opener) {
        var rutan = window.opener.$(destid);
        if (rutan) {
            if (0 === rutan.value.length) {
                rutan.value = sourcen.value;
            } else {
                rutan.value += ", " + sourcen.value;
            }
        }
    } else {
        alert ("window.opener is null!");
    }
};

P5.bgcolchg = function (theId, theColor)
{
    var sourcen = $(theId);
    if (sourcen) {
        sourcen.style.backgroundColor = theColor;
    }
};

// theUrl must have page=xx
P5.postIt = function (theUrl, tagid, postname)
{
    var datavar = '';
    var sourcen = $(tagid);
    if (!sourcen) { 
        alert("cannot find element " + tagid); 
        return;
    }
    datavar = P5.addPostParam(datavar, postname, sourcen.value);
    var postitReq = new Ajax.Request (theUrl, {
        method:'post', // default
        postBody: datavar,
        onSuccess: function(r) {
            if (r.responseJSON.has_error) {
                alert (json.errstr);
            }
        }
    });
};

P5.postitEnableXHR = function (json)
{
    var args = { title: "Scratchpad", afterLoad: Modalbox.resizeToContent};
    Modalbox.show('<div style="width: 450px; height: 340px; margin: 8px;">' + json.postit + '</div>', args);
};

P5.postitEnable = function ()
{
    P5.XHRupdate('/index.php?page=ajax_misc_li_bare&what=postit', null, P5.postitEnableXHR);
};

P5.hideWin = function (theid) {
    $(theid).hide();
    $(theid + 'minimizeopt').hide();
    $(theid + 'maximizeopt').show();
};

P5.showWin = function (theid) {
    $(theid).show();
    $(theid + 'maximizeopt').hide();
    $(theid + 'minimizeopt').show();
};

P5.setSitem = function (in_val, in_upper_sitem)
{
    var nbrSet = 0;
    if ("undefined" == typeof in_upper_sitem) {
        in_upper_sitem = 0;
    }
    for (var i=in_upper_sitem + 1; i<10000; i++) {
        var obj = $("SITEM" + i);
        if (!obj) { break; }
        obj.checked = in_val;
        if (obj.checked) {
            nbrSet++;
        }
    }
    P5._nbrClipsChecked = nbrSet;
    var tt = $('nbrCheckedClipId');
    if (tt) { 
        tt.update(P5._nbrClipsChecked); 
    }
};

P5.getSitemArgComma = function ()
{
    var str = '';
    var i = 1;
    for (i = 1; i<2000; i++) {
        var tt = $("SITEM" + i);
        if (!tt) {
            break;
        }
        if (tt.checked) {
            if ('' === str) {
                str = tt.value;
            } else {
                str += ',' + tt.value;
            }
        }
    }
    return str;
};

P5.askOrKillEvt = function (in_evt,in_str) 
{
    if (! confirm (in_str)) {
        return P5.cancelEvent(in_evt);
    }
};

P5.addToFfSearch = function ()
{
    if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function"))
    {
        window.sidebar.addSearchEngine(
            "https://www.pond5.com/sherlock/pond5_sherlock.src",  /* engine URL */
            "https://www.pond5.com/sherlock/pond5_sherlock.png",  /* icon URL */
            "pond5.com",                               /* engine name */
            "Stock Footage" );                            /* category name */
    }
    else { alert("Mozilla M15 or later is required to add a search engine."); }
};

P5.iconover = function (in_evt, in_over, in_idstr, in_base_url, in_width, in_height, in_icon, in_infobox, in_showtype)
{
    var ev = in_evt || window.event;
    var inner = '<div class="overcontfl">' +
                '<img class="centerit" style="display: block; width: ' + in_width + 'px; height: ' + 
                in_height + 'px;" alt="enlarged" src="' + in_base_url + '/' + in_icon + '" />' +
                '</div>';
    P5.enlargeTT(ev, inner, {"wh":10, "tw":in_width, "cls":"popuptticon"});
};

P5.iconmove = function (in_evt, in_id)
{
};

P5.iconout = function (in_id)
{
    P5.hideTT();
};

P5.grisclick = function (in_id) {
    if (1 == P5._assoc[in_id + "opengris"]) {
        P5._assoc[in_id + "opengris"] = 0;
        $(in_id).hide();
    } else {
        P5._assoc[in_id + "opengris"] = 1;
        $(in_id).show();
    }
};

P5.XHRAddToCart2 = function (json)
{
    var cc = $('cart_container');
    if (! cc) {
        return;
    }
    cc.update(json.out_cart);
    $('out_cart_title').update(json.out_cart_title);
    if ("undefined" != typeof cc.scrollTop && "undefined" != typeof cc.scrollHeight) {
        cc.scrollTop = cc.scrollHeight;
    }
    if (1 == json.is_addall) {
        var _off = 0;
        if (!document.all || window.opera) {	
    		_off = P5._top;
        }
        var dims = P5.getRegion('clip-addall-em');
        var so = document.viewport.getScrollOffsets();
        var tt = '<div class="aatcfb">' +
                 '<a href="javascript:P5.dynboxOff();" class="close">Close popup</a>' +
                 '<h2>' + json.nbr_add_to_cart + ' clips added to your Cart</h2>' +
                 '<table><tr><td><a href="/index.php?page=edit_cart"><img style="width:93px;height:26px;" alt="checkout" src="/images/button-checkout_white.jpeg" /></td>' +
                 '<td>or <a href="javascript:P5.dynboxOff();">continue shopping</a></td></tr></table>' +
                 '</div>';
        P5.dynboxOn(tt,dims.left + 50 + so.left, dims.top + 8 + _off, 1);
    } else {
        if (json.messageTT && '' !== json.messageTT) {
            P5.messageTT(json.messageTT);
        }
    }
    if ('edit_cart' == P5._p) {
        editCartAddCart (0);
    }
    if (typeof window._uacct !== "string" || !Object.isArray(json.cartItems)) {
        return;
    }
};

P5.addToCart2 = function (idCommaSeparated)
{
    var post_page = '/index.php?page=cart_ajax';
    var datavar = '';
    datavar = P5.addPostParam(datavar, "addid", idCommaSeparated);
    P5.XHRupdate(post_page, datavar, P5.XHRAddToCart2);
};

P5.rmFromCart2 = function (idCommaSeparated)
{
    var post_page = '/index.php?page=cart_ajax';
    var datavar = '';
    datavar = P5.addPostParam(datavar, "rmid", idCommaSeparated);
    P5.XHRupdate(post_page, datavar, P5.XHRAddToCart2);
};

P5.XHRChangeBin = function (json)
{
    P5.hide("popup-hovercb");
    $('bin_container').update(json.out_str);
    $('clipbinid').update(json.select_content);
    P5._cb = json.pond_clipbin;
};

P5.XHRAddToClipBin2 = function (json)
{
    P5.hide("popup-hovercb");
    var bc = $('bin_container');
    if (!bc) {
        return;
    }
    bc.update(json.out_bin);
    if ("undefined" != typeof bc.scrollTop && "undefined" != typeof bc.scrollHeight) {
        bc.scrollTop = bc.scrollHeight;
    }
    if (json.messageTT && '' !== json.messageTT) {
        P5.messageTT(json.messageTT);
    }
    if (typeof window._uacct !== "string" || !Object.isArray(json.binItems)) {
        return;
    }
    for ( var i=json.binItems.length-1; i>=0; --i ){
        urchinTracker('/ajaxclipbin?item=' + json.binItems[i] + '&user=' + json.username);
    }        
};

P5.addToClipBin2 = function (idCommaSeparated)
{
    var post_page = '/index.php?page=clipbin_ajax';
    var datavar = '';
    datavar = P5.addPostParam(datavar, "addid", idCommaSeparated);
    P5.XHRupdate(post_page, datavar, P5.XHRAddToClipBin2);
};

P5.rmFromClipBin2 = function (idCommaSeparated)
{
    var post_page = '/index.php?page=clipbin_ajax';
    var datavar = '';
    datavar = P5.addPostParam(datavar, "rmid", idCommaSeparated);
    P5.XHRupdate(post_page, datavar, P5.XHRAddToClipBin2);
};

P5.addArtistInfo = function (in_evt, in_artist)
{
    P5.enlargeTT(in_evt, 
               "<div>" +
               "<a href=\"/artist/" + in_artist + "\">Artist page<\/a><br />" + 
               "<a href=\"/index.php?page=user_info&username=" + in_artist + "\">User info<\/a><br />" +
               "<a href=\"/index.php?page=artist_log&username=" + in_artist + "\">Artist log<\/a><br />" +
               "<\/div>",
               {st:1});
    
};

P5.TimeOutLogin = function ()
{
    Modalbox.show('<iframe style="width: 440px; height: 190px;"  src="/index.php?page=login&pf_fullscreen=1&specialLogin=timeout&pf_bgc=efefef" frameborder="0"></iframe>', { width: 500, title: "Login"});
};

P5._addthis_url   = 'http://www.pond5.com';
P5._addthis_title = '';
P5._addthis_pub = 'ehsmeng';
P5.addthis_click = function(obj, str){
 var aturl  = 'http://www.addthis.com/bookmark.php';
 aturl += '?v=10';
 aturl += '&pub='+P5._addthis_pub;
 aturl += '&url='+encodeURIComponent(P5._addthis_url);
 aturl += '&title='+encodeURIComponent(P5._addthis_title);

 window.open(aturl,'addthis','scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100');

 return false;
};



P5.initSelects = function () {
    var _obj = document.getElementById("search-general");
    P5.hideSelectBoxes(_obj);
};

P5.getWindowOffset = function ()
{
	var _offset = 0;
	if (document.body && document.body.scrollTop)
	{
		_offset =  document.body.scrollTop;
	}
	if (document.documentElement && document.documentElement.scrollTop)
	{
		_offset = document.documentElement.scrollTop;
	}
	if (window.pageYOffset)
	{
		_offset =  window.pageYOffset;
	}
	
	if (_offset < 0)
	{
		_offset = 0;
	}
	
	return _offset;
 };
 
 P5.makeCOffset = function () {
	P5._top = P5.getWindowOffset();
	if (P5._active_popup)
	{
		P5.hide(P5._active_popup);
	}
    P5.dynboxOff();
};

P5.initCScroll = function () {
	P5._carth = $("cart-holder");
	if (P5._carth)
	{
		P5.makeCOffset();
		window.onscroll = function() {
			P5.makeCOffset();
		};
	}
};

P5.initCart = function () {
	P5._cart = $("cart");
	P5._cminimize = $("cminimize");
    P5._body = document.getElementsByTagName("body")[0];
	if (P5._cart && P5._cminimize)
	{
		P5._cart.fx = new Fx.Style(P5._cart,'height', {
			duration: 1000
		});

		P5._cminimize.onclick = function() {
            if (P5._cart.fx.timer)
            {
                return;
            }
        
			if (P5._active_popup)
			{
				P5.hide(P5._active_popup);
				P5.hide("clip-create");
			}
			if(this.className == "maximize")
			{
				this.className = "minimize";
				P5._cart.fx._start(45, 156);
                P5.setP5CookieBit ("sc", 0, 1);
			}
			else {
                this.className = "maximize";
				P5._cart.fx._start(156, 45);
                P5.setP5CookieBit ("sc", 0, 0);
			}
			return false;
		};
	}
};

P5.EnlargeNewBin = function ()
{
    P5.enlarge($("clip-create"),"popup-createcb",true);
};

P5.initSearch = function () {
	var _sr = $("sresults");
	if (_sr)
	{
		var _links = _sr.getElementsByTagName("a");
		for (var i = 0; i < _links.length; i++)
		{
			if (_links[i].parentNode.className == "more")
			{
				_links[i]._parent = _links[i].parentNode.parentNode.parentNode;
				_links[i].onclick = function() {
					if (this._parent.className.indexOf("open") == -1)
					{
						this._parent.className += " open";
					}
					else
					{
                        this._parent.className = this._parent.className.replace("open", "");
					}
					return false;
				};
			}
		}
	}
};

P5.initAutofill = function () {
	var _field = document.getElementById("qsearchid");
	if (_field)
	{
		_field.onfocus = function() {
			P5.enlarge3(this, "popup-search");
		};
	}
	var _fclose = document.getElementById("search-close");
	if (_fclose)
	{
		_fclose.onclick = function() {
			P5.hide("popup-search");
			return false;
		};
	}
};

P5.enlargePopup = function (_target, _obj, _offset) {
	var _box = $(_obj);
	var _off = 0;
    var fixedPos = ("undefined" == typeof _target.fixedPos) ? 0 : _target.fixedPos;
    
	if (0 === fixedPos && Element.hasClassName(_target,"CartImgPos") && (!document.all || window.opera))
	{	
		_off = P5._top;
	}

    var sr = 0;
    if (1 == fixedPos) {
        sr = {left: _target.x, right: (_target.x+1), top:_target.y, bottom: (_target.y+1), width:1, height:1 };
    } else {
        sr = P5.getRegion (_target);
        sr.top += _off;
        sr.bottom += _off;
    }
    
    var coors = [Math.round((sr.right - sr.left) / 2 + sr.left), Math.round((sr.bottom - sr.top) / 2 + sr.top)];
    var vp = P5.getViewport();
    var rx, ry;
    var so = document.viewport.getScrollOffsets();
    var tt;

    var in_width = 382;
    var in_height = 320;
    
    rx = coors[0] - (in_width / 2);
    ry = coors[1] - in_height - 0; // - 40
    var rxorg = rx;
    var ryorg = ry;
    
    if (rx < (0 + so.left)) {
        rx = so.left;
    }
    
    tt = so.left + vp.width - in_width - 10;
    if (rx > tt) {
        rx = (so.left > tt) ? so.left : tt;
    }
    
    if (ry < so.top) {
        ry = coors[1] + 20;
    }
    
	if (_box) {
		P5._active_popup = _obj;
        var bgelem = $('popup-hover-bg');
        
        if (rx == rxorg && ry == ryorg) {
            Element.removeClassName (bgelem, 'hovercbbgnp');
            Element.addClassName (bgelem, 'hovercbbg');
        } else {
            Element.removeClassName (bgelem, 'hovercbbg');
            Element.addClassName (bgelem, 'hovercbbgnp');
        }
        
        if (ry > ryorg) {
            ry = sr.bottom + 20;
        }
        
        _box.style.left = rx + "px";
        _box.style.top = ry + "px";
		P5.hideSelectBoxes(_box);
	}
};

P5.scrollHorizontal = function (value, element, slider) {
	element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
};

//P5.scrollVertical = function (value, element, slider) {
	//element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
//};

P5.initSlider = function () {
	var _box1 = $("scrollable1");
	if (_box1) {
		var slider1 = new Control.Slider('handle1', 'track1', {
			onSlide: function(v) { P5.scrollHorizontal(v, $('scrollable1'), slider1);  },
			onChange: function(v) { P5.scrollHorizontal(v, $('scrollable1'), slider1); }
		});
	}
	var _box2 = $("scrollable2");
	if (_box2) {
		var slider2 = new Control.Slider('handle2', 'track2', {
			onSlide: function(v) { P5.scrollHorizontal(v, $('scrollable2'), slider2);  },
			onChange: function(v) { P5.scrollHorizontal(v, $('scrollable2'), slider2); }
		});
	}
};

P5.makeCo = function (in_evt, xres, yres, dur, ar, fr, fir, vc, au, fmt, fs, dl)
{
    var ev = in_evt || window.event;
    var rend = (1 == fir) ? 'interlace' : ((2 == fir) ? 'progressive' : 'unknown');
    var id = P5.generateId();
    var str = 
        '<dl id="' + id + '">' +
        '<dt>Resolution:</dt><dd>' + xres + "x" + yres + '</dd>' +
        '<dt>Duration:</dt><dd>' + dur + '</dd>' +
        '<dt>Aspect ratio:</dt><dd>' + ar + '</dd>' +
        '<dt>Frame rate:</dt><dd>' + fr + '</dd>' +
        '<dt>Field rendering:</dt><dd>' + rend + '</dd>' +
        '<dt>Video codec:</dt><dd>' + vc + '</dd>' +
        '<dt>Audio:</dt><dd>' + au + '</dd>' +
        '<dt>File format:</dt><dd>' + fmt + '</dd>' +
        '<dt>File size:</dt><dd>' + fs + '</dd>' +
        '<dt>Downloads:</dt><dd>' + dl + '</dd>' +
        '</dl>';
    P5.dynboxOn(str, Event.pointerX(ev), Event.pointerY(ev), 2);
};

P5.unmakeCo = function ()
{
    P5.dynboxOff();
};

P5.makeCos = function (in_evt, du, sr, br, au, ch, pr, fmt, fs, dl)
{
    var ev = in_evt || window.event;
    var id = P5.generateId();
    var str = 
        '<dl id="' + id + '">' +
        '<dt>Duration:</dt><dd>' + du + '</dd>' +
        '<dt>Sample Rate:</dt><dd>' + sr + 'fps</dd>' +
        '<dt>Bit Rate:</dt><dd>' + br + '</dd>' +
        '<dt>Codec:</dt><dd>' + au + '</dd>' +
        '<dt>Channels:</dt><dd>' + ch + '</dd>' +
        '<dt>Precision:</dt><dd>' + pr + '</dd>' +
        '<dt>File format:</dt><dd>' + fmt + '</dd>' +
        '<dt>Downloads:</dt><dd>' + dl + ' downloads</dd>' +
        '</dl>';
    P5.dynboxOn(str, Event.pointerX(ev), Event.pointerY(ev), 2);
};

P5.unmakeCos = function ()
{
    P5.dynboxOff();
};

P5.makeMo = function (in_evt, item, xs, ys, ar, vs, px, py, name, price, argBits)
{
    var ev = in_evt || window.event;
    var filetype = (100 <= vs) ? 'mp3' : 'flv';

    if ("undefined" !== typeof P5._l.moStartFunToId)
    {
        clearTimeout (P5._l.moStartFunToId);
        P5._l.moStartFunToId = undefined;
    }

    var flashHeight = 200;
    if ('' === name)
    {
        flashHeight += 20;
    }
    
    var aId = P5.generateId ();
    
    name = name.replace (/-/g,' ');
    var str = '<div style="width:355px; height:' + flashHeight + 'px;"><div id="' + aId + '"></div></div>';
    if ('' !== name)
    {
        str += '<div class="noWrCeOvHi"><em>' + name.escapeHTML() + '</em></div>';
    }
    
    str += '<span>Format: ';
    if (100 == vs) {
        str += "Music";
    } else if (101 == vs) {
        str += "Sound effect";
    } else {
        if (4 == ar || 5 == ar) {
            str += "Multimedia";
        } else {
            if (1080 == py) {
                str += 'HD 1080';
            } else if (720 == py) {
                str += 'HD 720';
            } else if (720 == px && (480 == py || 486 == py)) {
                str += 'NTSC';
            } else if (720 == px && 576 == py) {
                str += 'PAL';
            } else {
                str += 'Multimedia';
            }
        }
        str += " (" + px + " x " + py + ")";
    }
    if (0 !== price) {
        str += ' $' + price;
    }
    str += "</span>";
    
    P5._l.moContent = str;
    
    P5._l.runMo = function () {
        $('popup-hover-inner').update(P5._l.moContent);
        P5.enlargePopup(P5._l.moobj, "popup-hovercb");
        P5._l.moStartFunToId = setTimeout (P5._l.runMo2, 2);
    };
    
    P5._l.runMo2 = function () {
        P5._l.moObject = swfobject.createSWF(P5._l.moatt, P5._l.mopar, P5._l.moid);
        P5._l.moStartFunToId = undefined;
        if (argBits & 2) {
            P5.setSc('p'+item);
        }
    };

    var padItem = item.toPaddedString(9);
    if (argBits & 1) {
        P5._l.moobj = {x: Event.pointerX(ev), y: Event.pointerY(ev), fixedPos: 1};
    } else {
        P5._l.moobj = Event.element (ev);
    }
    P5._l.moatt = {data:"/pond5FlashPlayer2.swf?apa=" + P5.somewhatRnd(), width:355, height:flashHeight}; // P5.somewhatRnd()
    P5._l.mopar = {wmode:"opaque", allowScriptAccess:"sameDomain", allowfullscreen:"true", bgcolor:"#FFFFFF",
         flashvars:"itemid=" + item + "&orgClipWidth=" + xs + "&orgClipHeight=" + ys + "&hideController=yes" + 
         "&debug=no" + "&filetype=" + filetype + "&server=" + P5._env + "&hqFLV=no"};
    P5._l.moid = aId;
    P5._l.moStartFunToId = setTimeout(P5._l.runMo, 120);
};

P5.unmakeMo = function ()
{
    if ("undefined" !== typeof P5._l.moStartFunToId)
    {
        clearTimeout (P5._l.moStartFunToId);
        P5._l.moStartFunToId = undefined;
    }

    if ("undefined" != typeof P5._l.moid) {
        var obj = $(P5._l.moid);
        if (obj) {
           obj.parentNode.removeChild(obj);
        }
        P5._l.moid = undefined;
    }
    P5.hide("popup-hovercb");
};

P5.makeMu = function (in_evt, itemid, name, artist, vers, argBits, vs)
{
    var ev = in_evt || window.event;
    var el = Event.element (ev);
    P5._mu.dims = P5.getRegion(el);
    var str='';
    P5._epPuId = 0;
    P5.dynboxOff();
    if (itemid != P5._eplId) {
        shouldPlay = 1;
    } 
    str +=  "<div style=\"width:200px;\"><h2 style=\"padding:0;\">" + name.escapeHTML() + "<\/h2>" +
            "by " + artist +
            "<table style=\"width:100%;\">";
    vers.each(function (la) {
        str += "<tr><td>" + la[0] + "<\/td><td>" + la[1] + "<\/td>" + "<\/tr>";
    });
    str += "<\/table>";
    str += "<\/div>";

    if (argBits & 1) {
        x=Event.pointerX(ev);
        y=Event.pointerY(ev);
    } else {
        x=P5._mu.dims.left + Math.round(P5._mu.dims.width / 2);
        y=P5._mu.dims.top;
    }

    P5.dynboxOn(str, x, y, 320);
    
    if (P5._eplId == itemid && 1 == P5._embTooPrev) {
        return;
    }
    
    P5._eTo = setTimeout(function () {
        P5.srSnd2(in_evt,itemid,'',vs,0);
        P5._eTo = undefined;
        P5._epPuId = itemid;
    },100);
};

P5.restoreSRIcon = function(itemid)
{
    var ic = $('ic' + itemid);
    if (!ic) { return; }
    if (ic.hasClassName('vs100')) {
        ic.src = '/images/sr-music-pc.gif';
    }
    if (ic.hasClassName('vs101')) {
        ic.src = '/images/sr-sfx-pc.gif';
    }
};

P5.setSRIcon = function(itemid)
{
    var ic = $('ic' + itemid);
    if (!ic) { return; }
    ic.src = '/images/sr-anim-pc.gif';
};

P5.unmakeMu = function(in_evt)
{
    var o = $('pscIdIapa');
    if (o) {
        if (P5._epPuId == P5._eplId && 0 !== P5._epPuId) {
            o.jsPause();
            P5.restoreSRIcon(P5._epPuId);
            P5._epPuId = 0;
        }
    }
    P5.dynboxOff();
    if ("undefined" != typeof(P5._eTo)) {
        clearTimeout(P5._eTo);
        P5._eTo = undefined;
    }
};

P5.makeBi = function (in_evt, bin, name, username, argBits)
{
    var ev = in_evt || window.event;

    if ("undefined" !== typeof P5._l.moStartFunToId)
    {
        clearTimeout (P5._l.moStartFunToId);
        P5._l.moStartFunToId = undefined;
    }
    
    var aId = P5.generateId ();
    var flashHeight = 220;
    name = name.replace (/-/g,' ');
    var str = '<div style="width:355px; height:' + flashHeight + 'px;"><div id="' + aId + '"></div></div>';
    if ('' !== name)
    {
        str += '<div class="noWrCeOvHi"><em>' + name.escapeHTML() + '</em> by ' + username + '</div>';
    }
    
    P5._l.moContent = str;
    
    P5._l.runMo = function () {
        $('popup-hover-inner').update(P5._l.moContent);
        P5.enlargePopup(P5._l.moobj, "popup-hovercb");
        P5._l.moStartFunToId = setTimeout (P5._l.runMo2, 2);
    };
    
    P5._l.runMo2 = function () {
        P5._l.moObject = swfobject.createSWF(P5._l.moatt, P5._l.mopar, P5._l.moid);
        P5._l.moStartFunToId = undefined;
    };

    if (argBits & 1) {
        P5._l.moobj = {x: Event.pointerX(ev), y: Event.pointerY(ev), fixedPos: 1};
    } else {
        P5._l.moobj = Event.element (ev);
    }
    P5._l.moatt = {data:"/as3Widget.swf?apa=" + P5.somewhatRnd(), width:355, height:flashHeight};
    P5._l.mopar = {wmode:"opaque", allowScriptAccess:"sameDomain", allowfullscreen:"true", bgcolor:"#000000",
        //flashvars:{widgetType:"carousel",what:"bin",arg:bin,nbrClips:15,showLogo:0,showShare:0,highQuality:1,debug:"no",bgcolor:"000000",carouselZoom:2,autoRotate:4}
        flashvars:"widgetType=carousel&what=bin&arg=" + bin + 
                  "&nbrClips=15&showLogo=0&showShare=0&highQuality=1&debug=no&bgcolor=000000&carouselZoom=2&autoRotate=4"
    };
    P5._l.moid = aId;
    P5._l.moStartFunToId = setTimeout(P5._l.runMo, 120);
};

P5.unmakeBi = function ()
{
    P5.unmakeMo();
};

P5.srSndSwf = function (n,itemid,id,rel,w,h,vs,em,cpl,cpa,cpp)
{
    var swf = ("emb" == em) ? "jukeMp3Player" : "pond5Mp3Player2";
    n.clipRunner = function () {
        n.playerObject = swfobject.embedSWF(
            n.att.data,
            n.id,
            n.att.width,
            n.att.height,
            "9.0.45",
            "/expressInstall.swf",
            n.flashvars,
            n.par,
            n.att2);
    };
    n.att = {data:"/swf/" + swf + ".swf?apa=" + P5.somewhatRnd(), width:w, height:h};
    n.id = id;
    n.par = {wmode:"opaque", allowscriptaccess:"always", allowfullscreen:"true", bgcolor:"#FFFFFF"};
    n.att2 = {id:id + "apa"};
    n.flashvars = {
        itemid:itemid,
        filetype:"mp3",
        server:P5._env,
        emode:em,
        rel:rel,
        cj:"no",
        callbackPlay:cpl,
        callbackPause:cpa,
        callbackProgress:cpp,
        hideController:(66 == h ? 'yes' : 'no'),
        anim:(100 == vs ? 'Music' : 'Sound'),
        pmp:(90 == h ? "yes" : "no")
    };
    setTimeout(n.clipRunner, 2);
};

P5.srSnd2Progress = function(in_perc)
{
    var r = 27 + Math.round(0.79 * in_perc);
    if(0 !== P5._eplId) {
        $('Cu' + P5._eplId).setStyle({marginLeft:r + "px"});
    }
};

P5.srSnd2 = function(in_evt,itemid,id,vs,embToo)
{
    var ev = in_evt || window.event;
    var el = Event.element(ev);
    var spa = "#f8f8f8 url(/images/spa.jpg) no-repeat left";
    var spl = "#f8f8f8 url(/images/spl.jpg) no-repeat left";
    var rel = 0;
    var ani = 0;
    P5._embTooPrev = embToo;
    P5.setSRIcon(itemid);
    if (1 == embToo) {
        if(el.hasClassName("curs")) {
            el = el.up();
        }
        rel = Event.pointerX(ev) - el.cumulativeOffset()[0]; // 27-112
        rel = Math.round(Math.min(Math.max(0, 100 * (rel-27) / 85),99)); // 0..100
        if(itemid == P5._eplId) {
            if (0 === rel) {
                if(-1 == el.getStyle('background').indexOf('spa.jpg')) { // is paused
                    el.setStyle({background:spa});
                    $('pscIdIapa').jsPlay();
                } else {
                    el.setStyle({background:spl});
                    $('pscIdIapa').jsPause();
                }
            } else {
                $('pscIdIapa').jsSeek(rel);
                if(-1 == el.getStyle('background').indexOf('spa.jpg')) { // is paused
                    el.setStyle({background:spa});
                }
            }
            return;
        }
    }
    if(false === P5._epl) {
        $("pscId").update('<div id="pscIdI"><!-- --></div>');
        var jox = {};
        P5.srSndSwf(jox,itemid,"pscIdI",rel,8,8,vs,"emb",'-','-','P5.srSnd2Progress');
        P5._epl = true;
        P5._eplId = itemid;
        el.setStyle({background:"url(/images/spa.jpg) no-repeat left"});
    } else {
        var oc = $('Cu' + P5._eplId);
        P5.restoreSRIcon(P5._eplId);
        oc.setStyle({marginLeft:"27px"});
        oc.up().setStyle({background:spl});
        P5._eplId = itemid;
        el.setStyle({background:spa});
        $('pscIdIapa').jsPlayThis(itemid,rel);
    }
};

P5.clearOnFocus = function (in_evt,str,id)
{
    var ev = in_evt || window.event;
    var e = Event.element (ev);
    if ($F(e) == str) {
        Form.Element.clear (e);
    }
};

P5.ipChgPl = function (oid)
{
    var tt = $(p5l._ipId + p5l._ipPlay);
    if (!tt) { return; }
    $(tt).removeClassName("isPlayingNot");
    $(tt).addClassName("isPlaying");
};

P5.ipChgPa = function (oid)
{
    var tt = $(p5l._ipId + p5l._ipPlay);
    if (!tt) { return; }
    $(tt).removeClassName("isPlaying");
    $(tt).addClassName("isPlayingNot");
};

P5.ipChgVer = function (in_evt,oid)
{
    var ev = in_evt || window.event;
    var e = Event.element (ev);
    var nid = P5.generateId();
    if (typeof (p5l._ipNN) != "undefined") {
        p5l._ipNN = undefined;
        return;
    }
    if (oid == p5l._ipPlay) {
        var tt = $(p5l._ipId + p5l._ipPlay);
        if (tt.hasClassName("isPlaying"))
        {
            $(tt).removeClassName("isPlaying");
            $(tt).addClassName("isPlayingNot");
            $(p5l._ipIdPl).jsPause();
        } else {
            $(tt).removeClassName("isPlayingNot");
            $(tt).addClassName("isPlaying");
            $(p5l._ipIdPl).jsPlay();
        }
        return;
    }
    try {
        $(p5l._ipId + p5l._ipPlay).removeClassName("isPlaying");
        $(p5l._ipId + p5l._ipPlay).addClassName("notPlaying");
    } catch (exception) {
    }
    p5l._ipPlay = oid;
    $(p5l._ipId + oid).removeClassName("notPlaying");
    $(p5l._ipId + oid).addClassName("isPlaying");
    p5l._ipN = {};
    $(p5l._ipId + 'id').update('<div style="height:48px;" id="' + nid + '"><!-- --></div>');
    P5.srSndSwf(p5l._ipN,oid,nid,0,458,48,100,"normal",'P5.ipChgPl','P5.ipChgPa','-');
    p5l._ipIdPl = nid + "apa";
};

P5.editBin = function ()
{
    window.location = '/index.php?page=edit_bins&binid=' + $F('clipbinid');
};

P5.editCart = function ()
{
    window.location = '/index.php?page=edit_cart';
};

P5.vauXHR = function (json)
{
    P5.messageTT(json.out_str);
};

P5.vauCb = function (in_evt)
{
    var ev = in_evt || window.event;
    var e = Event.element (ev);
    if (!e || 'checkbox' != e.type || !e.id) {
        return;
    }
    var sub = e.id.substr (0,4);
    if ('MODE' == sub || 'PROP' == sub || 'MATT' == sub || 'DISC' == sub || 'FREE' == sub || 'NUDE' == sub || 'SUPR' == sub) {
        var newState = (e.checked ? 1 : 0);
        P5.XHRupdate('/index.php?page=su_vau_ajax&what=' + sub + '&bitval=' + newState + '&itemid=' + e.value, null, P5.vauXHR);
    }
    if ('SITE' == sub) {
        var tt = $('nbrCheckedClipId');
        P5._nbrClipsChecked += (e.checked ? 1 : -1);
        if (tt) { 
            tt.update(P5._nbrClipsChecked); 
        }
    }
};

P5.shareBin = function (in_evt)
{
    var ref = '';
    var ev = in_evt || window.event;
    if (P5._u && '' !== P5._u) {
        ref = '?ref=' + P5._u;
    }
    var tt = '<div class="aatcfb">' +
             '<a href="javascript:P5.dynboxOff();" class="close">Close popup</a>' +
             '<h2>Share this Clip Bin</h2>' +
             '<div class="links">' +
              '<em><a href="javascript:P5.shareBinWidget();">Convert to Widget</em><em><a href="javascript:P5.togglePublicBin();"><span id="p5togpb">Toggle public clip bin</span></a></em>' +
             '<div style="clear: both;"><!-- --></div><table class="x1">' +
              '<tr><td>Clip Bin Address</td><td><input id="kjnvfd" onclick="$(\'kjnvfd\').focus(); $(\'kjnvfd\').select();" type="text" size="50" value="http://www.pond5.com/video-sound-effects-music/clipbin:' + $F('clipbinid') + '.html' + ref + '" /></td></tr>' +
              '<tr class="x1"><td colspan="2">Email this clipbin</td></tr>' +
              '<tr><td>Email Address:</td><td><input id="sh_bi_em_id" type="text" size="40" maxlength="80" /></td></tr>' +
              '<tr><td>Message:</td><td><textarea id="sh_bi_me_id" rows="10" cols="60"></textarea></td></tr>' +
              '<tr><td></td><td><img onclick="P5.shareBinMail();" src="/images/button-sendbin-white.jpeg" style="width:89px;height:27px" /></td></tr>' +
             '</table>' +
             '</div>' +
             '</div>';
    P5.dynboxOn(tt,Event.pointerX(ev), Event.pointerY(ev), 1);
};

P5.initClip = function () {
    var share = $('clip-share-em');
    if (share) {
        Event.observe (share, 'click', P5.shareBin);
    }
    var newbin = $('clip-create');
    if (newbin) {
        Event.observe (newbin, 'click', P5.EnlargeNewBin);
    }
};

P5.XHRshareBin = function (json)
{
    var cb = $('eb_pb_cb');
    if (cb) {
        cb.checked = (json.is_public === 1) ? true : false;
    }
    var tt = $('p5togpb');
    if (tt) {
        tt.update((1 == json.is_public) ? 'Make bin private again' : 'Make bin public');
    }
    P5.messageTT(json.errstr);
};

P5.togglePublicBin = function ()
{
    var url = '/index.php?page=edit_bins_ajax&what=toggle_public_bin&pc_objectid=' + P5._cb;
    P5.XHRupdate(url, null, P5.XHRshareBin);
};

P5.XHRshareBinMail = function (json)
{
    P5.messageTT(json.info);
};

P5.shareBinMail = function ()
{
    var datavar = '';
    datavar = P5.addPostParam(datavar, 'binid', $F('clipbinid'));
    datavar = P5.addPostParam(datavar, 'email', $F('sh_bi_em_id'));
    datavar = P5.addPostParam(datavar, 'message', $F('sh_bi_me_id'));
    P5.XHRupdate('/index.php?page=ajax_share_bin&what=mailBin', datavar, P5.XHRshareBinMail);
};

P5.XHRshareBinWidget = function (json)
{
    window.location = '/index.php?page=create_widget&clip_source=bin&artists_bins=' + $F('clipbinid');
};

P5.shareBinWidget = function ()
{
    var url = '/index.php?page=ajax_share_bin&what=isBinPublic&binid=' + $F('clipbinid');
    P5.XHRupdate(url, null, P5.XHRshareBinWidget);
};

Element.insertAfter = function(insert, element) {
	if (element.nextSibling) {
        element.parentNode.insertBefore(insert, element.nextSibling);
    } else { 
        element.parentNode.appendChild(insert);
    }
};

P5.closeMb = function ()
{
    if (P5._mb.shown) {
        P5._mb.fg.hide();
        P5._mb.bg.hide();
        P5._mb.shown = false;
    }
};

P5.showMb = function (aStr)
{
    var so = document.viewport.getScrollOffsets();
    P5._mb.shown = true;
    if (P5._mb.fg) {
        P5._mb.fg.update(aStr);
        P5._mb.bg.show();
        P5._mb.fg.show();
    } else {
        P5._mb.bg = new Element("div", { id: "p5mbmask"}); // z:9999
        P5._mb.bg.setStyle({opacity:0.4});
        $(document.body).insert({'top':P5._mb.bg});
        P5._mb.bg.observe("click", P5.closeMb);
        
        P5._mb.fg = new Element("div", { id: "p5mbbox"}); 
        Element.insert (P5._mb.fg, aStr);
        $(document.body).insert({'top':P5._mb.fg});
        Event.observe (window, 'scroll', P5.closeMb);
    }
    var dimBox = P5.getRegion(P5._mb.fg);
    var vp = P5.getViewport();
    var x = (vp.width / 2) - ((dimBox.right - dimBox.left) / 2) + so.left;
    var y = (vp.height / 2) - ((dimBox.bottom - dimBox.top) / 2) + so.top;
    P5._mb.bg.setStyle({left:so.left+"px", top:so.top+"px"});
    P5._mb.fg.setStyle({zIndex:10000, left:x+"px", top:y+"px"});
};

P5.mustLogin = function (extraInfo)
{
    P5.showMb("<a class=\"close\" href=\"javascript:P5.closeMb();\">Close popup<\/a>\n<div class=\"titel\">Sorry, you must be signed in " + extraInfo + "<\/div>\n<table class=\"deftable\" style=\"margin: 10px 20px;width: 38em;\"><tr><td valign=\"top\" style=\"width:50%;\">\n<h2>Login Now<\/h2>\n<form method=\"post\" action=\"https:\/\/www.pond5.com\/index.php?page=login\">\nUsername:<br \/>\n<input type=\"text\" name=\"username\" class=\"txt\"\/><br \/><br \/>\nPassword:<br \/>\n<input type=\"password\" name=\"password\" class=\"txt\"\/><br \/><br \/>\n<input type=\"image\" src=\"\/images\/button-login-orange.gif\" alt=\"Login\" class=\"submit\"\/>\n<\/form>\n<\/td><td valign=\"top\">\n<h2>Not a Member Yet?<\/h2>\n<ul>\n<li>find footage fast, using the best interface on the web<\/li>\n<li>instant search, preview and download with over " + P5._co + " clips online now<\/li>\n<li>prices starting at $5 for broadcast<\/li>\n<\/ul>\n<table class=\"deftable centerit\"><tr><td><a href=\"https:\/\/www.pond5.com\/index.php?page=new_user\"><img src=\"\/images\/button-createa-white.gif\" alt=\"new account\" \/><\/a><\/td><td>\n<span>or <a href=\"\/document\/about.html\">Learn More<\/a><\/span><\/td><\/tr><\/table>\n<\/td><\/table>\n");
};

P5.searchfun = function () {
    var bitmask = 0;
    var query = $("qsearchid").value.strip().replace(/\ /g,"-");
    if ("" === query) { query = "1"; }
    query = encodeURIComponent(query);
    if ($("search_format_pal")) {
        if ($("search_format_hd").checked) { bitmask += 1; }
        if ($("search_format_pal").checked) { bitmask += 2; }
        if ($("search_format_ntsc").checked) { bitmask += 4; }
        if ($("search_format_multimedia").checked) { bitmask += 8; }
        var tt = $("search_format_music");
        if (tt) { if ($("search_format_music").checked) { bitmask += 16; } }
        tt = $("search_format_soundeffect");
        if (tt) { if ($("search_format_soundeffect").checked) { bitmask += 32; } }
        //if ($("search_model_released").checked) { bitmask += 256; }
    } else {
        bitmask = 63;
    }

    bitmask = bitmask ? bitmask : 63;
    
    P5.setP5Cookie("bm",bitmask);
    var url = "/" + P5.seo(bitmask) + "/" + query + ".html";
    window.location = url;
};

P5.searchup = function (event) {
    if (!event) { event = window.event; }
    if (13 == event.keyCode || 10 == event.keyCode) {
        P5.searchfun();
    }
};

P5.clipbinsfun = function (iAddid, iBinid)
{
    P5.XHRupdate('/index.php?page=ajax_clipbin' + '&addid=' + iAddid + '&active_bin=' + iBinid, null, P5.XHRChangeBin);
};

P5.newBinSubmit = function ()
{
    var datavartmp = '';
    var binName = $F('binnamecb').strip();
    if ('' === binName) {
        P5.slideMessage("No empty names please");
        return;
    }
    datavartmp = P5.addPostParam(datavartmp,"binname",binName);
    var areq = new Ajax.Request('/index.php?page=edit_bins_ajax&what=add_bin', {
        postBody: datavartmp,
        onSuccess: function(r) {
            var json = r.responseJSON;
            if (json.has_error) {
                P5.slideMessage(json.errstr);
            } else {
                P5.clipbinsfun(0, json.new_bin);
                $('binnamecb').clear();
                P5.hide("popup-createcb");
            }
        }
    });
};

P5.cartAdd = function (iAddid)
{
    if (opener) { 
        try {
            opener.P5.addToCart2(iAddid); 
        } catch (exception) {
            P5.addToCart2(iAddid); 
        }
    } else {
        P5.addToCart2(iAddid); 
    }
};

P5.cartAddVerXHR = function (json)
{
    P5.dynboxOn(json.out_str, P5._l.evx, P5._l.evy, 1);
};

P5.cartAddVer = function (in_evt, iVm)
{
    var ev = in_evt || window.event;
    P5._l.evx = Event.pointerX(ev);
    P5._l.evy = Event.pointerY(ev);
    P5.messageTT("Loading versions");
    P5.XHRupdate('/index.php?page=ajax_cart' + '&what=gvs&vm=' + iVm, null, P5.cartAddVerXHR);
};

P5.cartRm = function (iRmid)
{
    if (opener) { 
        try {
            opener.P5.rmFromCart2(iRmid); 
        } catch (exception) {
            P5.rmFromCart2(iRmid); 
        }
    } else { 
        P5.rmFromCart2(iRmid); 
    }
};

P5.clipbinAdd = function (iAddid)
{
    if (opener) { 
        try {
            opener.P5.addToClipBin2(iAddid); 
        } catch (exception) {
            P5.addToClipBin2(iAddid); 
        }
    } else { 
        P5.addToClipBin2(iAddid); 
    }
};

P5.clipbinRm = function (iRmid)
{
    if (opener) { 
        try {
            opener.P5.rmFromClipBin2(iRmid); 
        } catch (exception) {
            P5.rmFromClipBin2(iRmid); 
        }
    } else { 
        P5.rmFromClipBin2(iRmid); 
    }
};

P5.changeBin = function ()
{
    P5.clipbinsfun(0, $F('clipbinid'));
};

P5.inHc = function(str)
{

    P5._hcs.push(P5._hc);
    P5._hc = str;
};

P5.outHc = function()
{
    try {
        P5._hc = P5._hcs.pop();
    } catch (e) {
        P5._hc = 'p5';
    }
};

P5.videoMS = function()
{
    var x = "search_format_";
    var c = $("videoMS").checked;
    $(x+'hd').checked = c;
    $(x+'pal').checked = c;
    $(x+'ntsc').checked = c;
    $(x+'multimedia').checked = c;
};

P5.audioMS = function()
{
    var x = "search_format_";
    var c = $("audioMS").checked;
    $(x+'music').checked = c;
    $(x+'soundeffect').checked = c;
};

Event.observe (window, 'load', P5.initClip);
Event.observe (window, 'load', P5.initSearch);
Event.observe (window, 'load', P5.initSlider);
Event.observe (window, 'load', P5.initAutofill);
Event.observe (window, 'load', P5.initCart);
Event.observe (window, 'load', P5.initCScroll);
Event.observe (window, 'load', P5.initSelects);
Event.observe (window, 'resize', P5.initCScroll);

Event.observe(window, 'load', function() {
    Event.observe(document, 'keydown', function(e){
        if (112==e.keyCode) {
            P5.popupwin('/index.php?page=context_help&pf_fullscreen=1&what=' + P5._hc,'Help','resizable=1,scrollbars=1,width=740,height=580');
            Event.stop(e);
        }
    });
});

Event.observe (window, 'load', function () {
	P5.initPopup({
		openEvent:'click'
	});
	P5.initPopup({
		popupHolderClass:'popup-hover'
	});
});    
    
P5.popupCloseAll = function () {
    var _popupHolderTag = $$('ul.popup-holder');
    for (var i=0; i<_popupHolderTag.length; i++) {
        var _popupTag = _popupHolderTag[i].getElementsByTagName('div');
        for (var k=0; k<_popupTag.length; k++) {
            if (_popupTag[k].parent)
            {
                _popupTag[k].parent.removeClassName('active');
            }
        }
    }
};
                
P5.initPopup = function(_popup) {
	if (!_popup.popupHolderTag) { _popup.popupHolderTag = 'ul'; }
	if (!_popup.popupTag) { _popup.popupTag = 'div'; }
	if (!_popup.popupHolderClass) { _popup.popupHolderClass = 'popup-holder'; }
	if (!_popup.popupClass) { _popup.popupClass = 'formats-popup'; }
	if (!_popup.linkOpenClass) { _popup.linkOpenClass = 'open'; }
	if (!_popup.linkCloseClass) { _popup.linkCloseClass = 'close'; }
	if (!_popup.openClass) { _popup.openClass = 'active'; }
	if (!_popup.openEvent) { _popup.openEvent = 'hover'; }
	
	var timer = [];	
	var _popupHolderTag = $$(_popup.popupHolderTag + '.' + _popup.popupHolderClass);
	if (_popupHolderTag) {
		for (var i=0; i<_popupHolderTag.length; i++) {
			if (_popupHolderTag[i].className.indexOf(_popup.popupHolderClass) != -1) {
				var _popupLink = _popupHolderTag[i].getElementsByTagName('a');
				for (var j=0; j<_popupLink.length; j++) {
					_popupLink[j].parent = _popupHolderTag[i];
					if (_popupLink[j].className.indexOf(_popup.linkOpenClass) != -1) {
						if (_popup.openEvent == 'click') {
							_popupLink[j].onclick = function(){
								if (this.parent.className.indexOf(_popup.openClass) != -1) {
									this.parent.removeClassName(_popup.openClass);
								} else {
                                    P5.popupCloseAll();
									this.parent.addClassName(_popup.openClass);
								}
								return false;
							};
						} else {
							var _popupTag = _popupHolderTag[i].getElementsByTagName(_popup.popupTag);
							for (var k=0; k<_popupTag.length; k++) {
								if (_popupTag[k].className.indexOf(_popup.popupClass) != -1) {
									_popupTag[k].parent = _popupHolderTag[i];
									_popupTag[k].onmouseover = function(){
										if (timer[j]) { clearTimeout(timer[j]); }
                                        timer[j]=0;
                                        P5.popupCloseAll();
                                        this.parent.addClassName(_popup.openClass);
									};
									_popupTag[k].onmouseout = function(){
										var _this = this;
										timer[j] = setTimeout(function(){
											_this.parent.removeClassName(_popup.openClass);
										},2);
									};	
								}
							}
                            
							_popupLink[j].onmouseover = function(){
								if (timer[j]) { clearTimeout(timer[j]); }
                                timer[j]=0;
                                P5.popupCloseAll();
                                this.parent.addClassName(_popup.openClass);
							};
							_popupLink[j].onmouseout = function(){
								var _this = this;
								timer[j] = setTimeout(function(){
									_this.parent.removeClassName(_popup.openClass);
								},2);
							};
						}
					} else if (_popupLink[j].className.indexOf(_popup.linkCloseClass) != -1) {
						_popupLink[j].onclick = function(){
							if (this.parent.className.indexOf(_popup.openClass) != -1) {
								this.parent.removeClassName(_popup.openClass);
							} else {
                                P5.popupCloseAll();
								this.parent.addClassName(_popup.openClass);
							}
							return false;
						};
					}
				}
			}
		}
	}
};

