
var msTimeoutID = null;
var objMSResult = new Object();
var objMSOriginalData = new Object();

var nMSPage = 1;
var nMSTotalPage = 1;
var nMSItemPerPage = 10;

var bMSBuildDetails = false;
var bMSUseAJAX = false;
var bMSShowControl = false;

var szMSController = "improvementMS";
var szMSMethod = "getCountry";
var szMSField = "CountryIDs";

var aMSSelected = new Array();
var aMSSelectedDetails = new Array();

function msSearch() {
	if (msTimeoutID != null) {
		clearTimeout(msTimeoutID);
	}
	msTimeoutID = setTimeout("msGet()",500);
}

function msGet () {
	
	msTimeoutID = null;
	var szMSSearch = document.getElementById("szMSSearch").value;
	if (szMSSearch != undefined) {
		
		if (bMSUseAJAX) {
			var szJson = {"szInteface":szInterface,"szMSController":szMSController,"szMSMethod":szMSMethod, "szMSSearch":szMSSearch };
			var objJson = objMultiSelect.get(ColdFusion.JSON.encode(szJson));
		
			objMSResult = ColdFusion.JSON.decode(objJson);
		} else {
			buildMSResult(szMSSearch);
		}
		
		nMSPage = 1;
		nMSTotalPage = 1;

		if (objMSResult.DATA != undefined) {
			
			if (bMSBuildDetails) {
				aMSSelectedDetails = new Array();
				for (var iArray = 0; iArray < objMSResult.DATA.length; iArray++) {
					if (msIsSelected(objMSResult.DATA[iArray][0])) {
						var objTemp = new Object();
						objTemp.ID = objMSResult.DATA[iArray][0];
						objTemp.szName = objMSResult.DATA[iArray][1];
						aMSSelectedDetails.push(objTemp);
					}
				}
			}

			nMSTotalPage = Math.ceil(objMSResult.DATA.length / nMSItemPerPage);
			if (objMSResult.DATA.length == 0) {
				document.getElementById("MSContent").innerHTML = "No record found!";
			} else {
				msDisplayPageContent();
			}
		} else {
			document.getElementById("MSContent").innerHTML = "Error";
		}

		
	}
}

function buildMSResult (szSearch) {
	objMSResult = {"COLUMNS":["ID","SZNAME"],"DATA":[]}
	if (objMSOriginalData.DATA != undefined) {
		if (szSearch.length == 0) {
			objMSResult = objMSOriginalData;
		} else {
			for (var iArray = 0; iArray < objMSOriginalData.DATA.length; iArray++) {
				if (objMSOriginalData.DATA[iArray][1].toLowerCase().indexOf(szSearch) >= 0) {
					objMSResult.DATA.push(objMSOriginalData.DATA[iArray]);
				}
			}
		}
	}
}

function msUpdateList (bChecked,iArray) {
	var objTemp = new Object();
	objTemp.ID = objMSResult.DATA[iArray][0];
	objTemp.szName = objMSResult.DATA[iArray][1];
	
	if (bChecked) {
		aMSSelected.push(objTemp.ID);
		if (bMSBuildDetails) {
			aMSSelectedDetails.push(objTemp);
		}
	} else {
		for (var iArray in aMSSelected) {
			if (aMSSelected[iArray] == objTemp.ID) {
				aMSSelected.splice(iArray,1);
				if (bMSBuildDetails) {
					aMSSelectedDetails.splice(iArray,1);
				}
			}
		}
	}
}

function msIsSelected (ID) {
	for (var iArray in aMSSelected) {
		if (aMSSelected[iArray] == ID) {
			return true;
		}
	}
	return false;
}

function msChangePage(nNewPage) {
	nMSPage = nNewPage;
	if (nMSPage > nMSTotalPage) {
		nMSPage = nMSTotalPage;
	}
	msDisplayPageContent();
}

