// jQuery.noConflict();
var $jq = jQuery;

// make sure altered forms are OK
/*
$(document).ready(function() {
    // http://jsbin.com/amecu3 w/ $ turned to $jq
    var catcher = function() {
      var changed = false;
      $jq('form').each(function() {
        if ($jq(this).data('initialForm') != $jq(this).serialize()) {
          changed = true;
          $jq(this).addClass('changed');
        } else {
          $jq(this).removeClass('changed');
        }
      });
      if (changed) {
        return 'One or more forms on this page have changed. Are you sure you want to leave this page?';
      }
    };

    $jq(function() {
      $jq('form').each(function() {
        $jq(this).data('initialForm', $jq(this).serialize());
      }).submit(function(e) {
      var formEl = this;
      var changed = false;
      $jq('form').each(function() {
        if (this != formEl && $jq(this).data('initialForm') != $jq(this).serialize()) {
          changed = true;
          $jq(this).addClass('changed');
        } else {
          $jq(this).removeClass('changed');
        }
      });
      if (changed && !confirm('Another form on this page has been changed. Are you sure you want to continue with this form submission?')) {
        e.preventDefault();
      } else {
        $jq(window).unbind('beforeunload', catcher);
      }
      });
      $jq(window).bind('beforeunload', catcher);
    });
    // end http://jsbin.com/amecu3
});
*/

function copy_content (from_this, into_this) {
    var guts = $jq(from_this).html();
    $jq(into_this).html( guts );
    return false;
}

function click_to_change_cont_to_url (click_id, show_id, url, data_handler) {
    
    $jq('#' + click_id).bind(
        'click.click_to_change_cont_to_url', 
        {'click_id' : click_id, 'show_id' : show_id, 'url' : url, 'data_handler' : data_handler },
        function (event) { 
            // add hidden div to end of body
            $jq('<div style="display: none" id="' + event.data.click_id + '-data-holder"></div>').appendTo('body');
            
            // tell them we are loading
            $jq('#' + event.data.show_id).html('Loading …');
            
            // fetch URL and process:
            $jq.ajax({
                'type': 'GET',
                'url': url,
                'success': function(data) {
                    // add content to hidden div
                    $jq('#' + event.data.click_id + '-data-holder').html(event.data.data_handler ? event.data.data_handler(data) : data);
            
                    // copy content into visual location
                    copy_content('#' + event.data.click_id + '-data-holder', '#' + event.data.show_id);
            
                    // remove this one-time click
                    $jq('#' + event.data.click_id).unbind('click.click_to_change_cont_to_url');
            
                    // add new change-visible-content click
                    $jq('#' + event.data.click_id).bind( 
                        'click.click_to_change_cont_to_url', 
                        {'click_id' : event.data.click_id, 'show_id' : event.data.show_id, 'url' : event.data.url },
                        function (event) {
                            copy_content('#' + event.data.click_id + '-data-holder', '#' + event.data.show_id);                  
                            return false;
                        }
                    );
                },
                'error': function(XMLHttpRequest, textStatus, errorThrown) {
                      $jq('#' + event.data.show_id).html(textStatus);
                }
            });

            return false;
        }
    );
}

