  //  2007-8 Marc Hansen

function statusbar(msg) { window.status = msg; }
function $(id) { return document.getElementById(id); }
function ietruebody() { return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body; }
function checkmode() {
	var mode = document.compatMode;
	if (mode == "BackCompat") { statusbar("Quirks Mode"); }
	else if (mode == "CSS1Compat") { statusbar("Strict Mode"); }
}

//----- AJAX (lite version) --------------------------------------------------

function createHTTPObject() {
	var result;
	try {
		result = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) { return false; }
	return result;
}

function doPost(url, qstr, respond, async, key)
{
	var http = createHTTPObject();
	if (http) {
		http.open("POST", url, async);
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 	
 		if (respond) { //if we're going to return text to update the page
 			http.onreadystatechange = function() { 
 				if (http.readyState==4 && http.status==200) {
               		$(key).innerHTML = http.responseText;
          		} 
 			};
		}
		http.send(qstr);
	} else { alert("browser doesn't support ajax."); }
}

//--------------------------------------------------------------------------------------------------

function getElementsByClassName(classname, node)
{
	if(!node) { node = document.getElementsByTagName("body")[0]; }
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	var j = els.length;
	for(var i=0; i<j; i++) {
		if(re.test(els[i].className)) { a.push(els[i]); }
	}
	return a;
}

function addLoadHandler(handler) {
	if(window.addEventListener) {
		window.addEventListener("load",handler,false);
	}
	else if(window.attachEvent) {
		window.attachEvent("onload",handler);
	}
	else if(window.onload) {
		var oldHandler = window.onload;
		window.onload = function piggyback() {
			oldHandler();
			handler();
		};
	}
	else {
		window.onload = handler;
	}
}

function file_name_only(filename) { 
	return typeof filename != "undefined" ? filename.substring(filename.lastIndexOf("/")+1, filename.lastIndexOf(".")) : false;
}
function file_ext_only(filename) { 
	return typeof filename != "undefined" ? filename.substring(filename.lastIndexOf(".")+1, filename.length).toLowerCase() : false;
}

function rollover_cover(which, toggle) {	
	var tmp = null;
	//find the child: IE handles childNodes differently, so we have to look for it...
	for (var i = 0, l = which.childNodes.length; i < l; i++) {
		var child = which.childNodes[i];
		if (child.className == "hidediv") { tmp = child; }
	}
	if (toggle) { tmp.style.top = "-232px"; } //offset up the height of the img
	else { tmp.style.top = "0"; }
}

function show_ironon(which) {
	$("show_ironon").style.backgroundImage = "url(images/ro_iron_ons.png)"; 
	var offset = (which * -200) + "px 0px";
	$("show_ironon").style.backgroundPosition = offset;
	$("show_ironon").style.visibility = "visible";
}
function hide_ironon() {
	$("show_ironon").style.visibility="hidden";
}

function rollover_wm_cover(which) {
	var offset = (which * -232) + "px";
	$("wm_covers").style.backgroundPosition = "0 " + offset;
}

function dyn_load_img(path) {
	var tmp = new Image();
	tmp.src = path;
}

function postload_imgs() {
	var imagenames = [];
	var imgs = [];
		
	imagenames[0] = "images/ro_iron_ons.png";
	
	for(var i=0; i< imagenames.length; i++) {
		imgs[i] = new Image();
		imgs[i].src = imagenames[i];			
	}
}		

function update_counter() {
	statusbar("update_counter...");
	doPost("counter/counter.php", "id=0", false, true, "");
	doPost("counter/showcounter.php", "id=0", true, true, "counter");
}

function postage(one,two,three,subject){ 
   window.location = 'mailto:'+one+two+three+'?subject='+subject;
}

//work around because HTML 4.1 Strict doesn't allow target=_blank in anchor tags
function modelesswin(url)
{
	var pop=null;
	pop=window.open(url,"","resizable=0,scrollbars=0");
	pop.focus();
}

//----- PAYPAL ---------------------------------------------------------------

