﻿function OnCommand(sender, args) {
    var cmd = args.get_commandName();
    if (cmd === "InsertSnippet") {
        sender.pasteHtml(args.get_value());
        args.set_cancel(true);
    }
    else if (cmd === "AboutDialog") {
        args.set_cancel(true);
    }
}

function SizeChanged() {
   //TODO: Resizing columns pushes the rightmost column to the right
   // a couple pixels (and potentially off the screen) each time.
   //Do something here to correct that.
}

function test() {
    alert('html');
   }

function EditorLoaded(sender, args) {
    sender.pasteHtml('  ');
    var isPostBack = false; // TODO: implement real javascript isPostBack
    if (!isPostBack) {
        var tool = sender.getToolByName('GetGrid');
        tool.flag = true;
        tool.setState(1);
    }
    var editor=sender.get_element();
    //editor.setFocus();
}

function GridLoaded(sender, args) {
	var table=sender.get_element().getElementsByTagName('table')[0];
	if (!table) return;
	var sorter = new TableSorter(table.id);
	
	var header = table.getElementsByTagName('tr')[0];
	var cols = header.getElementsByTagName('th');
	
	var Posts = ["QUESTIONID", "ANSWERID", "POSTID", "PARENTID"];
	var Users = ["USERID"];
	var Logs =  ["LOGID"];
	
	var check = function(name, array) {
		var exp = name.toUpperCase();
		for (var i=0;i<array.length;i++) {
		    if  (exp == array[i] || exp.match(array[i] + '$') == array[i])
			    return true;
		}
		return false;
	}
	
	for (var i=0;i<cols.length;i++)
	{
		var name = cols[i].UniqueName;
		cols[i].title = name;
		
		if (check(name, Posts))
		{
		    UpdateColumn(table, i, function(s) {
				return '<a href="http://stackoverflow.com/questions/' + s + '">' + s + '</a>';
			}
			);
		}
		else if (check(name, Users))
		{
		    UpdateColumn(table, i, function(s) {
				return '<a href="http://stackoverflow.com/users/' + s + '">' + s + '</a>';
			}
			);
		}
		else if (check(name, Logs))
		{
			UpdateColumn(table, i, function(s) {
				return '<a href="?qid=' + s + '">' + s + '</a>';
			}
			);
		}
	}
	
}

function UpdateColumn(tableElement, columnIndex, transformation)
{
	var rows = tableElement.getElementsByTagName('tr');
	if (!rows) return;
	for (var i=0;i<rows.length;i++)
	{
	    var cols = rows[i].getElementsByTagName('td');
		if (cols.length > columnIndex && !isNaN(cols[columnIndex].innerHTML))
			cols[columnIndex].innerHTML = transformation(cols[columnIndex].innerHTML);
	}
}