var diaObjects = new Array();

// Step in degrees for each click on the rotation button
var angleStep = 11.25;

// Author of the current image set
var imageSetAuthor = '';

// List of authors for image sets
// Add here whenever a new set is installed
var imageSetAuthors = new Array();
imageSetAuthors[0]='OLDC';
imageSetAuthors[1]='Don-Giannatti';
imageSetAuthors[2]='antic_eye';
imageSetAuthors[3]='Sound-engineering';
imageSetAuthors[4]='Nikon';
imageSetAuthors[5]='Quoc-Huy';
imageSetAuthors[6]='Canon';

// Use to preload rotated images
var preloadedImg = new Array();

// List of categories of objects
imageSetCategories = new Array();
imageSetCategories[0] = 'Backgrounds';
imageSetCategories[1] = 'Cameras';
imageSetCategories[2] = 'Subjects';
imageSetCategories[3] = 'Light Sources';
imageSetCategories[4] = 'Light Modifiers';
imageSetCategories[5] = 'Bouncing/Reflecting';
imageSetCategories[6] = 'Props';
imageSetCategories[7] = 'Accessories';
imageSetCategories[8] = 'Sound Engineering';

/**** IE Detection *****/
var isIE = false;
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Microsoft Internet Explorer") {
	isIE = true;
}

function togglePreview(state, id, author, category) {
        switch(state) {
        case 'p':
                document.getElementById('container_'+id).style.cursor='pointer';
		document.getElementById('object_preview').innerHTML='<img src="/extension/ezlightingdiagram/design/standard/images/diaObjects/'+ author +'/'+ category +'/' + '0.png" />';
                break;

        default:
		document.getElementById('object_preview').innerHTML='';
                break;
        }
}

// Load the GUI
function ldGUI() {
        document.write('<div id="object_preview"></div>');
	document.write('<div class="ld_objects_menu">');
	document.write('<div class="ld_title">Lighting Objects</div>');
	var objThumb = '';
	var j=0;
	for(var key in imageSetCategories) {
		document.write('<div class="ld_objects_menu_item"><div class="ld_menu_item_title">'+ imageSetCategories[key] +'</div>');

		selectImageSet(imageSetCategories[key]);
		for(var key2 in diaObjects) {
                	for(var key3 in diaObjects[key2]) {
				var title = key3.replace(/-/g, " ") + ' (' + key2.replace(/-/g, " ") +')';
				objThumb = '/extension/ezlightingdiagram/design/standard/images/diaObjects/'+ key2 +'/'+ key3 +'/t0.png';
//				document.write('<div class="ld_objects_menu_img" title="'+ title +'" onClick="addElement(\''+ key2 +'/'+ key3 +'\')"><img src="'+ objThumb +'" title="'+ title +'" border="0" /></div>');
				document.write('<div class="ld_objects_menu_img" id="container_thumb'+j+'" title="'+ title +'" onClick="addElement(\''+ key2 +'/'+ key3 +'\')" onMouseOver="togglePreview(\'p\', \'thumb'+j+'\', \''+key2+'\', \''+key3+'\')" onMouseOut="togglePreview(\'t\', \'thumb'+j+'\', \''+key2+'\', \''+key3+'\')"><img src="'+ objThumb +'" title="'+ title +'" border="0" id="thumb'+j+'" /></div>');
				j++;
                	}
		}
		
		document.write('<div class="clear"></div></div>');
	}
	document.write('</div>');
}

function sortDiaObjects(a, b) {
	a = a[0];
	b = b[0];
	return ((a < b) ? -1 : ((a > b) ? 1 : 0));
}

// Preload rotated versions of an object
function preloadObjectSubimg(image) {
        var img = document.getElementById(image);
        var result = getImageCurrentAngle(img.src);
        var angle = result[0];
        var imgSplitted = result[1];
	var preloadStep = 2;

	var count = 0;

	var minAngle = angle - (preloadStep * angleStep);
	if(minAngle<0) minAngle=360 + minAngle;
	
	var maxAngle = angle + (preloadStep * angleStep);
	if(maxAngle>360) maxAngle=minAngle - 360;

	var i=minAngle;
	for(var count=0; count<2 * preloadStep + 1; count+=1){
		if(typeof preloadedImg[imgSplitted[imgSplitted.length-2]] == "undefined" || typeof preloadedImg[imgSplitted[imgSplitted.length-2]][i] == "undefined") {
			imgSplitted[imgSplitted.length-1] = i + '.png';
			preloadedImg[imgSplitted[imgSplitted.length-2]] = new Array();
			preloadedImg[imgSplitted[imgSplitted.length-2]][i] = new Image();
			preloadedImg[imgSplitted[imgSplitted.length-2]][i].src = imgSplitted.join("/"); 
		}
		i += angleStep;
		if(i>=360) i = 360-i; 
	}
}

