// Semi-global variables for the new data.
var blog_currentscroll = 0; // To show previous button or not.
var blog_moredata = 1;    // if we find the end of the list?
var blog_currentoffset = 6; // we first load six items..
var blog_nextbatch = 2;     // ..and retrieve the next # items.
var blog_maxscroll = 1; // = 3 init - 2 visible.
var blog_busyscrolling = 0;
// Semi-global variables for the new data.
var mixin_currentscroll = 0; // To show previous button or not.
var mixin_moredata = 1;    // if we find the end of the list?
var mixin_currentoffset = 0; // we first load six items..
var mixin_nextbatch = 2;     // ..and retrieve the next # items.
var mixin_maxscroll = 1; // = 3 init - 2 visible.
var mixin_busyscrolling = 0;
var mixin_total_items = 0;
var mixin_current_items = 0;

// scrol animation
function getBlogScroller(amount) {
  var el = YAHOO.util.Dom.get('blog_list_container');
  var myScroll = new YAHOO.util.Scroll(el, { scroll: { by: [amount, 0] } },0.8,YAHOO.util.Easing.easeBoth);
  myScroll.onComplete.subscribe(function(){blog_busyscrolling = 0})
  // we could measure clicks in the more/lessBlog functions, then keep
  // those in a counter, and extend the onComplete, to redo all the
  // more/lessBlog functions until all the clicks have been handled.
  return myScroll;
}



function resetBlogScroller() {
  var el = YAHOO.util.Dom.get('blog_list_container');
  var myScroll = new YAHOO.util.Scroll(el, { scroll: { to: [0, 0] } },0,YAHOO.util.Easing.easeBoth);
  // we could measure clicks in the more/lessBlog functions, then keep
  // those in a counter, and extend the onComplete, to redo all the
  // more/lessBlog functions until all the clicks have been handled.
  myScroll.animate();
}



// moreBlog function to scroll the blog
function moreBlog() {
  // Can we scroll?
  if (blog_currentscroll < blog_maxscroll) {
    var scroller = getBlogScroller(385);
    if (YAHOO.env.ua.ie) {
      scroller = getBlogScroller(380);
    }
    // Should we scroll?
    if (!blog_busyscrolling) {
      blog_busyscrolling = 1;
      blog_currentscroll += 1;
      if (blog_moredata) {
        loadNewBlogItems();
      }
      scroller.animate();
    }
    YAHOO.util.Dom.get('minderblogtop').innerHTML = '<img src="img/nieuwer-boven.png"/>';
    YAHOO.util.Dom.get('minderblogbottom').innerHTML = '<img src="img/nieuwer-onder.png"/>';
  }
}

function lessBlog() {
  // Can we scroll?
  if (blog_currentscroll) {
    var scroller = getBlogScroller(-385);
    if (YAHOO.env.ua.ie) {
      scroller = getBlogScroller(-380);
    }
    // Should we scroll?
    if (!blog_busyscrolling) {
      blog_busyscrolling = 1;
      blog_currentscroll -= 1;
      scroller.animate();
//      YAHOO.util.Dom.setStyle('meerblog','display','inline');
      if (!blog_currentscroll) {
        YAHOO.util.Dom.get('minderblogtop').innerHTML = '<img src="img/mixinblog-boven.png"/>';
        YAHOO.util.Dom.get('minderblogbottom').innerHTML = '<img src="img/mixinblog-onder.png"/>';
      }
    }
  }
}

function loadNewBlogItems() {
	var newwidth = 50 + ((blog_currentoffset + blog_nextbatch + 6)/2)*380;
	YAHOO.util.Dom.setStyle('blog_list','width',newwidth);
	var url = 'http://www.mconline.nl/view/blog_items.php';
	url += '?offset=' + blog_currentoffset;
	url += '&nextbatch=' + blog_nextbatch;
	$.ajax({
		url: url,
		success: function(result) {
			if (result != '') {
				$("#blog_list").append(result);
				blog_currentoffset += blog_nextbatch;
				blog_maxscroll += 1;

				// Opera adds '?>' to blogtext items, don't know why, let's just
				// strip them again..
				// N.B. This is an _extremely_ ugly hack..
				if (YAHOO.env.ua.opera) {
					var blog_texts = YAHOO.util.Dom.getElementsByClassName('blogtext','div','blog_list');
					for (bt in blog_texts) {
						var str = blog_texts[bt].innerHTML;
						if (str.substr(0,2) == '<?')
							str = str.replace('?>','');
							str = str.replace('?&gt;','');
							blog_texts[bt].innerHTML = str;
					}
				} // End ugly opera hack..
			} else {
				blog_moredata = 0;
			}
		},
		error: function(result) {
			alert('Er is een fout opgetreden.');
		}
	});
}


