function _MyCustomLayout (){
	this.Modules = []	
	this.MainTable = document.getElementById('tblMyCustomLayout');
	this.currentDragable = null;
	this.currentDropZone = null;	
	this.RemoveFeatureSelect = document.getElementById('f_sel_MyCustomLayout_Remove_Feature')
	this.AddFeatureSelect =  document.getElementById('f_sel_MyCustomLayout_Add_Feature') 
	this.DefaultModules = this.getDefaultModules();
	this.MyEyeCandyTemplate = (document.getElementById('tblMyEyeCandyViews_Template') ? document.getElementById('tblMyEyeCandyViews_Template') : null)
	this.Form = document.forms['frmMyCustomLayout'];
	return this;
}
_MyCustomLayout.prototype.getDefaultModules = function(){
	var arrModuleValuesAndLabels = [];
	for(var i=1;i<this.RemoveFeatureSelect.options.length;i++){
		arrModuleValuesAndLabels.push([this.RemoveFeatureSelect[i].value , this.RemoveFeatureSelect[i].innerHTML]);	
	}
	return arrModuleValuesAndLabels;
}
_MyCustomLayout.prototype.enableTrashCan = function(){
	var oTrashCan = document.getElementById('tdTrashCan');
	var arrAcceptedDropZones = []
	for(var i=0;i<this.DefaultModules.length;i++){arrAcceptedDropZones.push(this.DefaultModules[i][0]);};
	var oDropzone = DragAndDrop.RegisterDropZone(oTrashCan , arrAcceptedDropZones);
	oDropzone.onDragOver = function(){
		this.Element.className = 'myIF-HiliteTrashOn';
	}
	oDropzone.onDragOut = function(){
		this.Element.className = 'myIF-HiliteTrashOff';
	}
	var oLocObj = this;
	oDropzone.onDrop = function(e,oDragableGrip){
		oLocObj.closeModule(oDragableGrip.getParameter('CurrentFeatureDrag'));
		this.Element.className = 'myIF-HiliteTrashOff';
	}
}
//var nMPIndexTemp = 0

function customViewDateSort(a, b) {
    var x = a.ViewDate;
    var y = b.ViewDate;
    return ((x > y) ? -1 : ((x < y) ? 1 : 0));
}
_MyCustomLayout.prototype.addSavedSearches = function(){
	var nCounter = 1;
	var arrSearchesToSave = []
	while(document.getElementById('f_chk_LatestSearches_' + nCounter)){
		if(document.getElementById('f_chk_LatestSearches_' + nCounter).checked){
			arrSearchesToSave.push(document.getElementById('f_chk_LatestSearches_' + nCounter).value);
		}
		nCounter++;
	}
	if(arrSearchesToSave.length == 0){
		alert(document.getElementById('divMustCheckBoxMessage').innerHTML);
		return;
	}
	Ajax.Execute("/membrg/twrp.dll?pmode=AddSearchTerms&t=stdResultAjax&pAppCode=TWRP_MYIF2&pspSearchTerms="+encodeURIComponent(arrSearchesToSave.join(",")) , function(){window.location.reload(true);})	
}
_MyCustomLayout.prototype.removeSavedSearches = function(){
	var nCounter = 1;
	var arrSearchesToRemove = []
	while(document.getElementById('f_chk_SavedSearch_' + nCounter)){
		if(document.getElementById('f_chk_SavedSearch_' + nCounter).checked){
			arrSearchesToRemove.push(document.getElementById('f_chk_SavedSearch_' + nCounter).value);
		}
		nCounter++;
	}
	if(arrSearchesToRemove.length == 0){
		alert(document.getElementById('divMustCheckBoxMessage').innerHTML);
		return;
	}	
	//window.open("/membrg/twrp.dll?pmode=RemoveSearchTerms&t=stdResultAjax&pAppCode=TWRP_MYIF2&pspSearchTermIDs="+encodeURIComponent(arrSearchesToRemove.join(",")))
	Ajax.Execute("/membrg/twrp.dll?pmode=RemoveSearchTerms&t=stdResultAjax&pAppCode=TWRP_MYIF2&pspSearchTermIDs="+encodeURIComponent(arrSearchesToRemove.join(",")) , function(){window.location.reload(true);})	
}