function ajax_feed_handler (req_config) {
    if (typeof req_config.post_handler == "undefined") {
        req_config.post_handler = function (xml, feed_url) {}
    }

    $jq.ajax({
        type: 'GET',
        url: req_config.get_url,
        dataType: 'xml',
        success: function(xml, textStatus, XMLHttpRequest) {
            var entries = xml.getElementsByTagName('item'); // RSS-ish
            if (entries.length == 0) {
                // Atom-ish ?
                
                var links = xml.getElementsByTagName('link');
                var c;
                var feed_url = '';
                for (c=0;c<links.length;c++) {
                    if (links[c].getAttribute('type') === 'text/html') {
                        feed_url = links[c].getAttribute('href');
                        if (links[c].getAttribute('rel') === 'alternate') {
                            break;
                        }
                    }
                }
                if (feed_url.length === 0) {
                    xml.getElementsByTagName('link')[0].getAttribute('href');
                }
                req_config.init_handler(xml, feed_url);
                
                entries = xml.getElementsByTagName('entry');
                if (entries.length > 0) {
                    // Atom-ish
                    var i=0;
                    for (i=0;i<req_config.entry_count;i++) {
                        if (typeof entries[i] == "undefined" || entries[i] === null) {
                             break;
                        }


                        // ? entries[i].getElementsByTagName(tag_name)[0].firstChild.nodeValue ?
                        var title = ( (typeof entries[i].getElementsByTagName('title')[0].text != "undefined") ?
                                  entries[i].getElementsByTagName('title')[0].text
                                  :
                                  entries[i].getElementsByTagName('title')[0].textContent);

                        var links = entries[i].getElementsByTagName('link');
                        var c;
                        var link = '';
                        for (c=0;c<links.length;c++) {
                            if (typeof links[c] != "undefined") {
                                
                            }
                            if (links[c].getAttribute('type') === 'text/html') {
                                link = links[c].getAttribute('href');
                                if (links[c].getAttribute('rel') === 'alternate') {
                                    break;
                                }
                            }
                        }
                        if (link.length === 0) {
                            link = entries[i].getElementsByTagName('link')[0].getAttribute('href');
                        }

var tag = 'summary';
if (entries[i].getElementsByTagName('content').length) {
    tag = 'content';
   }


                     var description;
                        try { description = entries[i].getElementsByTagName(tag)[0].textContent }
                        catch (err) { console.log(err) }
                        if (description == undefined) {
                             try {
                                    description = (entries[i].getElementsByTagName(tag)[0].text) ?
                                    entries[i].getElementsByTagName(tag)[0].text
                                    :
                                    entries[i].getElementsByTagName(tag)[0].textContent;
                             }
                             catch(er) { description = 'Sorry, I had some trouble reading this entry …' }
                        }
                        var date = ((entries[i].getElementsByTagName('updated')[0].text) ?
                                                entries[i].getElementsByTagName('updated')[0].text
                                                :
                                                entries[i].getElementsByTagName('updated')[0].textContent);
                        var attached_img_url = ''; // TODO
                        
                        req_config.entry_handler(title,link,date,description,attached_img_url,entries[i]);
                    }                    
                }

                req_config.post_handler(xml, feed_url);
            }
            else {
                // RSS-ish
                
// TOOD: need to be smarter like Atom:
                var feed_url = (
                      xml.getElementsByTagName('link')[0].getAttribute('href') ? xml.getElementsByTagName('link')[0].getAttribute('href')
                      : ((xml.getElementsByTagName('link')[0].text) ?
                                      xml.getElementsByTagName('link')[0].text
                                      :
                                      xml.getElementsByTagName('link')[0].textContent)
                      );
                req_config.init_handler(xml, feed_url);
                  
                var i=0;
                for (i=0;i<req_config.entry_count;i++) {
                    if (typeof entries[i] == "undefined" || entries[i] === null) {
                         break;
                    }

                    var title = ((typeof entries[i].getElementsByTagName('title')[0].text != "undefined") ?
                              entries[i].getElementsByTagName('title')[0].text
                              :
                              entries[i].getElementsByTagName('title')[0].textContent);

// TOOD: need to be smarter like Atom:
                    var link = ((entries[i].getElementsByTagName('link')[0].text) ?
                                        entries[i].getElementsByTagName('link')[0].text
                                        :
                                        entries[i].getElementsByTagName('link')[0].textContent);

                    var description = ((entries[i].getElementsByTagName('description')[0].text) ?
                                entries[i].getElementsByTagName('description')[0].text
                                :
                                entries[i].getElementsByTagName('description')[0].textContent);
                    
                    var date = ((entries[i].getElementsByTagName('pubDate')[0].text) ?
                                            entries[i].getElementsByTagName('pubDate')[0].text
                                            :
                                            entries[i].getElementsByTagName('pubDate')[0].textContent); 
                                
                    var attached_img_url = ''; // TODO
                    // var enc = entries[i].getElementsByTagName('enclosure')[0];
                    //  // for enclosure
                    //     // IE demands null or dies, the rest use defined
                    //     if(enc !== undefined && enc !== null) {
                    // // if type = image/*
                    //        attached_img_url = '<img class="feed" src="' + enc.getAttribute('url') + '" width="80px"/>';
                    //     }
                    //     else {
                    //         // summary is not well formed, can not parse into DOM 
                    //     }
                    
                    req_config.entry_handler(title,link,date,description,attached_img_url,entries[i]);
                }

                req_config.post_handler(xml, feed_url);
            }
        },
        error: req_config.error_handler
    });    
}

// Minified http://medienfreunde.com/lab/innerfade/js/jquery.innerfade.js
(function($){$.fn.innerfade=function(options){return this.each(function(){$.innerfade(this,options);});};$.innerfade=function(container,options){var settings={'animationtype':'fade','speed':'normal','type':'sequence','timeout':2000,'containerheight':'auto','runningclass':'innerfade','children':null};if(options)$.extend(settings,options);if(settings.children===null)var elements=$(container).children();else
var elements=$(container).children(settings.children);if(elements.length>1){$(container).css('position','relative').css('height',settings.containerheight).addClass(settings.runningclass);for(var i=0;i<elements.length;i++){$(elements[i]).css('z-index',String(elements.length-i)).css('position','absolute').hide();};if(settings.type=="sequence"){setTimeout(function(){$.innerfade.next(elements,settings,1,0);},settings.timeout);$(elements[0]).show();}else if(settings.type=="random"){var last=Math.floor(Math.random()*(elements.length));setTimeout(function(){do{current=Math.floor(Math.random()*(elements.length));}while(last==current);$.innerfade.next(elements,settings,current,last);},settings.timeout);$(elements[last]).show();}else if(settings.type=='random_start'){settings.type='sequence';var current=Math.floor(Math.random()*(elements.length));setTimeout(function(){$.innerfade.next(elements,settings,(current+1)%elements.length,current);},settings.timeout);$(elements[current]).show();}else{alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');}}};$.innerfade.next=function(elements,settings,current,last){if(settings.animationtype=='slide'){$(elements[last]).slideUp(settings.speed);$(elements[current]).slideDown(settings.speed);}else if(settings.animationtype=='fade'){$(elements[last]).fadeOut(settings.speed);$(elements[current]).fadeIn(settings.speed,function(){removeFilter($(this)[0]);});}else
alert('Innerfade-animationtype must either be \'slide\' or \'fade\'');if(settings.type=="sequence"){if((current+1)<elements.length){current=current+1;last=current-1;}else{current=0;last=elements.length-1;}}else if(settings.type=="random"){last=current;while(current==last)current=Math.floor(Math.random()*elements.length);}else
alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');setTimeout((function(){$.innerfade.next(elements,settings,current,last);}),settings.timeout);};})(jQuery);function removeFilter(element){if(element.style.removeAttribute){element.style.removeAttribute('filter');}}

