
/**
 * foto-schaerli.ch
 *
 * @author      	dkohler [.ch]
 * @created     	12.03.2008
 * @changed     	22.04.2008
 *
 * @description     common used javascript functions
 *
 **/

var xmlhttp = false;
var page = '';

function changeImg(obj) {
    var newSrc = '';

    if(obj.src.search('&h=1') != -1) {
        newSrc = obj.src.replace(/\&h=1/g, '&h=0');
    } else {
        newSrc = obj.src.replace(/\&h=0/g, '&h=1');
    }
    obj.src = newSrc;
}

function handleKeyPress(e) {
	var tcode;

    if(!e){
		e = window.event;
	}
	if (e.which) {
		tcode = e.which;
	} else if (e.keyCode) {
		tcode = e.keyCode;
	}

	if(nav_prev != '' && tcode == 37) {
		self.location = nav_prev;
	} else if(nav_next != '' && tcode == 39) {
		self.location = nav_next;
	} else if(nav_up != '' && tcode == 38) {
		self.location = nav_up;
	}
}

function createAjaxObj() {
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
}

function changeImgCat(dir, img) {
	var img_sel = document.getElementById('imgsrc');
	img_sel.options.length = 0;
	
	createAjaxObj();
	
	xmlhttp.open('get', 'ajaxhandler.php?action=getimages&dir=' + dir);
	xmlhttp.onreadystatechange = function () {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			if(xmlhttp.responseText != '') {
			    //alert(xmlhttp.responseText);
			    var split_img = xmlhttp.responseText.split('|');
			    for(i = 0; i < split_img.length-1; i++) {
					newopt = new Option(split_img[i], split_img[i]);
					img_sel.options[img_sel.options.length] = newopt;
					if(img == split_img[i]) {
                        img_sel.options[i].selected = true;
					}
				}
			} else {
				img_sel.disabled = 'disabled';
			}
		}};
	xmlhttp.send(null);
	
	img_sel.disabled = false;
}

function changeImgPrev(root, img) {
	var img_dir = document.getElementById('imgcat');
	var img_prev = document.getElementById('imgprev');
	imgprev.src = root + img_dir.value + img;
	document.getElementById('imgprev_bx').style.display = 'inline';
}

function saveThumbOrder(dir) {
	createAjaxObj();

	var msg = document.getElementById('message_bx');
	var img_ser = document.getElementById('images_serialize').value;
	img_ser = img_ser.replace(/thumbs_bx\[\]\=/gi, "");
	img_ser = img_ser.replace(/\&/gi, "_");
	
	xmlhttp.open('get', 'ajaxhandler.php?action=savethumborder&images_serialize=' + img_ser + '&dir=' + dir);
	xmlhttp.onreadystatechange = function () {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			if(xmlhttp.responseText == 'ok') {
				msg.style.display = 'block';
			    msg.className = 'success';
				msg.innerHTML = 'Reihenfolge gespeichert!';
			} else {
			    msg.style.display = 'block';
			    msg.className = 'failure';
                msg.innerHTML = 'Reihenfolge konnte nicht gespeichert werden, bitte kontaktieren Sie den Administrator!';
			}
			window.setTimeout('Effect.Fade(\'message_bx\')', 1000);
		}};
	xmlhttp.send(null);
}

function deletePic(dir, pic, img_id) {
	if(confirm('wirklich löschen?')) {
	    createAjaxObj();
	    
	    var msg = document.getElementById('message_bx');
		xmlhttp.open('get', 'ajaxhandler.php?action=deletepic&pic=' + pic + '&dir=' + dir + '&id=' + img_id);
		xmlhttp.onreadystatechange = function () {
			if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if(xmlhttp.responseText == 'ok') {
				    var li_item = document.getElementById('item_' + img_id);
				    window.setTimeout('Effect.Fade(\'item_\'' + img_id + ')', 500);
				    document.getElementById('thumbs_bx').removeChild(li_item);
					msg.style.display = 'block';
				    msg.className = 'success';
					msg.innerHTML = 'Bild gelöscht!';
				} else {
				    msg.style.display = 'block';
				    msg.className = 'failure';
	                msg.innerHTML = 'Bild konnte nicht gelöscht werden, bitte kontaktieren Sie den Administrator!';
				}
				window.setTimeout('Effect.Fade(\'message_bx\')', 1000);
			}};
		xmlhttp.send(null);
	} else {
		return;
	}
}

/**
 * Drag & Resize for uploaded pictures
 **/

var seloffx;
var seloffy;
var selx;
var sely;
var selw;
var selh;
var picw;
var pich;

var crpratio=(3/2);	//ratio to use
var crpw=150;			//default width
var crph=100;			//default height

var resizing=false;