function selectImageSet(category) {
	for(var key in imageSetAuthors) {
		diaObjects[imageSetAuthors[key]] = null;
		diaObjects[imageSetAuthors[key]] = new Array();
	}
	
	switch(category) {
	case 'Light Modifiers':
                diaObjects['OLDC']['Beauty-dish'] = new Array();
                diaObjects['OLDC']['Gridded-beauty-dish'] = new Array();
                diaObjects['OLDC']['Beauty-dish-diffused'] = new Array();
                diaObjects['OLDC']['Large-softbox'] = new Array();
                diaObjects['OLDC']['Large-gridded-softbox'] = new Array();
                diaObjects['OLDC']['Medium-softbox'] = new Array();
                diaObjects['OLDC']['Medium-gridded-softbox'] = new Array();
                diaObjects['OLDC']['Small-softbox'] = new Array();
                diaObjects['OLDC']['Small-gridded-softbox'] = new Array();
                diaObjects['OLDC']['Octabox-diffused'] = new Array();
                diaObjects['OLDC']['Strip-softbox'] = new Array();
                diaObjects['OLDC']['Gridded-strip-softbox'] = new Array();
		diaObjects['OLDC']['Soft-box-above'] = new Array();
                diaObjects['OLDC']['Silver-umbrella'] = new Array();
                diaObjects['OLDC']['Shoot-through-umbrella'] = new Array();
                diaObjects['OLDC']['White-bounce-umbrella'] = new Array();
                diaObjects['Don-Giannatti']['Gobo-soft-silk'] = new Array();
                diaObjects['Don-Giannatti']['Home-depot-shower-curtain'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-reflective'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-shoot-thru'] = new Array();
                diaObjects['Don-Giannatti']['Softbox-horizontal'] = new Array();
                diaObjects['Don-Giannatti']['Softbox-strip'] = new Array();
                diaObjects['Don-Giannatti']['Softbox-vertical'] = new Array();
                diaObjects['Don-Giannatti']['Beauty-dish'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-Zebra-with-strobe'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-large-with-strobe'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-on-boom-with-strobe'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-small-with-strobe'] = new Array();
                diaObjects['Don-Giannatti']['Umbrella-tipped-medium-with-strobe'] = new Array();
                diaObjects['antic_eye']['Beauty-dish'] = new Array();
                diaObjects['antic_eye']['Umbrella-gold'] = new Array();
                diaObjects['antic_eye']['Umbrella-silver'] = new Array();
                diaObjects['antic_eye']['Umbrella-white'] = new Array();
                diaObjects['antic_eye']['Snoot'] = new Array();
                diaObjects['antic_eye']['Softbox'] = new Array();
                diaObjects['antic_eye']['Striplight'] = new Array();
                diaObjects['antic_eye']['Octabox'] = new Array();
		break;

	case 'Backgrounds':
                diaObjects['OLDC']['Large-backdrop'] = new Array();
                diaObjects['OLDC']['Small-backdrop'] = new Array();
                diaObjects['Don-Giannatti']['Backdrop'] = new Array();
                diaObjects['antic_eye']['Brick-wall'] = new Array();
                diaObjects['antic_eye']['Canvas'] = new Array();
		diaObjects['Quoc-Huy']['White-Wall'] = new Array();
		break;

	case 'Cameras':
                diaObjects['OLDC']['Camera'] = new Array();
                diaObjects['antic_eye']['Camera'] = new Array();
                diaObjects['Don-Giannatti']['Camera-Short-Lens'] = new Array();
		diaObjects['Nikon']['Camera'] = new Array();
		diaObjects['Nikon']['Camera-with-Flashgun'] = new Array();
		diaObjects['Canon']['5D-50'] = new Array();
		break;

	case 'Subjects':
                diaObjects['OLDC']['Human'] = new Array();
                diaObjects['Don-Giannatti']['Model-sitting'] = new Array();
                diaObjects['Don-Giannatti']['Model-standing'] = new Array();
                diaObjects['antic_eye']['Person'] = new Array();
		diaObjects['Nikon']['Model'] = new Array();
		diaObjects['OLDC']['Flowers'] = new Array();
		break;

	case 'Light Sources':
                diaObjects['OLDC']['Strobe'] = new Array();
                diaObjects['OLDC']['Snooted-strobe'] = new Array();
                diaObjects['OLDC']['Gridded-strobe'] = new Array();
                diaObjects['OLDC']['Orange-gelled-strobe'] = new Array();
                diaObjects['OLDC']['Red-gelled-strobe'] = new Array();
                diaObjects['OLDC']['Blue-gelled-strobe'] = new Array();
                diaObjects['OLDC']['Green-gelled-strobe'] = new Array();
                diaObjects['OLDC']['Strobe-barndoor'] = new Array();
                diaObjects['OLDC']['Flashgun'] = new Array();
                diaObjects['OLDC']['Flashgun-on-stand'] = new Array();
                diaObjects['Don-Giannatti']['Home-depot-double-lamp'] = new Array();
                diaObjects['Don-Giannatti']['Home-depot-lamp'] = new Array();
                diaObjects['Don-Giannatti']['Home-depot-lamp-bar'] = new Array();
                diaObjects['Don-Giannatti']['Flashgun'] = new Array();
                diaObjects['Don-Giannatti']['Flashgun-on-stand'] = new Array();
		diaObjects['antic_eye']['Light-torch'] = new Array();
                diaObjects['antic_eye']['Lamp'] = new Array();
                diaObjects['antic_eye']['Flashgun'] = new Array();
		diaObjects['Nikon']['Flashgun-on-stand'] = new Array();
		diaObjects['Nikon']['Flashgun-on-stand-pointing-up'] = new Array();
		diaObjects['Nikon']['Flashgun-pointing-down'] = new Array();
		diaObjects['Quoc-Huy']['Tungsten-Bulb'] = new Array();
		diaObjects['OLDC']['Sun'] = new Array();
		break;

	case 'Bouncing/Reflecting':
		diaObjects['OLDC']['Silver-reflector'] = new Array();
                diaObjects['OLDC']['Golden-reflector'] = new Array();
                diaObjects['OLDC']['White-reflector'] = new Array();
                diaObjects['OLDC']['Black-reflector'] = new Array();
                diaObjects['OLDC']['Black-panel-left'] = new Array();
                diaObjects['OLDC']['Black-panel-right'] = new Array();
                diaObjects['OLDC']['Black-vcard-left'] = new Array();
                diaObjects['OLDC']['Black-vcard-right'] = new Array();
                diaObjects['OLDC']['Large-black-panel'] = new Array();
                diaObjects['OLDC']['Small-black-panel'] = new Array();
                diaObjects['OLDC']['Small-diffusion-panel'] = new Array();
                diaObjects['OLDC']['Large-diffusion-panel'] = new Array();
                diaObjects['OLDC']['White-panel-left'] = new Array();
                diaObjects['OLDC']['White-panel-right'] = new Array();
                diaObjects['OLDC']['White-vcard-left'] = new Array();
                diaObjects['OLDC']['White-vcard-right'] = new Array();
                diaObjects['Don-Giannatti']['Reflector-silver'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-degrees'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-degrees-reverse'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-degrees-vlight'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-degrees-vlight-reverse'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-less-angle'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-minus-angle'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-small-90-degrees'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-small-less-angle'] = new Array();
                diaObjects['Don-Giannatti']['V-Card-90-small-minus-angle'] = new Array();
                diaObjects['antic_eye']['Reflector-gold'] = new Array();
                diaObjects['antic_eye']['Reflector-silver'] = new Array();
                diaObjects['antic_eye']['Reflector-white'] = new Array();
		break;

	case 'Sound Engineering':
                diaObjects['Sound-engineering']['Disk-jockey'] = new Array();
                diaObjects['Sound-engineering']['Headphones'] = new Array();
                diaObjects['Sound-engineering']['LP'] = new Array();
                diaObjects['Sound-engineering']['Mic-1'] = new Array();
                diaObjects['Sound-engineering']['Mic-2'] = new Array();
                diaObjects['Sound-engineering']['Mic-20'] = new Array();
                diaObjects['Sound-engineering']['Mic-3'] = new Array();
                diaObjects['Sound-engineering']['Mic-30'] = new Array();
                diaObjects['Sound-engineering']['Mic-50'] = new Array();
                diaObjects['Sound-engineering']['Mixer'] = new Array();
                diaObjects['Sound-engineering']['Turntable'] = new Array();
		break;

	case 'Accessories':
                diaObjects['Don-Giannatti']['Boom'] = new Array();
		break;

	case 'Props':
		diaObjects['Nikon']['Sofa'] = new Array();
		break;
	}

	for(var key in diaObjects) {
 		var j=0;
		for(var key2 in diaObjects[key]) {
			for(var i=0; i<360; i=i+angleStep) {
				diaObjects[key][key2][j] = i+'.png';
				j++;
			}
		}
	}
}