// scrol animation
function getMixinScroller(amount) {
  var el = YAHOO.util.Dom.get('mixin_thumbs_container');
  if (YAHOO.env.ua.ie) {
    //amount += 2;
  }
  var myScroll = new YAHOO.util.Scroll(el, { scroll: { by: [amount, 0] } },0.8,YAHOO.util.Easing.easeBoth);
  myScroll.onComplete.subscribe(function(){mixin_busyscrolling = 0})
  // we could measure clicks in the more/lessMixin functions, then keep
  // those in a counter, and extend the onComplete, to redo all the
  // more/lessMixin functions until all the clicks have been handled.
  return myScroll;
}

// moreMixin function to scroll the mixin
function moreMixin() {
  // Can we scroll?
  if (mixin_currentscroll < mixin_maxscroll) {
    var scroller = getMixinScroller(339);
    // Should we scroll?
    if (!mixin_busyscrolling) {
      mixin_busyscrolling = 1;
      mixin_currentscroll += 1;
      mixin_maxscroll += 1; // tmp here, should check for new data..
//      if (mixin_moredata) {
//        loadNewMixinItems();
//      }
      scroller.animate();
    }
//    YAHOO.util.Dom.setStyle('mindermixin','display','inline');
  }
}

function lessMixin() {
  // Can we scroll?
  if (mixin_currentscroll) {
    var scroller = getMixinScroller(-339);
    // Should we scroll?
    if (!mixin_busyscrolling) {
      mixin_busyscrolling = 1;
      mixin_currentscroll -= 1;
      scroller.animate();
//      YAHOO.util.Dom.setStyle('meermixin','display','inline');
//      if (!mixin_currentscroll)
//        YAHOO.util.Dom.setStyle('mindermixin','display','none');
    }
  }
}

function loadNewMixinItems() {
	var newwidth = 50 + ((mixin_currentoffset + mixin_nextbatch + 6)/2)*380;
	YAHOO.util.Dom.setStyle('mixin_list','width',newwidth);
	var url = 'http://www.mconline.nl/view/mixin_items.php';
	url += '?offset=' + mixin_currentoffset;
	url += '&nextbatch=' + mixin_nextbatch;
	$.ajax({
		url: url,
		success: function(result) {
			if (result != '') {
				$("#mixin_list").append(result);
				mixin_currentoffset += mixin_nextbatch;
				mixin_maxscroll += 1;
			} else {
				mixin_moredata = 0;
			}
		},
		error: function(result) {
			alert('Er is een fout opgetreden.');
		}
	});
}


function loadMixinItem(filename) {
	loadNewRandomImages();
	var url = 'http://www.mconline.nl/view/mixin_item.php';
	url += '?filename=' + filename;
	$.ajax({
		url: url,
		success: function(result) {
			window.scrollTo(0,0);
			$("#mixin_content").html(result);
			// Special item is now loaded. Reset content to visible.
			processMixinDate();
			$("#mixin_loader").removeClass('mixin_loader_visible');
			$("#container1").show();
		},
		error: function(result) {
			alert('Er is een fout opgetreden.');
		}
	});
}


function loadNewRandomImages() {
	var url = 'http://www.mconline.nl/view/mixin_random.php?echo=true';
	if (YAHOO.env.ua.ie) {
		// Does IE actually cache this??
		var rnd = Math.random()*10000;
		url += '&rnd=' + rnd;
	}
	$.ajax({
		url: url,
		success: function(result) {
			$("#mixin_random_thumbs").html(result);
		}
	});	
}


