// CSS helper functions
CSS = {
    // Adds a class to an element.
    AddClass: function (e, c) {
        if (!e.className.match(new RegExp("\\b" + c + "\\b", "i")))
            e.className += (e.className ? " " : "") + c;
    },

    // Removes a class from an element.
    RemoveClass: function (e, c) {
        e.className = e.className.replace(new RegExp(" \\b" + c + "\\b|\\b" + c + "\\b ?", "gi"), "");
    }
};

// Functions for handling tabs.
Tabs = {
    // Changes to the tab with the specified ID.
    GoTo: function (contentId, skipReplace) {
        // This variable will be true if a tab for the specified
        // content ID was found.
        var foundTab = false;

        // Get the TOC element.
        var toc = document.getElementById("toc");
        if (toc) {
            var lis = toc.getElementsByTagName("li");
            for (var j = 0; j < lis.length; j++) {
                var li = lis[j];

                // Give the current tab link the class "current" and
                // remove the class from any other TOC links.
                var anchors = li.getElementsByTagName("a");
                for (var k = 0; k < anchors.length; k++) {
                    if (anchors[k].hash == "#" + contentId) {
                        CSS.AddClass(li, "current");
                        foundTab = true;
                        break;
                    } else {
                        CSS.RemoveClass(li, "current");
                    }
                }
            }
        }

        // Show the content with the specified ID.
        var divsToHide = [];
        var divs = document.getElementsByTagName("div");
        for (var i = 0; i < divs.length; i++) {
            var div = divs[i];

            if (div.className.match(/\bcontent\b/i)) {
                if (div.id == "_" + contentId)
                    div.style.display = "block";
                else
                    divsToHide.push(div);
            }
        }

        // Hide the other content boxes.
        for (var i = 0; i < divsToHide.length; i++)
            divsToHide[i].style.display = "none";

        // Change the address bar.
        if (!skipReplace) window.location.replace("#");
    },

    OnClickHandler: function (e) {
        // Stop the event (to stop it from scrolling or
        // making an entry in the history).
	//alert(this.hash.substring(1));
        if (!e) e = window.event;
        if (e.preventDefault) e.preventDefault(); else e.returnValue = false;

        // Get the name of the anchor of the link that was clicked.
        Tabs.GoTo(this.hash.substring(1));
	tabtrigger(this.hash.substring(1));
    },

    Init: function () {
        if (!document.getElementsByTagName) return;
	hidetext();
        // Attach an onclick event to all the anchor links on the page.
        var anchors = document.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++) {
            var a = anchors[i];
            if (a.hash) a.onclick = Tabs.OnClickHandler;
        }

        var contentId;
        if (window.location.hash) contentId = window.location.hash.substring(1);

        var divs = document.getElementsByTagName("div");
        for (var i = 0; i < divs.length; i++) {
            var div = divs[i];

            if (div.className.match(/\bcontent\b/i)) {
                if (!contentId) contentId = div.id;
                div.id = "_" + div.id;
            }
        }

        if (contentId) Tabs.GoTo(contentId, true);
    }
};

// Hook up the OnLoad event to the tab initialization function.
window.onload = Tabs.Init;

// Hide the content while waiting for the onload event to trigger.
var contentId = window.location.hash || "#Introduction";

if (document.createStyleSheet) {
    var style = document.createStyleSheet();
    style.addRule("div.content", "display: none;");
    style.addRule("div" + contentId, "display: block;");
} else {
    var head = document.getElementsByTagName("head")[0];
    if (head) {
        var style = document.createElement("style");
        style.setAttribute("type", "text/css");
        style.appendChild(document.createTextNode("div.content { display: none; }"));
		style.appendChild(document.createTextNode("div" + contentId + " { display: block; }"));
        head.appendChild(style);
    }
}

var slidr;
var bannr;
var sfont;
var xmlHttp;
var bload;
var sload;
var uphoto;

function selfont(ufont){
	sfont = ufont;
}


function updateBg(newBg) {
	if (bannr) {
		document.getElementById(bannr).style.border = "none";
	}
	var op = null;
	bannr = newBg;
	if (document.getElementById) {
		op = document.getElementById('previewBgImg');
		ep = document.getElementById(newBg);
	} else if (document.all) {
		op = document.all['previewBgImg'];
		ep = document.all[newBg];
	} else if (document.layers) {
		op = document.layers['previewBgImg'];
		ep = document.layers[newBg];
	}
	
	if (!op) {
		return 
	} else if (op.style) {
		op.style.background = "url("+newBg+") center no-repeat";
		ep.style.border = "#FF0000 solid 2px";  
	}
}


