'use strict';
/*global require, __plugin, org*/
var Drone = require('drone'),
    blocks = require('blocks');
/************************************************************************
### Drone.hangtorch() method

Adds a hanging torch to a wall. This method will try to hang a torch
against a wall. It will traverse backwards until it finds a block
adjacent to air and hang the torch. If it can't find a block next to
air it will log a message in the server.

#### Example

At the in-game prompt you can create a hanging torch by looking at a
block and typing:

```javascript
/js hangtorch()
```

Alternatively you can create a new Drone object from a Player or
Location object and call the hangtorch() method.

```javascript
var d = new Drone(player);
d.hangtorch();
```

***/
function canHang( block ) {

  if (__plugin.bukkit){
    var bkMaterial = org.bukkit.Material;
    if ( block.type.equals(bkMaterial.AIR) ||
	 block.type.equals(bkMaterial.VINE) ) {
      return true;
    } 
  }
  if (__plugin.canary){
    if (block.typeId == blocks.air || 
	block.typeid == blocks.vines ) {
	return true;
    }
  }
  return false;
}  
function hangtorch() { 
  var torch = blocks.torch + ':' + Drone.PLAYER_TORCH_FACING[this.dir];
  var moves = 0;
  var block = this.getBlock();

  while ( !canHang(block) ){

    moves++;
    this.back();
    if (moves == 10){
      this
	.fwd(moves);
      console.log('nowhere to hang torch');
      return;
    }
    block = this.getBlock();
  }
  this
    .box(torch)
    .fwd(moves);
}
Drone.extend(hangtorch);
