// Card data object and renderer

var PROFILE_URL = "/profile.aspx?uid=";
var VIEWIMAGES_URL = "javascript:OpenImagesPopup('UID')";
var DONT_VIEWIMAGES_URL = "javascript:void(0)";
var DEF_IMAGE_MALE = "/img/default_male.gif";
var DEF_IMAGE_FEMALE = "/img/default_female.gif";

var Collections = new Object();
var CurrentPage = 0;
var TotalPages = 0;

function Collection() {
	this.Items = new Array();
	this.TotalPages = 0;
	this.CurrentPage = 0;
	this.TabID = 0;
	this.ClearItems = function() {
		this.Items.splice(0,this.Items.length);
	}
	this.FillCollection = function(dataString) {
		// Collection of "~#~"-separated dataStrings
		// First 2 items are CurrentPage and TotalPages
		if (typeof dataString == "undefined" || dataString == null || dataString == "" || dataString == " ") return;
		var strings = dataString.split("~#~");
		// Assign paging data
		//this.CurrentPage = parseInt(strings[1]);
		//this.TotalPages = parseInt(strings[0]);
		CurrentPage = parseInt(strings[1]);
		TotalPages = parseInt(strings[0]);
		// Clear collection
		this.ClearItems();
	
		for (var i=2; i<strings.length; i++) {
			var db = strings[i].split("~!~");
			var card = CardObject(db[0], db[1], db[2], db[3], db[4], db[5], db[6], db[7], db[8], db[9], db[10], db[11], db[12], db[13], db[14]);
			this.Items.push(card);
		}
	}
}

Collections.Main = new Collection();
Collections.Online = new Collection();
Collections.New = new Collection();
Collections.Popular = new Collection();
Collections.WithPicture = new Collection();
Collections.Custom = new Collection();
Collections.Current = null;
Collections.GetCardByUserID = function(uid) {
	for (var i=0;i<Collections.Current.Items.length;i++) {
		if (Collections.Current.Items[i].ID.toString() == uid.toString()) {
			return Collections.Current.Items[i];
		}
	}
	return null;
}

function GetCollectionByTabId(tabid) {
	switch (tabid) {
		case 1: return "Main";
		case 2: case 5: return "Online";
		case 3: case 6: return "New";
		case 4: case 7: return "Popular";
		case 8: return "WithPicture";
		default: return "Custom";
	}
}

function AddDataToCollection(collectionName,dataString) {
	// name~!~isMale~!~age~!~isOnline~!~area~!~lookingFor~!~about~!~lastLogin~!~ID~!~imageUrl
}

function CardObject(username, ismale, age, isonline, area, lookingfor, about, lastlogin, id, imageurl, isfavor, isblockedby, longinfo, city_name, isverified) {
	var temp = new Object();
	temp.Username = (typeof username == "string")?username:String(username);
	temp.Gender = (typeof ismale == "string")?(ismale.toLowerCase() == "true" || ismale.toLowerCase() == "1"):((typeof ismale == "boolean")?ismale:true);
	temp.Age = (typeof age == "number")?(age):((isNaN(parseInt(String(age))))?0:parseInt(String(age)));
	temp.Online = (typeof isonline == "string")?(isonline.toLowerCase() == "true" || isonline.toLowerCase() == "1"):((typeof isonline == "boolean")?isonline:true);
	temp.Area = (typeof area == "string")?area:String(area);
	temp.LookingFor = (typeof lookingfor == "string")?(lookingfor.toLowerCase() == "true" || lookingfor.toLowerCase() == "1"):((typeof lookingfor == "boolean")?lookingfor:true);
	temp.About = (typeof about == "string")?about:String(about);
	temp.LastLogin = (typeof lastlogin == "string" || typeof lastlogin == "number")?(new Date(lastlogin)):lastlogin;
	temp.ID = (typeof id == "string")?id:(id.toString());
	if (typeof imageurl == "string" && imageurl != "" && imageurl != DEF_IMAGE_MALE && imageurl != DEF_IMAGE_FEMALE) {
		temp.ImageUrl = imageurl;
		temp.DefaultImage = false;
	} else {
		temp.ImageUrl = ((temp.Gender==true)?DEF_IMAGE_MALE:DEF_IMAGE_FEMALE);
		temp.DefaultImage = true;
	}
	temp.IsFavorite = (isfavor.toString() == "1");
	temp.IsBlocked = (isblockedby.toString() == "1");
	temp.LongInfo = longinfo;
	temp.CityName = city_name;
	temp.IsVerified = (typeof isverified == "string") ? (isverified.toLowerCase() == "true" || isverified.toLowerCase() == "1") : ((typeof isverified == "boolean") ? isverified : true);
	
	return temp;
}

