(function() {
    var setEventHandler = (function() {
        if (window.attachEvent) {
    	return function(obj, evt, func) {
    	    obj.attachEvent('on' + evt, func);
    	};
        } else if (window.addEventListener) {
    	return function(obj, evt, func, capture) {
    	    obj.addEventListener(evt, func, capture);
    	};
        } else {
    	return function(){};
        }
    })();
    
    setEventHandler(window, "load", function(){
	jCquard.ready(function() {
	    var card = jCquard.Card({title:"alert(\"Hello, World!\")"});
	    card.punchStringAt("alert(\"Hello, World!\")", 0);
	    document.getElementById('card-1').appendChild(card.render());
    	
	    setEventHandler(document.getElementById('gettysburg_button'), "click", function(){
		if (document.getElementById('gettysburg').getElementsByTagName('canvas').length)
		    return;
    
		var cards = [];
		var address = "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all men are created equal.";
    
		do {
		    var card = jCquard.Card({title: "Gettysburg Part " + (cards.length + 1)});
		    address = card.punchStringAt(address, 0);
		    cards.push(card);
		} while (!(address instanceof jCquard.Card));
    
		for (var i=0; i<cards.length; i++) {
		    document.getElementById('gettysburg').appendChild(cards[i].render());
		}
	    }, false);
    
	    setEventHandler(document.getElementById('hw_button'), "click", function(){
		if (document.getElementById('hw').getElementsByTagName('canvas').length)
		    return;
    
		document.getElementById('hw_wait').style.display = 'block';
		var srcImage = new Image();
    
		setEventHandler(srcImage, 'load', function() {
		    var myCard = new jCquard.Card({image: this, title: "Copy of Hello World"});
		    document.getElementById('hw_wait').style.display = '';
		    document.getElementById('hw').appendChild(myCard.render());
		}, false);
    
		srcImage.src = 'helloWorld.png';
	    }, false);
        });
    }, false);
})();
