/* 
 This file was generated by Dashcode.  
 You may edit this file to customize your widget or web page 
 according to the license.txt file included in the project.
 */

var sliderValues = {};
var sliderOffsetXs = {};

//
// Function: load()
// Called by HTML body element's onload event when the web application is ready to start
//
function load()
{
    dashcode.setupParts();
    sliderValues['volume'] = .5;
    drawSlider('volume');
}

function drawSlider(sliderName)
{
    slider = document.getElementById(sliderName);
    value = sliderValues[sliderName];
    
    ctx = slider.getContext("2d");
    w = slider.width;
    h = slider.height;
    
    thumbWidth = h;
    thumbX = value * (w-thumbWidth);

    ctx.fillStyle = "rgb(0,0,255)";
    ctx.fillRect (0, 0, thumbX, h);

    ctx.fillStyle = "rgb(0,0,0)";
    ctx.fillRect (thumbX, 0, w-thumbX, h);

    ctx.fillStyle = "rgb(255, 127, 0)";
    ctx.fillRect (thumbX, 0, thumbWidth, h);
    
    ctx.strokeStyle = "rgb(255,255,255)";
    ctx.strokeWidth = 2;
    ctx.strokeRect (0, 0, w, h);
    ctx.strokeRect (thumbX, 0, thumbWidth, h);
}

function sendMessage(event)
{
    sendOSC(document.getElementById('message').value);
}

function receiveOSC()
{
    var foo = "Got this message:<br>";
    for (var i=0; i < arguments.length; i++) {
        foo += arguments[i] + " ";
    }
    document.getElementById('text').innerHTML = foo;
}

function buttonClick(event)
{
    sendOSC("/button", this.element.parentNode.innerText);
}

function sliderSet(sliderName, value)
{
    value = Math.min(1.0, Math.max(0.0, value));
    sliderValues[sliderName] = value;
    drawSlider(sliderName);
    sendOSC("/slider/"+sliderName, value);
}

function sendOSC()
{
    var url = "osc:" + arguments[0] + "?";
    for (var i=1; i<arguments.length; i++) {
        if (typeof arguments[i] === "number") {
            url += "f="+arguments[i]+"&";
        }else{
            url += "s="+arguments[i]+"&";
        }
    }
    url = url.slice(0,-1);
    //console.log(url);
    window.location.href=url;
}

function sliderStart(event)
{
    var sliderName = event.target.id;
    var slider = event.target;
    var value = sliderValues[sliderName];
    var valuex = value * (slider.width - slider.height);
    var touchx = event.targetTouches[0].clientX;
    sliderOffsetXs[sliderName] = touchx - valuex;
}


function sliderMove(event)
{
    var sliderName = event.target.id;
    var slider = event.target;
    var touchx = event.targetTouches[0].clientX;
    var valuex = touchx - sliderOffsetXs[sliderName];
    var value = valuex / (slider.width - slider.height);
    sliderSet(sliderName, value);
}


function sliderEnd(event)
{
    var sliderName = event.target.id;
    drawSlider(sliderName);
}


function preventScrolling(event)
{
    event.preventDefault();
}
