DHL.JS.require('dhl.net.url');
DHL.JS.require('dhl.html.conversion');

var objRsModel = null; // the recordset containing all the connected in free chat models.
var objRsModelFeatured = null; // the recordset containing all the featured models.
var objArrTopModels = null;
var intSelectedNicheId = 0; // the niche currently selected.
var arrPage = null; // the first letter of each page
var blnDisplayPrice = false;
var fltCreditValue = 0;
var intSelectedPage = 0; // the page currently selected.
var blnBrowserEnabled = false; // display the page browser when there are many models.
var blnDebug = false;
if (document.getElementById('debug')) {
	blnDebug = true;
}

/**
 * Sets the model data (connected models and niches available).
 * @param object objModelData the model data.
 */
function setModelData(objModelData) {
	self.objRsModel = objModelData['objRsModel'];
	
	if(objModelData['objRsFeaturedModel'])
	{
		self.objRsModelFeatured = objModelData['objRsFeaturedModel'];
	}
	if (objModelData['objArrTopModels']) {
		self.objArrTopModels = objModelData['objArrTopModels'];
	}
}

/**
 * Sets the selected niche.
 * @param integer intNicheId the id of the niche.
 */
function setSelectedNiche(intNicheId) {
	self.intSelectedNicheId = intNicheId;
}

function setBrowserEnabled(blnBrowserEnabled) {
	self.blnBrowserEnabled = blnBrowserEnabled;
}

function setArrPage(arrPage) {
	self.arrPage = arrPage;
}

function setSelectedPage(intSelectedPage) {
	self.intSelectedPage = intSelectedPage;
}

function setDisplayPrice(blnDisplayPrice) {
	this.blnDisplayPrice = blnDisplayPrice;
}

function setCreditValue(fltCreditValue) {
	this.fltCreditValue = fltCreditValue;
}

function start() {
	self.objModelBoxTemplate = document.getElementById('model-box-template').cloneNode(true);
}

// back..
function loadProfile(intModelId, blnHasProfile) {
	var objInfoUrl = new DHL.NET.URL('/_live/info.htm');
	objInfoUrl.setAttribute('modelId',intModelId);
	objInfoUrl.setAttribute('opener',1);
	var intHeight = 1000;
	if(screen.height < intHeight)
		intHeight = screen.height-50;
	if(blnHasProfile == 1) {
		window.open(objInfoUrl.toString(),'LiveLatina','directories=0,toolbar=0,menubar=0,personalbar=0,location=0,scrollbars=1,status=0,resizable=0,height='+intHeight+',width=806,screenX=0,screenY=0,left=0,top=0');
	} else {
		alert("Sorry this model does not have a bio page yet.");
	}
	return false;
}


function display() {
	if (blnDebug) {
		alert(self.intSelectedNicheId);
	}
	
	if (self.intSelectedNicheId == 'hd') {
		self.objRsModel.applyFilter(getHdFilter());
	} else {
		self.objRsModel.applyFilter(getFilterByNiche(self.intSelectedNicheId));
	}
	var intNbModelInNiche = self.objRsModel.getRecordCount();
	var blnFilterByPage = (self.blnBrowserEnabled) && (intNbModelInNiche > 60);
	if (self.blnBrowserEnabled) {
		var objBrowser = document.getElementById("model-browser");
		if (blnFilterByPage) {
			objBrowser.style.display = 'block';
		}
		else {
			objBrowser.style.display = 'none';
		}
	}
	if (self.intSelectedNicheId == 'hd') {
		var fnNicheFilter = getHdFilter();
	} else {
		var fnNicheFilter = getFilterByNiche(self.intSelectedNicheId);
	}
	if (blnFilterByPage) {
		var fnPageFilter = getFilterByPage(self.intSelectedPage);
		fnFilter = function(oRow) { return fnNicheFilter(oRow) && fnPageFilter(oRow); };
	}
	else {
		fnFilter = fnNicheFilter;
	}
	 displayAllModel(fnFilter);
	
	
}
/**
 * Displays the list of all the connected models BY THE FILTER.
 */
