dojo.require("dojo.parser");

dojo.require("dijit.form.Form");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.form.NumberTextBox");
dojo.require("dijit.form.ValidationTextBox");
dojo.require("dijit.form.SimpleTextarea");
dojo.require("dijit.form.Button");

dojo.require("dojox.image.Lightbox");

dojo.provide("sanimar.bal");

dojo.addOnLoad(function() {
	// stupid IE does not like div background - need to actually add image to lightbox next/prev/close buttons
	if(dojo.isIE) {
		dojo.forEach(dojo.query("div.dijitInline.LightboxPrev"), function(item) {
			dojo.place("<img src=\"client/images/left.gif\"/>", item);
		});
		dojo.forEach(dojo.query("div.dijitInline.LightboxNext"), function(item) {
			dojo.place("<img src=\"client/images/right.gif\"/>", item);
		});
		dojo.forEach(dojo.query("div.dijitInline.LightboxClose"), function(item) {
			dojo.place("<img src=\"client/images/close.gif\"/>", item);
		});
	}
});

/**
 * used on testimonial screen to initiate update of testimonials
 * using the pencile button next to each testimonial
 */
sanimar.bal.onTestimonialEdit = function(anchor) {
    // get testimonial id - stored in id field of anchor
    var id = dojo.attr(anchor, "id");
    // get title and testimonial div
    var title = dojo.byId("title" + id);
    var testimonial = dojo.byId("testimonial" + id);

    dojo.byId("id").value = id;
    dojo.byId("title").value = title.innerHTML;
    dijit.byId("testimonial").set("value", testimonial.innerHTML);

    dojo.style(dojo.byId("error"), "display", "none");
    dijit.byId("title").focus();
};

sanimar.bal.onBudgetKeyUp = function(event, resultGroup) {
    var id = sanimar.bal.getId(event);
    sanimar.bal.onBudgetChange(id);
    sanimar.bal.onBudgetSubPopulate(resultGroup);
    sanimar.bal.onBudgetTotalPopulate();
};

sanimar.bal.getId = function(event) {
    event = event || window.event;
    var target = event.originalTarget || event.srcElement;

    if(!target) {
        return null;
    }

    if(0 == target.id.indexOf("you")) {
        return target.id.substr(3);
    }
    return target.id;
}

sanimar.bal.onBudgetChange = function(idToUse) {
    var qtyCtrl = dijit.byId(idToUse);
    var resultCtrl = dojo.byId("result" + idToUse);
    var resultTxtCtrl = dojo.byId("resulttext" + idToUse);

    if(!resultCtrl || !resultTxtCtrl) {
        return;
    }

    var arr = sanimar.bal.calculate(qtyCtrl);
    var val = "$" + arr[2] + " - $" + arr[3];
    if(arr[2] == arr[3]) {
        val ="$" + arr[2];
    }
    resultTxtCtrl.value = resultCtrl.innerHTML = val;

};

sanimar.bal.onBudgetSubPopulate = function(resultGroup) {
    var minVal = 0;
    var maxVal = 0;
    var qty = 0;
    var yourresult = 0;
    dojo.forEach(dojo.query("input[id^=" + resultGroup + "]"), function(target) {
        var arr = sanimar.bal.calculate(target);
        qty += arr[0];
        yourresult += arr[1];
        minVal += arr[2];
        maxVal += arr[3];
    });

    dojo.byId("qty" + resultGroup).innerHTML = qty;
    dojo.byId("yourresult" + resultGroup).innerHTML = "$" + yourresult;

    if(minVal == maxVal) {
        dojo.byId("result" + resultGroup).innerHTML = "$" + minVal;        
    }
    else {
        dojo.byId("result" + resultGroup).innerHTML = "$" + minVal + " - $" + maxVal;
    }
};

sanimar.bal.onBudgetTotalPopulate = function() {
    var minVal = 0;
    var maxVal = 0;
    var qty = 0;
    var yourresult = 0;

    dojo.forEach(dojo.query("input[id^=sub]"), function(target) {
        var arr = sanimar.bal.calculate(target);
        qty += arr[0];
        yourresult += arr[1];
        minVal += arr[2];
        maxVal += arr[3];
    });

    if(minVal == maxVal) {
        dojo.byId("total").innerHTML = "$" + minVal
    }
    else {
        dojo.byId("total").innerHTML = "$" + minVal + " - $" + maxVal;        
    }
    dojo.byId("totaltext").value = dojo.byId("total").innerHTML;
};

sanimar.bal.calculate = function(target) {

    var qty=0, yourResult=0, minVal=0, maxVal=0;

    var minCtrl = dojo.byId("min" + target.id);
    var maxCtrl = dojo.byId("max" + target.id);
    var yourTotalCtrl = dijit.byId("you" + target.id);
    target = dijit.byId(target.id);

    if(target
            && /\d/.test(target.get("value"))
            && target.get("value") >= 0
            && /\d/.test(minCtrl.innerHTML)
            && /\d/.test(maxCtrl.innerHTML)) {
        qty = parseInt(target.get("value"));
    }

    if(!/\d/.test(yourTotalCtrl.get("value"))
        || yourTotalCtrl.get("value") < 0) {

        minVal = minCtrl.innerHTML * qty;
        maxVal = maxCtrl.innerHTML * qty;
    }
    else {
        yourResult = parseInt(yourTotalCtrl.get("value"));
        minVal = maxVal = yourResult * qty;
    }

    return Array(qty,yourResult, minVal, maxVal);
}

sanimar.bal.onBudgetReset = function(numSubGroups) {
    dojo.forEach(dojo.query("input[id^=sub]"), function(target) {
        if("sub5cell1" != target.id) {
            dijit.byId(target.id).set("value", "")
            dijit.byId("you" + target.id).set("value", "");
            dojo.byId("resulttext" + target.id).value = "";
        }
        sanimar.bal.onBudgetChange(target);
    });
    for(var i = 1; i <= numSubGroups; i++) {
        sanimar.bal.onBudgetSubPopulate("sub" + i + "cell");
    }
    sanimar.bal.onBudgetTotalPopulate();

    dojo.byId("name").value="";
    dojo.byId("date").value="";
    dojo.byId("comments").value="";
};

