/*
 * file		core.js
 * desc		Core JavaScript extensions
 * lmod		25/02/2006
 *
 */

Array.prototype.in_array = function(obj)
{ 
	return new RegExp('(^|\,)'+obj+'(\,|$)','gi').test(this);
}

// Trim function in String object
Object.extend(String.prototype, { 
    trim:   function()
            {
                return this.replace(/^\s*|\s*$/g, "");
            }
});

// Extend the Event object to include a browser independent event.keyCode version
Object.extend(Event, {
    whichKey: function(event) {
      return event.keyCode || event.which || false;
    }
});

// Extend the Element class, so it supports the toggleClassName method
Object.extend(Element, {
    toggleClassName:    function(element, className)
                        {
                            if (!(element = $(element))) return;
                            if(Element.hasClassName(element, className))
                                Element.removeClassName(element, className);
                            else
                                Element.addClassName(element, className);
                        },
// a little function to extract an id from the className property of an element
    extractId:  function(element)
                {
                    if (!(element = $(element))) return;
                    var id = parseInt(element.className.match(/id-([\d]+)/)[1]) || 0;
                    return id;
                }
});

// Extend the Behaviour class with a wrapper function to reapply behaviours
Object.extend(Behaviour, {
	applysheet:	function(number)
					{
						sheet = Behaviour.list[number];
						
						for (selector in sheet){
							list = document.getElementsBySelector(selector);
							
							if (!list){
								continue;
							}

							for (i=0;element=list[i];i++){
								sheet[selector](element);
							}
						}
					},
					
	reapply:	function()
				{
					if(typeof Behaviour != 'undefined')
					{
						// first, detach all event handlers and then reapply behaviours
						Event.unloadCache();
						Behaviour.apply();
					}
				}
});

/*
 * Simple logging function that makes use of Jow Hewitt's firefox extension
 */
 
function printfire()
{
    if (document.createEvent)
    {
        printfire.args = arguments;
        var ev = document.createEvent("Events");
        ev.initEvent("printfire", false, true);
        dispatchEvent(ev);
    }
}

// wrapper for printfire
function log(msg) { printfire(msg); }

// Dummy object to save variables in
var Cache = Class.create();

/*
 * Open up a live stream player window //editet by neterra
 */
 
function playLiveStream(id,plId)
{
	var url = "playlivestream.php?id="+parseInt(id)+"&plid="+parseInt(plId);
	var newwin = window.open(url, "playerWin", "width=352,height=334,resizable=yes");
}