function populateImageSetSelector() {
	selector = document.getElementById('imageSetSelector');
        for(var key in imageSetCategories) {
                selector.options[key] = new Option(imageSetCategories[key], imageSetCategories[key]);
        }
}

function populateAddObjectSelector(category) {
	selectImageSet(category);
	selector = document.getElementById('addObjectSelector');

	while(selector.hasChildNodes()){
		selector.removeChild(selector.childNodes[0])
	}

	selector.options[0] = new Option('-- Select an object to add --', '');

	var i=0;
	var selectorObjectList = new Array();
	for(var key in diaObjects) {
		for(var key2 in diaObjects[key]) {
			selectorObjectList[i] = [key2+ ' ('+key+')', key+'/'+key2];
			i++;
		}
	}

	selectorObjectList.sort(sortDiaObjects);	

	for(var i=0;i<selectorObjectList.length; i++) {
		selector.options[i+1] = new Option(selectorObjectList[i][0].replace(/-/, " "), selectorObjectList[i][1]);
	}
}

function setOpacity(obj, opacity) { 
	opacity = (opacity == 100)?99.999:opacity; 

	// ie/Win 
	obj.style.filter = "alpha(opacity:"+opacity+")"; 

	// Safari<1.2, Konqueror 
	obj.style.KHTMLOpacity = opacity/100; 

	// Older Mozilla and Firefox 
	obj.style.MozOpacity = opacity/100; 

	// Safari 1.2, newer Firefox and Mozilla, CSS3 
	obj.style.opacity = opacity/100; 
}

