/**
 * functions for the radiobar with flash quu.fm flashplayer
 *  
 */


var oldOnUnload = window.unload;  
 
if (document.getElementById('sgQuuPlayerContainer') != null && sg) {
  sd.Dom.addEvent('window', 'unload', function(){
    alert('unload');
    document.getElementById('sgQuuPlayerContainer').removeChild(document.getElementById('sgQuuPlayer'));
    oldOnUnload();
  });

}

var sgHiddenFrame = null;
var sgFrameSettings = null;
  
  /**
   * start the radio bar
   * @param {Object} settings an object with params, required: partnercodeId
   */
    function sgRadioBarStart(settings) {      
      settings = settings || sgFrameSettings;
      var de = document.documentElement;
      var width = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
      var height = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;        
    
      try {
        //removing body elements
    	var bodyElement = document.getElementsByTagName("body")[0];
        if (bodyElement.childNodes.length > 0) {
          for (var i = bodyElement.childNodes.length - 1; i > 0; i--) {
            var currentNode = bodyElement.childNodes[i];  
            if ( typeof currentNode.id != 'undefined' ) {
              if (currentNode.id.toLowerCase() != 'sgbarcontainer'
             	  && currentNode.id.toLowerCase() != 'quuframed'
                && currentNode.id.toLowerCase() != 'quuradio'  
                 ) {
            	  bodyElement.removeChild(currentNode);
              }
            }
            else {
        	  bodyElement.removeChild(currentNode);
            }
          }
        }

        sgHiddenFrame.style.visibility = 'visible';
        sgHiddenFrame.style.display = 'block';
        sgHiddenFrame.height = height - 34;    
        
        //hides all scrollbars in ie        
        sg.Dom.setStyle(
          document.getElementsByTagName('html')[0],
          {'overflow':'hidden', 'overflow-y':'hidden', 'overflow-x':'auto'}
        );        
        
        sg.Dom.setStyle(
          document.getElementsByTagName('body')[0],
          {'margin':'0px', 'padding':'0px'}
        );
        
        //add the barwidget 
        sg.addWidget({
          type: "sgRadioBar", 
          vposition: "fixed",
          barPosition: "bottom",
          partnercodeId: settings.partnercodeId  
        });
      }
      catch(e){   
        console.error(e);
      }
    }

    /**
     * restart player + bar if they where both canceled
     */
    function sgPlayerOn() {
      if (document.location.href.indexOf('iframed=true') == -1) {
        sg.Util.setCookie('quuplayerclosed', false);
        sg.Util.deleteCookie('quuplayerclosed');
        sgRadioBarStart(sgFrameSettings);
      }
      else {
        console.log('sgbar exists');
      }
    }
    
    /**
     * prepare the iframe onload and hide until display
     */
    function sgPrepareIframe() {
      try{
        //TODO move this to sg.Util.attachUrlParam (without breaking the current use)
        var url = window.location;
        var regex = /^([^:]*:\/\/)?([^:]*:[^@]*@)?([^\/:\?]*\.[^\/:\?]*)?(:[^\/]*)?(\/[^?#]*)?(\?[^#]*)?(#.*)?$/i;
        var result = regex.exec(url);
        var url = new Object();
        url.protocol = result[1];
        url.login = result[2];
        url.host = result[3];
        url.port = result[4];
        url.path = result[5];
        url.query = result[6];
        url.fragment = result[7];
        var param = new Object(); // parameter needed so url differs from base!
        param.name = 'iframed';
        param.value = 'true';
        var frameUrl = url.protocol;
        if (url.login != null) { frameUrl += url.login; }
        if (url.host != null) { frameUrl += url.host; }
        if (url.port != null) { frameUrl += url.port; }
        if (url.path != null) { frameUrl += url.path; }
        if (url.query != null && url.query.indexOf('?') >= 0) {
        	frameUrl += url.query + '&' + param.name + '=' + param.value;
        }
        else {
        	frameUrl += '?' + param.name + '=' + param.value;
        }        	
        if (url.fragment != null) { frameUrl += url.fragment; }
        
        
        var newIframe = null;
        newIframe = document.getElementById('quuframed');                
        if (newIframe == null){          
          newIframe = document.createElement("iframe");
          var de = document.documentElement;        
          var height = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;          
          newIframe.width = '100%';  
          newIframe.src = frameUrl;
          newIframe.id = 'quuframed';
          newIframe.name = 'quuframed';
          newIframe.style.visibility = 'hidden';
          newIframe.style.display = 'none';
          newIframe.style.overflow = 'auto';
          newIframe.height = height - 34;
          newIframe.scrolling = 'auto';
          newIframe.noresize = 'noresize';        
          newIframe.marginWidth = '0px' ;
          newIframe.marginHeight = '0px';
          newIframe.frameBorder = '0';
          document.body.appendChild(newIframe);
          sgHiddenFrame = newIframe;  
        }
            
      }
      catch(e) {
        console.error(e);
      }
    }
    
    /**
     * check whether the quu cookie is set
     */
    function checkQuuCookie(){
      return sg.Util.getCookie('quuplayerclosed');
    }
    
    /**
     * hide player if #player=on is given or cookie is set
     */
    function sgDetectOpenPlayer(settings) {             
        sgFrameSettings = settings;
        
        //player=off -> prepare iframe hidden
        if (sg.Util.getCookie('quuplayerclosed')
        		  || location.hash.indexOf('player=off') > -1 ) {        
      	  if (document.getElementById('sgRadioBarButton')) {      		  
      		  sg.Util.setCookie('quuplayerclosed', 'true', 30);
      	  } 
      	  else {
      		  console.log('no cookie because there is no button to restart the bar.');
      	  }
      	  sgPrepareIframe();
        }
        else {          
          sgPrepareIframe();
          sgRadioBarStart(sgFrameSettings);
        }
    }