{
    "d": [
        {
            "AssignmentID": 26188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26189,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "HDRS",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": "3/17/2010",
            "DeletedFlag": false,
            "CssClass": "clear"
        },
        {
            "AssignmentID": 25068,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "STRUCT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 31420,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "ENG",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2688,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2689,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2508,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 3142,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 6188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2189,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 268,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 31,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 28,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 189,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 5068,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 3140,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 8,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26185469,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 25058468,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 31345420,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 22346188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26156789,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "HDRS",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 28755068,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "HDRS",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 314383820,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "HDRS",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "HDRS",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 260987189,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2501736368,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 31428538560,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "7/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2615672288,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 2618768003389,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 233356785068,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "6/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 3140058520,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "10/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26349711189,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 25056722345668,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "11/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 3140670504393220,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "12/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26156687372188,
            "Job": "11122233A",
            "Customer": "ABC",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "3/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "John_Doe",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 26181634567899009,
            "Job": "1122546",
            "Customer": "STI",
            "Model": "F",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1268802000000)/",
            "PrintDueAsString": "1/17/2010",
            "DraftingFunction": "CERT",
            "Assigned": "James_Stevens",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Mike_Smith",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 25068585454548,
            "Job": "546846",
            "Customer": "EXT",
            "Model": "SU",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1277182800000)/",
            "PrintDueAsString": "1/22/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Kip_Davis",
            "Status": "Issued",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "C",
            "EngIssuedDate": null,
            "DeletedFlag": false,
            "CssClass": "overdue"
        },
        {
            "AssignmentID": 3142277435601120,
            "Job": "874956FA",
            "Customer": "Johnson_Tech",
            "Model": "RT",
            "PrintStart": null,
            "PrintStartAsString": null,
            "SideFrameStart": null,
            "PrintDue": "/Date(1280552400000)/",
            "PrintDueAsString": "2/31/2010",
            "DraftingFunction": "CERT",
            "Assigned": "Herbie_Hancock",
            "Status": "",
            "OrderDueDate": null,
            "StartDueDateDiff": null,
            "Engineer": "Fred_Jones",
            "EngStat": "R",
            "EngIssuedDate": null,
            "DeletedFlag": true,
            "CssClass": "overdue"
        }
    ]
}
{"d":[{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 1","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 2","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 3","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 4","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 5","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 6","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 7","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 8","UserName":"King Kong","NoteID":368},{"NoteDate":"9/17/2011 10:38 AM","Note":"Example Note 9","UserName":"King Kong","NoteID":368}]}
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>AngularJS Plunker</title>
  <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">
  <link rel="stylesheet" href="angular-ui.min.css">
  <link rel="stylesheet" href="style.css">
  <link rel="stylesheet" href="ng-grid.css">
  
  <script>document.write("<base href=\"" + document.location + "\" />");</script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  <script src="https://raw.github.com/angular-ui/bootstrap/master/src/modal/modal.js"></script>
  <script src="ng-grid.js"></script>
  <script src="underscore-min.js"></script>
  <script src="app.js"></script>
  
</head>
<body>

  <div>
    <div class="container" data-ng-app="myApp">

      <div><span class="label label-info">Reference Post:</span> <a href="https://groups.google.com/forum/?fromgroups=#!topic/angular/TATJYwTRFOQ">https://groups.google.com/forum/?fromgroups=#!topic/angular/TATJYwTRFOQ</a></div>
      <div data-ng-controller="AppController">
 
        <div class="ngGrid" >
          <h2>ngGrid</h2>
          <h5>Click the Edit icon for a row to open the modal</h5>
          <div>
            <div ng-grid="GridItems" class="well"></div>
          </div>
        </div>

        <ng-include src="'partial-modal.html'"></ng-include>
      </div>
    </div>
  </div>
</body>
</html>
var app = angular.module('myApp', ['ngGrid']);




// Controller for the Notes section of the modal
app.controller('NotesCtrl', function($scope, Notes){
  $scope.getNotes = function(data) {
    var params = {
      assignmentText: null,
      AssignmentID: data,
      RecordCount: 0,
      MaxNoteLength: 0
    };
    var notesPromise = Notes.get(params);
      notesPromise.then(function(data) {
        $scope.noteItems = data.d;
        return $scope.noteItems;
      });
  };
});





// Main Controller which holds the grid
// Event to open the modal is fired by
// clicking the edit icon for a row.
app.controller('AppController', function($scope, $http, Assignment, Drafter, Notes) {
  
  // This is fired when the edit icon is clicked
  $scope.editRow = function(row){
      
      $scope.shouldBeOpen = true;
      $scope.currentAssignment = row.entity;
      $scope.currentAssignmentNotes = $scope.noteItems;
      $scope.getNotes(row.entity.AssignmentID); 
    };
  



function DateSortFn(a,b){
       console.log('a', a);
      // console.log('b', b);

      var this_text = a;
      var this_date = new Date(this_text.substr(5,4),this_text.substr(3,2),this_text.substr(0,2));
      console.log('this_text.substr(5,4)',this_text.substr(5,4));
      console.log('this_text.substr(3,2)-1',this_text.substr(3,2));
      console.log('this_text.substr(0,2)',this_text.substr(0,2));
      
      // this_date.getDate() + '/' + (this_date.getMonth()+1) + '/' + this_date.getFullYear();
      // console.log(this_date);
      // return this_date;
    }
    
    DateSortFn('2/20.2013');








////// MODAL OPEN & CLOSE /////
    $scope.modalOpen = function () {
      $scope.shouldBeOpen = true;
    };

    $scope.modalClose = function () {
      $scope.closeMsg = 'I was closed at: ' + new Date();
      $scope.shouldBeOpen = false;
    };




////////// GRID STUFF //////////
    $scope.assignmentItems = [];

    $scope.currentDrafter = function(data){
      console.log(data);
      return data;
    };

    var cellSelectTemplate = '<select ng-change="change(currentDrafter, row.entity)" ng-model="currentDrafter" ng-options="drafter.name for drafter in drafterItems | filter:row.entity.DraftingFunction"><option value="">{{row.entity.Assigned}}</option></select>';
    var customRowTemplate = '<div ng-repeat="col in visibleColumns()" class="{{loadData[$index].CssClass}} ngCell {{columnClass($index)}} col{{$index}} {{col.cellClass}}" ng-cell></div>';
    var EditIconTemplate = '<i class="icon-edit" ng-click="editRow(row)"></i>';
    
    
    $scope.GridItems = {data: 'assignmentItems',
                      canSelectRows: false,
                      selectWithCheckboxOnly: true,
                      displaySelectionCheckbox: false,
                      showGroupPanel: true,
//                      rowTemplate: customRowTemplate,
                      enablePaging: false,
                      columnDefs: [{ field: 'Job', displayName: 'Job', headerClass: 'JobHeader', width: '*' },
                                  { field: 'Customer', cellClass: 'Customer', headerClass: 'CustomerHeader', width: '*' },
                                  { field: 'EngIssuedDate', cellClass: 'EngIssuedDate', headerClass: 'EngIssuedDateHeader', width: '*' },
                                  { field: 'Assigned', cellClass: 'Assigned', headerClass: 'AssignedHeader', width: '*' },
                                  { field: 'Drafters', displayName: 'Drafters', headerClass: 'DraftersHeader', width: '*' },
                                  { field: 'PrintDueAsString', displayName: 'Prints Due', headerClass: 'PrintDueHeader', width: '*' },
                                  { field: 'edit', displayName: ' ', headerClass: 'Trash', width: '*', cellTemplate: EditIconTemplate }]
      };
  
  
  
  
////// GET DATA FROM SERVICES /////
  // Get Assignments
  var assignmentPromise = Assignment.get();
  assignmentPromise.then(function(data) {
    $scope.assignmentItems = data.d;
    return $scope.assignmentItems;
  });
    
  // Get Drafters
  var drafterPromise = Drafter.get();
  drafterPromise.then(function(data) {
    $scope.drafterItems = data.d;
    return $scope.drafterItems;
  });


});





//////////////////////////////
// Data services are below
//////////////////////////////
app.factory('Assignment', function($http) {
  // Assignment is a class which we can use for retrieving and 
  // updating data on the server
  var Assignment = function(data) {
    angular.extend(this, data);
  };

  // a static method to retrieve Assignment
  Assignment.get = function() {
    return $http.get('data-assignments.txt').then(function(response) {
      return new Assignment(response.data);
    });
  };
  return Assignment;
});

app.factory('Drafter', function($http) {
  // Drafter is a class which we can use for retrieving and 
  // updating data on the server
  var Drafter = function(data) {
    angular.extend(this, data);
  };

  // a static method to retrieve Assignment
  Drafter.get = function() {
    return $http.get('data-drafters.txt').then(function(response) {
      return new Drafter(response.data);
    });
  };

  return Drafter;
});

app.factory('Notes', function($http) {
  // Notes is a class which we can use for retrieving and 
  // updating data on the server
  var Notes = function(data) {
    angular.extend(this, data);
  };

  // a static method to retrieve Assignment
  Notes.get = function() {
    return $http.get('data-notes.txt').then(function(response) {
      return new Notes(response.data);
    });
  };

  return Notes;
});
/* Put your css in here */
.container {
 margin-top: 20px; 
}

.ngGrid .well {
  height: 300px;
}

.ngGrid select {
  width: 100%;
}

/******** Grid Global ********/
.nglabel {
    display: block;
    float: left;
    font-weight: bold;
    padding-right: 5px;
}
.ngNoSelect{
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
/******** Grid ********/

.ngGrid{
    background-color: rgb(253, 253, 253);
  -webkit-touch-callout: none;
  -webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

/******** Header ********/

.ngGroupPanel{
    background-color: rgb(234, 234, 234);
    overflow: hidden;
	border-bottom: 1px solid rgb(212,212,212);
}

.ngGroupPanelDescription{
	margin-top: 5px;
	margin-left: 5px;
}

.ngGroupList {
	list-style-type: none;
	margin: 0;
	padding: 0;
}

.ngGroupItem {
	float: left; 
}

.ngGroupElement {
	float: left;
	height: 100%; 
	width: 100%;
}

.ngGroupName {
    background-color: rgb(247,247,247);
    border: 1px solid rgb(212,212,212);
    padding: 3px 10px;
    float: left;
    margin-left: 0;
    margin-top: 2px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    border-radius: 3px;
    font-weight: bold;
}

.ngGroupItem:first-child{
	margin-left: 2px;
}

.ngRemoveGroup {
    width: 5px;
    float: right;
    -moz-opacity: 0.4;
    opacity: 0.4;
    margin-top: -1px;
    margin-left: 5px;
}
.ngRemoveGroup:hover {
    color: black;
    text-decoration: none;
    cursor: pointer;
    -moz-opacity: 0.7;
    opacity: 0.7;
}
.ngGroupArrow {
	width: 0; 
	height: 0; 
	border-top: 6px solid transparent;
	border-bottom: 6px solid transparent;
	border-left: 6px solid black;
	margin-top: 10px;
	margin-left: 5px;
	margin-right: 5px;
	float: right;
}

.ngTopPanel {
    position: relative;
    background-color: rgb(234, 234, 234);
	border-bottom: 1px solid rgb(212,212,212);
}
.ngHeaderContainer {
    position: relative;
    overflow: hidden;
    font-weight: bold;
}

.ngHeaderScroller {
	position:absolute;
}
.ngHeaderSortColumn{
	position:absolute;
    overflow: hidden;
	cursor: pointer;
}

.ngHeaderCell{
	border-left: 1px solid rgb(212,212,212);
    position: absolute;
    cursor: pointer;
}

.ngHeaderCell:first-child{
    border-left: 0;
}

.ngHeaderCell:last-child{
	border-right: 1px solid rgb(212,212,212);
}

.ngSortButtonUp {
    position: absolute;
    top: 3px;
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
	border-color: gray transparent;
	border-style: solid;
	border-width: 0 5px 5px 5px;
	height: 0;
	width: 0;
}
.ngSortButtonDown {
    position: absolute;
    top: 3px;
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
	border-color: gray transparent;
	border-style: solid;
	border-width: 5px 5px 0 5px;
    height: 0;
	width: 0;
}
.ngHeaderGrip { 
    cursor: col-resize; 
    width: 10px; 
	right: -5px;
    top: 0; 
    height: 100%; 
    position: absolute; 
    z-index: 1000; 
}
.ngHeaderText {
    margin-left: 5px;
    white-space: nowrap;
    -ms-text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    text-overflow: ellipsis;
    overflow: hidden;
}

/******** Viewport ********/
.ngViewport{
    background-color: rgb(255, 255, 255);
	overflow: auto;
    min-height: 20px;
}

.ngCanvas{
    position: relative;
}

/******** Rows ********/
.ngRow {
    position: absolute;
    border-bottom: 1px solid rgb(229, 229, 229);
    cursor: pointer;
}
.ngRow.even {
    background-color: rgb(243, 243, 243);
}
.ngRow.odd {
    background-color: rgb(253, 253, 253);
}
.ngRow.selected {
    background-color: rgb(189, 208, 203);
}
.ngRow.canSelect {
    cursor: pointer;
}

/******** Cells ********/

.ngCell {
    overflow: hidden; 
    position: absolute;
	border-left: 1px solid rgb(212,212,212);
}

.ngCell:first-child{
	border-left: 0;
}

.ngCell:last-child {
    border-right: 1px solid rgb(212,212,212);
}

.ngCellText {
    margin-left: 5px;
    margin-top: 5px;
    white-space: nowrap;
    -ms-text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    text-overflow: ellipsis;
    overflow: hidden;
}
.ngSelectionHeader {
	position: absolute;
    top: 11px; 
    left: 6px;
}
input[type="checkbox"] {
	margin: 0;
	padding: 0;
}
input {
	vertical-align:top;
}
.ngSelectionCell{
	margin-top: 9px;
	margin-left: 6px;
}
.ngNoSort {
    cursor:default;
}

/******** Footer ********/
.ngFooterPanel{
    background-color: rgb(234, 234, 234);
    padding: 0;
	border-top: 1px solid rgb(212,212,212);
	position: relative;
}
.ngTotalSelectContainer {
    float: left;
    margin: 5px;
    margin-top: 7px;
}
.ngFooterSelectedItems {
	padding: 2px;
}
.ngFooterTotalItems {
	padding: 2px;
}
.ngFooterTotalItems.ngnoMultiSelect {
    padding: 0 !important;
}

/* Aggregates */
.ngAggHeader {
    position: absolute;
    border: none;
}
.ngAggregate {
    position: absolute;
    background-color: rgb(179, 191, 188);
    border-bottom: 1px solid beige;
    overflow: hidden;
    top: 0;
    bottom: 0;
    right: -1px;
	left: 0;
}
.ngAggregateText {
    position: absolute;
    left: 27px;
	top: 5px;
    line-height: 20px;
    white-space:nowrap;
}
.ngAggArrowExpanded {
    position: absolute;
    left: 8px;
    bottom: 10px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 0 9px 9px;
    border-color: transparent transparent #000000 transparent;
}
.ngAggArrowCollapsed {
    position: absolute;
    left: 8px;
    bottom: 10px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 5px 0 5px 8.7px;
    border-color: transparent transparent transparent #000000;
}

.ngHeaderButton {
    position: absolute;    
    right: 2px;
    top: 8px;
    -moz-border-radius: 50%;
    -webkit-border-radius: 50%;
    border-radius: 50%;
    width: 14px;
    height: 14px;
    z-index: 10000;
    background-color: rgb(179, 191, 188);
    cursor: pointer;
    /* width and height can be anything, as long as they're equal */
}
.ngHeaderButtonArrow {
    position: absolute;
    top: 4px;
    left: 3px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6.5px 4.5px 0 4.5px;
    border-color: #000 transparent transparent transparent;
    /* width and height can be anything, as long as they're equal */
}
.ngColMenu {
    right: 2px;
    padding: 5px;
    top: 25px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    border-radius: 3px;
    background-color: #BDD0CB;
    position: absolute;
    border: 2px solid rgb(212,212,212);
    z-index: 50000;
}
.ngMenuText {
    position: relative;
    top: 2px;
    left: 2px;
}
.ngColList {
    list-style-type: none;
}

.ngColListItem {
    position: relative;
    right: 17px;
    top: 2px;
    white-space:nowrap;
}
.ngColListCheckbox {
    position: relative;
    right: 3px;
    top: 4px;
}

/********Paging Styles **********/

.ngPagerButton{
	height: 25px;
	min-width: 26px;
}

.ngPagerFirstTriangle{
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 5px 8.7px 5px 0;
	border-color: transparent #000000 transparent transparent;
	margin-left: 2px;
}

.ngPagerFirstBar{
	width: 10px;
	border-left: 2px solid black;
	margin-top: -6px;
	height: 12px;
	margin-left: -3px;
}	

.ngPagerLastTriangle{
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 5px 0 5px 8.7px;
	border-color: transparent transparent transparent #000000;
	margin-left: -1px;
}

.ngPagerLastBar{
	width: 10px;
	border-left: 2px solid black;
	margin-top: -6px;
	height: 12px;
	margin-left: 1px;
}	

.ngPagerPrevTriangle{
	margin-left: 0;
}	

.ngPagerNextTriangle{
	margin-left: 1px;
}
.ngGroupIcon {
    /*background-image: url(data:image/png;base64,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);*/
    /*background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTUyNTg5QzEzRkU5MTFFMjhDRERDOTBBMTg1MkIyRUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTUyNTg5QzIzRkU5MTFFMjhDRERDOTBBMTg1MkIyRUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NTI1ODlCRjNGRTkxMUUyOENEREM5MEExODUyQjJFRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NTI1ODlDMDNGRTkxMUUyOENEREM5MEExODUyQjJFRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmBrpuwAAABVSURBVHjaYvz//z8DNQATA5UA1QxiQeYcO3YM5k8FIH5ASLOVlRUjVoPY2dnBtLGx8cuzZ8+S5CJGtMB2gNIHkNj4wAGsBo16bdRrg8prw6sYAQgwABNARwPxNFJrAAAAAElFTkSuQmCC);*/
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkVGQkM0RkMzRkU5MTFFMkIzNDRCQjZFOEZDRDQ4MUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkVGQkM0RkQzRkU5MTFFMkIzNDRCQjZFOEZDRDQ4MUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRUZCQzRGQTNGRTkxMUUyQjM0NEJCNkU4RkNENDgxRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRUZCQzRGQjNGRTkxMUUyQjM0NEJCNkU4RkNENDgxRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Prxxdr4AAAA5SURBVHjaYvz//z8DNQDjoDcIxlEA4gfE6CdkECcQfyfFIBY0CUco/QOJPeq1Ua8Nfa8No2IEIMAAz4I/3WdB6EUAAAAASUVORK5CYII=);
    background-repeat:no-repeat;
    height: 15px;
    width: 15px;
    position: absolute;
    right: -2px;
    top: 2px;
}


//     Underscore.js 1.4.3
//     http://underscorejs.org
//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
//     Underscore may be freely distributed under the MIT license.
(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.3";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?-1!=n.indexOf(t):E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2);return w.map(n,function(n){return(w.isFunction(t)?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t){return w.isEmpty(t)?[]:w.filter(n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=F(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||void 0===r)return 1;if(e>r||void 0===e)return-1}return n.index<t.index?-1:1}),"value")};var k=function(n,t,r,e){var u={},i=F(t||w.identity);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};w.groupBy=function(n,t,r){return k(n,t,r,function(n,t,r){(w.has(n,t)?n[t]:n[t]=[]).push(r)})},w.countBy=function(n,t,r){return k(n,t,r,function(n,t){w.has(n,t)||(n[t]=0),n[t]++})},w.sortedIndex=function(n,t,r,e){r=null==r?w.identity:F(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i};var I=function(){};w.bind=function(n,t){var r,e;if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));if(!w.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));I.prototype=n.prototype;var u=new I;I.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},w.bindAll=function(n){var t=o.call(arguments,1);return 0==t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=S(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&S(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return S(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),w.isFunction=function(n){return"function"==typeof n},w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return void 0===n},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+(0|Math.random()*(t-n+1))};var T={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};T.unescape=w.invert(T.escape);var M={escape:RegExp("["+w.keys(T.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(T.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(M[n],function(t){return T[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=""+ ++N;return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","  ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){r=w.defaults({},r,w.templateSettings);var e=RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(D,function(n){return"\\"+B[n]}),r&&(i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(i+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),a&&(i+="';\n"+a+"\n__p+='"),u=o+t.length,t}),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=Function(r.variable||"obj","_",i)}catch(o){throw o.source=i,o}if(t)return a(t,w);var c=function(n){return a.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+i+"}",c},w.chain=function(n){return w(n).chain()};var z=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
/***********************************************
* ng-grid JavaScript Library
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
* Compiled At: 01/02/2013 17:28:59
***********************************************/
(function(g){if(!g.ng){g.ng={};}g.ngGrid={};g.ngGrid.i18n={};var m=angular.module("ngGrid.services",[]);var j=angular.module("ngGrid.directives",[]);var d=angular.module("ngGrid.filters",[]);var b="__ng_selected__";var l=8;var a=6;var c="asc";var e="desc";var o="_ng_field_";var h="_ng_depth_";var n="_ng_hidden_";var i="_ng_column_";var k=/CUSTOM_FILTERS/g;var f=/<.+>/;ng.moveSelectionHandler=function(s,u,q){if(u===null||u===undefined){return true;}if(u.config.selectedItems===undefined){return true;}var p=q.which||q.keyCode;var v=(p==38?-1:(p==40?1:null));if(!v){return true;}var r=s.renderedRows;var t=r.indexOf(u.selectionService.lastClickedRow)+v;if(t<0||t>=r.length){return true;}u.selectionService.ChangeSelection(r[t],q);if(t>r.length-l){u.$viewport.scrollTop(u.$viewport.scrollTop()+(u.config.rowHeight*2));}else{if(t<l){u.$viewport.scrollTop(u.$viewport.scrollTop()-(u.config.rowHeight*2));}}if(!s.$$phase){s.$parent.$digest();}return false;};if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"");};}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(q){var p=this.length>>>0;var r=Number(arguments[1])||0;r=(r<0)?Math.ceil(r):Math.floor(r);if(r<0){r+=p;}for(;r<p;r++){if(r in this&&this[r]===q){return r;}}return -1;};}if(!Array.prototype.filter){Array.prototype.filter=function(q){var v=Object(this);var p=v.length>>>0;if(typeof q!=="function"){throw new TypeError();}var u=[];var s=arguments[1];for(var r=0;r<p;r++){if(r in v){var w=v[r];if(q.call(s,w,r,v)){u.push(w);}}}return u;};}ng.utils={visualLength:function(q){var p=document.getElementById("testDataLength");if(!p){p=document.createElement("SPAN");p.id="testDataLength";p.style.visibility="hidden";document.body.appendChild(p);}$(p).css("font",$(q).css("font"));p.innerHTML=$(q).text();return p.offsetWidth;},forIn:function(q,p){for(var r in q){if(q.hasOwnProperty(r)){p(q[r],r);}}},evalProperty:function(s,u){var q=u.split("."),t=0;var p=s[q[t]],r=q.length;t++;while(p&&t<r){p=p[q[t]];t++;}return p;},endsWith:function(q,p){if(!q||!p||typeof q!="string"){return false;}return q.indexOf(p,q.length-p.length)!==-1;},isNullOrUndefined:function(p){if(p===undefined||p===null){return true;}return false;},getElementsByClassName:function(q){var p=[];var u=new RegExp("\\b"+q+"\\b");var t=document.getElementsByTagName("*");for(var s=0;s<t.length;s++){var r=t[s].className;if(u.test(r)){p.push(t[s]);}}return p;},newId:(function(){var p=new Date().getTime();return function(){return p+=1;};})(),seti18n:function(p,s){var r=g.ngGrid.i18n[s];for(var q in r){p.i18n[q]=r[q];}},ieVersion:(function(){var p=3,r=document.createElement("div"),q=r.getElementsByTagName("i");while(r.innerHTML="<!--[if gt IE "+(++p)+"]><i></i><![endif]-->",q[0]){}return p>4?p:undefined;})()};$.extend(ng.utils,{isIe6:(function(){return ng.utils.ieVersion===6;})(),isIe7:(function(){return ng.utils.ieVersion===7;})(),isIe:(function(){return ng.utils.ieVersion!==undefined;})()});d.filter("ngColumns",function(){return function(p){return p.filter(function(q){return !q.isAggCol;});};});d.filter("checkmark",function(){return function(p){return p?"\u2714":"\u2718";};});m.factory("SortService",function(){var p={};p.colSortFnCache={};p.dateRE=/^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;p.guessSortFn=function(s){var t,v,r,u,q;if(s===undefined||s===null||s===""){return null;}v=typeof(s);switch(v){case"number":t=p.sortNumber;break;case"boolean":t=p.sortBool;break;default:t=undefined;break;}if(t){return t;}if(Object.prototype.toString.call(s)==="[object Date]"){return p.sortDate;}if(v!=="string"){return p.basicSort;}if(s.match(/^-?[£$¤]?[\d,.]+%?$/)){return p.sortNumberStr;}r=s.match(p.dateRE);if(r){u=parseInt(r[1],10);q=parseInt(r[2],10);if(u>12){return p.sortDDMMStr;}else{if(q>12){return p.sortMMDDStr;}else{return p.sortMMDDStr;}}}return p.sortAlpha;};p.basicSort=function(r,q){if(r==q){return 0;}if(r<q){return -1;}return 1;};p.sortNumber=function(r,q){return r-q;};p.sortNumberStr=function(s,q){var v,u,t=false,r=false;v=parseFloat(s.replace(/[^0-9.-]/g,""));if(isNaN(v)){t=true;}u=parseFloat(q.replace(/[^0-9.-]/g,""));if(isNaN(u)){r=true;}if(t&&r){return 0;}if(t){return 1;}if(r){return -1;}return v-u;};p.sortAlpha=function(s,q){var t=s.toLowerCase(),r=q.toLowerCase();return t==r?0:(t<r?-1:1);};p.sortDate=function(r,q){var t=r.getTime(),s=q.getTime();return t==s?0:(t<s?-1:1);};p.sortBool=function(r,q){if(r&&q){return 0;}if(!r&&!q){return 0;}else{return r?1:-1;}};p.sortDDMMStr=function(s,r){var u,t,v,q,w,x;v=s.match(p.dateRE);x=v[3];q=v[2];w=v[1];if(q.length==1){q="0"+q;}if(w.length==1){w="0"+w;}u=x+q+w;v=r.match(p.dateRE);x=v[3];q=v[2];w=v[1];if(q.length==1){q="0"+q;}if(w.length==1){w="0"+w;}t=x+q+w;if(u==t){return 0;}if(u<t){return -1;}return 1;};p.sortMMDDStr=function(s,r){var u,t,v,q,w,x;v=s.match(p.dateRE);x=v[3];w=v[2];q=v[1];if(q.length==1){q="0"+q;}if(w.length==1){w="0"+w;}u=x+q+w;v=r.match(p.dateRE);x=v[3];w=v[2];q=v[1];if(q.length==1){q="0"+q;}if(w.length==1){w="0"+w;}t=x+q+w;if(u==t){return 0;}if(u<t){return -1;}return 1;};p.sortData=function(u,q){if(!u||!q){return;}var r=q.column,v=q.direction,t,s;if(p.colSortFnCache[r.field]){t=p.colSortFnCache[r.field];}else{if(r.sortingAlgorithm!=undefined){t=r.sortingAlgorithm;p.colSortFnCache[r.field]=r.sortingAlgorithm;}else{s=u[0];if(!s){return;}t=p.guessSortFn(s[r.field]);if(t){p.colSortFnCache[r.field]=t;}else{t=p.sortAlpha;}}}u.sort(function(y,x){var w=ng.utils.evalProperty(y,r.field);var z=ng.utils.evalProperty(x,r.field);if(!z&&!w){return 0;}else{if(!w){return 1;}else{if(!z){return -1;}}}if(v===c){return t(w,z);}else{return 0-t(w,z);}});return;};p.Sort=function(q,r){if(p.isSorting){return;}p.isSorting=true;p.sortData(r,q);p.isSorting=false;};return p;});m.factory("DomUtilityService",function(){var p={};var q=function(){var r=$("<div></div>");r.appendTo("body");r.height(100).width(100).css("position","absolute").css("overflow","scroll");r.append('<div style="height: 400px; width: 400px;"></div>');p.ScrollH=(r.height()-r[0].clientHeight);p.ScrollW=(r.width()-r[0].clientWidth);r.empty();r.attr("style","");r.append('<span style="font-family: Verdana, Helvetica, Sans-Serif; font-size: 14px;"><strong>M</strong></span>');p.LetterW=r.children().first().width();r.remove();};p.eventStorage={};p.AssignGridContainers=function(s,r){r.$root=$(s);r.$topPanel=r.$root.find(".ngTopPanel");r.$groupPanel=r.$root.find(".ngGroupPanel");r.$headerContainer=r.$topPanel.find(".ngHeaderContainer");r.$headerScroller=r.$topPanel.find(".ngHeaderScroller");r.$headers=r.$headerScroller.children();r.$viewport=r.$root.find(".ngViewport");r.$canvas=r.$viewport.find(".ngCanvas");r.$footerPanel=r.$root.find(".ngFooterPanel");p.UpdateGridLayout(r);};p.UpdateGridLayout=function(r){var s=r.$viewport.scrollTop();r.elementDims.rootMaxW=r.$root.width();r.elementDims.rootMaxH=r.$root.height();r.refreshDomSizes();r.adjustScrollTop(s,true);};p.numberOfGrids=0;p.BuildStyles=function(A,s,y){var r=s.config.rowHeight,t=s.$styleSheet,v=s.gridId,x,z=A.visibleColumns(),u=0;if(!t){t=$("#"+v);if(!t[0]){t=$("<style id='"+v+"' type='text/css' rel='stylesheet' />").appendTo(s.$root);}}t.empty();var w=A.totalRowWidth();x="."+v+" .ngCanvas { width: "+w+"px; }."+v+" .ngRow { width: "+w+"px; }."+v+" .ngCanvas { width: "+w+"px; }."+v+" .ngHeaderScroller { width: "+(w+p.scrollH+2)+"px}";angular.forEach(z,function(B,C){x+="."+v+" .col"+C+" { width: "+B.width+"px; left: "+u+"px; right: "+(w-u-B.width)+"px; height: "+r+"px }."+v+" .colt"+C+" { width: "+B.width+"px; }";u+=B.width;});if(ng.utils.isIe){t[0].styleSheet.cssText=x;}else{t[0].appendChild(document.createTextNode(x));}s.$styleSheet=t;if(y){p.digest(A);}};p.digest=function(r){if(!r.$$phase){r.$digest();}};p.ScrollH=17;p.ScrollW=17;p.LetterW=10;q();return p;});ng.defaultGridTemplate=function(){return'<div class="ngTopPanel" ng-class="{\'ui-widget-header\':jqueryUITheme, \'ui-corner-top\': jqueryUITheme}" ng-style="topPanelStyle()"><div class="ngGroupPanel" ng-show="showGroupPanel()" ng-style="headerStyle()"><div class="ngGroupPanelDescription" ng-show="configGroups.length == 0">{{i18n.ngGroupPanelDescription}}</div><ul ng-show="configGroups.length > 0" class="ngGroupList"><li class="ngGroupItem" ng-repeat="group in configGroups"><span class="ngGroupElement"><span class="ngGroupName">{{group.displayName}}<span ng-click="removeGroup($index)" class="ngRemoveGroup">x</span></span><span ng-hide="$last" class="ngGroupArrow"></span></span></li></ul></div><div class="ngHeaderContainer" ng-style="headerStyle()"><div class="ngHeaderScroller" ng-style="headerScrollerStyle()" ng-header-row></div></div><div class="ngHeaderButton" ng-show="showColumnMenu || showFilter" ng-click="toggleShowMenu()"><div class="ngHeaderButtonArrow" ng-click=""></div></div><div ng-show="showMenu" class="ngColMenu"><div ng-show="showFilter"><input placeholder="{{i18n.ngSearchPlaceHolder}}" type="text" ng-model="filterText"/></div><div ng-show="showColumnMenu"><span class="ngMenuText">{{i18n.ngMenuText}}</span><ul class="ngColList"><li class="ngColListItem" ng-repeat="col in columns | ngColumns"><label><input type="checkbox" class="ngColListCheckbox" ng-model="col.visible"/>{{col.displayName}}</label><a title="Group By" ng-class="col.groupedByClass()" ng-show="col.groupable" ng-click="groupBy(col)"></a><span class="ngGroupingNumber" ng-show="col.groupIndex > 0">{{col.groupIndex}}</span></li></ul></div></div></div><div class="ngViewport" ng-class="{\'ui-widget-content\': jqueryUITheme}" ng-style="viewportStyle()"><div class="ngCanvas" ng-style="canvasStyle()"><div ng-style="rowStyle(row)" ng-repeat="row in renderedRows" ng-click="row.toggleSelected($event)" class="ngRow" ng-class="row.alternatingRowClass()" ng-row></div></div></div><div class="ngFooterPanel" ng-class="{\'ui-widget-content\': jqueryUITheme, \'ui-corner-bottom\': jqueryUITheme}" ng-style="footerStyle()"><div class="ngTotalSelectContainer" ng-show="footerVisible"><div class="ngFooterTotalItems" ng-class="{\'ngNoMultiSelect\': !multiSelect}" ><span class="ngLabel">{{i18n.ngTotalItemsLabel}} {{maxRows()}}</span><span ng-show="filterText.length > 0" class="ngLabel">({{i18n.ngShowingItemsLabel}} {{totalFilteredItemsLength()}})</span></div><div class="ngFooterSelectedItems" ng-show="multiSelect"><span class="ngLabel">{{i18n.ngSelectedItemsLabel}} {{selectedItems.length}}</span></div></div><div class="ngPagerContainer" style="float: right; margin-top: 10px;" ng-show="footerVisible && enablePaging" ng-class="{\'ngNoMultiSelect\': !multiSelect}"><div style="float:left; margin-right: 10px;" class="ngRowCountPicker"><span style="float: left; margin-top: 3px;" class="ngLabel">{{i18n.ngPageSizeLabel}}</span><select style="float: left;height: 27px; width: 100px" ng-model="pagingOptions.pageSize" ><option ng-repeat="size in pagingOptions.pageSizes">{{size}}</option></select></div><div style="float:left; margin-right: 10px; line-height:25px;" class="ngPagerControl" style="float: left; min-width: 135px;"><button class="ngPagerButton" ng-click="pageToFirst()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerFirstTitle}}"><div class="ngPagerFirstTriangle"><div class="ngPagerFirstBar"></div></div></button><button class="ngPagerButton" ng-click="pageBackward()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerPrevTitle}}"><div class="ngPagerFirstTriangle ngPagerPrevTriangle"></div></button><input class="ngPagerCurrent" type="text" style="width:50px; height: 24px; margin-top: 1px; padding: 0px 4px;" ng-model="pagingOptions.currentPage"/><button class="ngPagerButton" ng-click="pageForward()" ng-disabled="cantPageForward()" title="{{i18n.ngPagerNextTitle}}"><div class="ngPagerLastTriangle ngPagerNextTriangle"></div></button><button class="ngPagerButton" ng-click="pageToLast()" ng-disabled="cantPageToLast()" title="{{i18n.ngPagerLastTitle}}"><div class="ngPagerLastTriangle"><div class="ngPagerLastBar"></div></div></button></div></div></div>';};ng.defaultRowTemplate=function(){return'<div ng-style="{\'cursor\': row.cursor}" ng-repeat="col in visibleColumns()" class="ngCell col{{$index}} {{col.cellClass}}" ng-cell></div>';};ng.defaultCellTemplate=function(){return'<div class="ngCellText colt{{$index}}">{{row.getProperty(col.field) CUSTOM_FILTERS}}</div>';};ng.aggregateTemplate=function(){return'<div ng-click="row.toggleExpand()" ng-style="{\'left\': row.offsetleft}" class="ngAggregate"><span class="ngAggregateText">{{row.label CUSTOM_FILTERS}} ({{row.totalChildren()}} {{AggItemsLabel}})</span><div class="{{row.aggClass()}}"></div></div>';};ng.defaultHeaderRowTemplate=function(){return'<div ng-repeat="col in visibleColumns()" class="ngHeaderCell col{{$index}}" ng-header-cell></div>';};ng.defaultHeaderCellTemplate=function(){return'<div ng-click="col.sort()" class="ngHeaderSortColumn {{col.headerClass}}" ng-style="{\'cursor\': col.cursor}" ng-class="{ \'ngSorted\': !noSortVisible }"><div class="ngHeaderText colt{{$index}}">{{col.displayName}}</div><div class="ngSortButtonDown" ng-show="col.showSortButtonDown()"></div><div class="ngSortButtonUp" ng-show="col.showSortButtonUp()"></div></div><div ng-show="col.resizable" class="ngHeaderGrip" ng-click="col.gripClick($event)" ng-mousedown="col.gripOnMouseDown($event)"></div>';};ng.Aggregate=function(r,q){var p=this;p.index=0;p.offsetTop=0;p.entity=r;p.label=r.gLabel;p.field=r.gField;p.depth=r.gDepth;p.parent=r.parent;p.children=r.children;p.aggChildren=r.aggChildren;p.aggIndex=r.aggIndex;p.collapsed=true;p.isAggRow=true;p.offsetleft=r.gDepth*25;p.aggLabelFilter=r.aggLabelFilter;p.toggleExpand=function(){p.collapsed=p.collapsed?false:true;p.notifyChildren();};p.setExpand=function(s){p.collapsed=s;p.notifyChildren();};p.notifyChildren=function(){angular.forEach(p.aggChildren,function(t){t.entity[n]=p.collapsed;if(p.collapsed){t.setExpand(p.collapsed);}});angular.forEach(p.children,function(t){t[n]=p.collapsed;});q.rowCache=[];var s=false;angular.forEach(q.aggCache,function(t,u){if(s){var v=(30*p.children.length);t.offsetTop=p.collapsed?t.offsetTop-v:t.offsetTop+v;}else{if(u==p.aggIndex){s=true;}}});q.renderedChange();};p.aggClass=function(){return p.collapsed?"ngAggArrowCollapsed":"ngAggArrowExpanded";};p.totalChildren=function(){if(p.aggChildren.length>0){var s=0;var t=function(u){if(u.aggChildren.length>0){angular.forEach(u.aggChildren,function(v){t(v);});}else{s+=u.children.length;}};t(p);return s;}else{return p.children.length;}};};ng.EventProvider=function(s,r,q){var p=this;p.colToMove=undefined;p.groupToMove=undefined;p.assignEvents=function(){if(s.config.jqueryUIDraggable){s.$groupPanel.droppable({addClasses:false,drop:function(t){p.onGroupDrop(t);}});r.$evalAsync(p.setDraggables);}else{s.$groupPanel.on("mousedown",p.onGroupMouseDown).on("dragover",p.dragOver).on("drop",p.onGroupDrop);s.$headerScroller.on("mousedown",p.onHeaderMouseDown).on("dragover",p.dragOver);if(s.config.enableColumnReordering){s.$headerScroller.on("drop",p.onHeaderDrop);}if(s.config.enableRowReordering){s.$viewport.on("mousedown",p.onRowMouseDown).on("dragover",p.dragOver).on("drop",p.onRowDrop);}}r.$watch("columns",p.setDraggables,true);};p.dragOver=function(t){t.preventDefault();};p.setDraggables=function(){if(!s.config.jqueryUIDraggable){s.$root.find(".ngHeaderSortColumn").attr("draggable","true");}else{s.$root.find(".ngHeaderSortColumn").draggable({helper:"clone",appendTo:"body",stack:"div",addClasses:false,start:function(t){p.onHeaderMouseDown(t);}}).droppable({drop:function(t){p.onHeaderDrop(t);}});}};p.onGroupMouseDown=function(v){var t=$(v.target);if(t[0].className!="ngRemoveGroup"){var u=angular.element(t).scope();if(u){if(!s.config.jqueryUIDraggable){t.attr("draggable","true");}p.groupToMove={header:t,groupName:u.group,index:u.$index};}}else{p.groupToMove=undefined;}};p.onGroupDrop=function(t){t.stopPropagation();var u;var v;if(p.groupToMove){u=$(t.target).closest(".ngGroupElement");if(u.context.className=="ngGroupPanel"){r.configGroups.splice(p.groupToMove.index,1);r.configGroups.push(p.groupToMove.groupName);}else{v=angular.element(u).scope();if(v){if(p.groupToMove.index!=v.$index){r.configGroups.splice(p.groupToMove.index,1);r.configGroups.splice(v.$index,0,p.groupToMove.groupName);}}}p.groupToMove=undefined;s.fixGroupIndexes();}else{if(p.colToMove){if(r.configGroups.indexOf(p.colToMove.col)==-1){u=$(t.target).closest(".ngGroupElement");if(u.context.className=="ngGroupPanel"||u.context.className=="ngGroupPanelDescription ng-binding"){r.groupBy(p.colToMove.col);}else{v=angular.element(u).scope();if(v){r.removeGroup(v.$index);}}}p.colToMove=undefined;}}if(!r.$$phase){r.$apply();}};p.onHeaderMouseDown=function(v){var u=$(v.target).closest(".ngHeaderSortColumn");var t=angular.element(u).scope();if(t){p.colToMove={header:u,col:t.col};}};p.onHeaderDrop=function(v){if(!p.colToMove){return;}var u=$(v.target).closest(".ngHeaderSortColumn");var t=angular.element(u).scope();if(t){if(p.colToMove.col==t.col){return;}r.columns.splice(p.colToMove.col.index,1);r.columns.splice(t.col.index,0,p.colToMove.col);s.fixColumnIndexes();q.BuildStyles(r,s,true);p.colToMove=undefined;}};p.onRowMouseDown=function(v){var u=$(v.target).closest(".ngRow");var t=angular.element(u).scope();if(t){u.attr("draggable","true");q.eventStorage.rowToMove={targetRow:u,scope:t};}};p.onRowDrop=function(x){var w=$(x.target).closest(".ngRow");var t=angular.element(w).scope();if(t){var y=q.eventStorage.rowToMove;if(y.scope.row==t.row){return;}var v=s.sortedData.indexOf(y.scope.row.entity);var u=s.sortedData.indexOf(t.row.entity);s.sortedData.splice(v,1);s.sortedData.splice(u,0,y.scope.row.entity);s.searchProvider.evalFilter();q.eventStorage.rowToMove=undefined;}};p.assignGridEventHandlers=function(){s.$viewport.on("scroll",function(v){var w=v.target.scrollLeft,u=v.target.scrollTop;s.adjustScrollLeft(w);s.adjustScrollTop(u);});var t=false;s.$viewport.on("keydown",function(v){if(!t){t=true;var u=ng.moveSelectionHandler(r,s,v);t=false;return u;}return false;});if(s.config.tabIndex===-1){s.$viewport.attr("tabIndex",q.numberOfGrids);q.numberOfGrids++;}else{s.$viewport.attr("tabIndex",s.config.tabIndex);}$(g).resize(function(){q.UpdateGridLayout(s);if(s.config.maintainColumnRatios){s.configureColumnWidths();}});};p.assignGridEventHandlers();p.assignEvents();};ng.Column=function(r,w,p,t){var x=this,u=r.colDef,s=500,v=0,q=null;x.width=u.width;x.groupIndex=0;x.isGroupedBy=false;x.minWidth=!u.minWidth?50:u.minWidth;x.maxWidth=!u.maxWidth?9000:u.maxWidth;x.headerRowHeight=r.headerRowHeight;x.displayName=u.displayName||u.field;x.index=r.index;x.isAggCol=r.isAggCol;x.cellClass=u.cellClass;x.cellFilter=u.cellFilter?u.cellFilter:"";x.field=u.field;x.aggLabelFilter=u.cellFilter||u.aggLabelFilter;x.visible=ng.utils.isNullOrUndefined(u.visible)||u.visible;x.sortable=false;x.resizable=false;x.groupable=ng.utils.isNullOrUndefined(u.groupable)||u.sortable;if(r.enableSort){x.sortable=ng.utils.isNullOrUndefined(u.sortable)||u.sortable;}if(r.enableResize){x.resizable=ng.utils.isNullOrUndefined(u.resizable)||u.resizable;}x.sortDirection=undefined;x.sortingAlgorithm=u.sortFn;x.headerClass=u.headerClass;x.headerCellTemplate=u.headerCellTemplate||ng.defaultHeaderCellTemplate();x.cursor=x.sortable?"pointer":"default";x.cellTemplate=u.cellTemplate||ng.defaultCellTemplate().replace(k,x.cellFilter?"|"+x.cellFilter:"");if(u.cellTemplate&&!f.test(u.cellTemplate)){x.cellTemplate=$.ajax({type:"GET",url:u.cellTemplate,async:false}).responseText;}if(u.headerCellTemplate&&!f.test(u.headerCellTemplate)){x.headerCellTemplate=$.ajax({type:"GET",url:u.headerCellTemplate,async:false}).responseText;}x.groupedByClass=function(){return x.isGroupedBy?"ngGroupedByIcon":"ngGroupIcon";};x.toggleVisible=function(){x.visible=!x.visible;};x.showSortButtonUp=function(){return x.sortable?x.sortDirection===e:x.sortable;};x.showSortButtonDown=function(){return x.sortable?x.sortDirection===c:x.sortable;};x.noSortVisible=function(){return !x.sortDirection;};x.sort=function(){if(!x.sortable){return true;}var y=x.sortDirection===c?e:c;x.sortDirection=y;r.sortCallback(x);return false;};x.gripClick=function(){v++;if(v===1){q=setTimeout(function(){v=0;},s);}else{clearTimeout(q);r.resizeOnDataCallback(x);v=0;}};x.gripOnMouseDown=function(y){if(y.ctrlKey){x.toggleVisible();t.BuildStyles(w,p);return true;}y.target.parentElement.style.cursor="col-resize";x.startMousePosition=y.clientX;x.origWidth=x.width;$(document).mousemove(x.onMouseMove);$(document).mouseup(x.gripOnMouseUp);return false;};x.onMouseMove=function(z){var A=z.clientX-x.startMousePosition;var y=A+x.origWidth;x.width=(y<x.minWidth?x.minWidth:(y>x.maxWidth?x.maxWidth:y));t.BuildStyles(w,p);return false;};x.gripOnMouseUp=function(){$(document).off("mousemove");$(document).off("mouseup");event.target.parentElement.style.cursor="default";t.digest(w);return false;};};ng.Dimension=function(p){this.outerHeight=null;this.outerWidth=null;$.extend(this,p);};ng.Footer=function(p,q){p.maxRows=function(){var r=Math.max(p.pagingOptions.totalServerItems,q.sortedData.length);return r;};p.multiSelect=(q.config.canSelectRows&&q.config.multiSelect);p.selectedItemCount=q.selectedItemCount;p.maxPages=function(){return Math.ceil(p.maxRows()/p.pagingOptions.pageSize);};p.pageForward=function(){var r=p.pagingOptions.currentPage;if(p.pagingOptions.totalServerItems>0){p.pagingOptions.currentPage=Math.min(r+1,p.maxPages());}else{p.pagingOptions.currentPage++;}};p.pageBackward=function(){var r=p.pagingOptions.currentPage;p.pagingOptions.currentPage=Math.max(r-1,1);};p.pageToFirst=function(){p.pagingOptions.currentPage=1;};p.pageToLast=function(){var r=p.maxPages();p.pagingOptions.currentPage=r;};p.cantPageForward=function(){var s=p.pagingOptions.currentPage;var r=p.maxPages();if(p.pagingOptions.totalServerItems>0){return !(s<r);}else{return q.sortedData.length<1;}};p.cantPageToLast=function(){if(p.pagingOptions.totalServerItems>0){return p.cantPageForward();}else{return true;}};p.cantPageBackward=function(){var r=p.pagingOptions.currentPage;return !(r>1);};};ng.RowFactory=function(r,q){var p=this;p.rowCache=[];p.aggCache={};p.parentCache=[];p.dataChanged=true;p.parsedData=[];p.rowConfig={};p.selectionService=r.selectionService;p.rowHeight=30;p.numberOfAggregates=0;p.groupedData=undefined;p.rowHeight=r.config.rowHeight;p.rowConfig={canSelectRows:r.config.canSelectRows,rowClasses:r.config.rowClasses,selectedItems:r.config.selectedItems,selectWithCheckboxOnly:r.config.selectWithCheckboxOnly,beforeSelectionChangeCallback:r.config.beforeSelectionChange,afterSelectionChangeCallback:r.config.afterSelectionChange,jqueryUITheme:r.config.jqueryUITheme};p.renderedRange=new ng.Range(0,r.minRowsToRender()+l);p.buildEntityRow=function(s,u){var t=p.rowCache[u];if(!t){t=new ng.Row(s,p.rowConfig,p.selectionService);t.rowIndex=u+1;t.offsetTop=p.rowHeight*u;t.selected=s[b];p.rowCache[u]=t;}return t;};p.buildAggregateRow=function(u,t){var s=p.aggCache[u.aggIndex];if(!s){s=new ng.Aggregate(u,p);p.aggCache[u.aggIndex]=s;}s.index=t+1;s.offsetTop=p.rowHeight*t;return s;};p.UpdateViewableRange=function(s){p.renderedRange=s;p.renderedChange();};p.filteredDataChanged=function(){if(r.lateBoundColumns&&r.filteredData.length>0){r.config.columnDefs=undefined;r.buildColumns();r.lateBoundColumns=false;}p.dataChanged=true;p.rowCache=[];if(r.config.groups.length>0){p.getGrouping(r.config.groups);}p.UpdateViewableRange(p.renderedRange);};p.renderedChange=function(){if(!p.groupedData||r.config.groups.length<1){p.renderedChangeNoGroups();r.refreshDomSizes();return;}p.parentCache=[];var t=[];var s=p.parsedData.filter(function(u){return u[n]===false;}).slice(p.renderedRange.topRow,p.renderedRange.bottomRow);angular.forEach(s,function(v,u){var w;if(v.isAggRow){w=p.buildAggregateRow(v,p.renderedRange.topRow+u);}else{w=p.buildEntityRow(v,p.renderedRange.topRow+u);}t.push(w);});r.setRenderedRows(t);};p.renderedChangeNoGroups=function(){var t=[];var s=r.filteredData.slice(p.renderedRange.topRow,p.renderedRange.bottomRow);angular.forEach(s,function(v,u){var w=p.buildEntityRow(v,p.renderedRange.topRow+u);t.push(w);});r.setRenderedRows(t);};p.parseGroupData=function(t){if(t.values){angular.forEach(t.values,function(v){p.parentCache[p.parentCache.length-1].children.push(v);p.parsedData.push(v);});}else{for(var u in t){if(u==o||u==h||u==i){continue;}else{if(t.hasOwnProperty(u)){var s=p.buildAggregateRow({gField:t[o],gLabel:u,gDepth:t[h],isAggRow:true,_ng_hidden_:false,children:[],aggChildren:[],aggIndex:p.numberOfAggregates,aggLabelFilter:t[i].aggLabelFilter},0);p.numberOfAggregates++;s.parent=p.parentCache[s.depth-1];if(s.parent){s.parent.collapsed=false;s.parent.aggChildren.push(s);}p.parsedData.push(s.entity);p.parentCache[s.depth]=s;p.parseGroupData(t[u]);}}}}};p.getGrouping=function(s){p.aggCache=[];p.rowCache=[];p.numberOfAggregates=0;p.groupedData={};var t=r.filteredData;var v=s.length;var u=q.columns;angular.forEach(t,function(w){w[n]=true;var x=p.groupedData;angular.forEach(s,function(z,B){if(!u[B].isAggCol&&B<=v){u.splice(w.gDepth,0,new ng.Column({colDef:{field:"",width:25,sortable:false,resizable:false,headerCellTemplate:'<div class="ngAggHeader"></div>'},isAggCol:true,index:w.gDepth,headerRowHeight:r.config.headerRowHeight}));}var y=u.filter(function(C){return C.field==z;})[0];var A=ng.utils.evalProperty(w,z);A=A?A.toString():"null";if(!x[A]){x[A]={};}if(!x[o]){x[o]=z;}if(!x[h]){x[h]=B;}if(!x[i]){x[i]=y;}x=x[A];});if(!x.values){x.values=[];}x.values.push(w);});r.fixColumnIndexes();p.parsedData.length=0;p.parseGroupData(p.groupedData);};if(r.config.groups.length>0&&r.filteredData.length>0){p.getGrouping(r.config.groups);}};ng.Grid=function(r,s,v,q,u){var t={afterSelectionChange:function(){},beforeSelectionChange:function(){return true;},canSelectRows:true,columnDefs:undefined,data:[],displaySelectionCheckbox:true,enableColumnResize:true,enableColumnReordering:true,enablePaging:false,enableRowReordering:true,enableSorting:true,filterOptions:{filterText:"",useExternalFilter:false},footerRowHeight:55,displayFooter:undefined,footerVisible:true,groups:[],headerRowHeight:30,headerRowTemplate:undefined,jqueryUIDraggable:false,jqueryUITheme:false,keepLastSelected:true,maintainColumnRatios:undefined,multiSelect:true,pagingOptions:{pageSizes:[250,500,1000],pageSize:250,totalServerItems:0,currentPage:1},plugins:[],rowHeight:30,rowTemplate:undefined,selectedItems:[],selectWithCheckboxOnly:false,showColumnMenu:true,showFilter:true,showGroupPanel:false,sortInfo:undefined,tabIndex:-1,useExternalSorting:false,i18n:"en"},p=this;p.maxCanvasHt=0;p.config=$.extend(t,s);if(typeof s.columnDefs=="string"){p.config.columnDefs=r.$eval(s.columnDefs);}p.gridId="ng"+ng.utils.newId();p.$root=null;p.$groupPanel=null;p.$topPanel=null;p.$headerContainer=null;p.$headerScroller=null;p.$headers=null;p.$viewport=null;p.$canvas=null;p.rootDim=p.config.gridDim;p.sortInfo=p.config.sortInfo;p.sortedData=[];p.lateBindColumns=false;p.filteredData=[];if(typeof p.config.data=="object"){p.sortedData=p.config.data;}p.lastSortedColumn=undefined;p.calcMaxCanvasHeight=function(){return(p.config.groups.length>0)?(p.rowFactory.parsedData.filter(function(w){return w[n]===false;}).length*p.config.rowHeight):(p.filteredData.length*p.config.rowHeight);};p.elementDims={scrollW:0,scrollH:0,rowIndexCellW:25,rowSelectedCellW:25,rootMaxW:0,rootMaxH:0};p.setRenderedRows=function(w){r.renderedRows=w;if(!r.$$phase){r.$digest();}p.refreshDomSizes();r.$emit("ngGridEventRows",w);};p.minRowsToRender=function(){var w=r.viewportDimHeight()||1;return Math.floor(w/p.config.rowHeight);};p.refreshDomSizes=function(){var w=new ng.Dimension();w.outerWidth=p.elementDims.rootMaxW;w.outerHeight=p.elementDims.rootMaxH;p.rootDim=w;p.maxCanvasHt=p.calcMaxCanvasHeight();};p.buildColumnDefsFromData=function(){if(!p.config.columnDefs){p.config.columnDefs=[];}if(!p.sortedData||!p.sortedData[0]){p.lateBoundColumns=true;return;}var w;w=p.sortedData[0];ng.utils.forIn(w,function(y,x){if(x!=b){p.config.columnDefs.push({field:x});}});};p.buildColumns=function(){var y=p.config.columnDefs,x=[],w=0;if(!y){p.buildColumnDefsFromData();y=p.config.columnDefs;}if(p.config.displaySelectionCheckbox){w=1;x.push(new ng.Column({colDef:{field:"\u2714",width:p.elementDims.rowSelectedCellW,sortable:false,resizable:false,groupable:false,headerCellTemplate:'<input class="ngSelectionHeader" type="checkbox" ng-show="multiSelect" ng-model="allSelected" ng-change="toggleSelectAll(allSelected)"/>',cellTemplate:'<div class="ngSelectionCell"><input class="ngSelectionCheckbox" type="checkbox" ng-checked="row.selected" /></div>'},index:0,headerRowHeight:p.config.headerRowHeight,sortCallback:p.sortData,resizeOnDataCallback:p.resizeOnData,enableResize:p.config.enableColumnResize,enableSort:p.config.enableSorting},r,p,q,u));}if(y.length>0){angular.forEach(y,function(C,z){z+=w;var A=new ng.Column({colDef:C,index:z,headerRowHeight:p.config.headerRowHeight,sortCallback:p.sortData,resizeOnDataCallback:p.resizeOnData,enableResize:p.config.enableColumnResize,enableSort:p.config.enableSorting},r,p,q);x.push(A);var B=p.config.groups.indexOf(C.field);if(B!=-1){r.configGroups.splice(B,0,A);}});r.columns=x;}};p.configureColumnWidths=function(){var D=p.config.columnDefs;var z=p.config.displaySelectionCheckbox?r.configGroups.length+1:r.configGroups.length;var w=D.length+z,B=[],E=[],C=0,A=0;A+=p.config.displaySelectionCheckbox?25:0;angular.forEach(D,function(G,I){I+=z;var J=false,H=undefined;if(ng.utils.isNullOrUndefined(G.width)){G.width="*";}else{J=isNaN(G.width)?ng.utils.endsWith(G.width,"%"):false;H=J?G.width:parseInt(G.width,10);}if(isNaN(H)){H=G.width;if(H=="auto"){r.columns[I].width=G.minWidth;A+=r.columns[I].width;var F=r.columns[I];r.$evalAsync(function(){p.resizeOnData(F,true);});return;}else{if(H.indexOf("*")!=-1){C+=H.length;G.index=I;B.push(G);return;}else{if(J){G.index=I;E.push(G);return;}else{throw'unable to parse column width, use percentage ("10%","20%", etc...) or "*" to use remaining width of grid';}}}}else{A+=r.columns[I].width=parseInt(G.width,10);}});if(B.length>0){p.config.maintainColumnRatios===false?angular.noop():p.config.maintainColumnRatios=true;var y=p.rootDim.outerWidth-A;var x=Math.floor(y/C);angular.forEach(B,function(F){var G=F.width.length;r.columns[F.index].width=x*G;if(F.index+1==w){var H=2;if(p.maxCanvasHt>r.viewportDimHeight()){H+=q.ScrollW;}r.columns[F.index].width-=H;}A+=r.columns[F.index].width;});}if(E.length>0){angular.forEach(E,function(F){var G=F.width;r.columns[F.index].width=Math.floor(p.rootDim.outerWidth*(parseInt(G.slice(0,-1),10)/100));});}};p.init=function(){p.selectionService=new ng.SelectionService(p);p.rowFactory=new ng.RowFactory(p,r);p.selectionService.Initialize(p.rowFactory);p.searchProvider=new ng.SearchProvider(r,p,u);p.styleProvider=new ng.StyleProvider(r,p,q);p.buildColumns();r.$watch("configGroups",function(w){var x=[];angular.forEach(w,function(y){x.push(y.field||y);});p.config.groups=x;p.rowFactory.filteredDataChanged();r.$emit("ngGridEventGroups",w);},true);r.$watch("columns",function(w){q.BuildStyles(r,p,true);r.$emit("ngGridEventColumns",w);},true);r.$watch(function(){return s.i18n;},function(w){ng.utils.seti18n(r,w);});p.maxCanvasHt=p.calcMaxCanvasHeight();if(p.config.sortInfo){p.config.sortInfo.column=r.columns.filter(function(w){return w.field==p.config.sortInfo.field;})[0];p.config.sortInfo.column.sortDirection=p.config.sortInfo.direction.toUpperCase();p.sortData(p.config.sortInfo.column);}};p.prevScrollTop=0;p.prevScrollIndex=0;p.adjustScrollTop=function(x,w){if(p.prevScrollTop===x&&!w){return;}var y=Math.floor(x/p.config.rowHeight);if(p.prevScrollTop<x&&y<p.prevScrollIndex+a){return;}if(p.prevScrollTop>x&&y>p.prevScrollIndex-a){return;}p.prevScrollTop=x;p.rowFactory.UpdateViewableRange(new ng.Range(Math.max(0,y-l),y+p.minRowsToRender()+l));p.prevScrollIndex=y;};p.adjustScrollLeft=function(w){if(p.$headerContainer){p.$headerContainer.scrollLeft(w);}};p.resizeOnData=function(x){var y=x.minWidth;var w=ng.utils.getElementsByClassName("col"+x.index);angular.forEach(w,function(D,A){var B;if(A===0){var C=$(D).find(".ngHeaderText");B=ng.utils.visualLength(C)+10;}else{var z=$(D).find(".ngCellText");B=ng.utils.visualLength(z)+10;}if(B>y){y=B;}});x.width=x.longest=Math.min(x.maxWidth,y+7);q.BuildStyles(r,p,true);};p.sortData=function(w){p.config.sortInfo={column:w,field:w.field,direction:w.sortDirection};p.clearSortingData(w);if(!p.config.useExternalSorting){v.Sort(p.config.sortInfo,p.sortedData);}p.lastSortedColumn=w;p.searchProvider.evalFilter();r.$emit("ngGridEventSorted",w);};p.clearSortingData=function(w){if(!w){angular.forEach(r.columns,function(x){x.sortDirection="";});}else{if(p.lastSortedColumn&&w!=p.lastSortedColumn){p.lastSortedColumn.sortDirection="";}}};p.fixColumnIndexes=function(){angular.forEach(r.columns,function(w,x){w.index=x;});};p.fixGroupIndexes=function(){angular.forEach(r.configGroups,function(x,w){x.groupIndex=w+1;});};r.elementsNeedMeasuring=true;r.columns=[];r.renderedRows=[];r.headerRow=null;r.rowHeight=p.config.rowHeight;r.jqueryUITheme=p.config.jqueryUITheme;r.footer=null;r.selectedItems=p.config.selectedItems;r.multiSelect=p.config.multiSelect;r.footerVisible=ng.utils.isNullOrUndefined(p.config.displayFooter)?p.config.footerVisible:p.config.displayFooter;r.footerRowHeight=r.footerVisible?p.config.footerRowHeight:0;r.showColumnMenu=p.config.showColumnMenu;r.showMenu=false;r.configGroups=[];r.enablePaging=p.config.enablePaging;r.pagingOptions=p.config.pagingOptions;r.rowTemplate=p.config.rowTemplate||ng.defaultRowTemplate();r.headerRowTemplate=p.config.headerRowTemplate||ng.defaultHeaderRowTemplate();r.i18n={};ng.utils.seti18n(r,p.config.i18n);if(p.config.rowTemplate&&!f.test(p.config.rowTemplate)){r.rowTemplate=$.ajax({type:"GET",url:p.config.rowTemplate,async:false}).responseText;}if(p.config.headerRowTemplate&&!f.test(p.config.headerRowTemplate)){r.headerRowTemplate=$.ajax({type:"GET",url:p.config.headerRowTemplate,async:false}).responseText;}r.visibleColumns=function(){return r.columns.filter(function(w){return w.visible;});};r.toggleShowMenu=function(){r.showMenu=!r.showMenu;};r.toggleSelectAll=function(w){p.selectionService.toggleSelectAll(w);};r.totalFilteredItemsLength=function(){return p.filteredData.length;};r.showGroupPanel=function(){return p.config.showGroupPanel;};r.topPanelHeight=function(){return p.config.showGroupPanel===true?p.config.headerRowHeight*2:p.config.headerRowHeight;};r.viewportDimHeight=function(){return Math.max(0,p.rootDim.outerHeight-r.topPanelHeight()-r.footerRowHeight-2);};r.groupBy=function(w){if(p.sortedData.length<1||!w.groupable){return;}var x=r.configGroups.indexOf(w);if(x==-1){w.isGroupedBy=true;r.configGroups.push(w);w.groupIndex=r.configGroups.length;}else{r.removeGroup(x);}};r.removeGroup=function(x){var w=r.columns.filter(function(y){return y.groupIndex==(x+1);})[0];w.isGroupedBy=false;w.groupIndex=0;if(r.columns[x].isAggCol){r.columns.splice(x,1);r.configGroups.splice(x,1);p.fixGroupIndexes();}if(r.configGroups.length===0){p.fixColumnIndexes();q.digest(r);}};r.totalRowWidth=function(){var w=0,x=r.visibleColumns();angular.forEach(x,function(y){w+=y.width;});return w;};r.headerScrollerDim=function(){var x=r.viewportDimHeight(),y=p.maxCanvasHt,z=(y>x),w=new ng.Dimension();w.autoFitHeight=true;w.outerWidth=r.totalRowWidth();if(z){w.outerWidth+=p.elementDims.scrollW;}else{if((y-x)<=p.elementDims.scrollH){w.outerWidth+=p.elementDims.scrollW;}}return w;};p.init();};ng.Range=function(q,p){this.topRow=q;this.bottomRow=p;};ng.Row=function(r,s,t){var q=this,p=s.canSelectRows;q.jqueryUITheme=s.jqueryUITheme;q.rowClasses=s.rowClasses;q.entity=r;q.selectionService=t;q.selected=false;q.cursor=p?"pointer":"default";q.continueSelection=function(u){q.selectionService.ChangeSelection(q,u);};q.toggleSelected=function(v){if(!p){return true;}var u=v.target||v;if(u.type=="checkbox"&&u.parentElement.className!="ngSelectionCell ng-scope"){return true;}if(s.selectWithCheckboxOnly&&u.type!="checkbox"){return true;}else{if(q.beforeSelectionChange(q)){q.continueSelection(v);return q.afterSelectionChange();}}return false;};q.rowIndex=0;q.offsetTop=0;q.rowDisplayIndex=0;q.alternatingRowClass=function(){var v=(q.rowIndex%2)===0;var u={selected:q.selected,"ui-state-default":q.jqueryUITheme&&v,"ui-state-active":q.jqueryUITheme&&!v,even:v,odd:!v};return u;};q.beforeSelectionChange=s.beforeSelectionChangeCallback;q.afterSelectionChange=s.afterSelectionChangeCallback;q.propertyCache={};q.getProperty=function(u){return q.propertyCache[u]||ng.utils.evalProperty(q.entity,u);};if(q.entity[b]===undefined){q.entity[b]=false;}else{if(q.entity[b]){q.selectionService.setSelection(q,q.entity[b]);}}};ng.SearchProvider=function(s,t,w){var r=this,p=[];r.extFilter=t.config.filterOptions.useExternalFilter;s.showFilter=t.config.showFilter;s.filterText="";r.fieldMap={};r.evalFilter=function(){if(p.length===0){t.filteredData=t.sortedData;}else{t.filteredData=t.sortedData.filter(function(J){for(var C=0,E=p.length;C<E;C++){var B=p[C];if(!B.column){for(var y in J){if(J.hasOwnProperty(y)){var G=r.fieldMap[y];if(!G){continue;}var D=(G&&G.cellFilter)?w(G.cellFilter):null;var x=J[y];if(x!=null){var K;if(typeof D=="function"){var F=D(typeof x==="object"?v(x,G.field):x).toString();K=B.regex.test(F);}else{K=B.regex.test(typeof x==="object"?v(x,G.field).toString():x.toString());}if(x&&K){return true;}}}}return false;}var A=r.fieldMap[B.columnDisplay];if(!A){return false;}var z=A.cellFilter?w(A.cellFilter):null;var H=J[B.column]||J[A.field.split(".")[0]];if(H==null){return false;}var K;if(typeof z=="function"){var I=z(typeof H==="object"?v(H,A.field):H).toString();K=B.regex.test(I);}else{K=B.regex.test(typeof H==="object"?v(H,A.field).toString():H.toString());}if(!H||!K){return false;}}return true;});}t.rowFactory.filteredDataChanged();};var v=function(C,y){if(typeof C!="object"||typeof y!="string"){return C;}var z=y.split(".");var B=C;if(z.length>1){for(var A=1,x=z.length;A<x;A++){B=B[z[A]];if(!B){return C;}}return B;}return C;};var q=function(z,x){try{return new RegExp(z,x);}catch(y){return new RegExp(z.replace(/(\^|\$|\(|\)|\<|\>|\[|\]|\{|\}|\\|\||\.|\*|\+|\?)/g,"\\$1"));}};var u=function(x){p=[];var z="";if(!(z=$.trim(x))){return;}var y=z.split(";");$.each(y,function(C,D){var B=D.split(":");if(B.length>1){var A=$.trim(B[0]);var F=$.trim(B[1]);if(A&&F){p.push({column:A,columnDisplay:A.replace(/\s+/g,"").toLowerCase(),regex:q(F,"i")});}}else{var E=$.trim(B[0]);if(E){p.push({column:"",regex:q(E,"i")});}}});};s.$watch(t.config.filterOptions.filterText,function(x){s.filterText=x;});s.$watch("filterText",function(x){if(!r.extFilter){s.$emit("filterChanged",x);u(x);r.evalFilter();}});if(!r.extFilter){s.$watch("columns",function(x){angular.forEach(x,function(y){r.fieldMap[y.field.split(".")[0]]=y;r.fieldMap[y.displayName.toLowerCase().replace(/\s+/g,"")]=y;});});}};ng.SelectionService=function(q){var p=this;p.multi=q.config.multiSelect;p.selectedItems=q.config.selectedItems;p.selectedIndex=q.config.selectedIndex;p.lastClickedRow=undefined;p.ignoreSelectedItemChanges=false;p.rowFactory={};p.Initialize=function(r){p.rowFactory=r;};p.ChangeSelection=function(u,s){if(s&&s.shiftKey&&p.multi){if(p.lastClickedRow){var t=q.filteredData.indexOf(u.entity);var r=q.filteredData.indexOf(p.lastClickedRow.entity);if(t==r){return false;}r++;if(t<r){t=t^r;r=t^r;t=t^r;}var v=[];for(;r<=t;r++){v.push(p.rowFactory.rowCache[r]);}if(v[v.length-1].beforeSelectionChange(v,s)){$.each(v,function(x,w){w.selected=true;w.entity[b]=true;if(p.selectedItems.indexOf(w.entity)===-1){p.selectedItems.push(w.entity);}});v[v.length-1].afterSelectionChange(v,s);}p.lastClickedRow=v[v.length-1];return true;}}else{if(!p.multi){if(p.lastClickedRow&&p.lastClickedRow!=u){p.setSelection(p.lastClickedRow,false);}p.setSelection(u,q.config.keepLastSelected?true:!u.selected);}else{p.setSelection(u,!u.selected);}}p.lastClickedRow=u;return true;};p.setSelection=function(t,r){t.selected=r;t.entity[b]=r;if(!r){var s=p.selectedItems.indexOf(t.entity);p.selectedItems.splice(s,1);}else{if(p.selectedItems.indexOf(t.entity)===-1){p.selectedItems.push(t.entity);}}};p.toggleSelectAll=function(r){angular.forEach(q.filteredData,function(u,t){q.rowFactory.buildEntityRow(u,t);});if(q.config.beforeSelectionChange(q.rowFactory.rowCache)){var s=p.selectedItems.length;if(s>0){p.selectedItems.splice(0,s);}angular.forEach(q.filteredData,function(t){t[b]=r;if(r){p.selectedItems.push(t);}});angular.forEach(p.rowFactory.rowCache,function(t){t.selected=r;});q.config.afterSelectionChange(q.rowFactory.rowCache);}};};ng.StyleProvider=function(q,r,p){q.headerCellStyle=function(s){return{height:s.headerRowHeight+"px"};};q.rowStyle=function(s){return{top:s.offsetTop+"px",height:q.rowHeight+"px"};};q.canvasStyle=function(){return{height:r.maxCanvasHt.toString()+"px"};};q.headerScrollerStyle=function(){return{height:r.config.headerRowHeight+"px"};};q.topPanelStyle=function(){return{width:r.rootDim.outerWidth+"px",height:q.topPanelHeight()+"px"};};q.headerStyle=function(){return{width:(r.rootDim.outerWidth-p.ScrollW)+"px",height:r.config.headerRowHeight+"px"};};q.viewportStyle=function(){return{width:r.rootDim.outerWidth+"px",height:q.viewportDimHeight()+"px"};};q.footerStyle=function(){return{width:r.rootDim.outerWidth+"px",height:q.footerRowHeight+"px"};};};j.directive("ngGrid",["$compile","$filter","SortService","DomUtilityService",function(q,s,t,p){var r={scope:true,compile:function(){return{pre:function(A,v,y){var B=$(v);var C=A.$eval(y.ngGrid);C.gridDim=new ng.Dimension({outerHeight:$(B).height(),outerWidth:$(B).width()});var u=new ng.Grid(A,C,t,p,s);if(typeof C.columnDefs=="string"){A.$parent.$watch(C.columnDefs,function(D){A.columns=[];u.config.columnDefs=D;u.buildColumns();u.configureColumnWidths();p.BuildStyles(A,u);u.eventProvider.assignEvents();});}if(typeof C.data=="string"){var x=0;var z=function(D){x=D?D.length:0;u.sortedData=A.$eval(C.data)||[];u.searchProvider.evalFilter();u.configureColumnWidths();u.refreshDomSizes();if(u.config.sortInfo){if(!u.config.sortInfo.column){u.config.sortInfo.column=A.columns.filter(function(E){return E.field==u.config.sortInfo.field;})[0];if(!u.config.sortInfo.column){return;}}u.config.sortInfo.column.sortDirection=u.config.sortInfo.direction.toLowerCase();u.sortData(u.config.sortInfo.column);}};A.$parent.$watch(C.data,z);A.$parent.$watch(C.data+".length",function(D){if(D!=x){z(A.$eval(C.data));}});}var w=ng.defaultGridTemplate(u.config);u.footerController=new ng.Footer(A,u);v.addClass("ngGrid").addClass(u.gridId.toString());if(C.jqueryUITheme){v.addClass("ui-widget");}v.append(q(w)(A));p.AssignGridContainers(v,u);u.configureColumnWidths();u.eventProvider=new ng.EventProvider(u,A,p);angular.forEach(C.plugins,function(D){D.init(A.$new(),u,{SortService:t,DomUtilityService:p});});return null;}};}};return r;}]);j.directive("ngRow",["$compile",function(q){var p={scope:false,compile:function(){return{pre:function(r,t){if(r.row.isAggRow){var s=ng.aggregateTemplate();if(r.row.aggLabelFilter){s=s.replace(k,"| "+r.row.aggLabelFilter);}else{s=s.replace(k,"");}t.append(q(s)(r));}else{t.append(q(r.rowTemplate)(r));}}};}};return p;}]);j.directive("ngCell",["$compile",function(q){var p={scope:false,compile:function(){return{pre:function(r,s){s.append(q(r.col.cellTemplate)(r));}};}};return p;}]);j.directive("ngHeaderRow",["$compile",function(p){var q={scope:false,compile:function(){return{pre:function(r,s){if(s.children().length===0){s.append(p(r.headerRowTemplate)(r));}}};}};return q;}]);j.directive("ngHeaderCell",["$compile",function(p){var q={scope:false,compile:function(){return{pre:function(r,s){s.append(p(r.col.headerCellTemplate)(r));}};}};return q;}]);angular.module("ngGrid",["ngGrid.services","ngGrid.directives","ngGrid.filters"]);g.ngGrid.i18n.en={ngAggregateLabel:"items",ngGroupPanelDescription:"Drag a column header here and drop it to group by that column.",ngSearchPlaceHolder:"Search...",ngMenuText:"Choose Columns:",ngShowingItemsLabel:"Showing Items:",ngTotalItemsLabel:"Total Items:",ngSelectedItemsLabel:"Selected Items:",ngPageSizeLabel:"Page Size:",ngPagerFirstTitle:"First Page",ngPagerNextTitle:"Next Page",ngPagerPrevTitle:"Previous Page",ngPagerLastTitle:"Last Page"};}(window));
.ui-resetwrap{position:relative;display:inline-block}.ui-reset{position:absolute;top:0;right:0;z-index:2;display:none;height:100%;cursor:pointer}.ui-resetwrap:hover .ui-reset{display:block}.ui-currency-pos{color:green}.ui-currency-neg{color:red}.ui-currency-zero{color:blue}.ui-currency-pos.ui-bignum,.ui-currency-neg.ui-smallnum{font-size:110%}.ui-match{background:yellow}
/**
 * AngularUI - The companion suite for AngularJS
 * @version v0.3.2 - 2012-12-04
 * @link http://angular-ui.github.com
 * @license MIT License, http://www.opensource.org/licenses/MIT
 */
angular.module("ui.config",[]).value("ui.config",{}),angular.module("ui.filters",["ui.config"]),angular.module("ui.directives",["ui.config"]),angular.module("ui",["ui.filters","ui.directives","ui.config"]),angular.module("ui.directives").directive("uiSortable",["ui.config",function(e){var t;return t={},e.sortable!=null&&angular.extend(t,e.sortable),{require:"?ngModel",link:function(e,n,r,i){var s,o,u,a,f;return u=angular.extend({},t,e.$eval(r.uiOptions)),i!=null&&(s=function(e,t){return t.item.data("ui-sortable-start",t.item.index())},o=function(t,n){var r,s;return s=n.item.data("ui-sortable-start"),r=n.item.index(),i.$modelValue.splice(r,0,i.$modelValue.splice(s,1)[0]),e.$apply()},a=u.start,u.start=function(t,n){return s(t,n),typeof a=="function"&&a(t,n),e.$apply()},f=u.update,u.update=function(t,n){return o(t,n),typeof f=="function"&&f(t,n),e.$apply()}),n.sortable(u)}}}]),angular.module("ui.directives").directive("uiJq",["ui.config",function(e){return{restrict:"A",compile:function(t,n){if(!angular.isFunction(t[n.uiJq]))throw new Error('ui-jq: The "'+n.uiJq+'" function does not exist');var r=e.jq&&e.jq[n.uiJq];return function(e,t,n){var i=[],s="change";n.uiOptions?(i=e.$eval("["+n.uiOptions+"]"),angular.isObject(r)&&angular.isObject(i[0])&&(i[0]=angular.extend(r,i[0]))):r&&(i=[r]),n.ngModel&&t.is("select,input,textarea")&&(i&&angular.isObject(i[0])&&i[0].ngChange!==undefined&&(s=i[0].ngChange),s&&t.on(s,function(){t.trigger("input")})),t[n.uiJq].apply(t,i)}}}}]),angular.module("ui.directives").directive("uiEvent",["$parse",function(e){return function(t,n,r){var i=t.$eval(r.uiEvent);angular.forEach(i,function(r,i){var s=e(r);n.bind(i,function(e){var n=Array.prototype.slice.call(arguments);n=n.splice(1),t.$apply(function(){s(t,{$event:e,$params:n})})})})}}]),angular.module("ui.directives").directive("uiMask",[function(){return{require:"ngModel",link:function(e,t,n,r){r.$render=function(){var i=r.$viewValue||"";t.val(i),t.mask(e.$eval(n.uiMask))},r.$parsers.push(function(e){var n=t.isMaskValid()||angular.isUndefined(t.isMaskValid())&&t.val().length>0;return r.$setValidity("mask",n),n?e:undefined}),t.bind("keyup",function(){e.$apply(function(){r.$setViewValue(t.mask())})})}}}]),angular.module("ui.directives").directive("uiModal",["$timeout",function(e){return{restrict:"EAC",require:"ngModel",link:function(t,n,r,i){n.addClass("modal hide"),n.on("shown",function(){n.find("[autofocus]").focus()}),t.$watch(r.ngModel,function(e){n.modal(e&&"show"||"hide")}),n.on(jQuery.support.transition&&"shown"||"show",function(){e(function(){i.$setViewValue(!0)})}),n.on(jQuery.support.transition&&"hidden"||"hide",function(){e(function(){i.$setViewValue(!1)})})}}}]),angular.module("ui.directives").directive("uiReset",["ui.config",function(e){var t=null;return e.reset!==undefined&&(t=e.reset),{require:"ngModel",link:function(e,n,r,i){var s;s=angular.element('<a class="ui-reset" />'),n.wrap('<span class="ui-resetwrap" />').after(s),s.bind("click",function(n){n.preventDefault(),e.$apply(function(){r.uiReset?i.$setViewValue(e.$eval(r.uiReset)):i.$setViewValue(t),i.$render()})})}}}]),function(){function t(e,t,n,r){angular.forEach(t.split(" "),function(t){var i={type:"map-"+t};google.maps.event.addListener(n,t,function(t){r.trigger(angular.extend({},i,t)),e.$$phase||e.$apply()})})}function n(n,r){e.directive(n,[function(){return{restrict:"A",link:function(e,i,s){e.$watch(s[n],function(n){t(e,r,n,i)})}}}])}var e=angular.module("ui.directives");e.directive("uiMap",["ui.config","$parse",function(e,n){var r="bounds_changed center_changed click dblclick drag dragend dragstart heading_changed idle maptypeid_changed mousemove mouseout mouseover projection_changed resize rightclick tilesloaded tilt_changed zoom_changed",i=e.map||{};return{restrict:"A",link:function(e,s,o){var u=angular.extend({},i,e.$eval(o.uiOptions)),a=new google.maps.Map(s[0],u),f=n(o.uiMap);f.assign(e,a),t(e,r,a,s)}}}]),e.directive("uiMapInfoWindow",["ui.config","$parse","$compile",function(e,n,r){var i="closeclick content_change domready position_changed zindex_changed",s=e.mapInfoWindow||{};return{link:function(e,o,u){var a=angular.extend({},s,e.$eval(u.uiOptions));a.content=o[0];var f=n(u.uiMapInfoWindow),l=f(e);l||(l=new google.maps.InfoWindow(a),f.assign(e,l)),t(e,i,l,o),o.replaceWith("<div></div>");var c=l.open;l.open=function(n,i,s,u,a,f){r(o.contents())(e),c.call(l,n,i,s,u,a,f)}}}}]),n("uiMapMarker","animation_changed click clickable_changed cursor_changed dblclick drag dragend draggable_changed dragstart flat_changed icon_changed mousedown mouseout mouseover mouseup position_changed rightclick shadow_changed shape_changed title_changed visible_changed zindex_changed"),n("uiMapPolyline","click dblclick mousedown mousemove mouseout mouseover mouseup rightclick"),n("uiMapPolygon","click dblclick mousedown mousemove mouseout mouseover mouseup rightclick"),n("uiMapRectangle","bounds_changed click dblclick mousedown mousemove mouseout mouseover mouseup rightclick"),n("uiMapCircle","center_changed click dblclick mousedown mousemove mouseout mouseover mouseup radius_changed rightclick"),n("uiMapGroundOverlay","click dblclick")}(),angular.module("ui.directives").factory("keypressHelper",["$parse",function(t){var n={8:"backspace",9:"tab",13:"enter",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete"},r=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};return function(e,i,s,o){var u,a=[];u=i.$eval(o["ui"+r(e)]),angular.forEach(u,function(e,n){var r,i;i=t(e),angular.forEach(n.split(" "),function(e){r={expression:i,keys:{}},angular.forEach(e.split("-"),function(e){r.keys[e]=!0}),a.push(r)})}),s.bind(e,function(t){var r=t.metaKey||t.altKey,s=t.ctrlKey,o=t.shiftKey,u=t.keyCode;e==="keypress"&&!o&&u>=97&&u<=122&&(u-=32),angular.forEach(a,function(e){var u=e.keys[n[t.keyCode]]||e.keys[t.keyCode.toString()]||!1,a=e.keys.alt||!1,f=e.keys.ctrl||!1,l=e.keys.shift||!1;u&&a==r&&f==s&&l==o&&i.$apply(function(){e.expression(i,{$event:t})})})})}}]),angular.module("ui.directives").directive("uiKeydown",["keypressHelper",function(e){return{link:function(t,n,r){e("keydown",t,n,r)}}}]),angular.module("ui.directives").directive("uiKeypress",["keypressHelper",function(e){return{link:function(t,n,r){e("keypress",t,n,r)}}}]),angular.module("ui.directives").directive("uiKeyup",["keypressHelper",function(e){return{link:function(t,n,r){e("keyup",t,n,r)}}}]),angular.module("ui.directives").directive("uiValidate",function(){return{restrict:"A",require:"ngModel",link:function(e,t,n,r){var i,s=n.uiValidate;s=e.$eval(s);if(!s)return;angular.isFunction(s)&&(s={validator:s}),angular.forEach(s,function(e,t){i=function(n){return e(n)?(r.$setValidity(t,!0),n):(r.$setValidity(t,!1),undefined)},r.$formatters.push(i),r.$parsers.push(i)})}}}),angular.module("ui.directives").directive("uiAnimate",["ui.config","$timeout",function(e,t){var n={};return angular.isString(e.animate)?n["class"]=e.animate:e.animate&&(n=e.animate),{restrict:"A",link:function(e,r,i){var s={};i.uiAnimate&&(s=e.$eval(i.uiAnimate),angular.isString(s)&&(s={"class":s})),s=angular.extend({"class":"ui-animate"},n,s),r.addClass(s["class"]),t(function(){r.removeClass(s["class"])},20,!1)}}}]),angular.module("ui.directives").directive("uiSelect2",["ui.config","$http",function(e,t){var n={};return e.select2&&angular.extend(n,e.select2),{require:"?ngModel",compile:function(e,t){var r,i,s,o=e.is("select"),u=t.multiple!==undefined;return e.is("select")&&(i=e.find("option[ng-repeat], option[data-ng-repeat]"),i.length&&(s=i.attr("ng-repeat")||i.attr("data-ng-repeat"),r=jQuery.trim(s.split("|")[0]).split(" ").pop())),function(e,t,i,s){var a=angular.extend({},n,e.$eval(i.uiSelect2));o?(delete a.multiple,delete a.initSelection):u&&(a.multiple=!0);if(s){s.$render=function(){o?t.select2("val",s.$modelValue):u&&!s.$modelValue?t.select2("data",[]):t.select2("data",s.$modelValue)},r&&e.$watch(r,function(e,n,r){if(!e)return;setTimeout(function(){t.select2("val",s.$viewValue),t.trigger("change")})});if(!o){t.bind("change",function(){e.$apply(function(){s.$setViewValue(t.select2("data"))})});if(a.initSelection){var f=a.initSelection;a.initSelection=function(e,t){f(e,function(e){s.$setViewValue(e),t(e)})}}}}i.$observe("disabled",function(e){t.select2(e&&"disable"||"enable")}),e.$watch(i.ngMultiple,function(e){t.select2(a)}),t.val(e.$eval(i.ngModel)),setTimeout(function(){t.select2(a)})}}}}]),angular.module("ui.directives").directive("uiCodemirror",["ui.config","$parse",function(e,t){"use strict";return e.codemirror=e.codemirror||{},{require:"ngModel",link:function(n,r,i,s){if(!r.is("textarea"))throw new Error("ui-codemirror can only be applied to a textarea element");var o,u=t(i.uiCodemirror),a=function(e){var t=e.getValue();t!==s.$viewValue&&(s.$setViewValue(t),n.$apply())},f=function(t){t=angular.extend({},t,e.codemirror);var n=t.onChange;n?t.onChange=function(e){a(e),n(e)}:t.onChange=a,o&&o.toTextArea(),o=CodeMirror.fromTextArea(r[0],t)};f(u()),n.$watch(u,f,!0),s.$formatters.push(function(e){if(angular.isUndefined(e)||e===null)return"";if(angular.isObject(e)||angular.isArray(e))throw new Error("ui-codemirror cannot use an object or an array as a model");return e}),s.$render=function(){o.setValue(s.$viewValue)}}}}]),angular.module("ui.directives").directive("uiTinymce",["ui.config",function(e){return e.tinymce=e.tinymce||{},{require:"ngModel",link:function(t,n,r,i){var s,o={onchange_callback:function(e){e.isDirty()&&(e.save(),i.$setViewValue(n.val()),t.$$phase||t.$apply())},handle_event_callback:function(e){return this.isDirty()&&(this.save(),i.$setViewValue(n.val()),t.$$phase||t.$apply()),!0},setup:function(e){e.onSetContent.add(function(e,r){e.isDirty()&&(e.save(),i.$setViewValue(n.val()),t.$$phase||t.$apply())})}};r.uiTinymce?s=t.$eval(r.uiTinymce):s={},angular.extend(o,e.tinymce,s),setTimeout(function(){n.tinymce(o)})}}}]),angular.module("ui.directives").directive("uiIf",[function(){return{transclude:"element",priority:1e3,terminal:!0,restrict:"A",compile:function(e,t,n){return function(e,t,r){t[0].doNotMove=!0;var i=r.uiIf,s,o;e.$watch(i,function(r){s&&(s.remove(),s=null),o&&(o.$destroy(),o=null),r&&(o=e.$new(),n(o,function(e){s=e,t.after(e)})),t.parent().trigger("$childrenChanged")})}}}}]),angular.module("ui.directives").directive("uiScrollfix",["$window",function(e){"use strict";return{link:function(t,n,r){var i=n.offset().top;r.uiScrollfix?r.uiScrollfix.charAt(0)==="-"?r.uiScrollfix=i-r.uiScrollfix.substr(1):r.uiScrollfix.charAt(0)==="+"&&(r.uiScrollfix=i+parseFloat(r.uiScrollfix.substr(1))):r.uiScrollfix=i,angular.element(e).on("scroll.ui-scrollfix",function(){var t;if(angular.isDefined(e.pageYOffset))t=e.pageYOffset;else{var i=document.compatMode&&document.compatMode!=="BackCompat"?document.documentElement:document.body;t=i.scrollTop}!n.hasClass("ui-scrollfix")&&t>r.uiScrollfix?n.addClass("ui-scrollfix"):n.hasClass("ui-scrollfix")&&t<r.uiScrollfix&&n.removeClass("ui-scrollfix")})}}}]),angular.module("ui.directives").directive("uiCalendar",["ui.config","$parse",function(e,t){return e.uiCalendar=e.uiCalendar||{},{require:"ngModel",restrict:"A",scope:{events:"=ngModel"},link:function(n,r,i){function o(){var t,s={header:{left:"prev,next today",center:"title",right:"month,agendaWeek,agendaDay"},eventMouseover:function(e,t,n){n.name!=="agendaDay"&&$(t.target).attr("title",e.title)},events:n.events};i.uiCalendar?t=n.$eval(i.uiCalendar):t={},angular.extend(s,e.uiCalendar,t),r.html("").fullCalendar(s)}var s=t(i.ngModel);o(),n.$watch("events.length",function(e,t){o()},!0)}}}]),angular.module("ui.directives").directive("uiShow",[function(){return function(e,t,n){e.$watch(n.uiShow,function(e,n){e?t.addClass("ui-show"):t.removeClass("ui-show")})}}]).directive("uiHide",[function(){return function(e,t,n){e.$watch(n.uiHide,function(e,n){e?t.addClass("ui-hide"):t.removeClass("ui-hide")})}}]).directive("uiToggle",[function(){return function(e,t,n){e.$watch(n.uiToggle,function(e,n){e?t.removeClass("ui-hide").addClass("ui-show"):t.removeClass("ui-show").addClass("ui-hide")})}}]),angular.module("ui.directives").directive("uiCurrency",["ui.config","currencyFilter",function(e,t){var n={pos:"ui-currency-pos",neg:"ui-currency-neg",zero:"ui-currency-zero"};return e.currency&&angular.extend(n,e.currency),{restrict:"EAC",require:"ngModel",link:function(e,r,i,s){var o,u,a;o=angular.extend({},n,e.$eval(i.uiCurrency)),u=function(e){var n;return n=e*1,n>0?r.addClass(o.pos):r.removeClass(o.pos),n<0?r.addClass(o.neg):r.removeClass(o.neg),n===0?r.addClass(o.zero):r.removeClass(o.zero),e===""?r.text(""):r.text(t(n,o.symbol)),!0},s.$render=function(){a=s.$viewValue,r.val(a),u(a)}}}}]),angular.module("ui.directives").directive("uiDate",["ui.config",function(e){"use strict";var t;return t={},angular.isObject(e.date)&&angular.extend(t,e.date),{require:"?ngModel",link:function(t,n,r,i){var s=function(){return angular.extend({},e.date,t.$eval(r.uiDate))},o=function(){var e=s();if(i){var r=function(){t.$apply(function(){var e=n.datepicker("getDate");n.datepicker("setDate",n.val()),i.$setViewValue(e)})};if(e.onSelect){var o=e.onSelect;e.onSelect=function(e,t){return r(),o(e,t)}}else e.onSelect=r;n.bind("change",r),i.$render=function(){var e=i.$viewValue;if(angular.isDefined(e)&&e!==null&&!angular.isDate(e))throw new Error("ng-Model value must be a Date object - currently it is a "+typeof e+" - use ui-date-format to convert it from a string");n.datepicker("setDate",e)}}n.datepicker("destroy"),n.datepicker(e),i.$render()};t.$watch(s,o,!0)}}}]).directive("uiDateFormat",[function(){var e={require:"ngModel",link:function(e,t,n,r){if(n.uiDateFormat==="")r.$formatters.push(function(e){if(angular.isString(e))return new Date(e)}),r.$parsers.push(function(e){if(e)return e.toISOString()});else{var i=n.uiDateFormat;r.$formatters.push(function(e){if(angular.isString(e))return $.datepicker.parseDate(i,e)}),r.$parsers.push(function(e){if(e)return $.datepicker.formatDate(i,e)})}}};return e}]),angular.module("ui.filters").filter("highlight",function(){return function(e,t,n){return t||angular.isNumber(t)?(e=e.toString(),t=t.toString(),n?e.split(t).join('<span class="ui-match">'+t+"</span>"):e.replace(new RegExp(t,"gi"),'<span class="ui-match">$&</span>')):e}}),angular.module("ui.filters").filter("format",function(){return function(e,t){if(!e)return e;var n=e.toString(),r;return t===undefined?n:!angular.isArray(t)&&!angular.isObject(t)?n.split("$0").join(t):(r=angular.isArray(t)&&"$"||":",angular.forEach(t,function(e,t){n=n.split(r+t).join(e)}),n)}}),angular.module("ui.filters").filter("unique",function(){return function(e,t){if(t===!1)return e;if((t||angular.isUndefined(t))&&angular.isArray(e)){var n={},r=[],i=function(e){return angular.isObject(e)&&angular.isString(t)?e[t]:e};angular.forEach(e,function(e){var t,n=!1;for(var s=0;s<r.length;s++)if(angular.equals(i(r[s]),i(e))){n=!0;break}n||r.push(e)}),e=r}return e}}),angular.module("ui.filters").filter("inflector",function(){function e(e){return e.replace(/^([a-z])|\s+([a-z])/g,function(e){return e.toUpperCase()})}function t(e,t){return e.replace(/[A-Z]/g,function(e){return t+e})}var n={humanize:function(n){return e(t(n," ").split("_").join(" "))},underscore:function(e){return e.substr(0,1).toLowerCase()+t(e.substr(1),"_").toLowerCase().split(" ").join("_")},variable:function(t){return t=t.substr(0,1).toLowerCase()+e(t.split("_").join(" ")).substr(1).split(" ").join(""),t}};return function(e,t,r){return t!==!1&&angular.isString(e)?(t=t||"humanize",n[t](e)):e}});
{
    "d": [
        {
            "func": "cert",
            "name": "User1"
        },
        {
            "func": "cert",
            "name": "User2"
        },
        {
            "func": "struct",
            "name": "User3"
        },
        {
            "func": "struct",
            "name": "User4"
        },
        {
            "func": "hdrs",
            "name": "User5"
        },
        {
            "func": "hdrs",
            "name": "User6"
        },
        {
            "func": "null",
            "name": "User7"
        },
        {
            "func": "null",
            "name": "User8"
        },
        {
            "func": "eng",
            "name": "User9"
        },
        {
            "func": "eng",
            "name": "User10"
        }
    ]
}
<div modal="shouldBeOpen" close="modalClose()">
    <div class="modal-header">
        <h4>{{currentAssignment.Job}} <span ng-show="currentAssignmentRev"> - Rev {{currentAssignment.Rev}}</span></h4>
    </div>
    <div class="modal-body">
        
        <!-- NOTES BEGIN -->
        <div class="" ng-controller="NotesCtrl">

             <!-- BEGIN NOTES LIST -->
             <div class="notesList clearfix" >
                <ul>
                    <li ng-repeat="note in noteItems">
                        <div class="text"><p>{{note.Note}}</p></div>
                        <div class="author">{{note.UserName}}</div>
                        <div class="dateTime">{{note.NoteDate}}</div>
                        <div class="noteID">{{note.NoteID}}</div>
                    </li>
                </ul>

             </div>
             <div class="form-inline pull-right input-append">
                <input type="text" placeholder="Add a Note…" ng-model="newNote" id="newNote">
                <a class="btn btn-success" ng-click="addNote(newNote)">Add Note</a>
            </div>
             
            <!-- END NOTES LIST -->
            
        </div>
        <!-- NOTES END -->

        <div class="form-inline pull-right input-append" >
            <select id="createReworkVal" ng-init="getReworkModes()" ng-model="reworkModes" ng-options="reworkMode.Name for reworkMode in reworkModesItems" ng-selected="reworkModes[0]"></select>
            <a class="btn  btn-primary" data-ng-click="createRework(reworkModes, row)">Create Rework</a>
            {{reworkModes}}
        </div>
        <div class="modal-body pull-left"  ng-show="IssuedAssignment">
            <a class="btn btn-danger" data-ng-click="unIssueAssigment()">Un-Issue</a>
        </div>

    </div>
    <div class="modal-footer">
        <a class="btn btn-primary" ng-click="modalClose()">Close</a>
    </div>
</div>