/******************************************************************************/
/******************************************************************* ****** ***/
/******************************************************************************/
function trim(str)
{
	if(typeof str == "string")
		str = str.replace(/(^\s+)|(\s+$)/g, "")
	return str
}

function ifdo(str)
{
	return confirm(str)
}

function documentwrite(str)
{
	document.write(str)
}

function showUploadProgress()
{
	var newDiv = document.body.appendChild(document.createElement("DIV"))
	newDiv.style.position = "absolute"
	newDiv.style.top = "200px"
	newDiv.style.left = "350px"
	newDiv.style.backgroundColor = "honeydew"
	newDiv.style.backgroundImage = "url(/images/loading.gif)"
	newDiv.style.backgroundPosition = "center center"
	newDiv.style.backgroundRepeat = "no-repeat"
	newDiv.style.color = "blue"
	newDiv.style.border = "3px outset blue"
	newDiv.style.fontSize = "18px"
	newDiv.style.lineHeight = "15px"
	newDiv.style.textAlign = "center"
	newDiv.style.padding = "15px"
	newDiv.style.width = "200px"
	newDiv.style.height = "20px"
	newDiv.style.overflow = "visible"
	newDiv.style.fontWeight = "bold"

	newDiv.innerHTML = "טוען קובץ...<br><br><br><br>"

	return true;
}

function toggleFaq(e)
{
	objRef = e.srcElement || e.target

	if(objRef.className == "faq_text")
		objRef = objRef.parentNode
	if(objRef.className == "faq_question")
	{
		objRef = objRef.nextSibling
		objRef.style.display = objRef.style.display == "block" ? "none":"block"
	}
}

function doLists(mode,userId,act,objRef,isNoLogin)
{
	if(isNoLogin)
	{
		location.href = "/login.asp?err=6&ui=" + userId + "&url=" + encodeURIComponent(location.href)		
		return
	}
	var dontShowLabel	= "על תציג בכרטיס",
		showLabel		= "הצג בכרטיס",
		addedMsg 		= "חבר הוסף בהצלחה",
		removedMsg 		= "חבר הוסר בהצלחה",
		willShowMsg 	= "חבר יוצג בכרטיס במידה וגם הוא הוסיף אתכם כחבר",
		willNotShowMsg 	= "חבר לא יוצג ברטיס",
		showInProfile 	= 0,
		hideTagClassName= ""

	if(act == 1)
	{
		if(mode=="favi")
		{
			showInProfile = confirm("האם להציג חבר זה בכרטיס שלך?\nשימו לב, כדי שהחבר יוצג בכרטיסכם עליו להוסיף אתכם גם כן כחברים בכרטיסו")
			if(!showInProfile)
				alert(addedMsg + " \n " + willNotShowMsg)
			else
				alert(addedMsg + " \n " + willShowMsg)
		}
		else if(mode=="favip")
		{
			alert(willShowMsg)
			objRef.innerHTML = objRef.innerHTML.replace(new RegExp(showLabel, "gi"), dontShowLabel)
			objRef.onclick = function(){doLists('favip',userId,0,this)}
		}
		else
			alert(addedMsg)
	}
	else if(act==0)
	{
		if(mode == "favip")
		{
			alert(willNotShowMsg);
			objRef.innerHTML = objRef.innerHTML.replace(new RegExp(dontShowLabel, "gi"), showLabel)			
			objRef.onclick = function(){doLists('favip',userId,1,this)}
		}
		else
		{
			alert(removedMsg);
			while(objRef && objRef.className.indexOf("profile_") == -1)
				objRef = objRef.parentNode;
			if(objRef)
				objRef.style.display = "none";
		}
	}
	var dataGetter = new ajax_dataGetter()
	dataGetter.getData("/lists/do.asp?mode=" + mode + "&userId=" + userId + "&act=" + act + "&showInProfile=" + showInProfile)
}

function toggleSearchList(objRef,objId)
{
	var t = objRef.offsetHeight, l = 0
	while(objRef)
	{	
		t += objRef.offsetTop
		l += (objRef.offsetLeft>=0 ? objRef.offsetLeft:objRef.offsetParent.offsetWidth + objRef.offsetLeft - objRef.offsetWidth*4)
		objRef = objRef.offsetParent
	}
	l -= 70
	document.getElementById(objId).style.left = l + "px"
	document.getElementById(objId).style.top = t + "px"
	document.getElementById(objId).style.visibility =  document.getElementById(objId).style.visibility == "visible" ? "hidden":"visible"
}

