var formatUrl = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<input type=\"checkbox\" name= \"id[]\" value=" + oRecord.getData("campaignID") + " class='checkOption'>&nbsp;&nbsp;<a href='campaigns/targets?cID=" + oRecord.getData("campaignID") + "'>" + sData + "</a>&nbsp;&nbsp;&nbsp;<a class='edit' href='campaigns/editCampaign?cID=" + oRecord.getData("campaignID") + "'><img src='../images/edit_icon.gif' alt='edit_campaign' class ='toolTip' title = 'Edit this campaign'></a>";

};
var formatStatus = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML ="<img src='../images/" + oRecord.getData("estado") + "_icon.gif' alt='"+ oRecord.getData("estado") + "' id= '"+ oRecord.getData("estado") + "' class ='toolTip' title = 'status: " + oRecord.getData("estado") + "'>&nbsp;" + oRecord.getData("estado");
};
var formatTargetUrl = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<input type=\"checkbox\" name= \"id[]\" value=" + oRecord.getData("targetID") + " class='checkOption'>&nbsp;&nbsp;<a href='campaigns/ads?cID="+oRecord.getData("campaignId")+"&tID=" + oRecord.getData("targetID") + "'>" + sData + "</a>&nbsp;&nbsp;<a class='edit' href='campaigns/editTarget?cID="+oRecord.getData("campaignId")+"&tID=" + oRecord.getData("targetID") + "'><img src='../images/edit_icon.gif' alt='edit_target' class ='toolTip' title = 'Edit this target'></a>";
};

var formatAdUrl = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<input type=\"checkbox\" name= \"id[]\" value=" + oRecord.getData("adID") + " class='checkOption'>&nbsp;&nbsp;" + sData + "&nbsp;&nbsp;<a class='edit' href='campaigns/editAd?&aID=" + oRecord.getData("adID") + "'><img src='../images/edit_icon.gif' alt='edit_ad' class ='toolTip' title = 'Edit this ad'></a>";
};

var formatAdDetail = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<img width='120' height='20' src='http://adsmedia.freshmovil.com/mgmt/creative_preview.php?CreativeID=" + sData + "'>";
};
var formatOperation = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = sData;
};
var formatSendInvoice = function(elCell, oRecord, oColumn, sData) {
		if ((oRecord.getData("opStatus") === 'ok')&&(oRecord.getData("opType") === 'Funds Addition')){
            elCell.innerHTML = "<a class='edit' href='action/enviarFactura.php?oID=" + oRecord.getData("operation") + "&uID"+ oRecord.getData("userId") + "'><img src='../images/send_icon.gif' alt='send_again' border='0' class ='toolTip' title = 'Send invoice Again'></a>";
			}else{
				elCell.innerHTML = "";
			}
};
var formatSite = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<input type=\"checkbox\" name= \"id[]\" value=" + oRecord.getData("siteID") + " class='checkOption'>&nbsp;&nbsp;" + sData + "&nbsp;&nbsp;&nbsp;<a href='sites/editSite?sID=" + oRecord.getData("siteID") + "'><img src='../images/edit_icon.gif' alt='edit_site' class ='toolTip' title = 'Edit this site'></a>&nbsp;&nbsp;&nbsp;<a href='sites/getCode?sID=" + oRecord.getData("siteID") + "'>Get Code</a>";
};
var formatEuro = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = sData + "&nbsp;&euro;";
};
var formatSelectSite = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<input type=\"checkbox\" name= \"site_" + oRecord.getData("siteId") + "\"  value=\"checked\" class='checkOption' " + oRecord.getData("checked") + ">&nbsp;&nbsp;" + sData;
};

 var formatOpStatus = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML ="<img src='../images/" + oRecord.getData("opStatus") + "_icon.gif' alt='"+ oRecord.getData("opStatus") + "' id= '"+ oRecord.getData("opStatus") + "' class ='toolTip' title = 'status: " + oRecord.getData("opStatus") + "'>&nbsp;" + oRecord.getData("opStatus");
};
var formatRanking = function(elCell, oRecord, oColumn, sData) {
	elCell.innerHTML = "<div id=\"site_ranking\"><img src=\"../images/ranking_mig.gif\" alt='"+ oRecord.getData("ranking") + "%' class ='toolTip' border=\"0\" width="+ oRecord.getData("ranking") + "%\" height=\"15px\" >"
};
function drawTable(divID, myColumnDefs, dataURL, campos, additionalOptions) {
        myDataSource = new YAHOO.util.DataSource(dataURL);
        myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
        myDataSource.connXhrMode = "queueRequests";
        myDataSource.responseSchema = {
            resultsList: "data",
            fields: campos
        };
	var options;
	if (typeof(additionalOptions) == 'undefined') {
                options = {paginator:new YAHOO.widget.Paginator({rowsPerPage: 10})};
	} else {
                options = YAHOO.lang.merge({paginator:new YAHOO.widget.Paginator({rowsPerPage: 10})},additionalOptions);
	}
        var myDataTable = new YAHOO.widget.DataTable(divID, myColumnDefs, myDataSource, options);
        return {
            oDS: myDataSource,
            oDT: myDataTable
        };
    
}
function drawTotalTable(divID, myColumnDefs, dataURL, campos) {
        myDataSource = new YAHOO.util.DataSource(dataURL);
        myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
        myDataSource.connXhrMode = "queueRequests";
        myDataSource.responseSchema = {
            resultsList: "data",
            fields: campos
        };
		
		var myDataTable = new YAHOO.widget.DataTable(divID, myColumnDefs,
		myDataSource);
        return {
            oDS: myDataSource,
            oDT: myDataTable
        };
    
}
function drawTargetFormSitesTable(divID, myColumnDefs, dataURL, campos) {
        var myDataSource = new YAHOO.util.LocalDataSource(dataURL);
        myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
        //myDataSource.connXhrMode = "queueRequests";
        myDataSource.responseSchema = {
            resultsList: "data",
            fields: campos
        };

        var myDataTable = new YAHOO.widget.DataTable(divID, myColumnDefs,
                myDataSource, {paginator:new YAHOO.widget.Paginator({rowsPerPage: 10})}
                );

        return {
            oDS: myDataSource,
            oDT: myDataTable
        };
    
}