function startselect(){
	if(document.getElementById('selection'))return;

	var sel=document.getElementById('thepic');
	picw=sel.offsetWidth;
	pich=sel.offsetHeight;
	if(picw<crpw || pich<crph){
		alert('Das Bild ist zu klein um daraus einen Ausschnitt zu wählen');
		//return;
	}

	selw=crpw;
	selh=crph;
	selx=parseInt((picw-selw)/2);
	sely=parseInt((pich-selh)/2);

	var newdiv=document.createElement('div');
	newdiv.setAttribute("id", "selection");
	newdiv.style.cursor="move";
	newdiv.style.position="absolute";
	newdiv.style.left=selx+"px";
	newdiv.style.top=sely+"px";
	newdiv.style.width=selw+"px";
	newdiv.style.height=selh+"px";
	newdiv.style.border="1px dotted white";
	newdiv.onmousedown=startdrag;

	var newimg=document.createElement('img');
	newimg.setAttribute("src", "./images/resize.gif");
	newimg.style.cursor="nw-resize";
	newimg.style.position="absolute";
	newimg.style.right="0px";
	newimg.style.bottom="0px";
	newimg.onmousedown=startresize;
	newdiv.appendChild(newimg);


	newfrm=document.createElement('form');
	newfrm.setAttribute("action", "index.php?page=" + page + "&action=cut");
	newfrm.setAttribute("method", "POST");
	newfrm.style.position="absolute";
	newfrm.style.top="0px";
	newfrm.style.left="0px";

	newinp=document.createElement('input');
	newinp.setAttribute("type", "hidden");
	newinp.setAttribute("name", "selw");
	newinp.setAttribute("id", "selw");
	newinp.setAttribute("value", selw);
	newfrm.appendChild(newinp);

	newinp=document.createElement('input');
	newinp.setAttribute("type", "hidden");
	newinp.setAttribute("name", "selh");
	newinp.setAttribute("id", "selh");
	newinp.setAttribute("value", selh);
	newfrm.appendChild(newinp);

	newinp=document.createElement('input');
	newinp.setAttribute("type", "hidden");
	newinp.setAttribute("name", "selx");
	newinp.setAttribute("id", "selx");
	newinp.setAttribute("value", selx);
	newfrm.appendChild(newinp);

	newinp=document.createElement('input');
	newinp.setAttribute("type", "hidden");
	newinp.setAttribute("name", "sely");
	newinp.setAttribute("id", "sely");
	newinp.setAttribute("value", sely);
	newfrm.appendChild(newinp);

	newinp=document.createElement('input');
	newinp.setAttribute("type", "image");
	newinp.setAttribute("src", "./images/save.gif");
	newinp.style.cursor="pointer";
	newfrm.appendChild(newinp);

	newdiv.appendChild(newfrm);

	document.getElementById('res_pic').appendChild(newdiv);
}

function getMouseX(e){
	return e.pageX ? e.pageX : (e.clientX ? (e.clientX + document.body.scrollLeft) : 0);
}
function getMouseY(e){
	return e.pageY ? e.pageY : (e.clientY ? (e.clientY + document.body.scrollTop) : 0);
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function startdrag(e){
	if(resizing)return;

	document.onmousemove=dodrag;
	document.onmouseup=enddrag;

	if (!e) var e = window.event;

	var mp=document.getElementById('res_pic');
	var sel=document.getElementById('selection');

	seloffx=findPosX(mp)-findPosX(sel)+getMouseX(e);
	seloffy=findPosY(mp)-findPosY(sel)+getMouseY(e);

	return false;
}

function dodrag(e){
	var sel=document.getElementById('selection');

	if (!e) var e = window.event;

	var x=getMouseX(e)-seloffx;
	var y=getMouseY(e)-seloffy;

	if(x<0){
		selx=0;
	}else if(x>(picw-selw-2)){
		selx=picw-selw-2;
	}else{
		selx=x;
	}
	sel.style.left=selx+"px";

	if(y<0){
		sely=0;
	}else if(y>(pich-selh-2)){
		sely=pich-selh-2;
	}else{
		sely=y;
	}
	sel.style.top=sely+"px";

	return false;
}

function startresize(e){
	resizing=true;

	document.onmousemove=doresize;
	document.onmouseup=enddrag;

	if (!e) var e = window.event;

	var sel=document.getElementById('selection');

	seloffx=getMouseX(e)-sel.offsetWidth;
	seloffy=getMouseY(e)-sel.offsetHeight;

	return false;
}

function doresize(e){
	var sel=document.getElementById('selection');

	if (!e) var e = window.event;

	var x=getMouseX(e)-seloffx;
	var y=getMouseY(e)-seloffy;

	if(x<(crpw/2)){
		selw=(crpw/2);
	}else if(x>(picw-selx-2)){
		selw=picw-selx-2;
	}else{
		selw=x;
	}

	if(y<(crph/2)){
		selh=(crph/2);
	}else if(y>(pich-sely-2)){
		selh=pich-sely-2;
	}else{
		selh=y;
	}

	if(selh*crpratio > selw){
		selh=parseInt(selw/crpratio);
	}else{
		selw=parseInt(selh*crpratio);
	}


	sel.style.width=selw+"px";
	sel.style.height=selh+"px";

	return false;
}

function enddrag(){
	resizing=false;

	document.onmousemove=null;
	document.onmouseup=null;

	document.getElementById('selw').value=selw;
	document.getElementById('selh').value=selh;
	document.getElementById('selx').value=selx;
	document.getElementById('sely').value=sely;
}

