﻿/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, oClassNames){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object"){
        for(var i=0; i<oClassNames.length; i++){
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++){
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++){
            if(!arrRegExpClassNames[k].test(oElement.className)){
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini

// http://dean.edwards.name/weblog/2005/10/add-event/

function addEvent(element, type, handler) {
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	} else {
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
};

function handleEvent(event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};

function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};

// original from:
// http://www.boagworld.com/archives/2006/07/styled_images_with_caption.html
function addCaption(xClass) {
var allImages = getElementsByClassName(document, "img", xClass);
for ( var i=0; i < allImages.length; i++) {
var imageCaption = document.createTextNode(allImages[i].title);
var imageContainer = document.createElement("div");
var imagePara = document.createElement("span");
var imageWidth = allImages[i].getAttribute("width");
imagePara.appendChild(imageCaption);
allImages[i].parentNode.insertBefore(imageContainer, allImages[i]);
imageContainer.appendChild(allImages[i]);
var br = document.createElement("br");
imageContainer.appendChild(br);
if ( allImages[i].title != "" ) {
imageContainer.appendChild(imagePara);
}
imageContainer.className = xClass
allImages[i].className = "img"
imageContainer.style.width = imageWidth + "px";
}
}

function sendCommentHover() {
var button = document.getElementById('send-comment');
if (!button) return;
addEvent(button, "mouseover", function (e) {
this.src=this.src.replace("kommentti_1", "kommentti_2");
});
addEvent(button, "mouseout", function (e) {
this.src=this.src.replace("kommentti_2", "kommentti_1");
});
}

function setDefaultFieldValue(fieldId, fieldValue) {
if (!document.getElementById || !document.getElementById(fieldId)) return;
if (document.getElementById(fieldId).value == "") document.getElementById(fieldId).value = fieldValue;
addEvent(document.getElementById(fieldId), "focus", function(e){
if (this.value == fieldValue) this.value="";
});
addEvent(document.getElementById(fieldId), "blur", function(e){
if (this.value == "") this.value=fieldValue;
});
}

function moveads() {
    if (!document.getElementById || !document.getElementById('alku'))
        return;
    var movables = getElementsByClassName(document.getElementById('alku'), '*', 'moveablead');
    for (var i = 0; i < movables.length; i++) {
        if (movables[i].className.indexOf('moveto_topadvertisements') >= 0) {
            var topads = document.getElementById('topadvertisements');
            if (topads) {
                topads.innerHTML = movables[i].innerHTML;
                movables[i].innerHTML = '';
            }
        }
    }
}
document.write('<style type="text/css">.moveablead{display:none;}</style>');

function isemailaddress(str) {
    if (!str || str.length < 7) return false;
    if (str.indexOf('@') <= 0) return false;
    if (str.indexOf('.') <= 0) return false;
    return true;
}