function displayAllModel(fnFilter) {
	
	var objListContainer = document.getElementById("modellist-list");
	objListContainer.innerHTML = '';
	self.objRsModel.applyFilter(fnFilter);
	self.objRsModel.seek();	
	
	var objModelRow;
	while(objModelRow = self.objRsModel.fetch()) {
		var objModelBox = self.objModelBoxTemplate.cloneNode(true);
		setModelBox(objModelBox, objModelRow);
		objModelBox.style.display = 'block';
		objListContainer.appendChild(objModelBox);
	}
	var objClearer = document.createElement("div");
	objClearer.id = "clearer";
	objListContainer.appendChild(objClearer);
	
	if(document.getElementById("modellist-list-featured") && self.objRsModelFeatured){
				
		var objListContainerFeatured = document.getElementById("modellist-list-featured");
		
		objListContainerFeatured.innerHTML = '';
		self.objRsModelFeatured.applyFilter(fnFilter);
		self.objRsModelFeatured.seek();
		var objModelRow;
		var intNbModel = 0;
		while(objModelRow = self.objRsModelFeatured.fetch()) {
			var objModelBox = self.objModelBoxTemplate.cloneNode(true);
			setModelBox(objModelBox, objModelRow);
			objModelBox.style.display = 'block';
			objListContainerFeatured.appendChild(objModelBox);
			intNbModel++;
		}
		
		if(intNbModel==0){		    
			document.getElementById("featuredmodel-title").style.display = 'none';
		}else{
			document.getElementById("featuredmodel-title").style.display = 'block';			
		}
	}		
		
	
	var objClearer = document.createElement("div");
	objClearer.id = "clearer";
	objListContainerFeatured.appendChild(objClearer);	
}

/**
 * Sets the fields of a model box according to the model's
 * attributes.
 * @param object objModelBox the model box.
 * @param object objModelRow the model's attributes.
 */
function setModelBox(objModelBox, objModelRow) {
	objModelBox.id = "model-box" + objModelRow['modelId'];
	var strNickName = DHL.HTML.CONVERSION.encode(objModelRow['nickName']);
	var blnEnter = (objModelRow['isOnline'] == 1);
	var blnBio = (objModelRow['hasProfile'] == 1);
	var objEnterUrl = new DHL.NET.URL('index.htm');
	objEnterUrl.setAttribute("modelId", objModelRow['modelId']);
	var objBioUrl = new DHL.NET.URL('info.htm');
	objBioUrl.setAttribute("opener", 1);
	objBioUrl.setAttribute("modelId", objModelRow['modelId']);

	var arrTag = objModelBox.getElementsByTagName('*');
	var strEnterTip = arrTag['enterbtn'].title.replace('nickName', strNickName);
	var strBioTip = arrTag['biobtn'].title.replace('nickName', strNickName);

	if (objModelRow['isTopModel'] == 1) {
		objModelBox.className = "large-model-box-top"
	} else if (self.objArrTopModels && self.objArrTopModels['i' + objModelRow['modelId']]) {
		objModelBox.className = "large-model-box-high"
	}

	arrTag['enterbtn'].href = objEnterUrl.toString();
	arrTag['enterbtnwide'].href = objEnterUrl.toString();
	arrTag['biobtn'].href = objBioUrl.toString();
	arrTag['biobtn'].target = "_blank";
	arrTag['biobtn'].onclick = function () {
		//window.open(objBioUrl.toString(),'LiveLatina','directories=0,toolbar=0,menubar=0,personalbar=0,location=0,scrollbars=1,status=0,resizable=0,height=510,width=806,screenX=0,screenY=0,left=0,top=0');
		loadProfile(objModelRow['modelId'], objModelRow['hasProfile']);
		return false;
	}
	arrTag['biobtnwide'].href = objBioUrl.toString();
	arrTag['biobtnwide'].target = "_blank";
	arrTag['biobtnwide'].onclick = function () {
		//window.open(objBioUrl.toString(),'LiveLatina','directories=0,toolbar=0,menubar=0,personalbar=0,location=0,scrollbars=1,status=0,resizable=0,height=510,width=806,screenX=0,screenY=0,left=0,top=0');
		loadProfile(objModelRow['modelId'], objModelRow['hasProfile']);
		return false;
	}
	
	arrTag['enterbtn'].style.display = ((blnEnter && blnBio) ? 'block' : 'none');
	arrTag['enterbtnwide'].style.display = ((blnEnter && !blnBio) ? 'block' : 'none');
	arrTag['biobtn'].style.display = ((blnEnter && blnBio) ? 'block' : 'none');
	arrTag['biobtnwide'].style.display = ((!blnEnter && blnBio) ? 'block' : 'none');

	arrTag['enterbtn'].title = arrTag['enterbtnwide'].title = strEnterTip;
	arrTag['biobtn'].title = arrTag['biobtnwide'].title = strBioTip;

	if (objModelRow['imageFileName'] != null) {
		arrTag['image'].src = objModelRow['imagePath'] + objModelRow['imageFileName'];
	} else if (objModelRow['modelImagePath'] != null) {
		arrTag['image'].src = objModelRow['modelImagePath'];
	} else {
		arrTag['image'].src = "template/images/default120x90.gif";
	}
	arrTag['image-a'].onclick = function () {
		if( blnEnter ) {
			document.location.href = objEnterUrl.toString()
		} else if ( blnBio ) {
			loadProfile(objModelRow['modelId'], objModelRow['hasProfile']);
		} else {
			alert("Sorry this model does not have a bio page yet.");
		}
		return false;
	}
	
	if( blnEnter ) {
		arrTag['image-a'].href = objEnterUrl.toString();
		arrTag['image-a'].onclick = function () {
			return true;
		}
	} else if ( blnBio ) {
		arrTag['image-a'].href = objBioUrl.toString();
		arrTag['image-a'].onclick = function () {
			return true;
		}
		arrTag['image-a'].target = "_blank";
	} else {
		arrTag['image-a'].href = null;
	}
	
	arrTag['image-a'].title = (blnEnter ? strEnterTip : strBioTip);
	arrTag['nickName'].innerHTML = DHL.HTML.CONVERSION.encode(objModelRow['nickName']);
	
	if(arrTag['box-hd']) {
		if(objModelRow['isHD'] == 1) {
			arrTag['box-hd'].style.display="block";
		}
		else {
			arrTag['box-hd'].style.display="none";
		}
	}

	if (arrTag['box-label'] && objModelRow['isOnShow'] == 1) {
		arrTag['box-label'].innerHTML = 'PRIVATE';
		arrTag['box-label'].style.display= "block";
	} 
	else if (arrTag['box-label'] && objModelRow['isOnBreak'] == 1) {
		arrTag['box-label'].innerHTML = 'BREAK';
		arrTag['box-label'].style.display= "block";
	}

	if (objModelRow['defaultNicheTitle'] != null) {
		arrTag['niche-title'].innerHTML = DHL.HTML.CONVERSION.encode(objModelRow['defaultNicheTitle']);
	}
	else {
		arrTag['niche-title-item'].style.display = 'none';
	}
	if (objModelRow['age'] != null) {
		arrTag['age'].innerHTML = DHL.HTML.CONVERSION.encode(objModelRow['age']);
	}
	else {
		arrTag['age-item'].style.display = 'none';
	}
	
	var strPriceClass = "price-none";
	var fltShowPrice = 0;
	if (this.blnDisplayPrice) {
		fltShowPrice = objModelRow['privateCreditRate'] * this.fltCreditValue;
	}
	if (fltShowPrice > 0) {
		var strDollar = Math.floor(fltShowPrice).toString();
		var strCent = Math.floor((fltShowPrice - Math.floor(fltShowPrice)) * 100).toString();
		strPriceClass = "price-" + strDollar + strCent;
	}
	arrTag['price'].className = "model-box-price " + strPriceClass;
}

