//copyright 2007 boxily inc
var selected=[];var lines=[];var selected_line;var blocks=[];var start_click=[];var undo_array=[];var copy;var text_edit_block;function dialog_contents(new_contents,fade){Element.hide($('line_formatter'));Element.hide($('text_formatter'));if(fade){new Effect.Opacity('dialog',{duration:.2,from:1.0,to:0.0});$("dialog").style.display="none";$("dialog").innerHTML=new_contents;new Effect.Appear('dialog',{duration:.2});}
else{$("dialog").innerHTML=new_contents;}}
function connection_down(){dialog_contents("Connection is not working.",true);alert('Connection is not working.  Check your internet connection, and try again.  If problem persists, please email feedback@boxily.com.');}
function save_layout(){var width=parseInt($('workspace').style.width);var height=parseInt($('workspace').style.height);var pars='id='+project_id+'&width='+width+'&height='+height+'&bgimage='+$('workspace').style.backgroundImage;}
function undo(){if(undo_array.length>0){undo_array.pop()();}}
function select_all(){selected=[];blocks.each(function(block){select_block(true,block.name);});}
function snap_toggle(){blocks.each(function(block){if(snap=="off"){block.options.snap=snap_grid_on;}
else{block.options.snap=snap_grid_off;}});if(snap=="off")
{snap="on";}
else
{snap="off";}
dialog_contents("Snap to grid is "+snap,true);}
function set_background(bgimage,dialog){$('workspace').style.backgroundImage=bgimage;if(!dialog)dialog_contents('Background Changed',true);save_layout();}
function get_index(array,attribute,attribute_value){for(i=0;i<array.length;i++){eval("var x = array["+i+"]."+attribute);if(x==attribute_value){return i;}}
return-1;}
function load_library(lib_name){pars="project_id="+project_id;$('block_buttons').innerHTML="<img src=\"/images/ajax-loader.gif\" />";new Ajax.Updater('block_buttons','/demo_library/'+lib_name,{parameters:pars,asynchronous:true,evalScripts:true,onException:connection_down,onFailure:connection_down});}
function keypressed(e){if(e.keyCode==46){if(selected.length>0)delete_blocks();if(selected_line)selected_line.delete_line();selected_line=false;}
if((e.keyCode==37)||(e.keyCode==38)||(e.keyCode==39)||(e.keyCode==40)){selected.each(function(block){var pos=Position.cumulativeOffset(block.element);var workspace=$('workspace');switch(e.keyCode){case 37:if((pos[0]-20)>workspace.offsetLeft){new Effect.MoveBy(block.name,0,-20,{duration:.1,afterUpdate:function(){block.options.blocklines.each(function(linename){lines[linename].draw()});},afterFinishInternal:function(){block.options.blocklines.each(function(linename){lines[linename].draw(true)});block.save();}});}
break;case 38:if((pos[1]-20)>workspace.offsetTop){new Effect.MoveBy(block.name,-20,0,{duration:.1,afterUpdate:function(){block.options.blocklines.each(function(linename){lines[linename].draw()})},afterFinishInternal:function(){block.options.blocklines.each(function(linename){lines[linename].draw(true)});block.save();}});}
break;case 39:if((pos[0]+20+block.w)<(workspace.offsetLeft+workspace.offsetWidth)){new Effect.MoveBy(block.name,0,20,{duration:.1,afterUpdate:function(){block.options.blocklines.each(function(linename){lines[linename].draw()});},afterFinishInternal:function(){block.options.blocklines.each(function(linename){lines[linename].draw(true)});block.save();}});}
break;case 40:if((pos[1]+20+block.h)<(workspace.offsetTop+workspace.offsetHeight)){new Effect.MoveBy(block.name,20,0,{duration:.1,afterUpdate:function(){block.options.blocklines.each(function(linename){lines[linename].draw()});},afterFinishInternal:function(){block.options.blocklines.each(function(linename){lines[linename].draw(true)});block.save();}});}
break;};});}
if((e.charCode==99)&&(e.ctrlKey)){}
if((e.charCode==97)&&(e.ctrlKey)){select_all();}}
function startdrawbox(e){var x=Event.pointerX(e)-$('workspace').offsetLeft;var y=Event.pointerY(e)-$('workspace').offsetTop;start_click=[x,y];unselect_blocks();restore_line();Event.observe(document,'mouseup',undrawbox);Event.observe('workspace','mousemove',function(e){x2=Event.pointerX(e)-$('workspace').offsetLeft;y2=Event.pointerY(e)-$('workspace').offsetTop;if((x2>x)&&(y2>y)){workspacecanvas.clear();workspacecanvas.setColor("#000000");workspacecanvas.drawRect(x,y,x2-x-4,y2-y-4)
workspacecanvas.setColor("#fcfcfc");workspacecanvas.fillRect(x+2,y+2,x2-x-6,y2-y-6)
workspacecanvas.paint();start_click[2]="pos";};if((x2<x)&&(y2<y)){workspacecanvas.clear();workspacecanvas.setColor("#000000");workspacecanvas.drawRect(x2,y2,x-x2,y-y2)
workspacecanvas.setColor("#fcfcfc");workspacecanvas.fillRect(x2+2,y2+2,x-x2-2,y-y2-2)
workspacecanvas.paint();start_click[2]="neg";}});}
function undrawbox(e){Event.stopObserving(document,'mouseup',undrawbox);x3=Event.pointerX(e);y3=Event.pointerY(e);workspacecanvas.clear();Event.observers.each(function(observer){if(observer[0].id=="workspace"&&observer[1]=="mousemove"){Event.stopObserving.apply(this,observer);}});wspace=$('workspace');blocks.each(function(block){if(($(block.name).offsetLeft<x3)&&($(block.name).offsetLeft>(wspace.offsetLeft+start_click[0]))&&($(block.name).offsetTop<y3)&&($(block.name).offsetTop>start_click[1])&&(start_click[2]=="pos")){select_block(true,block.name)};if(($(block.name).offsetLeft>x3)&&($(block.name).offsetLeft<start_click[0])&&($(block.name).offsetTop>y3)&&($(block.name).offsetTop<start_click[1])&&(start_click[2]=="neg")){select_block(true,block.name)};});}