function create_forms() {
	doPost("paypal.php", "id=0", true, true, "paypal");
}

// submit add_cart form
// sample use: cart('Ralph Snart Adventures #1', '977-0-8915100-0-1', '2.95');
function cart( item, num, price )
{
	document.add_cart.item_name.value = item;
	document.add_cart.item_number.value = num;
	document.add_cart.amount.value = price;
	
	//on0 = option name, os0 = option value
	//id of signed checkbox is num
	
	//reset values
	var signed = false;
	document.add_cart.os0.value = "No";
	
	//Note: id can not begin with number
	//id of checkbox = "signed_" + num
	try {
		signed = document.getElementById("signed_" + num).checked;
		if (signed === true) {
			document.add_cart.os0.value = "Yes";
		}
	} catch(x) { }
	document.add_cart.submit();
}

// submit view_cart form
function view() { 
	document.view_cart.submit();
}

// submit buy now form
// sample use: buy_now('Doctor Gorpon #2 web comic', 'dgwc2', '0.49');
function buy_now( item, num, price )
{	
	document.buy_now.item_name.value = item;
	document.buy_now.item_number.value = num;
	document.buy_now.amount.value = price;
	
	document.buy_now.submit();
}

//---------------------- webcomics dialogs ------------------

function showhide_dialog(which) 
{
	var str = "";
	if (which) { str = "visible"; } 
	else { str = "hidden"; }
	$("fadebkgd").style.visibility = str;
	$("dialog_container").style.visibility = str;
}

function showhide_special_offers(which) 
{
	var str = "";
	if (which) { str = "visible"; } 
	else { str = "hidden"; }
	$("fadebkgd").style.visibility = str;
	$("special_offers").style.visibility = str;
}

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	var estr = "Invalid E-mail ID";
	if (str.indexOf(at)==-1){ alert(estr); return false; }
	if (str.indexOf(at)==-1 || str.indexOf(at)===0 || str.indexOf(at)==lstr) { alert(estr); return false; }
	if (str.indexOf(dot)==-1 || str.indexOf(dot)===0 || str.indexOf(dot)==lstr) { alert(estr); return false; }
	if (str.indexOf(at,(lat+1))!=-1) { alert(estr); return false; }
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) { alert(estr); return false; }
	if (str.indexOf(dot,(lat+2))==-1) { alert(estr); return false; }
	if (str.indexOf(" ")!=-1) { alert(estr); return false; }
	return true;			
}
function ncheck(str) {
	var estr = "Please enter your full name";
	var lstr = str.length;
	if (lstr < 5) { alert(estr); return false; }
	if (str.indexOf(" ")==-1){ alert(estr); return false; }
	return true;			
}


var escapeText = (typeof(encodeURIComponent) != 'undefined') ? encodeURIComponent : function(text){ return escape(text).replace(/\+/g,'%2B'); } ;
function trigger_download() 
{
	var f = $("dlform");
	var name = f.name.value;
	var email = f.email.value;
	var itemnum = f.itemnum.value;
	
	if (name === null || name === "") { alert("Please enter your full name"); f.name.focus(); return false; }
	if (ncheck(name) === false) { f.name.focus(); return false; }

	if (email === null || email === "") { alert("Please enter your email"); f.email.focus(); return false; }
	if (echeck(email) === false) { f.email.focus(); return false; }
	//don't use ? with multiple requests
	var str = "fn=free.php" + "&n=" + name + "&e=" + email + "&in=" + itemnum;
	str = str.replace("%20", " ");
	
	//errors will come back to the dialog_contents
	doPost("http://www.marchansenstuff.com/_load.php", str, true, true, "dialog_contents");
	$("dialog_contents").innerHTML = '<div style="padding:10px;">Processing your request.<br>Please be patient...<br><br><img src="images/progress.gif" width=16 height=16 alt=""><\/div>';
}