function RenderCard(cardobj, invisible) {
    
    //debugger
	//var inject = document.getElementById("cardTemplate").innerHTML;
	var inject= cardTemplateHTML;
	// Replace data
	try {
	
	    //alert(IsSubScriber);
	    if (LoginAjaxTimeout == null) {
	        inject = DisableCardOnClick(inject);
//	        inject = inject.Replace("CardButton_Message", "DoNothing");
//	        inject = inject.Replace("CardButton_IM", "DoNothing");
//	        inject = inject.Replace("CardButton_Heart", "DoNothing");
//	        inject = inject.Replace("ChangeFavoriteStatus", "DoNothing");
	        inject = inject.Replace("chat_link", "registration.aspx");
	        inject = inject.Replace("heart_link", "registration.aspx");
	        inject = inject.Replace("favorite_link", "registration.aspx");
	        //alert(inject);
	    }
	    else {
	        inject = inject.Replace("heart_link", "javascript:DoNothing();");
	        inject = inject.Replace("favorite_link", "javascript:DoNothing();");

	        if ((!IsSubScriber && !IsDelegatedSubScriber) && IsOnline) {
	            inject = DisableCardOnClick(inject);
	            inject = inject.Replace("chat_link", "javascript:HandelSubScribtionExpiration();");
	            //inject = inject.Replace("heart_link", "javascript:HandelSubScribtionExpiration();");
	            //inject = inject.Replace("favorite_link", "javascript:HandelSubScribtionExpiration();");
	        }
	        else {
	            inject = inject.Replace("chat_link", "javascript:DoNothing();");
	            //inject = inject.Replace("heart_link", "javascript:DoNothing();");
	            //inject = inject.Replace("favorite_link", "javascript:DoNothing();");
	        }
	    }
	        
		inject = inject.Replace("[id]",cardobj.ID.toString()).Replace("-id-",cardobj.ID.toString());
		inject = inject.Replace("[class_status]",((cardobj.Online==true)?"HEnabled":"HDisabled"));
		if (cardobj.Online == true) {
		    inject = inject.Replace("[status]", (cardobj.Gender == true) ? "אונליין" : "אונליין"); //"מחובר":"מחוברת");
		} else {
		inject = inject.Replace("[status]", (cardobj.Gender == true) ? "לא אונליין" : "לא אונליין"); //"מנותק":"מנותקת");
		}
		inject = inject.Replace("[name]",cardobj.Username.Replace("'","&prime;"));
		inject = inject.Replace("[jsname]",cardobj.Username.Replace("'","_&prime_"));
		inject = inject.Replace("[age]",((cardobj.Gender==true)?"בן":"בת") + " " + cardobj.Age.toString());
		inject = inject.Replace("[label_looking]",((cardobj.Gender==true)? "מעוניין להכיר":"מעוניינת להכיר"));
		inject = inject.Replace("[area]", cardobj.Area);
		if (cardobj.CityName != "") {
		    inject = inject.Replace("[city_area_name]", cardobj.CityName);
		    inject = inject.Replace("[city_area]","עיר:");
		}
		else {
		    inject = inject.Replace("[city_area_name]", cardobj.Area);
		    inject = inject.Replace("[city_area]", "אזור:");
		}
		
		inject = inject.Replace("[looking]",((cardobj.LookingFor==true)?"גבר":"אישה"));
		inject = inject.Replace("[about]",cardobj.About);
		inject = inject.Replace("profile_link",PROFILE_URL + cardobj.ID.toString());
		inject = inject.Replace("[last]",cardobj.LastLogin.LoveMeString());

		if ((!IsSubScriber && !IsDelegatedSubScriber) && IsOnline) {
		    inject = inject.Replace("message_link", "javascript:HandelSubScribtionExpiration();");
		}
		else {
		    inject = inject.Replace("message_link", (LoginAjaxTimeout == null) ? "registration.aspx" : ("/new_conversation.aspx?tuid=" + cardobj.ID.toString()));
		}
		
		inject = inject.Replace("[useraboutme]",cardobj.LongInfo);
		inject = inject.Replace("-image-",cardobj.ImageUrl);

		inject = inject.Replace("[ismale]", cardobj.Gender.toString());
		
		if (cardobj.DefaultImage == true) {
			inject = inject.Replace("view_images",DONT_VIEWIMAGES_URL);
		} else {
			inject = inject.Replace("view_images",VIEWIMAGES_URL.Replace("UID",cardobj.ID.toString()));

}
	
		if (cardobj.IsFavorite == true) {
			inject = inject.Replace("[favstate]","1");
			inject = inject.Replace("[fstat]","Un");
			inject = inject.Replace("[favlabel]", "הסירו ממועדפים");
		} else {
			inject = inject.Replace("[favstate]","0");
			inject = inject.Replace("[fstat]","");
			inject = inject.Replace("[favlabel]", "הוסיפו למועדפים");
		}
		if (cardobj.IsBlocked == true) {
			inject = inject.Replace("[bstat]","");
			inject = inject.Replace("[bstatdis]","onMouseOver='this.href=\"javascript:void(0);\"; this.onclick=null;' alt='המשתמש חסם אותך' title='המשתמש חסם אותך'");
		} else {
			inject = inject.Replace("[bstat]","");
			inject = inject.Replace("[bstatdis]","");
		}
		if (typeof invisible == "boolean" && invisible == true) {
			inject = inject.Replace("CardBlock","CardBlock CardInvisible");

        }
        if (cardobj.IsVerified == true) {
            inject = inject.Replace("CardDecor", "CardDecorMeumat");
        }
		
	} catch(e) {
		return;
	}

	if (document.getElementById("cardContainer"))
	    document.getElementById("cardContainer").innerHTML += inject;

	//alert(document.getElementById("cardContainer").innerHTML)
}