function toggleTreeDisplay(objRef)
{
	while(objRef && objRef.className != "body")
	{
		objRef = objRef.nextSibling
	}
	if(objRef)
		objRef.style.display = objRef.style.display != "block" ? "block":"none"
}

function renderDate(dateStr,dateTemplate)
{
	if(!dateTemplate)
		return dateStr

	var	dateObj 	= new Date(Date.parse(dateStr)),
		monthNames 	= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
		weekDays	= ["Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"]
		addZero		= function (digit){return (digit<10 ? "0" + digit:digit)}

	dateStr = dateTemplate || Application("dateTemplate")

	if(isNaN(dateObj))
		return ""

	dateStr = dateStr.replace(/wd/i,weekDays[dateObj.getDay()])					//set week day
	dateStr = dateStr.replace(/dd/i,addZero(dateObj.getDate()))					//set digit date
	dateStr = dateStr.replace(/mm/i,addZero(dateObj.getMonth()+1))				//set digit month
	dateStr = dateStr.replace(/month/i,monthNames[dateObj.getMonth()])			//set word month
	dateStr = dateStr.replace(/yyyy/i,dateObj.getFullYear())					//set 4 digit year
	if(/yy/i.test(dateStr))														//set 2 digit year
		dateStr = dateStr.replace(/yy/i,dateObj.getYear().toString().substr(2,2))
	dateStr = dateStr.replace(/hh/i,addZero(dateObj.getHours()))				//set hours
	dateStr = dateStr.replace(/mi/i,addZero(dateObj.getMinutes()))				//set minutes
	dateStr = dateStr.replace(/ss/i,addZero(dateObj.getSeconds()))				//set seconds
	dateStr = dateStr.replace(/ms/i,addZero(dateObj.getMilliseconds()))			//set miliseconds
	return dateStr
}
function listing_toggle_tr(e)
{
	var objRef = e.srcElement || e.target
	if(objRef.nodeName != "A" && objRef.nodeName != "INPUT" && objRef.nodeName != "IMG")
	{
		while(objRef && objRef.nodeName != "TR")
			objRef = objRef.parentNode

		if(objRef)		
		{
			try
			{
				objRef.parentNode.rows[objRef.rowIndex+1].style.display = objRef.parentNode.rows[objRef.rowIndex+1].style.display != "table-row" ? "table-row":"none"
			}
			catch(e)
			{
				objRef.parentNode.rows[objRef.rowIndex+1].style.display = objRef.parentNode.rows[objRef.rowIndex+1].style.display != "block" ? "block":"none"
			}
		}
	}
}
/******************************************************************************/
/***************************************************************** SCROLLER ***/
/******************************************************************************/

function initializeScroll(objId,dir,h)
{
	document.getElementById(objId).scrollDir = dir
	var h = h || document.getElementById(objId).offsetHeight
	document.getElementById(objId).innerHTML = "<div style=\"clear:both;height:" + h + "px\">&nbsp;</div>"
	+ document.getElementById(objId).innerHTML + "<div style=\"clear:both;height:" + h*0.9 + "px\"></div>"	
	doScroll(objId,dir)
}

function doScroll(objId)
{
	dir = parseInt(document.getElementById(objId).scrollDir) || 1
	
	if(typeof timeouts == "undefined")
		timeouts = new Array()

	var objRef = document.getElementById(objId)

	if(timeouts[objId]!="undefined")
		clearInterval(timeouts[objId])

	timeouts[objId] = setInterval(function()
								{
									objRef.scrollTop = objRef.scrollTop + 2*dir
									if(dir > 0 && objRef.scrollTop + objRef.offsetHeight == objRef.scrollHeight)
									{
										objRef.scrollTop = 0
									}
									else if(objRef.scrollTop <= 0)
									{
										objRef.scrollTop = objRef.scrollHeight
									}
								}
								,100)
}

function doScrollOn(objId)
{
	doScroll(objId)
	document.getElementById(objId).style.overflow = "hidden"
}

function stopScrollOn(objId)
{
	stopScroll(objId)
	document.getElementById(objId).style.overflow = "auto"
		document.getElementById(objId).style.overflowX = "hidden"
}