/**
 * Returns a record filter that only accepts the models in
 * the given niche (intNicheId). If intNicheId == 0, returns a 
 * filter that accepts all models.
 * @param integer intNicheId the id of the niche
 * @return function the filter
 */ 
function getFilterByNiche(intNicheId) {
	var fnReturn = null;
	if (intNicheId == 0) { // all niches
		fnReturn = function(oRow) {
			return true;
		};
	}
	else { // one niche
		fnReturn = function(oRow) {
			var blnReturn = false;
			if (oRow['nicheList']) {
				var arrNiche = oRow['nicheList'].split(",");
				for (var i = 0; blnReturn == false && i < arrNiche.length; i++) {
					blnReturn = (arrNiche[i] == intNicheId);
				}
			}
			return blnReturn;
		};
	}
	return fnReturn;
}
 
function getHdFilter() {
	var fnReturn = null;
	fnReturn = function(oRow) {
		var blnReturn = false;
		if (oRow['isHD'] == 1) {
			blnReturn = true;
		}
		return blnReturn;
	};
	return fnReturn;
}

function getFilterByPage(intPage) {
	var pageCharCode = self.arrPage[intPage].charCodeAt(0);
	var nextPageCharCode;
	if (intPage + 1 < self.arrPage.length) {
		nextPageCharCode  = self.arrPage[intPage + 1].charCodeAt(0);
	}
	else {
		nextPageCharCode = 'z'.charCodeAt(0) + 1;
	}
	return function(oRow) {
		var charCode = oRow['nickName'].toLowerCase().charCodeAt(0);
		return (charCode >= pageCharCode) && (charCode < nextPageCharCode);
	}
}

/**
 * onclick event on a niche tab.
 * Selects the niche and updates the list of model boxes displayed.
 * @param integer intNicheId the id of the niche OR hd for HD models
 */
function onSelectNiche(nicheId) {
	setSelectedNiche(nicheId);
	setSelectedPage(0);
	display();
}

function onSelectPage(intPage) {
	setSelectedPage(intPage);
	display();
}