function msDisplayPageContent () {
	var aMSContent = new Array();
	var iLine = 0;
	
	var iStart = 0;
	iStart = (nMSPage - 1) * nMSItemPerPage;
	var iEnd = iStart + nMSItemPerPage;
	if (iEnd >= objMSResult.DATA.length) {
		iEnd = objMSResult.DATA.length;
	}
	
	aMSContent.push('<table cellpadding="0" cellspacing="5" border="0" width="100%">');
	for (var iArray = iStart; iArray < iEnd; iArray++) {
		if (iLine == nMSItemPerPage ) {
			break;
		}
		iLine++;
		aMSContent.push('<tr>');
		if (msIsSelected(objMSResult.DATA[iArray][0])) {
			aMSContent.push('<td width="15"><input type="checkbox" id="chk' + iLine + '" onclick="msUpdateList(this.checked,' + iArray + ')" value="' + iArray + '" checked></td>');
		} else {
			aMSContent.push('<td width="15"><input type="checkbox" id="chk' + iLine + '" onclick="msUpdateList(this.checked,' + iArray + ')" value="' + iArray + '"></td>');
		}
		aMSContent.push('<td>');
		aMSContent.push(objMSResult.DATA[iArray][1]);
		aMSContent.push('</td>');
		aMSContent.push('</tr>');
	}
	
	for (iIndex = iLine; iLine < nMSItemPerPage; iLine++) {
		aMSContent.push('<tr>');
		aMSContent.push('<td width="15">&nbsp;</td>');
		aMSContent.push('<td>&nbsp;</td>');
		aMSContent.push('</tr>');
	} 
	
	aMSContent.push('<tr><td colspan="2" align="center">');
	if (objMSResult.DATA.length <= nMSItemPerPage) {
		aMSContent.push('&nbsp;');
	} else {
		aMSContent.push('&nbsp;');
		aMSContent.push(msPagination());
	}

	aMSContent.push('</td></tr>');
	
	aMSContent.push('</table>');
	document.getElementById("MSContent").innerHTML = aMSContent.join("");
	if (nMSPage > 1) {
		document.getElementById("objMSSelect").selectedIndex = nMSPage - 1;
	}
}

function msPagination () {
	var aReturn = new Array();
	if (nMSPage == 1) {
		aReturn.push('<div class="btnSearchPager off">');
		aReturn.push('<div class="first">');
		//aReturn.push('<span>First</span>');
		aReturn.push('</div>');
		aReturn.push('</div>');
		aReturn.push('<div class="btnSearchPager off">');
		aReturn.push('<div class="prev">');
		//aReturn.push('<span>Prev</span>');
		aReturn.push('</div>');
		aReturn.push('</div>');
	} else {
		aReturn.push('<div class="btnSearchPager">');
		aReturn.push('<div class="first">');
		//aReturn.push('<a href="##" onclick="msChangePage(1);return false;"><span>First</span></a>');
		aReturn.push('<a href="##" onclick="msChangePage(1);return false;"></a>');
		aReturn.push('</div>');
		aReturn.push('</div>');
		aReturn.push('<div class="btnSearchPager">');
		aReturn.push('<div class="prev">');
		//aReturn.push('<a href="##" onclick="msChangePage(' + (parseInt(nMSPage) - parseInt(1)) + ');return false;"><span>Prev</span></a>');
		aReturn.push('<a href="##" onclick="msChangePage(' + (parseInt(nMSPage) - parseInt(1)) + ');return false;"></a>');
		aReturn.push('</div>');
		aReturn.push('</div>');
	}
	aReturn.push('<div class="btnSearchPager">');
	aReturn.push('<div class="pager"><select id="objMSSelect" onchange="msChangePage(this.value)" style="width:50px">');
	for (var iIndex=1; iIndex <= nMSTotalPage; iIndex++) {
		aReturn.push('<option value="' + iIndex + '">' + iIndex + '</option>');				
	}
	aReturn.push('</select>&nbsp;&nbsp;of&nbsp;&nbsp;' + nMSTotalPage + '</div>');
	aReturn.push('</div>');
	if (nMSPage == nMSTotalPage) {
		aReturn.push('<div class="btnSearchPager off">');
		aReturn.push('<div class="next">');
		//aReturn.push('<span>Next</span>');
		aReturn.push('</div>');
		aReturn.push('</div>');
		aReturn.push('<div class="btnSearchPager off">');
		aReturn.push('<div class="last">');
		//aReturn.push('<span>Last</span>');
		aReturn.push('</div>');
		aReturn.push('</div>');				
	} else {
		aReturn.push('<div class="btnSearchPager">');
		aReturn.push('<div class="next">');
		
		//aReturn.push('<a href="##" onclick="msChangePage(' + (parseInt(nMSPage) + parseInt(1)) + ');return false;"><span>Next</span></a>');
		aReturn.push('<a href="##" onclick="msChangePage(' + (parseInt(nMSPage) + parseInt(1)) + ');return false;"></a>');

		aReturn.push('</div>');
		aReturn.push('</div>');
		aReturn.push('<div class="btnSearchPager">');
		aReturn.push('<div class="last">');
		//aReturn.push('<a href="##" onclick="msChangePage(' + nMSTotalPage + ');return false;"><span>Last</span></a>');
		aReturn.push('<a href="##" onclick="msChangePage(' + nMSTotalPage + ');return false;"></a>');
		aReturn.push('</div>');
		aReturn.push('</div>');
	}
	return aReturn.join("");
}