function stopScroll(objId)
{
	if(typeof timeouts != "undefined" && timeouts[objId])
		clearInterval(timeouts[objId])
}

function scrollToTop(objId)
{
	stopScroll(objId)
	document.getElementById(objId).scrollTop = 0
}

function scrollToBottom(objId)
{
	stopScroll(objId)
	document.getElementById(objId).scrollTop = document.getElementById(objId).scrollHeight
}

/******************************************************************************/
/*********************************************************** WINDOW OPENERS ***/
/******************************************************************************/

function openWin(config)
{
	config.width 		= config.width 		|| 500
	config.height 		= config.height 	|| 500
	config.scrollbars	= config.scrollbars	|| "yes"
	config.resizable 	= config.resizable 	|| "yes"
	config.name 		= config.name 		|| "winName" + parseInt(Math.random()*10000000000000000)

	var mywin = window.open
				(
					config.href,
					config.name,
					 "resizable="	+ config.resizable	+ ","
					+"scrollbars="	+ config.scrollbars	+ ","
					+"width="		+ config.width 		+ ","
					+"height="		+ config.height
				)
	if(!mywin)
	{
		alert("יש חוסם פופאפים...")
	}
}

function openProfile(userId)
{
	
	openWin({href:"/users/profile.asp?userId=" + userId,width:800,height:800})
}


function openProfileApprove(userId)
{
	openWin({href:"/users/profile.asp?approve=1&userId=" + userId,width:800,height:800})
}

function openProfileNote(userId)
{
	openWin({href:"/users/profile.asp?userId=" + userId + "#comments",width:800,height:800})
}
function openNews(itemId)
{
	openWin({href:"/news.asp?itemId=" + itemId,width:500,height:400})
}

function openIM(userId)
{
	openWin({href:"/im/initialize.asp?userId=" + userId,width:600,height:550,resizable:"no"})
}

function openMsgNew(userNick, userId, msgId)
{
	var hrf = "/msg/insert.asp?userNick=" + escape(userNick) + "&userId=" + userId + (msgId ? "&msgId=" + msgId:"")
	openWin({href:hrf,width:650,height:640})
}

function openMsgRead(msgId, listMode)
{
	openWin({href:"/msg/msg.asp?msgId=" + msgId + "&mode=" + listMode,width:500,height:450,scrollbars:"no"})
}

function openTellFriend(url)
{
	openWin({href:"/tellfriend.asp?url=" + url,width:500,height:380,scrollbars:"no"})
}

function openAbuseReport(userNick,userId)
{
	openWin({href:"/report.asp?abusingUserNick=" + encodeURIComponent(userNick) + "&abusingUserId=" + userId,width:500,height:400})
}

function openContentReport(url)
{
	openWin({href:"/contentreport.asp?url=" + url,width:500,height:400})
}

function openVideo(videoId, userId)
{
	openWin({href:"/uservideo/showvideo.asp?videoId=" + videoId + "&userId=" + userId,width:510,height:610,scrollbars:"no"})	
}
function openBoardPic(n)
{
	openWin({href:"/boards/showpic.asp?n=" + n,width:500,height:500})	
}
function openAddEmo()
{
	openWin({href:"/addemo.asp",width:330,height:500})	
}
function stopEvent(e)
{
	e = e ? e:event
	e.cancelBubble = true
	if (e.stopPropagation)
		e.stopPropagation()
}
/******************************************************************************/
/************************************************************** AJAX ACCESS ***/
/******************************************************************************/

