// TRS extensible TypeMap
// New type must be in the next format --
//
// NewType : function (dataFromServer) {...};

TRS.TypeMap = {
ComboBox: function (data, widgetGroup){
	$(function() {
		var element = TRS.filterWidgetGroup($("select[@name="  + data.dataProviderName + "]"), widgetGroup);
		element.empty();
		var htmCode = "";
		for (var j = 0; j < data.data.length; j++) {
			var row = data.data[j];
			var label, value;
			if (row == null) {
				label = "";
				value = "";
			} else if (typeof row == "string") {
				label = row;
				value = row;
			} else if (row instanceof Array) {
				value = row[0];
				label = row[row.length - 1];
			} else {
				label = row.value;
				value = row.id;
			}
			$("<option>").val(value).html(label).appendTo(element);
		}
        setTimeout(function() {element.val(data.currentValue)}, 10);
	});
},

FlatList: function (data){
	$(function() {
		var element = $("table[@name="  + data.dataProviderName + "]");
		var numberColumns = (+element.attr("numberColumns"));
		var numberElements =  data.data.length;
		var numberTableRow;
		if ((numberElements % numberColumns) != 0) {
            numberTableRow = Math.floor(numberElements / numberColumns) + 1;
        } else {
            numberTableRow = Math.floor(numberElements / numberColumns);
        }

		element.empty();
		var htmCode = "";

		for (var tableRow = 0; tableRow < numberTableRow; tableRow++) {
			htmCode += "<tr>";
			for (var arrayIndex = tableRow; arrayIndex < numberElements; arrayIndex += numberTableRow ) {
				var row = data.data[arrayIndex];
				var label = row[0];
				if (typeof row == "string") {
					label = row;
				}
				htmCode += "<td align= 'left'><a class = '" + element.attr("class")
						+ "' href= 'javascript:;'>" + label
						+ "</a></td>\n";
			}
			htmCode += "</tr>"
		}

		if (htmCode != "")
		{
			element.append(htmCode);
		}
	});
},

Image: function(data) {
	$(function() {
		var element = $("div[@name="  + data.dataProviderName + "]");

		if (typeof data.data[0] == "undefined") {
			element.empty();
			return;
		}

		var path = "";
        var altText = "";
         if (data.data.length > 0) {
         	var row = data.data[0];
         	if (typeof row == "string") {
         		path = row
         	} else {
                path = data.data[0].value1;
                if (data.data[0].length > 1) {
                    altText = RemoveQuotes(data.data[0].value2);
                }
            }
        }
		var imageHeight = element.attr("imageHeight");
		var imageWidth = element.attr("imageWidth");

		if (path == "") return;

			var urlStr = TRS.ConfigMap.ImagesBaseURL + path;
    		var start = path.length - ".mov".length;
    		if (path.substring(start) == ".mov") {
    			// mov
				var htmCode =
			  	"<OBJECT classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' width='320'"
				+ "height='255' codebase='http://www.apple.com/qtactivex/qtplugin.cab'> "
				+ "            <param name='src' value='" + urlStr + "'> "
				+ "            <param name='autoplay' value=\"true\"> "
				+ "            <param name='controller' value=\"true\">"
				+ "            <param name='loop' value=\"true\">"
				+ "            <EMBED src='" + urlStr + "' width=\"320\" height=\"255\" autoplay=\"true\" "
				+ "            		controller=\"true\" loop=\"true\" pluginspage='http://www.apple.com/quicktime/download/'>"
				+ "            </EMBED>"
				+ "        </OBJECT>";
    		} else {
				var htmCode = "<img src='" + urlStr + "'/>";
				/*var htmCode = "<img src='" + urlStr + "' alt='"
					+ RemoveQuotes(altText) + "' HEIGHT='" + imageHeight +
					"px' WIDTH='" + imageWidth + "px'/>";*/
    			}

		element.html(htmCode);
	});
},

ImageList: function(data) {
	$(function() {
		var element = $("table[@name="  + data.dataProviderName + "]");
		//var refreshDataProvider = element.attr("refreshDataProvider");
		var numberElements =  data.data.length;
		var numberColumns = (+element.attr("numberColumns"));
		var imagesHeight = element.attr("imagesHeight");
		var imagesWidth = element.attr("imagesWidth");

		element.empty();
		var htmCode = "<tr>";

		var imgPath = TRS.ConfigMap.ImagesBaseURL;

		if (data.data.length > 0)
            // if (data.data[0].length > 1)
					if (data.data[0].imagePath.substring(0,7)== "images/")
						imgPath = "";


		for (var tableRow = 0; tableRow < numberElements; tableRow++) {

			if(tableRow % numberColumns == 0){
				htmCode += "</tr\n><tr>\n";
			}
				htmCode += "<td\n> <a class='"
				+ element.attr("imagesClass")
				+ "' href=\"javascript:TRS.getData('imgmovImageDataProvider"
				+ "',{imgmovViewPoint"
				+ ": '"
				+ data.data[tableRow].imageViewPoint
				+ "',imgmovImageCode"
				+ ":'"
				+ data.data[tableRow].imageTypeID
				+ "'});\">"
				+"<img border='0' HEIGHT='"+ imagesHeight + "px' WIDTH='" + imagesWidth + "px' src='"
				+ imgPath
				+ data.data[tableRow].imagePath
				+ "' alt='"
				+ RemoveQuotes(data.data[tableRow].imageDescription)
				+ "'/></a>\n </td>\n";
		}


		if (htmCode != "")
		{
			htmCode += "</tr></table>";
			element.append(htmCode);
		}
	});
},
NewComboBox : function (data){
		$(function() {
		TRS.TypeMap.ComboBox(data);
		trilogy_configurator_onChange();
	});
},

ImageLinkTextList : function (data, numberOfEntries, heading, headingClass1, headingClass2, contentClass1, contentClass2, isColumnLayout){

		var element = $("div[@name=" + data.dataProviderName + "]");

		var htmCode = "<table align='center' cellpadding='0' cellspacing='0' border='0'><tr><td class='" + headingClass1 + "' align='left'>"+ heading +"</td></tr><tr><td><table align='center' cellpadding='0' cellspacing='0'  class='"+ headingClass2 + "'>";
		var numberOfEntriesInOtherDimension = 0;
		if(data.data.length % numberOfEntries == 0) {
			  numberOfEntriesInOtherDimension = data.data.length/numberOfEntries;
		} else {
			  numberOfEntriesInOtherDimension = ((data.data.length - (data.data.length % numberOfEntries))/numberOfEntries) + 1;
		}
		var numberOfDrawings = 0;
		if(!isColumnLayout) {
            for (var i = 0; i < numberOfEntriesInOtherDimension; i++)
            {
                htmCode += "<tr>"
                for( var j =0; j < numberOfEntries && numberOfDrawings < data.data.length; j++, numberOfDrawings++) {
                    if(!isColumnLayout) {
                        htmCode += "<td align='center' class='"+ contentClass1 +"'><img src='"+ data.data[numberOfDrawings].imagePath +"' /><br /><a class='"+ contentClass2 +"' href='"+ data.data[numberOfDrawings].link +"' target='_blank'>"+ data.data[numberOfDrawings].text +"</a></td>";
                    } else {

                    }
                }
                htmCode += "</tr>"
            }
		}else {

            for (var i = 0; i < numberOfEntries; i++)
                {
                    htmCode += "<tr>"
                    for( var j =0; j < numberOfEntriesInOtherDimension && numberOfDrawings < data.data.length; j++) {
                        var drawingIndex = (j * numberOfEntries) + i
                        if(drawingIndex < data.data.length) {
                            htmCode += "<td align='center' class='"+ contentClass1 +"'><img src='"+ data.data[drawingIndex].imagePath +"' /><br /><a class='"+ contentClass2 +"' href='"+ data.data[drawingIndex].link +"' target='_blank'>"+ data.data[drawingIndex].text +"</a></td>";
                            numberOfDrawings++
                        }
                    }
                    htmCode += "</tr>"
             }
		}


		htmCode += "</table>";
		element.empty();
		element.append(htmCode);
},

LinkTextList : function (data, numberOfEntries, heading, headingClass1, headingClass2, contentClass1, contentClass2, isColumnLayout){

		var element = $("div[@name=" + data.dataProviderName + "]");

		var htmCode = "<table align='center' cellpadding='0' cellspacing='0' border='0'><tr><td class='" + headingClass1 + "' align='left'>"+ heading +"</td></tr><tr><td><table align='center' cellpadding='0' cellspacing='0'  class='"+ headingClass2 + "'>";
		var numberOfEntriesInOtherDimension = 0;

		if(data.data.length % numberOfEntries == 0) {

			  numberOfEntriesInOtherDimension = data.data.length/numberOfEntries;
		} else {

			  numberOfEntriesInOtherDimension = ((data.data.length - (data.data.length % numberOfEntries))/numberOfEntries) + 1;
		}
		var numberOfDrawings = 0;

		if(!isColumnLayout) {
            for (var i = 0; i < numberOfEntriesInOtherDimension; i++)
            {
                htmCode += "<tr>"
                for( var j =0; j < numberOfEntries && numberOfDrawings < data.data.length; j++, numberOfDrawings++) {
                    if(!isColumnLayout) {
                        htmCode += "<td align='center' class='"+ contentClass1 +"'><br /><a class='"+ contentClass2 +"' href='"+ data.data[numberOfDrawings].link +"' target='_blank'>"+ data.data[numberOfDrawings].text +"</a></td>";
                    } else {

                    }
                }
                htmCode += "</tr>"
            }
		}else {

            for (var i = 0; i < numberOfEntries; i++)
                {
                    htmCode += "<tr>"
                    for( var j =0; j < numberOfEntriesInOtherDimension && numberOfDrawings < data.data.length; j++) {
                        var drawingIndex = (j * numberOfEntries) + i
                        if(drawingIndex < data.data.length) {
                            htmCode += "<td align='center' class='"+ contentClass1 +"'><br /><a class='"+ contentClass2 +"' href='"+ data.data[drawingIndex].link +"' target='_blank'>"+ data.data[drawingIndex].text +"</a></td>";
                            numberOfDrawings++
                        }
                    }
                    htmCode += "</tr>"
             }
		}


		htmCode += "</table>";
		element.empty();
		element.append(htmCode);
}

};