_MyCustomLayout.prototype.loadEyeCandyViews = function(){
	if(document.getElementById('divMyEyecandyLoading')){
	var cURL = "/membrg/MyIF_v2_custom.dll?t=Site/CustomersOnly/MyIF/includes/data/getRecentEyeCandy_XML&pContentType=XML";
	//window.open(cURL);
	this.SortedEyeCandyIndexs = [];
	var oLocObj = this;
	Ajax.Execute(cURL , function(oXML){
					document.getElementById('divMyEyecandyLoading').style.display = 'none';
					if(typeof(oXML.documentElement) != 'object'){
						return false;
					}	
					var oXMLDoc = oXML.documentElement;
					var arrContentItems = oXMLDoc.getElementsByTagName('Item');
					
					if(arrContentItems.length > 0){						
						for(var i=0;i<arrContentItems.length;i++){
							oLocObj.SortedEyeCandyIndexs.push({ViewDate: arrContentItems[i].getElementsByTagName('ViewDate')[0].firstChild.nodeValue, VCHScreennameSimple: arrContentItems[i].getElementsByTagName('VCHScreennameSimple')[0].firstChild.nodeValue , Index: i})
						}											
						oLocObj.SortedEyeCandyIndexs.sort(customViewDateSort);	
						var oParent = document.getElementById('divMyEyeCandyViews_Parent');				
						var oNewTable = document.createElement('TABLE');
						oNewTable.style.width = '80%';
						oNewTable.style.marginRight = '10px';
						
						//oParent.setAttribute('align','center')
						oNewTable.style.padding = '0px';
						var oNewTbody = document.createElement('TBODY');
						oNewTable.appendChild(oNewTbody)
						var oTemplate = oLocObj.MyEyeCandyTemplate;					
						for(var i=-1;i<9;i=i+2){
							var oTr = document.createElement('TR');
							var oTd1 = document.createElement('TD')
							var oTd2 = document.createElement('TD');
							oTr.appendChild(oTd1);
							oTr.appendChild(oTd2);						
							var arrCells = [oTd1, oTd2];					
							for (j=1;j<=2;j++){							
								if(typeof(oLocObj.SortedEyeCandyIndexs[i+j]) != 'undefined'){
								
									var nIndex = oLocObj.SortedEyeCandyIndexs[i+j].Index;
									var cVCHScreenname = arrContentItems[nIndex].getElementsByTagName('VCHScreenname')[0].firstChild.nodeValue
									var cVCHScreennameSimple = arrContentItems[nIndex].getElementsByTagName('VCHScreennameSimple')[0].firstChild.nodeValue								
									var cContentURL = arrContentItems[nIndex].getElementsByTagName('ContentURL')[0].firstChild.nodeValue
									var cContentType = arrContentItems[nIndex].getElementsByTagName('ContentType')[0].firstChild.nodeValue
									var oCurrentInstance = oTemplate.cloneNode(true);
									oCurrentInstance.id = ''
									oCurrentInstance.style.display ='';
									var arrAnchors = oCurrentInstance.getElementsByTagName('A');
									var arrImages = oCurrentInstance.getElementsByTagName('IMG');
									var cFanclubURL = arrAnchors[0].href.replace(/VCHSCREENNAMESIMPLE/gi, cVCHScreennameSimple)
									
									arrAnchors[0].href = cContentURL;
									arrAnchors[1].href = cContentURL;
									switch(cContentType){
										case "Photo":
											var oAnchor = arrAnchors[2]
										break;
										case "Video":
											var oAnchor = arrAnchors[3]
										break;
										case "HighDef":
											var oAnchor = arrAnchors[4]
										break;			
									}								
									oAnchor.href = cContentURL;
									arrAnchors[1].title = cVCHScreenname;
									oAnchor.style.display = '';
									arrAnchors[1].innerHTML = cVCHScreenname;
									arrImages[1].src = 'http://barchives.ifriends.net/image/'+cVCHScreennameSimple+'/profile12.jpg';									
									oCurrentInstance.style.display = '';	
									arrCells[j-1].appendChild(oCurrentInstance);							
								}
								if(j%2==0){
									oNewTbody.appendChild(oTr);
								}
							}																				
						}
						oParent.appendChild(oNewTable);
					}else if(document.getElementById('tblMyEyeCandyNoData')){
						document.getElementById('tblMyEyeCandyNoData').style.display = '';
					}
				});
	}
}

