////////////////////////////////////////////////////////////////
//
// @method void wOpenURL(url)
//
// @desc Öffnet eine Seite
//
// @return void
//
////////////////////////////////////////////////////////////////

function wOpenURL(url){
  if(location.pathname.indexOf('/weblication/grid5/') != 0){
    if(url.match(/\.php$/) || url.match(/\/[^\.]+$/)){
      top.location.href = url;    
    }
    else{
      window.open(url);
    }
  }
}

////////////////////////////////////////////////////////////////
//
// @method void wOpenPopupURL(url, width, height)
//
// @desc Öffnet eine Seite in einem Popup
//
// @return void
//
////////////////////////////////////////////////////////////////

function wOpenPopupURL(url, width, height){

  var name = '';
  
  if(width == '' || width == ' '){
    width = 786;
  }
  if(height == '' || height == ' '){
    height = 677;
  }
  
  url = url.replace(/&amp;/g, '&');
  options = ',location=no, menubar=no,toolbar=no,resizable=no,scrollbars=no,status=no';
  width   = parseInt(width);
  height  = parseInt(height);

  var posLeft = (screen.width / 2)  - (width  / 2);
  var posTop  = (screen.height / 2) - (height / 2);
  window.open(url, name, 'top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);
}

////////////////////////////////////////////////////////////////
//
// @method void wSendMailNospam(data)
//
// @desc Öffnet eine E-Mail zum Versenden
//
// @return void
//
////////////////////////////////////////////////////////////////

function wSendMailNospam(data){
  location.href = 'mailto:' + data.replace('|', '@');
}

function wEmbedNavpoint(id, url, mode){

  if(typeof wEditor == 'object'){
    return false;
  }         
 
  if(mode == 'embed'){ 
    if($('#navpoint_' + id).data('hasLoaded') == '1'){             
      $('#navEmbed_' + id).show();                                    
    }
    else{        
      jQuery('#navpoint_' + id).mouseout(function(){
        $('#navEmbed_' + id).hide();
      });    
       
      url = url.indexOf('?') == -1 ? url + '?viewmode=embed' : url + '&viewmode=embed';
      url = url.replace('[URL]', location.pathname + location.search);
      $.ajax({
        type: "GET",
        url: url,
        success: function(result){
        
          result = result.replace(/\n/g, '_wNL-').replace(/\s+id="[^"]+"/gim, '').replace(/_wNL-/g, "\n");
  
          $('#navpoint_' + id).data('hasLoaded', '1');                  
          $('#navEmbed_' + id).html(result);
          
          var navpointLeft = $('#navpoint_' + id).offset().left;
          
          $('#navEmbed_' + id).show();
          
          var layerLeft = $('#navEmbed_' + id).offset().left;
          
          var blockMainRight = $('#blockMain').offset().left + $('#blockMain').width();        
          
          if(layerLeft < navpointLeft){
            $('#navEmbed_' + id).css('left', String(navpointLeft - layerLeft - 6) + 'px');
          }
          
          var layerRight = $('#navEmbed_' + id).offset().left + $('#navEmbed_' + id).width();
                       
          if(layerRight > blockMainRight){
            $('#navEmbed_' + id).css('marginLeft', String( - (layerRight - blockMainRight) - 22) + 'px');
          }          
          
          jQuery('#navEmbed_' + id).mouseover(function(){
            $('#navEmbed_' + id).show();
          });
          
          jQuery('#navEmbed_' + id).mouseout(function(){
            $('#navEmbed_' + id).hide();
          });          
        }
      });
    }  
  }
  else{ 
    if($('#navpoint_' + id).data('hasLoaded') == '1'){             
      $('#navEmbed_' + id).show();                                 
      try{$('#navEmbedIframe_' + id).height(frames['navEmbedIframe_' + id].$('#blockContent').height() + 50);}catch(e){}
      $('#navEmbed_' + id).height(frames['navEmbedIframe_' + id].$('#blockContent').height() + 60);            
    }
    else{                      
      url = url.indexOf('?') == -1 ? url + '?viewmode=blank&parentIframeId=navEmbedIframe_'+id : url + '&viewmode=blank&parentIframeId=navEmbedIframe_'+id;
      url = url.replace('[URL]', location.pathname + location.search);
      $('#navpoint_' + id).data('hasLoaded', '1');                  
      
      var iframeEmbed    = document.createElement('iframe');

      iframeEmbed.id        = 'navEmbedIframe_' + id;
      iframeEmbed.name      = 'navEmbedIframe_' + id;
      iframeEmbed.className = 'navLevel1Embed';
      iframeEmbed.frameBorder = '0';
      iframeEmbed.scrolling   = 'no';
      iframeEmbed.src       = url;
             
      var embedContainer = document.getElementById('navEmbed_' + id);                
      embedContainer.appendChild(iframeEmbed);
      
      var navpointLeft = $('#navpoint_' + id).offset().left;
      
      $('#navEmbed_' + id).show();
      
      var layerLeft = $('#navEmbed_' + id).offset().left;
      
      var blockMainRight = $('#blockMain').offset().left + $('#blockMain').width();        
                      
      if(layerLeft < navpointLeft){
        $('#navEmbed_' + id).css('left', String(navpointLeft - layerLeft - 6) + 'px');
      }
      
      var layerRight = $('#navEmbed_' + id).offset().left + $('#navEmbed_' + id).width();
                   
      if(layerRight > blockMainRight){
        //$('#navEmbed_' + id).css('left', String(parseInt($('#navEmbed_' + id).css('left')) - (layerRight - blockMainRight)) + 'px');
        $('#navEmbed_' + id).css('marginLeft', String( - (layerRight - blockMainRight) - 22) + 'px');
      }
      
      jQuery('#navpoint_' + id).mouseout(function(){
        $('#navEmbed_' + id).hide();
      });
      
      jQuery('#navEmbed_' + id).mouseover(function(){
        $('#navEmbed_' + id).show();
      });
      
      jQuery('#navEmbed_' + id).mouseout(function(){
        $('#navEmbed_' + id).hide();
      });        
    }       
  }  
}  

////////////////////////////////////////////////////////////////
//
// Anzupassende Variablen:
//
////////////////////////////////////////////////////////////////

var mailPostfix = '@inspirion.ch';

////////////////////////////////////////////////////////////////
//
// Beschreibung: Browsererkennung
//
////////////////////////////////////////////////////////////////

var ns  = (document.layers) ? 1 : 0;
var ie  = (document.all) ? 1 : 0;
var dom = (document.getElementById) ? 1 : 0;
var mac = (navigator.platform.indexOf("Mac") != -1) ? 1 : 0;
var gecko     = (navigator.userAgent.indexOf("Gecko") != -1) ? 1 : 0;
var geckoVers = parseFloat(navigator.userAgent.replace(/.*rv:(\d+\.\d+).*/, '$1'));
var ieVers    = navigator.appVersion.substring(navigator.appVersion.lastIndexOf("MSIE") + 4,navigator.appVersion.lastIndexOf("MSIE") + 8);

////////////////////////////////////////////////////////////////
//
// Beschreibung: Oeffnet ein Popup-Fenster
//
////////////////////////////////////////////////////////////////

function openPopup(url){

 if(debugMode == 1){
  alert(url);
 }

 window.open(url, "popup", optionsPopup);
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Oeffnet ein Popup-Fenster vom Typ 1
//
////////////////////////////////////////////////////////////////

function openPopup1(url){

 if(debugMode == 1){
  alert(url);
 }

 window.open(url, "popup1", optionsPopup1);
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Oeffnet ein Popup-Fenster vom Typ 2
//
////////////////////////////////////////////////////////////////

function openPopup2(url){

 if(debugMode == 1){
  alert(url);
 }

 window.open(url, "popup2", optionsPopup2);
}


////////////////////////////////////////////////////////////////
//
// Beschreibung: Zeigt die Druckansicht an
//
////////////////////////////////////////////////////////////////

function wShowPrintpreview(){  

  var url = location.href;
  var anchor = location.hash;

  url = url.replace(anchor, '');
  
  if(url.indexOf('?') >= 0){
    url += '&viewmode=print';
  }
  else{
    url += '?viewmode=print';    
  }
  
  openWindow(url, 'wPrintpreview', 'width=768,height=520,scrollbars=yes');
}

/*********************************************************************************/
//
// �ffnet ein Fenster
//
// @param string Url
//
// @param string Name des Fensters
//
// @param string Optionen
//
// @return window			
//
/*********************************************************************************/

function openWindow(url, name, options){

  var regWidth = /width=(\d+)/;
  regWidth.exec(options);
  width = RegExp.$1; 
  if(width == ''){   
    width = 640; 
  }

  var regHeight = /height=(\d+)/;
  regHeight.exec(options);
  height = RegExp.$1;       
  if(height == ''){   
    height = 480; 
  }    


  if(!name && !width && !height && !options){
    return window.open(url, name);
    return;
  }
  //Zusaetzliche Optionen angeben
  if(!options){
    options = ',resizable=no,scrollbars=no,status=no';
  }
  //Position zentriert festlegen
  
  var posLeft = (screen.width / 2)  - (width  / 2);
  var posTop  = (screen.height / 2) - (height / 2);
  //alert('top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);<<<
  return window.open(url, name, 'top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Druckt das aktuelle Dokument
//
////////////////////////////////////////////////////////////////

function printDocument(){  

  if(document.all && navigator.appVersion.substring(22,23)==4) {
    self.focus();
    var OLECMDID_PRINT = 6;
    var OLECMDEXECOPT_DONTPROMPTUSER = 2;
    var OLECMDEXECOPT_PROMPTUSER = 1;
    var WebBrowser = '<object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
    document.body.insertAdjacentHTML('beforeEnd',WebBrowser);
    WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER);
    WebBrowser1.outerHTML = '';
  }
  else{
    window.print();  
  }
}

/*********************************************************************************/
//
// @description Ruft eine URL auf
//
// @parameter   String Aufzurufende Url
//
// @parameter   Function Nach der Anfrage aufzurufende Funktion
//
// @return      void
//
/*********************************************************************************/

function getUrl(url, functionResult){

  var requestObject = new wRequestObject(url, functionResult);
}

/*********************************************************************************/
//
// @description Ruft eine URL auf
//
// @parameter   String Aufzurufende Url
//
// @parameter   Function Nach der Anfrage aufzurufende Funktion
//
// @return      void
//
/*********************************************************************************/

function wRequestObject(url, functionResult){

  if(typeof functionResult == 'function'){
    var id              = resultFunctions.length;
    //alert(id);

    this.request        = null;

    if(document.all){
      this.request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else{
      this.request = new XMLHttpRequest();
    }

    resultFunctions.push(functionResult);
    //alert('push' +  requests.length);

    requests.push(this.request);
    this.request.open('GET', url, true);

    this.request.onreadystatechange = function(){
      var requestObject = requests[id];
      if(requestObject.readyState == 4){
        if(requestObject.status == '200'){
          resultFunctions[id](requestObject.responseText);
        }
      }
    }

    this.request.send('');
  }
}

/***************************************************
* @info  : Oeffnet eine URL in einem popUp         *
* @param : url   : Zu oeffnende URL                *
*          width : Breite des Fensters             *
*          height: Hoehe des Fensters              *
* @return: -                                       *
***************************************************/

function wOpenPopupURL(url, width, height){
  var name = '';
  
  if(width == '' || width == ' '){
    width = 786;
  }
  if(height == '' || height == ' '){
    height = 677;
  }
  url = url.replace(/&amp;/g, '&');
  options = ',location=no, menubar=no,toolbar=no,resizable=no,scrollbars=no,status=no';
  width   = parseInt(width);
  height  = parseInt(height);
  //Position zentriert festlegen
  var posLeft = (screen.width / 2)  - (width  / 2);
  var posTop  = (screen.height / 2) - (height / 2);
  window.open(url, name, 'top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);
}

/***************************************************
* @info  : Oeffnet ein Bild in einem popUp         *
* @param : url   : Zu oeffnende URL                *
* @return: -                                       *
***************************************************/

function wOpenImageAdaptSize(url){

  var name = '';
  var path = '/weblication/grid/scripts/wImage.php?action=getImageSize&path='+url;
  curImageUrl = url;
  getUrl(path, wOpenImageAdaptSizeResponse);
}

function wOpenImageAdaptSizeResponse(response){
  
  var name = '';
  var size = response;
  if(response == ''){
    size = 'width="800" height="600"';
  }
  
  var regex = /(?:")(\d+?)(?:").*(?:")(\d+?)(?:")/;
  var match = size.match(regex);d 
  
  if(match){
    width   = match[1];
    height  = match[2]; 
  }
  else{
    width   = 800;
    height  = 600;
  }
  
  curImageUrl = curImageUrl.replace(/&amp;/g, '&');
  options = ',location=no, menubar=no,toolbar=no,resizable=no,scrollbars=no,status=no';
  width   = parseInt(width);
  height  = parseInt(height);
  //Position zentriert festlegen
  var posLeft = (screen.width / 2)  - (width  / 2);
  var posTop  = (screen.height / 2) - (height / 2);
  window.open(curImageUrl, name, 'top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Generiert Spam-sichere Email
//
////////////////////////////////////////////////////////////////

function wWriteMail(name){
 location.href = 'mailto:' + name + mailPostfix;
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Druckt das aktuelle Dokument
//
////////////////////////////////////////////////////////////////

function wPrintDocument(){

  if(document.all && navigator.appVersion.substring(22,23)==4) {
    self.focus();
    var OLECMDID_PRINT = 6;
    var OLECMDEXECOPT_DONTPROMPTUSER = 2;
    var OLECMDEXECOPT_PROMPTUSER = 1;
    var WebBrowser = '<object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
    document.body.insertAdjacentHTML('beforeEnd',WebBrowser);
    WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER);
    WebBrowser1.outerHTML = '';
  }
  else{
    window.print();  
  }
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Generiert Spam-sichere Email
//
////////////////////////////////////////////////////////////////

function wSendMailNospam(name){

  location.href = 'mailto:' + name + mailPostfix;
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Facebook News Teilen
//
////////////////////////////////////////////////////////////////

function wShowMaskShareOnFacebook(localScript, name, message, url){

  wHideMaskShareOnFacebook();	

  var facebookMask       = document.createElement('DIV');
  facebookMask.id        = 'wFacebookMask';
  facebookMask.className = 'wglFacebookMask';
  var facebookTextarea   = document.createElement('TEXTAREA');
  facebookTextarea.id    = 'wFacebookMessage';
	
  message = message.replace(/\s+$/, '').replace(/\s+/gm, ' ');
	
  message = message + ' ' + url;
	
  facebookTextarea.value = message;
	
  if(typeof document.documentElement.scrollTop == 'number'){
    facebookMask.style.left = String((document.body.clientWidth / 2)  - 160) + 'px';
    facebookMask.style.top  = String(320 + document.documentElement.scrollTop) + 'px';	
  }
  else{
    facebookMask.style.left = String((window.innerWidth / 2)  - 160) + 'px';
    facebookMask.style.top  = String(320 + window.scrollY) + 'px';
  }

  facebookMask.appendChild(facebookTextarea);

  facebookButtons            = document.createElement('DIV');    

  facebookButtons.innerHTML = '<div class="wglButton" onclick="wShareOnFacebook(\'' + localScript + '\', \'' + name + '\', this.parentNode.parentNode.getElementsByTagName(\'TEXTAREA\')[0].value)"><span class="wglButtonCaption">Auf Facebook veröffentlichen</span></div><div class="wglButton"><span class="wglButtonCaption" onclick="wHideMaskShareOnFacebook()">Abbrechen</span></div>';

  facebookMask.appendChild(facebookButtons);
  document.body.appendChild(facebookMask);

  return true;

}

function wHideMaskShareOnFacebook(){

  var facebookMask = document.getElementById('wFacebookMask');
  if(facebookMask){
    facebookMask.parentNode.removeChild(facebookMask);
  }
}

function wShareOnFacebook(localScript, name, message){

  wGetUrl(localScript + '?action=hasAuthToken', function (responseStr){
    if(responseStr == '1'){
      wHideMaskShareOnFacebook();
      wGetUrl(localScript + '?message=' + message, function (responseStr){
      if(responseStr == '1'){

      }
      else{
      }
      
      var url = 'http://facebook.com/' + name;
      if(/^\d+$/.test(name)){
    	url = 'http://facebook.com/profile.php?id=' + name; 
      }
      var facebookWindow = wOpenWindow(url, 'facebook', 980, 640, 'scrollbars=yes');
      facebookWindow.focus();
    });
  }
  else{
    alert('Sie haben Weblication® noch nicht erlaubt, über Facebook zu veröffentlichen. Führen Sie nun die Freigabe durch. Anschließend können Sie Meldungen über Facebook veröffentlichen.');
    var facebookWindow = wOpenWindow(localScript + '?action=requestAuthToken', 'facebook', 980, 640, 'scrollbars=yes');
    facebookWindow.focus();
  }
});  
}

function wShowMaskFacebookMessage(localScript, name, message, pic, url){
  
  wHideMaskFacebookMessage();
	
  wGetUrl('/weblication/grid5/scripts/wFilecreator.php?action=createshorturl&url=' + encodeURIComponent(url), function (responseStr){
    var shortURL          = responseStr;
    
    var facebookMask       = document.createElement('DIV');
    facebookMask.id        = 'wFacebookMask';
    facebookMask.className = 'wglFacebookMask';
    var facebookTextarea   = document.createElement('TEXTAREA');
    facebookTextarea.id    = 'wFacebookMessage';

    message = message.replace(/\s+$/, '').replace(/\s+/gm, ' ');
    facebookTextarea.value     = message;

    if(typeof document.documentElement.scrollTop == 'number'){
      facebookMask.style.left = String((document.body.clientWidth / 2)  - 160) + 'px';
      facebookMask.style.top  = String(320 + document.documentElement.scrollTop) + 'px';	
    }
    else{
      facebookMask.style.left = String((window.innerWidth / 2)  - 160) + 'px';
      facebookMask.style.top  = String(320 + window.scrollY) + 'px';
    }

    facebookDiv1 = document.createElement('DIV');
    facebookDiv1.innerHTML = '<div class="div1FB"><label>URL</label><input type="text" name="wfacebookLinkURL" id="wfacebookLinkURL" value="'+url+'"><br /></div>';

    facebookDiv2 = document.createElement('DIV');
    facebookDiv2.innerHTML = '<div class="div2FB"><label>Bild</label><input type="text" name="wfacebookPicURL" id="wfacebookPicURL" value="'+pic+'"></div>';

    facebookMask.appendChild(facebookDiv1);
    facebookMask.appendChild(facebookDiv2);

    facebookMask.appendChild(facebookTextarea);

    facebookButtons = document.createElement('DIV');
    facebookButtons.innerHTML = '<div class="wglButton" onclick="wFacebookMessage(\'' + localScript + '\', \'' + name + '\', this.parentNode.parentNode.getElementsByTagName(\'INPUT\')[1].value, this.parentNode.parentNode.getElementsByTagName(\'INPUT\')[0].value, this.parentNode.parentNode.getElementsByTagName(\'TEXTAREA\')[0].value)"><span class="wglButtonCaption">Teilen</span></div><div class="wglButton"><span class="wglButtonCaption" onclick="wHideMaskFacebookMessage()">Abbrechen</span></div>';
    facebookMask.appendChild(facebookButtons);

    document.body.appendChild(facebookMask);
  });

  return true;
}

function wHideMaskFacebookMessage(){

  var facebookMask = document.getElementById('wFacebookMask');
  if(facebookMask){
	facebookMask.parentNode.removeChild(facebookMask);
  }
}

function wFacebookMessage(localScript, name, pic, url, message){
  wHideMaskFacebookMessage();
  var facebookWindow = wOpenWindow(localScript + '?pic='+pic+'&url='+url+'&message='+message, 'facebook', 800, 640, 'scrollbars=yes');
  facebookWindow.focus();
}