refreshCampaignsTable = function() {
              var columnDefs = [
                    {key:"name", label:"Campaign", sortable:true, formatter:formatUrl},
                    {key:"budget", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"estado", label:"status", sortable:true, formatter:formatStatus},
                    {key:"clics", formatter:"number", sortable:true},
                    {key:"imps", formatter:"number", sortable:true},
                    {key:"CTR", sortable:true},
                    {key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"cost", formatter:"number", sortable:true, formatter:formatEuro}
                ];
                var result = drawTable(
                        "campaign_table",
                        columnDefs,
                        "/action/getCampaigns",
                        ["name",{key:"budget",parser:"number"},"estado",{key:"clics",parser:"number"},{key:"imps",parser:"number"},"CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"},"campaignID"],
						{sortedBy:{key:"estado", dir:"asc"}}
                );
//		result.oDT.sortColumn(result.oDT.getColumn("budget"),null);
        }

function drawCampaignsTable() {
     YAHOO.util.Event.addListener(window, "load", refreshCampaignsTable);
}

refreshTotalTable = function() {

		if(document.getElementById("campaign_table")) dataType = "campaign";
		if(document.getElementById("targets_table")) dataType = "target";
		if(document.getElementById("site_table")) dataType = "site";
		if(document.getElementById("ads_table")) dataType = "ad";
				
              var totalColumnDefs = [
					{key:"total"},
                    {key:"clics", formatter:"number"},
                    {key:"imps", formatter:"number"},
                    {key:"CTR"},
                    {key:"CPM", formatter:"number", formatter:formatEuro},
					{key:"CPC", formatter:"number", formatter:formatEuro},
                    {key:"cost", formatter:"number", formatter:formatEuro}
                ];
                drawTotalTable(
					dataType+"_total_table",
					totalColumnDefs,
					"/action/getDataTotal?dataType="+dataType,
					["total",{key:"clics",parser:"number"},{key:"imps",parser:"number"},"CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"}]
                );
        }

function drawTotalDataTable() {
     YAHOO.util.Event.addListener(window, "load", refreshTotalTable);
}

var refreshTargetsTable;

function drawTargetsTable(cID) {

	refreshTargetsTable = function() {
              var columnDefs = [
                    {key:"target_name", label:"Target", sortable:true, formatter:formatTargetUrl},
                    {key:"type", sortable:true},
                    {key:"estado", label:"status", sortable:true, formatter:formatStatus},
                    {key:"clics", formatter:"number", sortable:true},
                    {key:"imps", formatter:"number", sortable:true},
                    {key:"CTR", sortable:true},
                    {key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
                                        {key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"cost", formatter:"number", sortable:true, formatter: "number", formatter:formatEuro}
                ];
                drawTable(
                        "targets_table",
                        columnDefs,
                        "/action/getTargets?cID="+cID,
                        ["target_name","type","estado",{key:"clics",parser:"number"},{key:"imps",parser:"number"},"CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"},"targetID","campaignId"]
                );
        }

     YAHOO.util.Event.addListener(window, "load", refreshTargetsTable);
}