function addElement(object,layerLevel,top,left,angle) {
	if(object.match(/\//)) {
		var objectSplitted = object.split('/');
		objName = objectSplitted[1];
		imageSetAuthor = objectSplitted[0];
	} else { objName = object;}
	
	if(typeof objName == "undefined" || objName == "") return false;
	if(typeof layerLevel == "undefined") layerLevel = 21;
	if(typeof angle == "undefined") angle = 0;

        var container = document.getElementById('diagram_container');
        var initTop = container.offsetTop;
	var initLeft = container.offsetLeft;

	var ni = document.getElementById('diagram_container');
	var numi = document.getElementById('theValue');
	var num = (document.getElementById('theValue').value -1)+ 2;
	numi.value = num;
	
	var newdiv = document.createElement('div');
	var divIdName = imageSetAuthor+'.'+objName+'.'+num;
	newdiv.setAttribute('id',divIdName);

	if(!isIE) {
		newdiv.setAttribute('onMouseOver', "setOpacity(document.getElementById('nav"+divIdName+"'),100); return true;");
		newdiv.setAttribute('onMouseOut',"setOpacity(document.getElementById('nav"+divIdName+"'),0); return true;");
		newdiv.setAttribute('class','VEPart');
		if(typeof top != "undefined" && typeof left != "undefined") {
			newdiv.setAttribute('style','z-index:'+layerLevel+';top:'+top+'px;left:'+left+'px'); 
		} else newdiv.setAttribute('style','z-index:'+layerLevel+';top:'+initTop+'px;left:'+initLeft+'px');
	} else {
		newdiv.onmouseover = new Function("setOpacity(document.getElementById('nav"+divIdName+"'),100);"); 
		newdiv.onmouseout = new Function("setOpacity(document.getElementById('nav"+divIdName+"'),0);")
		newdiv.setAttribute('className','VEPart');
		if(typeof top != "undefined" && typeof left != "undefined") {
			newdiv.style.setAttribute('z-index',layerLevel);
			newdiv.style.setAttribute('top', top+'px');
			newdiv.style.setAttribute('left', left+'px');
		} else newdiv.style.setAttribute('z-index', layerLevel); 
	}
	var objFile = angle+'.png'; 
	
	newdiv.innerHTML = '<div class="navigationBar" id="nav'+divIdName+'"><div class="move" title="Move '+ objName +'"><span></span></div><div class="rotate_ccw" title="Rotate CCW'+ objName +'" onClick="rotateElement(\'img'+ divIdName +'\', true)"><span></span></div><div class="rotate_cw" title="Rotate CW'+ objName +'" onClick="rotateElement(\'img'+ divIdName +'\')"><span></span></div><div class="layers" title="Switch  '+ objName +'\'s layer level" onClick="zIndexChange(\''+ divIdName +'\')"><span></span></div><div class="duplicate" title="Duplicate '+ objName +'" onClick="addElement(\''+objName+'\')"><span></span></div><div class="delete" title="Delete '+ objName +'" onClick="removeElement(\''+divIdName+'\')"><span></span></div><div class="clear"></div></div><img src="/extension/ezlightingdiagram/design/standard/images/diaObjects/'+ imageSetAuthor  +'/'+ objName + '/' + objFile + '" border="0" class="VEMover" id="img'+ divIdName +'" />';
	
	ni.appendChild(newdiv);
	
	jcl.LoadBehaviour(divIdName, MoverBehaviour);

	preloadObjectSubimg('img'+ divIdName);
}

function generateObjectList(type) {
        if (typeof type == "undefined" || type == "") {
                exit;
        }
        var objList = "";
        var container = document.getElementById('diagram_container');
        var canvas = document.getElementById('diagram_canvas');
        objList = container.id+':'+canvas.offsetTop+':'+canvas.offsetLeft+":"+0+":"+0+"|";
        var allPageTags=container.getElementsByTagName("div");
        for (i=0; i<allPageTags.length; i++) {
                if (allPageTags[i].className=='VEPart') {
                        var result = getImageCurrentAngle(document.getElementById('img'+allPageTags[i].id).src);
                        var angle = result[0];
                        if(!isIE) {
                                objList = objList + allPageTags[i].id+':'+allPageTags[i].offsetTop+':'+allPageTags[i].offsetLeft+":"+angle+":"+parseInt(allPageTags[i].style.zIndex) +"|";
                        } else {
                                objList = objList + allPageTags[i].id+':'+allPageTags[i].offsetTop+':'+allPageTags[i].offsetLeft+":"+angle+":"+parseInt(allPageTags[i].style.zIndex) +"|";
                        }
                }
        }

	switch(type) {
                case 'jpeg':
                        if(confirm("You have chosen to generate JPEG. Did you know that for diagrams PNG are better quality and smaller size? And they can be used the same way as JPEG. Do you still want to generate a JPEG?")) document.location.href='/lightingdiagram/genJPEG?objList='+escape(objList);
                break;

                case 'png':
                        document.location.href='/lightingdiagram/genPNG?objList='+escape(objList);
                break;

                case 'save':
                        return objList;
                break;

                default:
                        document.location.href=document.location.href.replace(/\?.*/, "") +"?objList="+escape(objList);
                break;
        }
}

function doAction(action) {
	switch(action) {
		case "clear":
			document.getElementById('diagram_container').innerHTML='<img src="/extension/ezlightingdiagram/design/standard/images/gridBG.png" border="0" id="diagram_canvas">';
			break;

		case "save":
			var objList = generateObjectList(action);
			document.getElementById('diagramData').value = objList;
			break;

		default:
			var objList = generateObjectList(action);
			switch(action) {
				case "jpeg":
					if(confirm("You have chosen to generate JPEG. Did you know that for diagrams PNG are better quality and smaller size? And they can be used the same way as JPEG. Do you still want to generate a JPEG?")) document.location.href='/lightingdiagram/genJPEG?objList='+escape(objList);
					break;

				case "png":
					document.location.href='/lightingdiagram/genPNG?objList='+escape(objList);
					break;

				default:
					document.location.href=document.location.href.replace(/\?.*/, "") +"?objList="+escape(objList);
					break;
			}
			break;
	}
}

function loadObjects(objListString,notify) {
	// Loading default objects onto the diagram
	if (objListString == "home") {
		objListString = unescape('diagram_container%3A269%3A377%3A0%3A0%7Cantic_eye.Canvas.1%3A279%3A421%3A0%3A21%7CNikon.Model.2%3A428%3A685%3A22.5%3A21%7CDon-Giannatti.Camera-Short-Lens.3%3A557%3A694%3A0%3A21%7CNikon.Flashgun-on-stand.4%3A487%3A500%3A45%3A21%7CDon-Giannatti.Umbrella-shoot-thru.5%3A436%3A556%3A45%3A21%7CNikon.Flashgun-on-stand.6%3A323%3A813%3A247.5%3A21%7C');
	}else if(objListString == "iframe") {
		objListString = unescape('diagram_container%3A56%3A8%3A0%3A0%7Cantic_eye.Canvas.1%3A67%3A33%3A0%3A21%7CNikon.Model.2%3A246%3A308%3A22.5%3A21%7CDon-Giannatti.Camera-Short-Lens.3%3A367%3A314%3A0%3A21%7CNikon.Flashgun-on-stand.4%3A298%3A130%3A45%3A21%7CDon-Giannatti.Umbrella-shoot-thru.5%3A247%3A184%3A45%3A21%7CNikon.Flashgun-on-stand.6%3A152%3A414%3A247.5%3A21%7C');
	}

	if (typeof notify == "undefined") {
		notify = false;
	}

	// For back compatibility
	objListString=objListString.replace(/Flashlight/, 'Light-torch');

	var container = document.getElementById('diagram_canvas');
        var baseTop = parseInt(container.offsetTop);
        var baseLeft = parseInt(container.offsetLeft);

	var objListSplitted = objListString.split("|");
	var objParms = new Array();
	for(var key in objListSplitted) {
		var objParmsString = objListSplitted[key];
		if(objParmsString.length != 0) {
			objParms = objParmsString.split(":");
			objID = objParms[0].split(".");

			if(objID[0] != "diagram_container") {	
				objParms[1] = parseInt(objParms[1]) + baseTop;
	                        objParms[2] = parseInt(objParms[2]) + baseLeft;
				var oldImageSetAuthor = imageSetAuthor;
				imageSetAuthor = objID[0];
				addElement(objID[1], objParms[4], objParms[1], objParms[2], objParms[3]);
				imageSetAuthor = oldImageSetAuthor;
			} else {
				// For back compatibility
				var curTop = parseInt(objParms[1]);
				var curLeft = parseInt(objParms[2]);
				baseTop = baseTop - curTop;
				baseLeft = baseLeft - curLeft;
			}
		}
	}

	if (notify) alert('Still beta. This URL can not work in the stable version.\n\nYou can now bookmark this URL and reload your diagram later or share your lighting setup with other person by sending them the page URL:\n'+document.location.href);
}

function zIndexChange(objName) {
	var object = document.getElementById(objName);
	object.style.zIndex = parseInt(object.style.zIndex) + 10;
	if(parseInt(object.style.zIndex) > 21) object.style.zIndex = 1;
}

function removeElement(divNum) {
	var d = document.getElementById('diagram_container');
	var olddiv = document.getElementById(divNum);
	d.removeChild(olddiv);
}

function isInteger(s) {
	return (s.toString().search(/^-?[0-9]+$/) == 0);
}

function getImageCurrentAngle(imgURL) {
	var imgSplitted = imgURL.split("/");
        var imgFilename = imgSplitted[imgSplitted.length-1];
        var imgFilenameSplitted = imgFilename.split(".");
        var angle = imgFilenameSplitted[0];
	if(imgFilenameSplitted.length>2) var angle = parseFloat(imgFilenameSplitted[0] + '.' + imgFilenameSplitted[1]);
                else var angle = parseFloat(imgFilenameSplitted[0]);
//	angle = angle/100*100;
	var result = new Array();
	result[0] = angle;
	result[1] = imgSplitted;
	return result;
}

function rotateElement(image,reverse) {
	if(typeof reverse == "undefined") reverse=false;
	var img = document.getElementById(image);
	var result = getImageCurrentAngle(img.src);
	var angle = result[0];
	var imgSplitted = result[1];
	
	if(!reverse) {
		angle = angle + angleStep;
		if(angle>=360) angle=0;
	} else {
		angle = angle - angleStep;
		if(angle<0) angle=360 - angleStep;
	}

	imgSplitted[imgSplitted.length-1] = angle + '.png';
	
	var newImgSrc = imgSplitted.join("/");
	img.src = newImgSrc;
	preloadObjectSubimg(image);
}