function processMixinDate() {
  var date = YAHOO.util.Dom.get('mixindate');
  var str = date.innerHTML;
  str = str.replace('march','maart');
  str = str.split('_',3);
  str = str.join(' / ');
  try {
    var date_obj = new Date();
    date_obj.setTime(date.innerHTML);
    var date_str = date_obj.toDateString();
    if (date_str != "Invalid Date") {
      str = date_str;
    }
  }
  catch(err) {
  }

  date.innerHTML = str;
}



function initMixin() {
  // Reset semi-global variables for the new data.
  // Hide the content for now, when the first special element is loaded,
  // this will be reset to 'block'.
  YAHOO.util.Dom.setStyle('container1','display','none');
  YAHOO.util.Dom.addClass('mixin_loader','mixin_loader_visible');
  window.scrollTo(0,0);

  // Reset global vars..
  blog_currentscroll = 0; // To show previous button or not.
  blog_moredata = 1;    // if we find the end of the list?
  blog_currentoffset = 6; // we first load six items..
  blog_nextbatch = 2;     // ..and retrieve the next # items.
  blog_maxscroll = 1; // = 3 init - 2 visible.
  blog_busyscrolling = 0;
  mixin_currentscroll = 0; // To show previous button or not.
  mixin_moredata = 1;    // if we find the end of the list?
  mixin_currentoffset = 0; // we first load six items..
  mixin_nextbatch = 2;     // ..and retrieve the next # items.
  mixin_maxscroll = 1; // = 3 init - 2 visible.
  mixin_busyscrolling = 0;
  mixin_total_items = 0;
  mixin_current_items = 0;

  YAHOO.util.Event.onContentReady('blog_list_container', resetBlogScroller);
  YAHOO.util.Event.onContentReady('mixin_thumbs_container', function() {
    var maxlen = parseInt(YAHOO.util.Dom.get('mixin_thumbs_list').title);
    mixin_total_items = maxlen;
    YAHOO.util.Dom.get('mixin_thumbs_list').title = '';
    var new_length = (113*maxlen);
    if (YAHOO.env.ua.ie) {
      /* IE requires one extra pixel per item??
         if something keeps going wrong, start looking here.
         .. doh, it was some width that needed overflow hidden in ie.
         new_length += maxlen;
       */
      new_length = (113*maxlen);
    }
    YAHOO.util.Dom.setStyle('mixin_thumbs_list','width',new_length+'px');
    var first = YAHOO.util.Dom.getFirstChild('mixin_thumbs_list');
    var last = YAHOO.util.Dom.getLastChild('mixin_thumbs_list');
    YAHOO.util.Dom.setStyle(last,'padding-right','0px');
    YAHOO.util.Dom.setStyle(last,'margin-right','0px');
    first.getElementsByTagName('a')[0].onclick();
  });
}

function expandMixin() {
  // No two columns anymore...
//  var more_height = YAHOO.util.Dom.get('mixinmoreleft').offsetHeight;
//  if (YAHOO.util.Dom.get('mixinmoreright').offsetHeight > more_height)
//    more_height = YAHOO.util.Dom.get('mixinmoreright').offsetHeight;
  var more_height = YAHOO.util.Dom.get('mixinmoreboth').offsetHeight;
  YAHOO.util.Dom.get('meermixin').onclick = contractMixin;
  YAHOO.util.Dom.get('mixinexpandimage').src = '/img/mixinklapin.png';
  var animMore = new YAHOO.util.Anim('mixinmore',
    { height: {to: more_height} }, 2, YAHOO.util.Easing.easeBoth);
  animMore.animate();
}

function contractMixin() {
  window.scrollTo(0,0);
  YAHOO.util.Dom.get('meermixin').onclick = expandMixin;
  YAHOO.util.Dom.get('mixinexpandimage').src = '/img/mixinklapuit.png';
  var height_to = 0;
  // compensate some IE quircksmode (don't ask)
  if (YAHOO.env.ua.ie > 0) height_to = 1;
  var animMore = new YAHOO.util.Anim('mixinmore',
    { height: {to: height_to} }, 2, YAHOO.util.Easing.easeBoth);
  animMore.animate();
}


function loadFullMixin() {
  var loc = YAHOO.util.Dom.get('mixinfullactionlink').className;
  loadContent(loc);
}