function setslider(strNewImage) {
	slidr = strNewImage;
}

function updateSl(strNewImage) {
	if (slidr) {
		document.getElementById(slidr).style.border = "none";
	}
	slidr = strNewImage;
	document.images['islider'].src = strNewImage;
	document.getElementById(strNewImage).style.border = "#FF0000 solid 2px"; 

}


function generate(objID, parameters, url)
{ 
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
  		alert ("Your browser does not support AJAX!");
  		return;
  	} 
	xmlHttp.onreadystatechange=function(){stateChanged(objID);};
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", parameters.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(parameters);
}



function stateChanged(a) 
{ 
	if (xmlHttp.readyState==4)
	{ 
		if (xmlHttp.status == 200 || xmlHttp.status == 304) {
			document.getElementById(a).innerHTML=xmlHttp.responseText;
		}
	}
}



function GetXmlHttpObject()
{
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}






function tabtrigger(idname){
switch (idname)
	{
	case 'bann':
		if (!bload){
			var parameters="id=bannr";
			var url= "builder.php";
			var objID = "bannr";
			generate(objID, parameters, url);
			
			bload = true;
		
			if (bannr) {
				var u=setTimeout(function(){updateBg(bannr);},200)
			}

		}
		break;
	case 'slid':
		if (!sload){
			var parameters="id=slidr";
			var url= "builder.php";
			var objID = "slidr";

			generate(objID, parameters, url);

			sload = true;

			if(slidr){
				var v=setTimeout(function(){updateSl(slidr);},200)
			}
		}
		break;
	case 'create':
 		if (slidr && bannr)
		{

			var parameters="banner="+bannr;
			parameters=parameters+"&slider="+slidr;
			parameters=parameters+"&eventmonth="+document.ticker.eventmonth.value;
			parameters=parameters+"&eventday="+document.ticker.eventday.value;
			parameters=parameters+"&eventyear="+document.ticker.eventyear.value;
			parameters=parameters+"&startmonth="+document.ticker.startmonth.value;
			parameters=parameters+"&startday="+document.ticker.startday.value;
			parameters=parameters+"&startyear="+document.ticker.startyear.value;
			parameters=parameters+"&event="+document.ticker.event.value;
			parameters=parameters+"&email="+document.ticker.email.value;

			var url="generate.php";
			var objID = "tickr";

			generate(objID, parameters, url);
		}
		break;
	case 'rotatr':
		var parameters="email="+document.ticker.email.value;
		var url="generategif.php";
		var objID = "rtator";
		generate(objID, parameters, url);
		break;
	case 'edt':
		window.location = 'new.php';
		break;
	case 'new':
		window.location = 'remove.php';
		break;
	case 'deco':
		window.location ='edit_photo.php#deco';
		break;
	case 'create2':
		window.location ='generategif.php?email='+document.ticker.email.value;
		break;
	case 'crop':
		window.location ='edit_photo.php#crop';
		window.location.reload();
		break;
	case 'create3':
 		if (uphoto)
		{
			window.location ='edit_photo.php#create3';
			var parameters="eventmonth="+document.pticker.eventmonth.value;
			parameters=parameters+"&eventday="+document.pticker.eventday.value;
			parameters=parameters+"&eventyear="+document.pticker.eventyear.value;
			parameters=parameters+"&eventname="+document.pticker.eventname.value;
			parameters=parameters+"&show_count="+document.pticker.show_count.value;
			parameters=parameters+"&show_int="+document.pticker.show_int.value;
			parameters=parameters+"&show_slider="+document.pticker.show_slider.value;
			parameters=parameters+"&email="+document.pticker.email.value;
			parameters=parameters+"&slidr="+slidr;

			var url="generatepng.php";
			var objID = "fpbannr";

			generate(objID, parameters, url);
		}
		break;
	default:
 		return true;
	}
}
function postage(one,two,three){ 
   window.location = 'mailto:'+one+two+three;
} 
function hidetext() {
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById('hideShow').style.visibility = 'hidden';
	}else {
		if (document.layers) { // Netscape 4
			document.hideShow.visibility = 'hidden';
		}else { // IE 4
			document.all.hideShow.style.visibility = 'hidden';
		}
	}
}