function drawAdsTable(cID, tID) {
     YAHOO.util.Event.addListener(window, "load", function() {
              var columnDefs = [
                    {key:"ad_name", label:"Ad name", sortable:true, formatter:formatAdUrl},
                    {key:"adserverCreativeId", label:"details", sortable:true, formatter:formatAdDetail},
                    {key:"estado", label:"status", sortable:true, formatter:formatStatus},
                    {key:"clics", formatter:"number", sortable:true},
                    {key:"imps", formatter:"number", sortable:true},
                    {key:"CTR", sortable:true},
                    {key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
					{key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"cost", formatter:"number", sortable:true, formatter:formatEuro}
                ];
                drawTable(
                        "ads_table",
                        columnDefs,
                        "/action/getAds?tID="+tID,
                        ["ad_name","adserverCreativeId","estado",{key:"clics",parser:"number"},{key:"imps",parser:"number"},"CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"},"adID","url"]
                );
        });
}

function drawReportTable() {
     YAHOO.util.Event.addListener(window, "load", function() {
              var columnDefs = [
                    {key:"date",  formatter:"date", label:"Date", sortable:true},
                    {key:"clics", formatter:"number", sortable:true},
                    {key:"imps", formatter:"number", sortable:true},
                    {key:"CTR", formater:"number", sortable:true},
                    {key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
		    {key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
                    {key:"cost", formatter:"number", sortable:true, formatter:formatEuro}
                ];
                drawTable(
                        "report_table",
                        columnDefs,
                        "/action/getReportData",
                        ["date",{key:"imps",parser:"number"},{key:"clics",parser:"number"},{key:"CTR",parser:"number"},{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"}]
                );
	    	var tabView = new YAHOO.widget.TabView('graphcontainer',{"orientation":"left"});
		impsChart = new YAHOO.widget.ColumnChart( "ImpsChart", myDataSource, {
		    backgroundcolor:0x000000,
		    xField: "date",
		    series: [{yField:"imps", style:{color:"#90D309"}}]
		});
                var clicksChart = new YAHOO.widget.ColumnChart( "ClicksChart", myDataSource, {
                    xField: "date",
                    series: [{yField:"clics", style:{color:"#90D309"}}]
                });
                var CTRChart = new YAHOO.widget.ColumnChart( "CTRChart", myDataSource, {
                    xField: "date",
                    series: [{yField:"CTR", style:{color:"#90D309"}}]
                });
                var CPMChart = new YAHOO.widget.ColumnChart( "CPMChart", myDataSource, {
                    xField: "date",
                    series: [{yField:"CPM", style:{color:"#90D309"}}]
                });
				var CPCChart = new YAHOO.widget.ColumnChart( "CPCChart", myDataSource, {
                    xField: "date",
                    series: [{yField:"CPC", style:{color:"#90D309"}}]
                });
                var CostChart = new YAHOO.widget.ColumnChart( "CostChart", myDataSource, {
                    xField: "date",
                    series: [{yField:"cost", style:{color:"#90D309"}}]
                });

         });
}
function drawOperationsTable() {
     YAHOO.util.Event.addListener(window, "load", function() {
	      var columnDefs = [
        	    {key:"operation", label:"Operation ID", formatter:"number", sortable:true, formatter:formatOperation},
				{key:"opType", label: "Type", sortable:true},
	            {key:"amount", formatter:"number", sortable:true, formatter:formatEuro},
				{key:"tax", formatter:"number", sortable:true, formatter:formatEuro},
				{key:"opStatus",label:"status",sortable:true, formatter: formatOpStatus},
				{key:"date",  formatter:"date", sortable:true},
				{key:"invoice", label:"send invoice", formatter:formatSendInvoice}
        	];
		drawTable(
			"operation_table",
			columnDefs,
			"/action/getOperations",
			[{key:"operation",parser:"number"},"opType",{key:"amount",parser:"number"},{key:"tax",parser:"number"},"opStatus",{key:"date", parser:"date"},"invoice"]
		);
	});
}


refreshSitesTable = function() {
	      var columnDefs = [
        	    {key:"site", label:"Site", sortable:true, formatter:formatSite},
	            {key:"clics", formatter:"number", sortable:true},
        	    {key:"imps", formatter:"number", sortable:true},
	            {key:"CTR", sortable:true},
        	    {key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
				{key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
	            {key:"cost", formatter:"number", label:"revenue",sortable:true, formatter:formatEuro}
        	];
		drawTable(
			"site_table",
			columnDefs,
			"/action/getSites",
			["site",{key:"clics",parser:"number"},{key:"imps",parser:"number"},"CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},{key:"cost",parser:"number"},"siteID"]
		);
}
function drawSitesTable() {
	YAHOO.util.Event.addListener(window, "load", refreshSitesTable);
}
function drawSelectedSitesTable(sites) {
			  var columnDefs = [
					{key:"name",label:"Site", sortable:true, formatter:formatSelectSite},
					{key:"CTR", sortable:true},
					{key:"CPM", formatter:"number", sortable:true, formatter:formatEuro},
					{key:"CPC", formatter:"number", sortable:true, formatter:formatEuro},
					{key:"adult", label:"adult advertising ", sortable:true},
					{key:"ranking", label:"matches", formatter:formatRanking}
				];
				drawTargetFormSitesTable(
					"site_table",
					columnDefs,
//					"/action/getAllSites",
					sites,
					["name","adult","CTR",{key:"CPM",parser:"number"},{key:"CPC",parser:"number"},"ranking","checked","siteId"]
				);
}

(function() {
	var tabView = new YAHOO.widget.TabView('siteCode');
})();

function drawSelectedSites() {
    // Define the callbacks for the asyncRequest
    var callbacks = {
	
	 success : function (o) {
            // Process the JSON data returned from the server
            try {
				drawSelectedSitesTable(o.responseText);
            }
            catch (x) {
                alert("JSON Parse failed!");
                return;
            }

            // The returned data was parsed into an array of objects.
            // Add a P element for each received message
        },

        failure : function (o) {
            if (!YAHOO.util.Connect.isCallInProgress(o)) {
//                alert("Async call failed!");
            }
        },

        timeout : 10000
    }

    // Make the call to the server for JSON data
	var siteDataCheckbox = new Array();
	var selectedInfo = new Array();
	siteDataCheckbox=YAHOO.util.Dom.getElementsByClassName('siteData','input');
	for(var i=0; i<siteDataCheckbox.length; i++){
		selectedInfo[i] = siteDataCheckbox[i].name + "=" + siteDataCheckbox[i].checked;
	}
	var postParams = selectedInfo.join("&");
	
	YAHOO.util.Connect.asyncRequest('POST',"/action/getAllSites", callbacks, postParams);
}


function drawTextInside(id, text) {
	if(element = document.getElementById(id)) {
		element.innerHTML=text;
	}
}


function drawBid() {
    // Define the callbacks for the asyncRequest
    var callbacks = {

         success : function (o) {
            // Process the JSON data returned from the server
            try {
		var response = YAHOO.lang.JSON.parse(o.responseText);
		minBid = response['data']['minbid'];
                drawTextInside("minimum_bid", minBid);
		if (bidInput = document.getElementById("bid")) {
			if (bidInput.value < minBid) bidInput.value = minBid;
		}
            }
            catch (x) {
                alert("JSON Parse failed!");
                return;
            }
        },

        failure : function (o) {
            if (!YAHOO.util.Connect.isCallInProgress(o)) {
//                alert("Async call failed!");
            }
        },

        timeout : 10000
    }

    // Make the call to the server for JSON data
        var siteDataCheckbox = new Array();
        var selectedInfo = new Array();
        siteDataCheckbox=YAHOO.util.Dom.getElementsByClassName('siteData','input');
        for(var i=0; i<siteDataCheckbox.length; i++){
                selectedInfo[i] = siteDataCheckbox[i].name + "=" + siteDataCheckbox[i].checked;
        }
        var postParams = selectedInfo.join("&");

        YAHOO.util.Connect.asyncRequest('POST',"/action/getMinimumBid", callbacks, postParams);
}



YAHOO.util.Event.addListener(window, "load", function() {
	var siteDataElements = YAHOO.util.Dom.getElementsByClassName('siteData','input');
	if (siteDataElements.length > 0) {
		YAHOO.util.Event.on(siteDataElements, "change", updateSitesTable); 
	}

});

function sendSelectedDates(nMonth, nDay, nYear, instance) {
    // Define the callbacks for the asyncRequest
    var callbacks = {

        success : function (o) {
                        try {
				if(document.getElementById("campaign_table")) refreshCampaignsTable();

                if(document.getElementById("targets_table")) refreshTargetsTable();

				if(document.getElementById("site_table")) refreshSitesTable();

				refreshTotalTable();
				 
                        }
                        catch (x) {
                                alert("JSON Parse failed!");
                                return;
                        }
                },

    failure : function (o) {
            if (!YAHOO.util.Connect.isCallInProgress(o)) {
//                alert("Async call failed!");
            }
        },

        timeout : 10000
    }

        var arrDates = new Array();
        arrDates[0] = "nMonth="+nMonth;
        arrDates[1] = "nDay="+nDay;
        arrDates[2] = "nYear="+nYear;
        arrDates[3] = "instance="+instance;


        /*for (var i = 0; i < arrDates.length; ++i) {
                var date = arrDates[i];
        }*/

        var postParams = arrDates.join("&");
        YAHOO.util.Connect.asyncRequest('POST',"/action/saveDates", callbacks, postParams);
}


