// Muss global deklariert sein, um später auch Ajax-Requests abbrechen zu können
var FeedsAjax=null;
var ChartsAjax=null;

var CancelFeedsActive=0;

var SaveLastVisitGLOBAL=false;

// Global für Scroll2Top:
var Scroll2Top_Time = 500;
var Scroll2Top_Interval = 10;
var Scroll2Top_Distance;
var Scroll2Top_StepNow;
var Scroll2Top_Timer;
var Scroll2Top_BogenmassStep;
var Scroll2Top_Pixel;

function AffDIV(id) {

  var a=$$("div#"+id+" a");
  if(a)
  {
    for(i=0;i<a.length;i++)
    {
      a[i].href="http://apfelticker.de/goto.php?"+a[i].href;
      a[i].target="_blank";
      //alert(a[i].href);
    }
  }
  var img=$$("div#"+id+" img");
  if(img)
  {
    for(i=0;i<img.length;i++)
    {
      img[i].src="http://apfelticker.de/image.php?"+img[i].src;
    }
  }
  var div=$$("div#"+id+" div");
  if(div)
  {
    for(i=0;i<div.length;i++)
    {
    div[i].style.backgroundImage=div[i].style.backgroundImage.replace(/url\(/, "url(http://apfelticker.de/image.php?");
    }
  }
  return;
}
     
function ReadFeeds(SaveLastVisit, Count) {

  var period, layout, sort;
  var feeds = "";
  var i;

  SaveLastVisitGLOBAL = SaveLastVisit;

  if (!Count) Count=0;
  
  Count = Count + 1;

  //Alte Requests löschen, falls noch vorhanden...
  CancelReadFeeds();
  Element.show('ReadingFeedsSpinning');
  document.getElementById('ReadingFeedsSpinning').style.display = 'block';
	Element.hide('NachrichtenMeldungen');
	Element.hide('supportBottom');
	document.getElementById('NachrichtenMeldungen').innerHTML='';


  for (var i = 0; i < document.Einstellungen.length; ++i) 
  {
    if (document.Einstellungen.elements[i].name.substr(0, 4) == "Feed")
      {
        if (document.Einstellungen.elements[i].checked)
        {
          if (feeds != "") feeds = feeds + "-";
          feeds = feeds + document.Einstellungen.elements[i].name.substr(4);
        }
      }
  }

  for (i = 0; i < document.Einstellungen.Zeitraum.length; ++i)
    if (document.Einstellungen.Zeitraum.options[i].selected == true)
      period=document.Einstellungen.Zeitraum.options[i].value.replace(/Period:/g, "");

  subdomain=document.Einstellungen.HiddenSubdomain.value;

  for (i = 0; i < document.Einstellungen.Layout.length; ++i)
    if (document.Einstellungen.Layout[i].checked == true)
      layout=document.Einstellungen.Layout[i].value.replace(/Layout:/g, "");

  // Auf dem iPhone sollen keine Bilder angezeigt werden
  iPhone=document.Einstellungen.HiddeniPhoneStatus.value;
  if (iPhone=="iPhone" && layout=="20") layout="25"; 
  
  for (i = 0; i < document.Einstellungen.Sort.length; ++i)
    if (document.Einstellungen.Sort[i].checked == true)
      sort=document.Einstellungen.Sort[i].value.replace(/Sort:/g, "");

  document.getElementById('TextEinlesen').innerHTML="Die Beiträge werden<br />geladen und aufbereitet.";


  FeedsAjax = new Ajax.Updater(
    {success: 'NachrichtenMeldungen'}, 
   'ajaxReadFeeds.php', 
   {
     
     method: 'get', 
     evalScripts: true,
     parameters:  "subdomain=" + subdomain + '&SaveLastVisit=' + SaveLastVisit + '&layout=' + layout + '&period=' + period + '&sort=' + sort + '&feeds=' + feeds + '&random=' + Math.random(),
     onFailure: function() 
                 {
             			 Element.hide('ReadingFeedsSpinning');
             			 Element.show('NachrichtenMeldungen');
             			 document.getElementById('NachrichtenMeldungen').innerHTML='<h1 style="text-align:center;"><br />Achtung!<br /><br />Es gab ein Problem beim Auslesen der Feeds.<br /><br />Bitte komme später wieder...</h1>';
             		   return;
                 },
     onSuccess: function(obj) 
                 {
            			  Element.show('NachrichtenMeldungen');
            			  Element.show('supportBottom');
             			  Element.hide('ReadingFeedsSpinning');
             			 // if (!WebKitDetect.isMobile()) Top();
             			  if (obj.responseText.search(/ApfeltickerAjaxReadFeedsReturnOK/) == -1 ) 
             			  {
             			    Ausgabe="Sorry! Es dauert leider<br />etwas länger, da derzeit die <br />Beiträge aktualisiert werden";

             			    for (var i = 0; i < Count; i++) 
             			    {
             			      // if (SaveLastVisitGLOBAL == true) Ausgabe += " ";
                        Ausgabe += ".";
                      }
             			    document.getElementById('TextEinlesen').innerHTML=Ausgabe;
             			    if (Count < 2)
             			    {
             			      ReadFeeds(SaveLastVisitGLOBAL, Count);
             			    }
             			    else
             			    {
			             		  Element.hide('ReadingFeedsSpinning');
                			  Element.hide('supportBottom');
			             			Element.show('NachrichtenMeldungen');
			             			document.getElementById('NachrichtenMeldungen').innerHTML=obj.responseText+'<h1 style="text-align:center;"><br />Sorry!<br /><br />Im Moment ist apfelticker.de ziemlich überlastet!<br /><br />Bitte komme später wieder vorbei...</h1>';
             			      // Standard-Funktion zum Anzeigen überschreiben:
             			      FeedsAjax.updateContent=function() {}
             			    }
             			  }
             			  else
             			  {
               			  if (obj.responseText.search(/AjaxReadFeedsComplete/) == -1 ) 
               			  { 
               			    if (CancelFeedsActive==0)
               			    {
               			      alert("Leider können nicht alle Beiträge angezeigt werden, da auf dem Server momentan nicht genug Speicher zur Verfügung steht.\n\nGgf. hilft es, die zu lesenden Feeds zu reduzieren.");
               			    }
               			  }
             			  }
                 }
  });
  return;
}

function ReadCharts(Country) {

  //Alte Requests löschen, falls noch vorhanden...
  CancelReadCharts();

  $('iTunesCharts').innerHTML="<p class=\"iTunesWaiting\">iTunes-Charts<br />werden geladen...</p>";

	//$('iTunesCharts').innerHTML='';

  ChartsAjax = new Ajax.Updater(
                           'iTunesCharts', 
                           'ajaxReadCharts.php', 
                           {
                             method: 'get', 
                             parameters:  "country=" + Country,
                             onComplete: function() 
                                         {
                                         }
                           });
  return;
}


function Top()
{
  // Harte Variante:
  // window.scrollTo(0, 0);

  Scroll2Top_Distance = window.pageYOffset;
  Scroll2Top_StepNow = 0;
  Scroll2Top_Steps = Scroll2Top_Time / Scroll2Top_Interval;
  Scroll2Top_BogenmassStep = 180 / Scroll2Top_Steps;
  Scroll2Top_Pixel = 0;
  Scroll2Top();
  return;
  
}

function Expand(obj)
{
$(obj).style.overflow='visible';
$(obj).style.maxHeight='100000px';
return;
}

function CheckExpand()
{
  var a=$$(".FeedTextContent");
  if(a)
  {
    for(i=0;i<a.length;i++)
    {
      TextID=a[i].id;
      if(a[i].scrollHeight>500 && parseInt(a[i].clientHeight)<=500)
      {
        $('Expand'+TextID).style.display = "block";
      }
      else
      {
        $('Expand'+TextID).style.display = "none";
      }
    }
  }
}

function Scroll2Top()
{
  if (document.body.scrollTop!=0 ||
      document.documentElement.scrollTop!=0)
  {
    if ( Scroll2Top_Pixel == 0 || Math.floor(Scroll2Top_Pixel) == window.pageYOffset )
    {
      Scroll2Top_StepNow += 1;
      Scroll2Top_Pixel = Scroll2Top_Distance - Scroll2Top_Distance * ((1 + Math.sin((Scroll2Top_StepNow * Scroll2Top_BogenmassStep-90)/180*Math.PI))/2)
      window.scrollTo(0,Scroll2Top_Pixel);
      Scroll2Top_Timer=setTimeout('Scroll2Top()', Scroll2Top_Interval);
    }
    else
    {
      // Anwender hat selbst gescrollt...
      clearTimeout(Scroll2Top_Timer);
    }
  }
  else 
  {
    clearTimeout(Scroll2Top_Timer);
  }
  return;
}

function CancelReadFeeds() 
{
    CancelFeedsActive=1;
    try 
    { 
      FeedsAjax.transport.abort(); 
      FeedsAjax=null;
    } 
    catch(e) {}
    CancelFeedsActive=0;
}

function CancelReadCharts() 
{
    try 
    { 
      ChartsAjax.transport.abort(); 
      ChartsAjax=null;
    } 
    catch(e) {}
}

function toggleFeeds(elem,Save) 
{

  // apptronaut.de sollte erst nach einem Warnhinweis abgeschaltet werden!
  
  if (elem.name == "Feed264" )
  {
    if(!elem.checked)
    {
      alert("Über apfelticker:BLOG werden News und Mitteilungen zum Apfelticker ausgegeben.\n\nDaher kann dieser Blog nicht deaktiviert werden.");
      elem.checked=true;
      return false;
    }
  }

  if (Save) EinstellungenSpeichern();
  
  // Feeds lesen, ohne die Zeit zu speichern
  ReadFeeds(false);

  return;
}

function setLayout(Save) {

  if (Save) EinstellungenSpeichern();
  
  // Feeds lesen, ohne die Zeit zu speichern
  ReadFeeds(false);

  return;
}

function setPeriod(Save)
{

  if (Save) EinstellungenSpeichern();

  // Feeds lesen, ohne die Zeit zu speichern
  ReadFeeds(false);

  for (i = 0; i < document.Einstellungen.Zeitraum.length; ++i)
    if (document.Einstellungen.Zeitraum.options[i].selected == true)
      period=document.Einstellungen.Zeitraum.options[i].value.replace(/Period:/g, "");

  if (period=='0' && Save)
  {
     // alert("Hinweis:\n\nBei Anzeige der Beiträge \"seit letzem Besuch\" kann es vorkommen, dass Beiträge mit Zeitangaben angezeigt werden, die vor dem letzten Besuch lagen.\nDas liegt daran, dass viele Feeds bei der Generierung ihrer Zeitangaben weder Zeitzonen noch Sommer-/Winterzeit berücksichtigen.\n\nFür jeden angezeigten Feed wird jeweils der Zeitpunkt des letzten Beitrags gespeichert. So ist sichergestellt, dass auch bei falschen Zeitangaben ungelesene Beiträge angezeigt werden.");
  }


  return;
}

function setSort(Save)
{

  if (Save) EinstellungenSpeichern();

  // Feeds lesen, ohne die Zeit zu speichern
  ReadFeeds(false);

  return;
}

function EinstellungenSpeichern() {
  // -> Wird nur aufgerufen, falls in gespeicherter Subdomain!
  
  var subdomain, layout, period, sort, fontsize, itunescharts;
  var feeds = "";
  var i;
  
  subdomain=document.Einstellungen.HiddenSubdomain.value;
  
  for (var i = 0; i < document.Einstellungen.length; ++i) 
  {
    if (document.Einstellungen.elements[i].name == "Layout") 
    {
      if (document.Einstellungen.elements[i].checked)  layout = document.Einstellungen.elements[i].value.replace(/Layout:/g, "");
    }
    if (document.Einstellungen.elements[i].name == "Sort") 
    {
      if (document.Einstellungen.elements[i].checked)  sort = document.Einstellungen.elements[i].value.replace(/Sort:/g, "");
    }
    if (document.Einstellungen.elements[i].name == "RadioFontSize") 
    {
      if (document.Einstellungen.elements[i].checked)  fontsize = document.Einstellungen.elements[i].value.replace(/FontSize:/g, "");
    }
    if (document.Einstellungen.elements[i].name == "RadioiTunesCharts") 
    {
      if (document.Einstellungen.elements[i].checked)  itunescharts = document.Einstellungen.elements[i].value.replace(/iTunesCharts:/g, "");
    }
    if (document.Einstellungen.elements[i].name.substr(0, 4) == "Feed")
      {
        if (document.Einstellungen.elements[i].checked)
        {
          if (feeds != "") feeds = feeds + "-";
          feeds = feeds + document.Einstellungen.elements[i].name.substr(4);
        }
      }
  }

  for (i = 0; i < document.Einstellungen.Zeitraum.length; ++i)
    if (document.Einstellungen.Zeitraum.options[i].selected == true)
      period=document.Einstellungen.Zeitraum.options[i].value.replace(/Period:/g, "");
  
  //alert("Subdomain: " + subdomain + "\nLayout: " + layout + "\nPeriod: " + period + "\nFeeds: " + feeds);
  
  // Speichern in den Tabellen USER und USERFEEDS per AJAX

  var myAjax = new Ajax.Updater(
                           'DummyPlaceholder', 
                           'ajaxSaveUserSettings.php', 
                           {
                             method: 'get', 
                             parameters: 'subdomain=' + subdomain + '&layout='  + layout  + '&period=' + period + '&sort=' + sort + '&fontsize=' + fontsize + '&itunescharts=' + itunescharts + '&feeds=' + feeds + '&random=' + Math.random()
                           });
  return;
}

function TuncateLog() {


  var TuncateLogAjax = new Ajax.Updater(
                           'DummyPlaceholder', 
                           'ajaxTruncateLog.php', 
                           {
                             method: 'get', 
                             asynchronous: false,
                             parameters: ''
                           });
  
  
  // alert("Tabelle LOG geleert!");
  return;
}

function setStyleClass (className, styleAttr, styleValue) {
	var pos;
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
		  		if (styleAttr == 'display')
		  		{
		  		  document.styleSheets[s].rules[r].style.display = styleValue;
		  		}
		  		else if (styleAttr == 'marginRight')
		  		{
		  		  document.styleSheets[s].rules[r].style.marginRight = styleValue;
		  		} 
		  		else if (styleAttr == 'maxWidth')
		  		{
		  		  document.styleSheets[s].rules[r].style.maxWidth = styleValue;
		  		}
		  		else if (styleAttr == 'fontSize')
		  		{
		  		  document.styleSheets[s].rules[r].style.fontSize = styleValue;
		  		}
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
        {
		  		if (styleAttr == 'display')
		  		{
		  		  document.styleSheets[s].cssRules[r].style.display = styleValue;
		  		}
		  		else if (styleAttr == 'marginRight')
		  		{
		  		  document.styleSheets[s].cssRules[r].style.marginRight = styleValue;
		  		} 
		  		else if (styleAttr == 'maxWidth')
		  		{
		  		  document.styleSheets[s].cssRules[r].style.maxWidth = styleValue;
		  		}
		  		else if (styleAttr == 'fontSize')
		  		{
		  		  document.styleSheets[s].cssRules[r].style.fontSize = styleValue;
		  		}
			  }
			}
		}
	}
	
	return null;
}