function DisableCardOnClick(inject) {
    inject = inject.Replace("CardButton_Message", "DoNothing");
    inject = inject.Replace("CardButton_IM", "DoNothing");
    //inject = inject.Replace("CardButton_Heart", "DoNothing");
    //inject = inject.Replace("ChangeFavoriteStatus", "DoNothing");

    return inject;
}

function RenderEmptyCard(invisible) {
	var inject = "<div class='CardBlock_Empty"+((typeof invisible == "boolean" && invisible == true)?" CardInvisible":"")+"'>&nbsp;</div>";

	if (document.getElementById("cardContainer"))
	    document.getElementById("cardContainer").innerHTML += inject;
}

function DrawCardCollection(cardArray) {
	if (typeof cardArray.length == "undefined" || cardArray.length == 0) return;
	ClearCards();
	for (var i=0; i<cardArray.length; i++) {
		RenderCard(cardArray[i]);
	}
}


function ClearCards() {
	document.getElementById("cardContainer").innerHTML = "";
}

function GetAllCards() {
	var cont = document.getElementById("cardContainer");
	var items = new Array();
	for (var i=0;i<cont.childNodes.length;i++) {
		if (typeof cont.childNodes[i] != "undefined" && cont.childNodes[i] != null && typeof cont.childNodes[i].tagName != "undefined" && cont.childNodes[i].tagName != null && cont.childNodes[i] != "") {
			items.push(cont.childNodes[i]);
		}
	}
	return items;
}

String.prototype.Replace = function(what, withwhat) {
	return this.split(what).join(withwhat);
}

Date.prototype.LoveMeString = function() {
	var str = (this.getHours()<10)?("0" + this.getHours()):this.getHours();
	str += ":";
	str += ((this.getMinutes()<10)?("0" + this.getMinutes()):this.getMinutes());
	str += " | ";
	str += ((this.getDate()<10)?("0" + this.getDate()):this.getDate());
	str += ".";
	str += ((this.getMonth()<9)?("0" + (this.getMonth()+1)):(this.getMonth()+1));
	str += ".";
	str += this.getFullYear();
	return str;
}

function CardButton_Heart(num) {
	//alert()
	if (LoginAjaxTimeout == null) {
		//quick_registration_popup();
		return;
	}
	if (typeof HeartTimeout != "undefined" && HeartTimeout != null) {
		clearTimeout(HeartTimeout);
		HeartTimeout = null;
	}
	ShowShader();
	var p = document.getElementById("heartsPopup");
	curr_popup = "heartsPopup";
	p.style.display = "block";
	var midPointX = Math.round((document.body.scrollWidth - p.offsetWidth) / 2);
	var midPointY = Math.round((document.body.offsetHeight - p.offsetHeight) / 2) + document.body.scrollTop;
	if (midPointY<0) {
		midPointY = 10;
	}
	p.style.top = midPointY + "px";
	p.style.left = midPointX  + "px";
	scroll_interval = setInterval(setPopupY,50);
	document.getElementById("hdnHeartDestination").value = num;
}

