// define this function just to get rid of error messages
function CM8ShowAd() {}
function CM8ShowAdArticle() {}

var sizeCurrent = 0;
var sizeMin = 1;
var sizeMax = 1.8;

function getCookie(name){
	var cname = name + "=";
	var dc = document.cookie;
	if (dc.length > 0){
		begin = dc.indexOf(cname);
		if (begin != -1){
			begin += cname.length;
			end = dc.indexOf(";", begin);
			if (end == -1) end = dc.length;
			return unescape(dc.substring(begin, end));
		}
	}
	return null;
}

function setCookie(name,value,days){
	if (days){
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
		expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function articleTextResize(containerId, change) {
	// get element
	var el = document.getElementById(containerId);
	if(el == null) return;
	// get size
	if(sizeCurrent == 0)
		sizeCurrent = parseFloat(getCookie('articleTextSize'));
	if(sizeCurrent == 0 || sizeCurrent=='' || isNaN(sizeCurrent))
		sizeCurrent = 1.0;
	// change size
	sizeCurrent = sizeCurrent + change;
	if(sizeCurrent < sizeMin) sizeCurrent = sizeMin;
	if(sizeCurrent > sizeMax) sizeCurrent = sizeMax;
	// set size
	el.style.fontSize = sizeCurrent + "em";
	setCookie('articleTextSize', sizeCurrent, 10);
}

function aob_loadscript(url) {
	var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
   	script.src = url; 
    document.getElementsByTagName('head')[0].appendChild(script);
}


function aob_document_write(id) {

    var element = findElementById(id);
    function myDocWrite(id) {
      var args = myDocWrite.arguments;
      if (args.length && element !== null) {
        element.innerHTML += args[0];
      }
    }
    document.write = myDocWrite;

}


function findElementById(id) { 
    if (document.getElementById) 
        return document.getElementById(id); 
    else if (document.all) 
        return document.all[id]; 
    else if (document.layers) 
        return document.layers[id]; 
    return null;
}


String.prototype.trim = function () {
  return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};

/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
*/
 function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/-/g, "\-");
	var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
	var oElement;
	for (var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/*
	External link creation for XHTML adherance.
	From http://www.sitepoint.com/article/1041
	ARA: Not used anymore! Replaced with jquery-script in links.js
 */
function externalLinks() {
	if (!document.getElementsByTagName) {
		return;
	}
	var external = getElementsByClassName(document, "span", "external_link");
	if (external && external.length > 0) {
		for (var j = 0; j < external.length; j++) {
			var anchors = external[j].getElementsByTagName("a");
			for (var i = 0; i < anchors.length; i++) {
				anchors[i].target = "_blank";
			}
		}
	}
	return;
}
//window.onload = externalLinks;

function inputDefaultFocus(input, value) {
	if($(input).val() == value)
		$(input).val("");
}
function inputDefaultBlur(input, value) {
	if($(input).val() == "")
		$(input).val(value);
}



/**
* Functions for handling the scrolling of the blog teasers in the footer.
*/
function footerFlowChange(container, change) {
	// elements
	var flowdiv = $(container + " .contents .fw").get(0);
	var progress = $(container + " .progress");
	var indicator = $(container + " .progress .indicator");
	// fetch div to move
	if( ! flowdiv ) return;
	// fetch item size
	var size = parseInt( $( $(flowdiv).children().get(1) ).css("left") );
	var count = $(flowdiv).children().length;
	// calc current pos
	var blockwidth = size * count;
	var blockleft = $(flowdiv).css("left");
	// needed since this value seems to be auto in IE
	if(blockleft == "auto") blockleft = 0;
	// calculate current pos
	var pos =  Math.round(- parseInt( blockleft ) / size);
	// change pos
	pos += change;
	if(pos < 0 && pos - change <= 0) pos = count - Math.abs(change);
	else if(pos < 0) pos = 0;
	else if(pos > count - 1) pos = 0;
	// max pos multiple of change
	if(pos % change != 0)
		pos = pos + Math.abs(change) - (pos % change);
	var newpos = -(pos * size);
	// move there
	//alert("size " + size + " count " + count + " pos " + pos + " newpos "+newpos);
	//$(div).css("left", newpos + "px");
	//return;	
	$(flowdiv).animate( {
		left : newpos
	}, 1000);
	// progress
	progress.show();
	var pwidth = progress.width();
	var iwidth = pwidth * ( (Math.abs(change) * size) / blockwidth );
	var ileft = pwidth * (Math.abs(newpos) / blockwidth);
	indicator.width( iwidth ).animate( {
		left : ileft
	}, 1000);
	//.css( "margin-left", ileft + "px" );
}
