﻿//**** checks browsertype and os... returns an object
function checkBrowser(){
	this.ver = navigator.appVersion;
	this.dom = document.getElementById ? true:false;
	
	this.ie6 = (this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
	this.ie55 = (this.ver.indexOf("MSIE 5.5")>-1 && this.dom)?1:0;
	this.ie5 = (this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie4 = (document.all && !this.dom) ? 1:0;
	this.ie  = (this.ie5 || this.ie4 || this.ie55 || this.ie6 || this.ver.indexOf("MSIE ")>-1);
	this.ns6 = (this.dom && parseInt(this.ver) >= 5 && !this.ie6 && !this.ie5 && !this.ie55 ) ? 1:0;
	this.ns4 = (document.layers) ? 1:0;
	this.ns  = (this.ns4 || this.ns6);
	this.opera  = (this.ver.indexOf("Opera")>-1 || navigator.userAgent.indexOf("Opera")>-1) ? 1:0;
	this.os  = (this.ver.indexOf("Macintosh")>-1)? "mac":"pc";
	this.support = (this.dom);
	if(this.ie) this.browserApdx="ie";
	if(this.ns) this.browserApdx="ns";
	this.browserApdx+='_'+this.os;
        this.swf=false;
	if(navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) this.swf=true;
	if(this.ie && this.os=='pc'){
	  result = false;document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.1"))</SCRIPT>\n');
	  if (result) this.swf=true;
	}
	if(this.ie && this.os=='mac' && navigator.plugins["Shockwave-Flash"] && (parseInt(navigator.plugins["Shockwave-Flash"].description)>=5 || parseInt(navigator.plugins["Shockwave-Flash"].filename) >= 5))
	  this.swf=true;
}

function getElementsByAttributeValue(attrName,attrValue,tName,Parent,onlyOne){
	var elem=new Array();
	var d=Parent || self.document.documentElement;
	if(tName && tName!=''){
		var elems=d.getElementsByTagName(tName);
		for(var i=0;i<elems.length;i++){
			var av=getAttributeValue(elems.item(i),attrName);

 			if((attrValue==null && av!=null) || (av!=null && av==attrValue)){
				elem[elem.length]=elems.item(i);
				if(onlyOne) break;
			}
		}
	}
	return elem;
}

function getAttributeValue(node,attrName){
	try{
	if((is.ie55 || is.ie5) && !is.opera){
		if(attrName=="class" && is.ie55) attrName="className";
		if(node.getAttribute(attrName))	return node.getAttribute(attrName);
	}else{
		if(node.getAttributeNode(attrName)) return node.getAttributeNode(attrName).value;
	}
	}catch(e){
		alert(node+"    "+attrName +"    " + e.message);
		}
	return null;
}

function switchStyleClass(obj,value){
    if(!obj){return;}
	if (navigator.appName=="Netscape" || is.opera){
    		obj.setAttribute("class", value);
	}
	else{
		obj.setAttribute("className", value);
	}
}

function isElementChildOf(cE,pE){
	var tE=cE.parentNode;
	var found=false;
	while(tE && !found){
		if(tE==pE) found=true;
		tE=tE.parentNode;
	}
	return found;
}


AddRefHandler = function(EventName,Handler,pointer,eventObj){
//alert(eventObj[EventName]?String(eventObj[EventName]):("kein "+EventName+"-Handler"));
      if(!eventObj[EventName]){
        eventObj[EventName] = function(Ev){            
            if(is.ie) Ev=window.event;
            var res=Handler(pointer,Ev);
            return res;
        }
        return;
      }
      
      eventObj["pre" + EventName]=eventObj[EventName];
    eventObj[EventName] = function(Ev){
        if(is.ie) Ev=window.event;
        var res=Handler(pointer,Ev);
        return eventObj["pre" + EventName](Ev) || res;
    }
}
      /*
      if(eventObj[EventName]&&String(eventObj[EventName])!=""){
        oldhandler=String(eventObj[EventName]).split("{")[1].split("return")[0];
        oldfunc=eventObj[EventName];
      }
      eventObj[EventName] = function(Ev){            
        eval(oldhandler);
        if(is.ie) Ev=window.event;
        var res=Handler(pointer,Ev);
        return res;
      }*/

AddRefHandlerCtx = function(EventName,Handler,pointer,eventObj,ctx){
    //alert(eventObj[EventName]?String(eventObj[EventName]).split("{")[1].split("return")[0]:("kein "+EventName+"-Handler"));
      if(eventObj["pre" + EventName]) return ;
      if(!eventObj[EventName]){
        eventObj[EventName] = function(Ev){            
            if(is.ie) Ev=window.event;
            var res=Handler(pointer,ctx,Ev);
            return res;
        }
        return;
      }
      
      eventObj["pre" + EventName]=eventObj[EventName];
    eventObj[EventName] = function(Ev){
        if(is.ie) Ev=window.event;
        var res=Handler(pointer,ctx,Ev);
        return eventObj["pre" + EventName](Ev) || res;
    }

}
//**** Popup - Opener-function

function openWindow(src, name,x, y, width, height,x0,y0,features){
	var yOff=0,xOff=0;
	if(!is) is=new checkBrowser();
	if(!isNaN(x)) xOff=x;if(!isNaN(y)) yOff=y;
	if(x=="ScreenCentered") xOff = Math.ceil((screen.width-width)/2);
	if(y=="ScreenCentered") yOff = Math.ceil((screen.height-height)/2-20);
	if(x=="BrowserLeft"){
		if(is.ie) xOff = self.screenLeft-3; else
		   if(is.ns) xOff = self.screenX+self.outerWidth-self.innerWidth;
	}
	if(y=="BrowserTop"){
		if(is.ie) yOff = self.screenTop; else
		   if(is.ns) yOff = self.screenY+self.outerHeight-self.innerHeight-24;
	}
  xOff+=x0;yOff+=y0;if(xOff<0 )xOff=0;if(yOff<0)yOff=0;
  var stdfeatures = "scrollbars";
  if(features) stdfeatures=features; //else yOff-=20;
  var strfeatures = "left="+xOff+",top="+yOff+",width="+width+",height="+height;
  if (stdfeatures!="") strfeatures+=","+stdfeatures;
  if(popUps[name] && !popUps[name].closed) 		//already opened!
  //		if(popUps[name].location && popUps[name].location.pathname!=src)	//not the same source!
	popUps[name].close();
  self.popUps[name]=window.open(src,name,strfeatures);
  self.popUps[name].focus();
  return void(0);
}

// retrieve an Element's absolute position:
function getElemAbsPos(element){
	var l=0; var t=0;
	var ref = element;
	while(ref){
		t+=ref.offsetTop;
		l+=ref.offsetLeft;
//		dbWrite("OFFSETCALCULATION",ref.tagName,ref.name,"L:",ref.offsetLeft,"T:",ref.offsetTop,"SUM:",l,t);
		ref = ref.offsetParent;
	}
  	return [l,t];
}

function clearInputField(field,defaultValue){
	if(field && field.type=="text"){
		if(field.value==defaultValue) field.value="";
		if(!field.onblur){
			field.onblur=function(){
				if(this.value=="") this.value=defaultValue;
			}
		}
	}
}

function RequestParam(name){
 var Pl = self.location.search;
 var pars;
 var valu=null;
 name=name.toUpperCase();
 if(Pl.length>1){
   Pl=Pl.slice(1,Pl.length);
   pars=Pl.split("&");
   for(i=0; i<pars.length;i++){
     hs=new String(pars[i]);
	pe=hs.indexOf("=");
     if(pe>0){
       if(hs.slice(0,pe).toUpperCase()==name)
       	   valu=hs.slice(pe+1,hs.length);
     }else{
       if(hs.toUpperCase()==name) valu=new String();
     }
   }
 }
 return valu;
}
function setTitle(){
	titleExtention=RequestParam("cte");
	if(titleExtention!=null && titleExtention!="") document.title += "-" + unescape(titleExtention);
}
setTitle();
//**** Execute arrays of Strings (each string must be executable JS!)
function execObj(objs){
  for (var i = 0; i < objs.length; i++){
  	dbWrite('evaluation',objs[i]);
    if (typeof objs[i]=="string") eval(objs[i]);
  }
}
function writeObj(objs){
  for (var i = 0; i < objs.length; i++)
   document.write(objs[i]);
}


//cookie management
function localBuffer(name,value){
  this.name=name;
  this.value=value || null;
}
localBuffer.prototype.load=function(){
 var cok=document.cookie;
 var larr1=cok.split("; ");
 var v=null;
 for(var i=0;i<larr1.length && !v;i++){
	var eqPos=(larr1[i]).toString().indexOf('=');
	if(eqPos>0){
		var n=trim(larr1[i].substring(0,eqPos));
	
		if(n==''+this.name) v=larr1[i].substring(eqPos+1,larr1[i].length);
	}
 }

 this.value=unescape(v);
 return this.value;
}

localBuffer.prototype.save= function(v,expiration,path){ // expiration is time (duration) in seconds
	if(v) this.value=v;
	var coktxt=this.name+'='+escape(this.value)+"; ";
	if(expiration){
		var e=new Date();
		e.setTime(e.valueOf()+1000*expiration);
		coktxt+="expires="+e.toGMTString()+"; ";
	}
        if(!path)
           path="/";
        coktxt+="path=" + path + ";";
           
	document.cookie=coktxt;
}

if(typeof window.trim != "function"){
	function trim(s) {
	  while (s.substring(0,1) == ' ') {
	    s = s.substring(1,s.length);
	  }
	  while (s.substring(s.length-1,s.length) == ' ') {
	    s = s.substring(0,s.length-1);
	  }
	  return s;
	}
}
function voids() {}

function EmbedHtml5Video(videoid,container){
    if(!(navigator.userAgent.toLowerCase().indexOf("ipad") > -1 && !!document.createElement('video').canPlayType)) return false;
    var html='<video src="http://media.stage-entertainment.de/Videos/' + videoid +'.DBig.mp4" vId="'+videoid+'" autobuffer="true" onplay="SendLog(this,1);" ontimeupdate="SendLog(this);" controls="true" width="320" height="218" poster="http://media.stage-entertainment.de/Videos/'+videoid+'.b.jpg" style="background-color:black;"></video>';
    html+='<a href="http://www.stage-entertainment.de/stage-tv/stage-tv.html#cov='+videoid+'" style="display:block;position:relative;top:-4px"><img src="http://www.stage-entertainment.de/stagetv/img/html5_footer.png" border="0" width="320" height="46" /></a>';
    document.getElementById(container).parentNode.innerHTML=html;
    return true;
}
function SendLog(vobj, typ) {
    if (!typ) {
        if (vobj.currentTime == 0) return;
        var typ = Math.round(100 * vobj.currentTime / vobj.duration);
        if (typ % 10 <= 8) return;
        typ = 200 + (Math.ceil(typ / 10) * 10);
    }
    if(!vobj.session)vobj.session=GetSession();
    if (vobj.tracked && vobj.tracked["L" + typ]) return;
    PrepareLog(vobj);
    var src = "http://stagetv.stage-entertainment.de/PlayerComm.ashx?InfoType=" + typ + "&Info=" + vobj.currentTime;
    for (var key in vobj.logParams)
        src += "&" + key + "=" + vobj.logParams[key];
    src += "&VideoId=" + vobj.getAttribute("vId");
    src += "&Psession="+vobj.session; 
    LogFrame.src = src;
}
var LogFrame = null;
function PrepareLog(vid) {
    if (LogFrame && vid.prms) return;
    vid.logParams = {ClientId: "", Action: "L", Type: "10" };
    vid.tracked = {};
    if (LogFrame) return;
    LogFrame = document.createElement("IFRAME");
    LogFrame.style.position = "absolute";
    LogFrame.style.visibility = "hidden";
    document.body.appendChild(LogFrame);
}
function GetSession() {
        var result, i;
        result = '';
        var guid = new Date().getTime().toString(16).toUpperCase();
        for (var j = 0; j < 32; j++) {
            if (j == 8 || j == 12 || j == 16 || j == 20)
                result = result + '-';
            if (j < guid.length) i = guid.charAt(j);
            else i = Math.floor(Math.random() * 16).toString(16).toUpperCase();
            result = result + i;
        }
        return result;
}

