function ajaxHistoryRequest(url, myState) 
{
    new Ajax.History.Request(url, {
        history : {
            id    : 'is',
            state : myState,
            cache : true,
            onStateChange: function(state) {
                History.setTitle(History.getTitle() + ' - Photo ' + state);
            }
        },
        onSuccess: function(transport) {
            $('photogallerycontainer').update(transport.responseText);
            
        }
    });
}

function bookmark(url,title){
  if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
  window.external.AddFavorite(url,title);
  } else if (navigator.appName == "Netscape") {
    window.sidebar.addPanel(title,url,"");
  } else {
    alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
  }
}


function getStyleClass (className) {
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}


//XMLHttpRequest class function

function datosServidor() {

};

datosServidor.prototype.iniciar = function() {

	try {

		// Mozilla / Safari

		this._xh = new XMLHttpRequest();

	} catch (e) {

		// Explorer

		var _ieModelos = new Array(

		'MSXML2.XMLHTTP.5.0',

		'MSXML2.XMLHTTP.4.0',

		'MSXML2.XMLHTTP.3.0',

		'MSXML2.XMLHTTP',

		'Microsoft.XMLHTTP'

		);

		var success = false;

		for (var i=0;i < _ieModelos.length && !success; i++) {

			try {

				this._xh = new ActiveXObject(_ieModelos[i]);

				success = true;

			} catch (e) {

			}

		}

		if ( !success ) {

			return false;

		}

		return true;

	}

}



datosServidor.prototype.ocupado = function() {

	estadoActual = this._xh.readyState;

	return (estadoActual && (estadoActual < 4));

}



datosServidor.prototype.procesa = function() {

	if (this._xh.readyState == 4 && this._xh.status == 200) {

		this.procesado = true;

	}

}



datosServidor.prototype.enviar = function(urlget,datos) {

	if (!this._xh) {

		this.iniciar();

	}

	if (!this.ocupado()) {

		this._xh.open("GET",urlget,false);

		this._xh.send(datos);

		if (this._xh.readyState == 4 && this._xh.status == 200) {

			return this._xh.responseText;

		}



	}

	return false;

}





var urlBase = "update.php";

var formVars = "";

var changing = false;





function fieldEnter(campo,evt,idfld) {

	evt = (evt) ? evt : window.event;

	if (evt.keyCode == 13 && campo.value!="") {

		elem = document.getElementById( idfld );

		remotos = new datosServidor;

		nt = remotos.enviar(urlBase + "?fieldname=" +encodeURI(elem.id)+ "&content="+encodeURI(campo.value.replace(/\n/gi,"<br>"))+"&"+formVars,"");

		//remove glow

		noLight(elem);

		elem.innerHTML = nt;

		changing = false;

		return false;

	} else {

		return true;

	}





}



function fieldBlur(campo,idfld) {

	if (campo.value!="") {

		elem = document.getElementById( idfld );

		remotos = new datosServidor;

		nt = remotos.enviar(urlBase + "?fieldname=" +escape(elem.id)+ "&content="+escape(campo.value.replace(/\n/gi,"<br>"))+"&"+formVars,"");

		elem.innerHTML = nt;

		changing = false;

		return false;

	}

}



//edit field created

function editBox(actual) {

	//alert(actual.nodeName+' '+changing);

	if(!changing){

		width = widthEl(actual.id) + 20;

		height =heightEl(actual.id) + 2;



		if(height < 0){

			if(width < 100)	width = 150;

			actual.innerHTML = "<input id=\""+ actual.id +"_field\" class=editingtextarea style=\"width: "+width-10+"px; height: "+height+"px;\" maxlength=\"254\" type=\"text\" value=\"" + actual.innerHTML.replace(/<br>/gi,"\n") + "\" onkeypress=\"return fieldEnter(this,event,'" + actual.id + "')\" onfocus=\"highLight(this);\" onblur=\"noLight(this); return fieldBlur(this,'" + actual.id + "');\" />";

		}else{

			if(width < 70) width = 90;

			if(height < 50) height = 50;

			actual.innerHTML = "<textarea name=\"textarea\" class=editingtextarea id=\""+ actual.id +"_field\" style=\"width: "+(width-30)+"px; height: "+(height+50)+"px;\" onfocus=\"highLight(this);\" onblur=\"noLight(this); return fieldBlur(this,'" + actual.id + "');\">" + actual.innerHTML.replace(/<br>/gi,"\n") + "</textarea>";

		}

		changing = true;

	}



		actual.firstChild.focus();

}







//find all span tags with class editText and id as fieldname parsed to update script. add onclick function

function editbox_init(){

	if (!document.getElementsByTagName){ return; }

	var spans = document.getElementsByTagName("span");



	// loop through all span tags

	for (var i=0; i<spans.length; i++){

		var spn = spans[i];



        	if (((' '+spn.className+' ').indexOf("editText") != -1) && (spn.id)) {

			spn.onclick = function () { editBox(this); }

			spn.style.cursor = "pointer";

			spn.title = "Click to edit!";

       		}



	}





}



//crossbrowser load function

function addEvent(elm, evType, fn, useCapture)

{

  if (elm.addEventListener){

    elm.addEventListener(evType, fn, useCapture);

    return true;

  } else if (elm.attachEvent){

    var r = elm.attachEvent("on"+evType, fn);

    return r;

  } else {

    alert("Please upgrade your browser to use full functionality on this page");

  }

}



//get width of text element

function widthEl(span){



	if (document.layers){

	  w=document.layers[span].clip.width;

	} else if (document.all && !document.getElementById){

	  w=document.all[span].offsetWidth;

	} else if(document.getElementById){

	  w=document.getElementById(span).offsetWidth;

	}

return w;

}



//get height of text element

function heightEl(span){



	if (document.layers){

	  h=document.layers[span].clip.height;

	} else if (document.all && !document.getElementById){

	  h=document.all[span].offsetHeight;

	} else if(document.getElementById){

	  h=document.getElementById(span).offsetHeight;

	}

return h;

}



function highLight(span){

            //span.parentNode.style.border = "2px solid #D1FDCD";

            //span.parentNode.style.padding = "0";

            span.style.border = "1px solid #54CE43";

}



function noLight(span){

        //span.parentNode.style.border = "0px";

        //span.parentNode.style.padding = "2px";

        span.style.border = "0px";





}



//sets post/get vars for update

function setVarsForm(vars){

	formVars  = vars;

}

addEvent(window, "load", editbox_init);