_MyCustomLayout.prototype.init = function(bResetEnvironment, cMbrTypeIF){
	if(bResetEnvironment){
		DragAndDrop.reset();
	}else{
		if(this.MyEyeCandyTemplate != null){
			this.loadEyeCandyViews()
		}	
	}
	if(cMbrTypeIF){
		this.MbrTypeIF = cMbrTypeIF;
	}
	this.enableTrashCan();		
	this.updateSelectBoxes();
	var arrModules = removeArrayElementByValue(this.Modules , '');
	this.Modules.length = 0
	this.Modules = arrModules;
	for(var i=0;i<arrModules.length;i++){	
		var nCounter = (i + 1)
		var oGripIcon = document.getElementById('imgGrip_' + nCounter);
		var oDragableGrip = DragAndDrop.RegisterDragable(oGripIcon, oGripIcon, arrModules[i]);
			oDragableGrip.setParameter('CurrentPositionDrag', i+1);
			oDragableGrip.setParameter('CurrentFeatureDrag', arrModules[i]);
		var arrStripped = removeArrayElementByValue(arrModules , arrModules[i])
		var oDropzone = DragAndDrop.RegisterDropZone(document.getElementById('tdGridPosition_'+(i+1)) , arrStripped);
		oDropzone.setParameter('CurrentPositionDrop', i+1);
		oDropzone.onDragOver = function(){
			this.Element.className = 'myIF-HiliteModuleOn';
		}
		oDropzone.onDragOut = function(){
			this.Element.className = 'myIF-HiliteModuleOff';
		}
		var oLocObj = this;
		oDropzone.onDrop = function(e,oDragableGrip){
			oLocObj.currentDragable = oDragableGrip;
			oLocObj.currentDropZone = this;
			var cDragModulePosition = oDragableGrip.getParameter('CurrentPositionDrag');
			var cDropModulePosition = this.getParameter('CurrentPositionDrop');
			if(oLocObj.MbrTypeIF.match(/Guest/gi) || oLocObj.MbrTypeIF.match(/noinfo/gi)){				
				populateStdDynamicInfoBox('imgGrip_' + cDragModulePosition, '/ifpage.dll?t=site/includes/DynamicInfoBoxContent/StdUnauthorizedMessage&pUnauthorizedMessageType=LoginRequired', '350' , '' , '&pHeaderMessage=UnauthorizedMessage_LoginRequired');				
			}else if(!oLocObj.MbrTypeIF.match(/VIP/gi)){					
				populateStdDynamicInfoBox('imgGrip_' + cDragModulePosition, '/ifpage.dll?t=site/includes/DynamicInfoBoxContent/StdVIPUpgradeMessage', '350' , '' , '&pHeaderMessage=UpgradeAccount');				
			}else{
				oLocObj.updateTableGrid(cDragModulePosition , cDropModulePosition);
			}
		}
	}
}
_MyCustomLayout.prototype.removeFeature = function(){
	var oSelect = this.RemoveFeatureSelect
	if(oSelect.value != "-1"){
		MyCustomLayout.closeModule(oSelect.value);
	}else{
		alert(document.getElementById('divSelectFeatureMessage').innerHTML);
	}
	this.updateSelectBoxes();
}
_MyCustomLayout.prototype.addFeature = function(){
	var oSelectAdd = this.AddFeatureSelect;
	var oSelectRemove = this.RemoveFeatureSelect;
	if(oSelectAdd.options[oSelectAdd.selectedIndex].value == '-1'){
		alert(document.getElementById('divMustSelectFeaturesToAddMessage').innerHTML);
		return;
	}else if(oSelectAdd.options[oSelectAdd.selectedIndex].value == 'ALL'){
		alert(document.getElementById('divNoFeaturesToAddMessage').innerHTML);
		return;
	}
		var arrNewFeatureOrder = []
		if(oSelectRemove.options[oSelectRemove.selectedIndex].value == '-1'){
			arrNewFeatureOrder.push(oSelectAdd.options[oSelectAdd.selectedIndex].value);		
		}			
		for(var i=1;i<oSelectRemove.options.length;i++){
			arrNewFeatureOrder.push(oSelectRemove.options[i].value);
			if(oSelectRemove.options[i].selected){
				arrNewFeatureOrder.push(oSelectAdd.options[oSelectAdd.selectedIndex].value);					
			}
		}
		this.Modules.length = 0
		this.Modules = arrNewFeatureOrder;
		this.updatePositions(true);		

}
_MyCustomLayout.prototype.getFeatureTranslation = function(cFeatureName){
	for(var i=0;i<this.DefaultModules.length;i++){
		if(cFeatureName == this.DefaultModules[i][0]){
			return this.DefaultModules[i][1]		
		}	
	}
	return '';
}
_MyCustomLayout.prototype.sortSelectBox = function(){
	this.RemoveFeatureSelect.options.length = 1;
	for(var i=0;i<this.Modules.length;i++){
		if(this.Modules[i] != '')
			this.RemoveFeatureSelect.options[i+1] = new Option(this.getFeatureTranslation(this.Modules[i]) , this.Modules[i] );
	}
}
_MyCustomLayout.prototype.updateSelectBoxes = function(){
	var arrMissingModules = [];
	this.sortSelectBox();
	var oSelectRemove = this.RemoveFeatureSelect;
	var oSelectAdd = this.AddFeatureSelect;
	for(var i=0;i<this.DefaultModules.length;i++){
		if(!this.Modules.inArray(this.DefaultModules[i][0])){
			arrMissingModules.push(this.DefaultModules[i][0]);
		}
	}
	for(var i=0;i<arrMissingModules.length;i++){
		oSelectAdd.options[i+1] = new Option(this.getFeatureTranslation(arrMissingModules[i]) , arrMissingModules[i]);
	}
	for(var i=0;i<oSelectRemove.options.length;i++){
		if(arrMissingModules.inArray(oSelectRemove.options[i].value)){
			oSelectRemove.options[i] = null;	
		}	
	}
}
_MyCustomLayout.prototype.getImageGrips = function(){
	var arrImageGrips = [];
	for(var i=0;i<this.Modules.length;i++){
		arrImageGrips.push(document.getElementById('imgGrip_'+(i+1)));
	}
	return arrImageGrips;
}
_MyCustomLayout.prototype.getTableCells = function(){
	var arrTds = [];
	this.CurrentModuleOrder = [];
	for(var i=0;i<this.Modules.length;i++){
		arrTds.push(document.getElementById('tdGridPosition_'+(i+1)));
		this.CurrentModuleOrder.push(i+1);
	}
	return arrTds;
}
_MyCustomLayout.prototype.sortModuleList = function(arrNewOrder){
	var arrTempModules = [];
	for(var i=0;i<this.Modules.length;i++){
		arrTempModules.push(this.Modules[arrNewOrder[i]-1])
	}
	this.Modules.length = 0
	this.Modules = arrTempModules;
}
_MyCustomLayout.prototype.getNewModuleOrder = function(cDragModulePosition , cDropModulePosition){
	var arrCurrentOrder=this.CurrentModuleOrder;
	var arrNewOrder = [];
	var arrStripped = removeArrayElementByValue(arrCurrentOrder , cDragModulePosition);
	for(var i=0;i<arrStripped.length;i++){
		if(arrStripped[i] == cDropModulePosition){
			if((cDragModulePosition * 1) < (cDropModulePosition * 1)){
				arrNewOrder.push(arrStripped[i]);
				arrNewOrder.push(cDragModulePosition);
			}else{
				arrNewOrder.push(cDragModulePosition);
				arrNewOrder.push(arrStripped[i]);
			}
		}else{
			arrNewOrder.push(arrStripped[i]);
		}
	}
	this.sortModuleList(arrNewOrder);
	return arrNewOrder;
}
_MyCustomLayout.prototype.updateTableGrid = function(cDragModulePosition , cDropModulePosition){
	var oTable = this.MainTable;
	var arrCells = this.getTableCells();
	var arrImageGrips = this.getImageGrips();
	var oTbody = oTable.getElementsByTagName('TBODY')[0];
	var oNewTbody = document.createElement('TBODY');
	var oNewTR = document.createElement('TR');
	var oClonedNewTR=oNewTR.cloneNode(true);
	//alert(cDragModulePosition + ' ' + cDropModulePosition)
	var arrNewOrder= this.getNewModuleOrder(cDragModulePosition , cDropModulePosition);
	//alert(arrNewOrder)
	var oEmptyTD = document.createElement('TD');
	for(var i=0;i<arrCells.length;i++){
		var nCounter = i+1;
		var oCurrentTD = arrCells[arrNewOrder[i]-1]
		var oImage = arrImageGrips[arrNewOrder[i]-1]
		oImage.id = "imgGrip_" + nCounter;
		oCurrentTD.id = "tdGridPosition_" + nCounter;
		oCurrentTD.dropZoneIndex = i;
		oCurrentTD.className = 'myIF-HiliteModuleOff';
		oClonedNewTR.appendChild(oCurrentTD);		
		if(nCounter%3==0){
			oNewTbody.appendChild(oClonedNewTR);
			oClonedNewTR=oNewTR.cloneNode(true);
		}
	}
	var nEmptyCells = this.DefaultModules.length - this.Modules.length
	for(var i=0;i<nEmptyCells;i++){
		nCounter++
		var oTd = document.createElement('TD');
		var oDiv = document.createElement('DIV');
		oDiv.style.display='none';
		oTd.appendChild(oDiv);
		oClonedNewTR.appendChild(oTd);
		if(nCounter%3 == 0){
			oNewTbody.appendChild(oClonedNewTR);
			oClonedNewTR=oNewTR.cloneNode(true);
		}
		
	}	
	oTable.removeChild(oTbody);
	oTable.appendChild(oNewTbody);
	if(this.currentDropZone != null){
		this.currentDropZone.Element.className = 'myIF-HiliteModuleOff';
	}
	this.updatePositions(false);
	this.init(true);
}
_MyCustomLayout.prototype.resetLayout = function(){
	this.Modules.length = 0;
	this.Modules[0] = "-1";
	this.updatePositions(true);
}
_MyCustomLayout.prototype.getModulePosition = function(cModuleIDName){
	for(var i=0;i<this.Modules.length;i++){
		if(cModuleIDName == this.Modules[i]){
			return i+1;
		}
	}
}
_MyCustomLayout.prototype.updatePositions = function(bReloadPage){
	this.Form.elements['pspFeatureList'].value = this.Modules.join(",");	
	//window.open("/membrg/twrp.dll?pmode=SaveCustomLayout&pAppCode=TWRP_MYIF2&t=stdResultAjax&pspFeatureList="+this.Modules.join(","))
	Ajax.Execute("/membrg/twrp.dll?pmode=SaveCustomLayout&pAppCode=TWRP_MYIF2&t=stdResultAjax&pspFeatureList="+this.Modules.join(",") , function(){
			if(bReloadPage){
				window.location.reload(true);			
			}
		});
}
_MyCustomLayout.prototype.closeModule = function(cModuleIDName){
	var cCurrentPosition = this.getModulePosition(cModuleIDName);
	var oTd = document.getElementById('tdGridPosition_'+cCurrentPosition)
	var oModuleDiv = oTd.getElementsByTagName('DIV')[0];
	oModuleDiv.style.display = 'none'
	var oTable = this.MainTable;
	var arrCells = this.getTableCells();
	var arrImageGrips = this.getImageGrips();
	var arrCellsWithModules = [];
	var arrVisibleImageGrips = [];
	var nEmptyCells = arrCells.length - arrCellsWithModules.length
	for(var i=0;i<arrCells.length;i++){
		if(arrCells[i].getElementsByTagName('DIV')[0].style.display != 'none'){
			arrCellsWithModules.push(arrCells[i])
			arrVisibleImageGrips.push(arrImageGrips[i]);
		}
	}
	var oTbody = oTable.getElementsByTagName('TBODY')[0];
	var oNewTbody = document.createElement('TBODY');
	var oNewTR = document.createElement('TR');
	var oClonedNewTR=oNewTR.cloneNode(true);
	for(var i=0;i<arrCells.length;i++){
		var nCounter = i+1;
		if(typeof(arrCellsWithModules[i]) != 'undefined'){
			var oCurrentTD = arrCellsWithModules[i]
			var oImage = arrVisibleImageGrips[i];
			oImage.id = "imgGrip_" + nCounter;	
			oCurrentTD.id = "tdGridPosition_" + nCounter;		
			oClonedNewTR.appendChild(oCurrentTD);
			if(nCounter%3 == 0){
				oNewTbody.appendChild(oClonedNewTR);
				oClonedNewTR=oNewTR.cloneNode(true);
			}
		}
	}
	for(var i=0;i<nEmptyCells;i++){
		var oTd = document.createElement('TD');
		var oDiv = document.createElement('DIV');
		oDiv.style.display='none';
		oTd.appendChild(oDiv);
		oClonedNewTR.appendChild(oTd);
		if(nCounter%3 == 0){
			oNewTbody.appendChild(oClonedNewTR);
			oClonedNewTR=oNewTR.cloneNode(true);
		}
		nCounter++
	}
	oTable.removeChild(oTbody);
	oTable.appendChild(oNewTbody);
	this.Modules=removeArrayElementByValue(this.Modules,cModuleIDName);
	this.updatePositions(false);
	this.init(true);
}
function removeArrayElementByValue (arr , cElementValue){
  var arrNew = []
  for(var i=0;i<arr.length;i++){
    if(cElementValue!=arr[i]) arrNew.push(arr[i]);
  }
	return arrNew;
}