function updateOrientation()
{
  // Wird vom body beim Wechsel Portrait/Landscape auf dem iPhone aufgerufen

	switch(window.orientation)
	{	
		case 0:
			//Portrait
			setStyleClass('FeedText img','maxWidth','280px');
		break;
		
		case -90:
			//Landscape (right, screen turned clockwise)
			setStyleClass('FeedText img','maxWidth','440px');
		break;
		
		case 90:
			//Landscape (left, screen turned counterclockwise)
			setStyleClass('FeedText img','maxWidth','440px');
		break;
		
		case 180:
			//Portrait (upside-down portrait)
			setStyleClass('FeedText img','maxWidth','280px');
		break;
		
	}
	//alert(displayStr);
}

function getPositionY(obj) {
  var y=0;

  do {
    y += obj.offsetTop;
  } while (obj = obj.offsetParent);

  return y;
}

function htmlentities(string) {
    string=string.replace(/\&/g,'&'+'amp;');
    string=string.replace(/</g,'&'+'lt;');
    string=string.replace(/>/g,'&'+'gt;');
//    string=string.replace(/\'/g,'&'+'apos;');
//    string=string.replace(/\"/g,'&'+'quot;');
    return string;
}

function showhtmlentities(link,div) {
  link.onclick='return false;';
  div.innerHTML="<span style='white-space:pre-wrap;color:red;'>"+htmlentities(div.innerHTML)+"</span>";
  return;
}