function ajax_dataGetter()
{
	this.isIframe = false
	
	var objRef
	try{
		objRef = new XMLHttpRequest()
	}
	catch(e){
		try{
			objRef = new ActiveXObject("Msxml2.XMLHTTP.4.0")
		}
		catch(e){
			try{
				objRef = new ActiveXObject("Msxml2.XMLHTTP")
			}
			catch(e){
				try{
					objRef = new ActiveXObject("microsoft.XMLHTTP")
				}
				catch(e){
					try{
						obj 				= document.body.appendChild(document.createElement("IFRAME"))
						obj.width 			= 0
						obj.height 			= 0
						obj.style.width 	= 0
						obj.style.height 	= 0
						obj.style.display 	= "none"
						
						this.isIframe		= true
					}
					catch(e){
						objRef = null
					}
				}
			}
		}
	}
	if(!objRef)
		alert("Get Data error: Object was NOT created")
	
	this.getData = function(hrf,callback,transferData)
	{	
		if(hrf.indexOf("?") == -1)
			hrf += "?"
		else
			hrf += "&"
			
		hrf += "r=" + Math.random()
			
		if(this.isIframe)
		{
			objRef.src = hrf + "&callback=" + callback
		}
		else
		{
			objRef.open( "GET", hrf, true)
			objRef.onreadystatechange = function() 
			{
				if(objRef.readyState == 4)
				{			
					if(objRef.status == 200)
					{	
						if(callback)
							window[callback](objRef.responseText,transferData)
					}
					else
					{
						alert("Get Data error: " + objRef.statusText + "\nStatus: " + objRef.status + "\nError:\n" + objRef.responseText)
					}
				}
			}
			objRef.send(null)
		}
	}
}
/******************************************************************************/
/********************************************************** RENDER COMMENTS ***/
/******************************************************************************/
function renderComments(grows,isManage)
{
	var rowFieldsCount	= 9,
		treeData 		= [],
		SUBJECT			= 0,
		USERID			= 1,
		USERNICK		= 2,
		DATE			= 3,
		TEXT			= 4,
		COMMENTID		= 5,
		PARENTID		= 6,
		ISONLINE		= 7,
		ROOTID			= 8
		isNoLogin		= currentUserId ? 0:1				
		
	for(var i=grows.length-rowFieldsCount; i>=0; i-=rowFieldsCount)
	{
		if(grows[i+PARENTID]==0)
			doit(i)
	}
	return treeData.join("")
	
	function doit(ii)
	{
		var	bulletClass 	= "",
			userNickClass	= "",
			moderatorLinks	= "",
			userLinks		= "",
			manageInput		= ""
	
		if(grows[ii+PARENTID] != 0)
		{
			treeData.push("<div class=\"treeDataNode\">")
			bulletClass = "bulletNode"
		}
		else
		{
			treeData.push("<div class=\"treeDataRoot\">")
			bulletClass = "bulletRoot"

		}
		if(moderatorsIds.indexOf(";" + grows[ii+USERID] + ";") != -1)
			userNickClass = "nickOwner"
		else if(currentUserId==grows[ii+USERID])
			userNickClass = "nickCurrent"
		else
			userNickClass = "nick"	
		
		if(currentUserId!=grows[ii+USERID])
		{
	
			if(grows[ii+ISONLINE])
				userLinks = "<span onclick=\"openIM(" + grows[ii+USERID] + ")\">" + strings.openim + "</span> &nbsp;"
			
			userLinks += "<span onclick=\"doLists('favi'," + grows[ii+USERID] + ",1,this," + isNoLogin + ")\">" + strings.addtofavorites + "</span> &nbsp;"
						+"<span onclick=\"openMsgNew('" + encodeURIComponent(grows[ii+USERNICK]).replace(/'/gi,"\\'") + "'," + grows[ii+USERID] + ")\">" + strings.sendmessage + "</span> &nbsp;"						
	
		}
		
		if(isManage)
			manageInput = "<input type=\"checkbox\" name=\"commentIds\" value=\"" + grows[ii+COMMENTID] + "\">"
		
		
		treeData.push
		(
			"<div class=\"treeData\">"
				+"<div class=\"date\">" + renderDate(grows[ii+DATE].replace(/^(\d\d\/)(\d\d\/)/,"$2$1"),"dd/mm/yyyy") + "</div>"
				+"<div onclick=\"openProfile(" + grows[ii+USERID] + ")\" "
					+"class=\"" + userNickClass + "\">"
					+grows[ii+USERNICK]
				+"</div>"
				+manageInput
				+"<div class=\"subject\" onclick=\"toggleTreeDisplay(this)\">"
					+"<span class=\"" + bulletClass + "\">"
					+(grows[ii+TEXT] ? "&#149;":"&#176;") + "</span>"  
					+grows[ii+SUBJECT]
				+"</div>"
				+"<div class=\"body\">"
					+"<div class=\"text\">"
						+grows[ii+TEXT]
					+"</div>"
					+"<div class=\"footer\">"
						+"<a href=\"../comments/insert.asp?parentCommentId=" + grows[ii+COMMENTID] + "\">" + strings.response + "</a> &nbsp;"
						+ userLinks
					+"</div>"
				+"</div>"
			+"</div>"
		)
		for(var j=0; j<grows.length; j+=rowFieldsCount)
		{
			if(grows[j+PARENTID] == grows[ii+COMMENTID])
	            doit(j)
		}
		treeData.push("</div>")
	}
}
/******************************************************************************/
/***************************************************************** IM ALERT ***/
/******************************************************************************/

function clearIMalert(objRef)
{
 	while(objRef.nodeName != "TR")
 		objRef = objRef.parentNode
 	ri = objRef.rowIndex
 	tbl = objRef.parentNode
 	tbl.deleteRow(ri)
 	tbl.deleteRow(ri-1)

 	if(tbl.rows.length < 2)
		document.getElementById("imAlert").style.visibility = "hidden"
}
function declineIM(decliningId, declinedId, errNum)
{
	if(!document.getElementById("doListFrame"))
	{
		newFrame 				= document.body.appendChild(document.createElement("IFRAME"))
		newFrame.id 			= "doListFrame"
		newFrame.width 			= 0
		newFrame.height 		= 0
		newFrame.style.width 	= 0
		newFrame.style.height 	= 0
		newFrame.style.display 	= "none"
	}
	else
		newFrame = document.getElementById("doListFrame")
	newFrame.src = "/im/decline.asp?errNum=" + errNum + "&decliningId=" + decliningId + "&declinedId=" + declinedId
}

/******************************************************************************/
/***************************************************************** ++++++++ ***/
/******************************************************************************/


function toggleFormGender(state, fieldsNum)
{
	if(state == 2)
	{
		for(i=0; i < fieldsNum; i++)
		{
			if(document.getElementById("coupleRow" + i))
				try{document.getElementById("coupleRow" + i).style.display = "table-row"}catch(r){document.getElementById("coupleRow" + i).style.display = "block"}
			if(document.getElementById("msign" + i))
				document.getElementById("msign" + i).style.display = "inline"	
			if(document.getElementById("fletter" + i))
				document.getElementById("fletter" + i).style.display = "inline"	
			
			toggleDisabled(i, false)
		}	
	}
	else
	{
		for(i=0; i < fieldsNum; i++)
		{
			if(document.getElementById("coupleRow" + i))
				document.getElementById("coupleRow" + i).style.display = "none"
			if(document.getElementById("msign" + i))
				document.getElementById("msign" + i).style.display = "none"
			if(document.getElementById("fletter" + i))
				document.getElementById("fletter" + i).style.display = "none"
			
			toggleDisabled(i, true)
		}	
	}
	function toggleDisabled(x, state)
	{
		elems = document.getElementById("coupleRow" + x).getElementsByTagName("INPUT")
		for(e=0; e < elems.length; e++)
			elems[e].disabled = state
		elems = document.getElementById("coupleRow" + x).getElementsByTagName("SELECT")
		for(e=0; e < elems.length; e++)
			elems[e].disabled = state
		elems = document.getElementById("coupleRow" + x).getElementsByTagName("TEXTAREA")
		for(e=0; e < elems.length; e++)
			elems[e].disabled = state
	}
}

function checkBlogSearchForm(objRef,menuId)
{
	if(trim(objRef.query.value).length < 3)
	{
		alert("יש להזין לפחות 3 תווים")
		objRef.query.focus()
		return false
	}
	if(!(objRef.userNick.checked || objRef.blogName.checked || objRef.blogDesc.checked))
	{
		alert("נא לבחור בתנאי חיפוש אחד לפחות")
		if(document.getElementById(menuId).style.visibility != "visible")
			toggleSearchList(document.getElementById("checksButton"),'checksPopup')
		return false
	}
	return true
}

function do_approve(userId,isNoLogin,isApprove)
{
	if(isNoLogin)
	{
		opener.location.href = "/login.asp?err=6&ui=" + userId + "&url=" + encodeURIComponent(location.href)		
		this.close();
		return
	}
	else{
		if(isApprove){
			location.href = "/users/approve.asp?approve=1&ui=" + userId
		}
		else{
			location.href = "/users/approve.asp?ui=" + userId
		} 		
	}
}