function msConfirm () {
	var objIDs = document.getElementById(szMSField);
	var objIDsDetails = document.getElementById(szMSField + "Details");
	var objIDsDisplay = document.getElementById(szMSField + "Display");
	var aDisplay = new Array();
	objIDs.value = aMSSelected;
	if (bMSBuildDetails) {
		for (var iArray = 0; iArray < aMSSelectedDetails.length; iArray++) {
			aDisplay.push(aMSSelectedDetails[iArray].szName);
		}
	}
	objIDsDetails.value = ColdFusion.JSON.encode(aMSSelectedDetails);

	if (objIDsDisplay.value != undefined) {
		objIDsDisplay.value = aDisplay.join(", ");
	} else {
		objIDsDisplay.innerHTML = aDisplay.join(", ");
	}
	msClose();
}

function msClose () {
	document.getElementById("MSContent").innerHTML = "";
	document.getElementById("szMSSearch").value = "";
	ColdFusion.Window.hide('objWindowMS');
}

function msInit(szController,szMethod,szField,bAJAX,oMSData,bBuildDetails,bShowControl) {
	szMSController = szController;
	szMSMethod = szMethod;
	szMSField = szField;
	aMSSelectedDetails = new Array();
	aMSSelected = new Array();
	if (document.getElementById(szMSField).value.length > 0) {
		aMSSelected = document.getElementById(szMSField).value.split(",");
		aMSSelectedDetails = ColdFusion.JSON.decode(document.getElementById(szMSField + "Details").value);
	}
	ColdFusion.Window.show('objWindowMS');
	bMSUseAJAX = false;
	bMSShowControl = false;
	if (arguments.length >= 4) {
		bMSUseAJAX = bAJAX;
		if (!bMSUseAJAX) {
			objMSOriginalData = oMSData;
		}
	}
	if (arguments.length >= 6) bMSBuildDetails = bBuildDetails;
	if (arguments.length >= 7) bMSShowControl = bShowControl;

	if (document.getElementById("msControls") != undefined) {
		if (bMSShowControl) {
			document.getElementById("msControls").style.display = "block";
		} else {
			document.getElementById("msControls").style.display = "none";
		}
	}

	msSearch();
}

function msSelectAll() {
	var oCheckbox = new Object();
	for (var iIndex = 0; iIndex <= nMSItemPerPage; iIndex++) {
		oCheckbox = document.getElementById("chk" + iIndex);
		if (oCheckbox != undefined && !oCheckbox.checked) {
			oCheckbox.checked = true;
			msUpdateList(true,oCheckbox.value);
		}
	} 
}

function msDeSelectAll() {
	var oCheckbox = new Object();
	for (var iIndex = 0; iIndex <= nMSItemPerPage; iIndex++) {
		oCheckbox = document.getElementById("chk" + iIndex);
		if (oCheckbox != undefined && oCheckbox.checked) {
			oCheckbox.checked = false;
			msUpdateList(false,oCheckbox.value);
		}
	} 
}