addLoadEvent(slide);
addLoadEvent(prepareModalWindows);
addLoadEvent(prepareDeleteButtons);
addLoadEvent(preparePageTitleInput);
addLoadEvent(prepareTextileGuide);
addLoadEvent(prepareProjectReordering);
//addLoadEvent(prepareLeftSidePhotosReposition);
addEvent(window,"load",resizeTextarea);
addEvent(window,"resize",resizeTextarea);
addEvent(window,"load",resizeBin);
addEvent(window,"resize",resizeBin);
addEvent(window,"load",repositionSubmitButton);
addEvent(window,"resize",repositionSubmitButton);
addEvent(window,"load",resizeImagesInPreview);
addEvent(window,"resize",resizeImagesInPreview);
//addEvent(window,"resize",slide);
//addEvent(window,"load",slide);
//document.documentElement.addEventListener("scroll", slide, false);


function prepareProjectReordering() {
	if(!document.getElementById("reorder_projects")) return false;
	var el = document.getElementById("reorder_projects");
	el.onclick = function () {
		// get all the class="project" divs
		var projects = document.getElementsByClassName("project");

		
		// alert(divsInType.length+", "+projects.length);
		var dragMode = 'false';
		for(j=0;j<projects.length;j++) {
			thisProject = projects[j];
			
			if(j==0) {
				dragMode = jscss("check",thisProject,"dragMode");
			}
		
			// check to see if they have the "dragMode" class
			if(dragMode) {
				jscss("remove",thisProject,"dragMode");
			} else {
				jscss("add",thisProject,"dragMode");
			}
		}
		window.scrollTo(0,0);
        // hack to fix safari's redraw bug 
        // as mentioned on http://en.wikipedia.org/wiki/Wikipedia:Browser_notes#Mac_OS_X
        if (self.screenTop && self.screenX){
            window.resizeTo(self.outerWidth + 1, self.outerHeight);    
            window.resizeTo(self.outerWidth - 1, self.outerHeight);                 
        }		
		return false;
	}
}

function prepareModalWindows() {
	var mLinks = document.getElementsByClassName("modal");
	for(i=0;i<mLinks.length;i++){
		addEvent(mLinks[i],"click",function () {
			document.getElementById("modal").style.display = "block";
		});
	}
}

function prepareDeleteButtons() {
	var cdLinks = document.getElementsByClassName("delete_category");
	for(i=0;i<cdLinks.length;i++){
		cdLinks[i].onclick = function () {
			if(confirm('Delete Category and ALL Projects including ALL Photos ?')) {
				// setTimeout("window.location.href = window.location.pathname",2000);
				return true;
			}
			return false;
		};
	}

	var pdLinks = document.getElementsByClassName("delete_project");
	for(i=0;i<pdLinks.length;i++){
		pdLinks[i].onclick = function () {
			if(confirm('Delete Project and ALL Photos ?')) {
				// setTimeout("window.location.href = window.location.pathname",2000);
				return true;
			}
			return false;
		};
	}
}

function preparePageTitleInput() {
	if(document.getElementById("page_title")) {
		addEvent(document.getElementById("page_title"),"keyup",resizePageTitleInput);
		resizePageTitleInput();
	}
}

var guide_visibility = 0;
function prepareTextileGuide() {
	if(document.getElementById("guide_toggle")) {
		document.getElementById("guide_toggle").onclick = toggleGuide;
	}
}
function toggleGuide() {
	if(guide_visibility==1)
		guide_visibility = 0
	else
		guide_visibility = 1

	var elTable = document.getElementById("format_tips").getElementsByTagName("table")[0];
	var elLink = document.getElementById("guide_toggle");

	if(guide_visibility==1) {
		elTable.style.display = "table";
		elLink.firstChild.nodeValue = "hide guide";
	} else {
		elTable.style.display = "none";
		elLink.firstChild.nodeValue = "show guide";
	}

	resizeTextarea();
	repositionSubmitButton();

	return false;
}

function resizeTextarea() {
	if(document.getElementById("oko_page_content_raw")) {
		var el = document.getElementById("oko_page_content_raw");
		if(guide_visibility==1)
			el.style.height = getWindowHeight() - 360 + "px"
		else
			el.style.height = getWindowHeight() - 165 + "px"
	}
}

function resizeBin() {
	if(document.getElementById("unassignedPhotos")) {
		var el = document.getElementById("unassignedPhotos");
		el.style.height = getWindowHeight() - 110 + "px"
	}
}

function slide() {
	if(document.getElementById("unassignedPhotos")) {
		var top = (document.all)?document.body.scrollTop:window.pageYOffset;
//		console.log('The browser is scrolled down %s.', top); 
		
		var el = document.getElementById("unassignedPhotos");
		el.style.top = top + 40 + "px"

		var el = document.getElementById("photoTrashBin");
		el.style.position = "absolute";
		el.style.top = top + getWindowHeight() - 62 + "px";
	}
	setTimeout("slide()",200);
}

function repositionSubmitButton() {
	var submitButtonId = 'save_okopage';
	if (document.getElementById(submitButtonId)) {
		var el = document.getElementById(submitButtonId);
		if(guide_visibility==1)
			el.style.bottom = 255 + "px"
		else
			el.style.bottom = 62 + "px"
	}

	var submitButtonId = 'photo-upload';
	if (document.getElementById(submitButtonId)) {
		var el = document.getElementById(submitButtonId);
		if(guide_visibility==0)
			el.style.bottom = 30 + "px"
	}
}

function resizeImagesInPreview() {
	if(document.getElementById("oko_page_content_preview")) {
		var imagesInPreview = document.getElementById("oko_page_content_preview").getElementsByTagName("img");
		for (i=0;i<imagesInPreview.length;i++) {
			var thisImage = imagesInPreview[i];
			var testImage = new Image();
			testImage.src = thisImage.src;
			thisImage.style.width = Math.min(testImage.width,getWindowWidth()*.46)+"px";
		}
	}
}

function resizePageTitleInput() {
	var el = document.getElementById("page_title");
	var val = el.value.length
	el.style.width = (val * .7 + .5) + "em";
}

/*	Library	*/

// addEvent and removeEvent by John Resig
// http://ejohn.org/projects/flexible-javascript-events/
function addEvent( obj, type, fn ) {
	if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent( 'on'+type, obj[type+fn] );
	} else
	obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
	} else
	obj.removeEventListener( type, fn, false );
}

// getWindowHeight/Width by Bobby van der Sluis
// http://www.alistapart.com/articles/footers
function getWindowHeight() {
	var windowHeight=0;
	if (typeof(window.innerHeight)=='number') {
		windowHeight=window.innerHeight;
	} else {
		if (document.documentElement&&document.documentElement.clientHeight) {
			windowHeight= document.documentElement.clientHeight;
		} else {
			if (document.body&&document.body.clientHeight) {
				windowHeight=document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}
function getWindowWidth() {
	var windowWidth=0;
	if (typeof(window.innerWidth)=='number') {
		windowWidth=window.innerWidth;
	} else {
		if (document.documentElement&&document.documentElement.clientWidth) {
			windowWidth= document.documentElement.clientWidth;
		} else {
			if (document.body&&document.body.clientWidth) {
				windowWidth=document.body.clientWidth;
			}
		}
	}
	return windowWidth;
}

// Simon WIllison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

// Christian Heilmann
// http://www.onlinetools.org/articles/unobtrusivejavascript/cssjsseparation.html
function jscss(a,o,c1,c2)
{
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): o.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
    break;
  }
}