function get_title(which)
{
	var str = "";
	switch (which) {
		case "rsa801": str = "Ralph Snart Adventures Vol. 8 #1"; break;
		case "rsa802": str = "Ralph Snart Adventures Vol. 8 #2"; break;
		case "rsa803": str = "Ralph Snart Adventures Vol. 8 #3"; break;
		case "rsa316": str = "Ralph Snart Adventures Vol. 3 #16"; break;
		case "rsa317": str = "Ralph Snart Adventures Vol. 3 #17"; break;
		case "rsa318": str = "Ralph Snart Adventures Vol. 3 #18"; break;
		case "rsa319": str = "Ralph Snart Adventures Vol. 3 #19"; break;
		case "rsa320": str = "Ralph Snart Adventures Vol. 3 #20"; break;
		case "rsa321": str = "Ralph Snart Adventures Vol. 3 #21"; break;
		case "rsa322": str = "Ralph Snart Adventures Vol. 3 #22"; break;
		case "rsa323": str = "Ralph Snart Adventures Vol. 3 #23"; break;
		case "rsa324": str = "Ralph Snart Adventures Vol. 3 #24"; break;
		case "rsa390": str = "Ralph Snart Adventures Special #1"; break;
		case "rsa391": str = "Ralph Snart Adventures Special #2"; break;
		case "dg01": str = "Doctor Gorpon #1"; break;
		case "dg02": str = "Doctor Gorpon #2"; break;
		case "dg03": str = "Doctor Gorpon #3"; break;
		default: str = "Error: no web comic selected."; break;
	}
	return str;
}

function set_focus(id) { id.focus();id.select(); }
function set_dlformfocus() { set_focus($('dlform').name); }

function special_offer() {	
	var str = '';
	
	str += '<div style="position:relative;top:0;left:0;width:462px;height:100%;background:url(images/so_banner.png) no-repeat #c4c4a8;">\n';
	
	str += '<div style="position:relative;top:58px;left:20px;width:422px;height:457px;border-bottom:1px #ffffce solid;">\n';
	str += '<div><img src="images/rsa_poster_2009.png" width=250 height=438 alt=""></div>\n';
	str += '<div style="position:absolute;top:0;left:260px;">\n';
	str += '<h3>Ralph Snart Store Poster</h3>\n';
	str += '<p>This 12" x 21" store poster was created in anticipation of the release of RSA #2 comic to direct market comic shops, which never happened.\n';
	str += 'Only 100 were printed, some distributed to stores and with only a few left for purchase. <br><br>Continuous tone on 60# bright white stock. Shipped in a mailing tube and not folded.\n';
	str += '<br><br><span class="subhead2">Supplies are limited!</span>\n';
	
	var tmp = "javascript:cart('Ralph%20Snart%20Store%20Poster','rsa_poster_01','4.95');"
	str += '<br><br><span class="subhead">$4.95 US&nbsp;&nbsp;&nbsp;<a href="' + tmp + '" title="Add to cart">add to cart</a></span>\n';
	str += '<div class="bodycopy"><input type="checkbox" id="signed_rsa_poster_01"><label for="signed_rsa_poster_01">Signed by Marc Hansen</label></div>\n';
	
	str += '</p></div>\n';
	str += '</div>';
	
	
	str += '<div style="position:relative;top:74px;left:20px;width:422px;height:250px;border-bottom:1px #ffffce solid;">\n';
	str += '<div><img src="cache/covers/rsa_tpb_1.jpg" width=137 height=211 alt=""></div>\n';
	str += '<div class="bodycopy" style="position:absolute;top:220px;left:5px;">B&amp;W, 7" x 10" 432 pgs, trade paperback, EAN: 9780974520513</div>\n';
	str += '<div style="position:absolute;top:0;left:160px;">\n';
	str += '<h3>Ralph Snart Adventures: Let\'s Get Naked</h3>\n';
	str += '<p>This massive trade paperback was published by the defunct NOW Comics in 2003 and collects issues Volume 1, #1 through Volume 3, #16. This was the unfortunate first printing,\n';
	str += 'which had some missing pages, pages out of order and lower print quality than the second printing. Another perfect example of NOW\'s incompetence, so offered here at a reduced price. Each book is signed by Marc Hansen.\n';
	str += '<br><br><span class="subhead2">SOLD OUT!</span>\n';
	
	str += '</p></div>\n';
	str += '</div>';
	str += '<div style="position:relative;top:80px;left:20px;width:100%;height:20px;"><a href="javascript:showhide_special_offers(0);">&lt;Return</a></div>\n';

	$("special_offers").style.height = "810px";
	$("special_offers").innerHTML = str;
	showhide_special_offers(1);
}

function free_webcomic(which) {	
	var title = get_title(which);
	var str = '<form action="javascript:trigger_download();" method="post" id="dlform">\n';
	str += '<table id="wcform"><tr>\n';
	str += '<td colspan=3 style="padding-bottom:10px;">\n';
	str += '<h1 style="color:#ffffce;">Free web comic download<\/h1>\n';
	str += '<h3 style="padding-top:5px;color:#c4c4a8;">' + title + '<\/h3>\n';
	str += '<p style="padding-top:5px;">Enter your name and email address below. You will be sent an email with a link to download your web comic.<\/p>\n';
	str += '<\/td>\n';
	str += '<\/tr><tr>\n';
	str += '<td style="text-align:right;"><h2>Name:<\/h2><\/td>\n';
	str += '<td colspan=2 style="text-align:left;"><input style="width:185px;" type="text" name="name" maxlength="24" value =""><\/td>\n';
	str += '<\/tr><tr>\n';
	str += '<td style="text-align:right;"><h2>Email:<\/h2><\/td>\n';
	str += '<td colspan=2 style="text-align:left;"><input style="width:185px;" type="text" name="email" maxlength="100" value =""><\/td>\n';
	str += '<\/tr><tr><td><input type="hidden" name="itemnum" value="' + which + '"><\/td><\/tr><tr>\n';
	str += '<td>&nbsp;<\/td>\n';
	str += '<td style="text-align:right;"><input type="button" value="cancel" onclick="javascript:showhide_dialog(0);"><\/td>\n';
	str += '<td style="text-align:left;"><input type="submit" value="submit"><\/td>\n';
	str += '<\/tr><\/table><\/form>';
	
	$("dialog_contents").innerHTML = str;
	showhide_dialog(1);
	setTimeout(set_dlformfocus, 100);
}

//hackers: I know what you're thinking, so forget about it
function buynow_webcomic(which, price) {	
	var title = get_title(which);
	var str = '<form action="javascript:buy_now(\'' + escapeText(title) + '\',\'' + which + '\',\'' + price + '\');" method="post" id="dlform">\n';
	str += '<table id="wcform"><tr>\n';
	str += '<td colspan=3 style="padding-bottom:10px;">\n';
	str += '<h1 style="color:#ffffce;">Web comic purchase<\/h1>\n';
	str += '<h3 style="padding-top:5px;color:#c4c4a8;">' + title + '<\/h3>\n';
	str += '<h3 style="padding-top:5px;color:#ff3334;">$' + price + '&nbsp;US<\/h3>\n';
	str += '<p style="padding-top:5px;">Click the button below to go to PayPal to purchase this web comic. When your transaction is completed, you will be sent an email with a link to download your web comic.<\/p>\n';
	str += '<\/td>\n';
	str += '<\/tr><tr><td><input type="hidden" name="itemnum" value="' + which + '"><\/td><\/tr><tr>\n';
	str += '<td>&nbsp;<\/td>\n';
	str += '<td style="text-align:right;"><input type="button" value="cancel" onclick="javascript:showhide_dialog(0);"><\/td>\n';
	str += '<td style="text-align:left;"><input type="submit" value="purchase"><\/td>\n';
	str += '<\/tr><\/table><\/form>';
	//alert(str);
	
	$("dialog_contents").innerHTML = str;
	showhide_dialog(1);
}