/*functions not needed at page startup rendering*/



//tooltip 
var offsetxpoint=0
var offsetypoint=20
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""


function ietruebody(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function ddrivetip(thetext, thecolor, thewidth){ if (ns6||ie){ if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
tipobj.innerHTML=thetext
enabletip=true
return false
}
}
function positiontip(e){ if (enabletip){ var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft; var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop; var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20+100
var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
if (rightedge<tipobj.offsetWidth)
tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
else if (curX<leftedge)
tipobj.style.left="5px"
else
tipobj.style.left=curX+offsetxpoint+"px"
if (bottomedge<tipobj.offsetHeight)
tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
else
tipobj.style.top=curY+offsetypoint+"px"
tipobj.style.visibility="visible"
}
}
function hideddrivetip(){ if (ns6||ie){ enabletip=false
tipobj.style.visibility="hidden"
tipobj.style.left="-1000px"
tipobj.style.backgroundColor=''
tipobj.style.width=''
}
}
document.onmousemove=positiontip

function hideAll()
{		   
getStyleObject('postPanelTagBagAdd').display='none';	
getStyleObject('postPanelAdd').display='none';		
getStyleObject('postPanelEdit').display='none';		
getStyleObject('postPanelView').display='none';	
getStyleObject('postPanelScopeAdd').display='none';	
getStyleObject('editPanel').display="none"; 
getStyleObject('divTagBag').display="none"; 
getStyleObject('panelImageUpload').display="none"; 
getStyleObject('deleteConfirmPanel').display="none"; 
getStyleObject('imageUploadPanel').display="none"; 
if($('divImport'))
  getStyleObject('divImport').display="none"; 

}


function showEdit(){
hideAll();
new Effect.BlindDown('editPanel', {duration:.2});  
}
function showImport(){
hideAll(); 
new Effect.BlindDown('divImport', {duration:.2}); 
}
function showAddFormat(){
hideAll();
new Effect.BlindDown('divAddFormat', {duration:.2});  
}
function showDelete(){
hideAll();
new Effect.BlindDown('deleteConfirmPanel', {duration:.2});   
}
function showDeletePanel(){
hideAll();
new Effect.BlindDown('deleteConfirmPanel', {duration:.2});   
}

function hideDelete(){
new Effect.BlindUp('deleteConfirmPanel', {duration:.2});  
}


function updateBookmark(linkId,url,name,description,locRelevance,lang,contentStyleFact,contentStyleFun,contentStyleBusiness,contentStyleCompassion,detailsOverview,detailsDetailed){ 
name = safeVal(name);
description = safeVal(description);
url = safeVal(url);
new xhr('/ajax/link/linkUpdate.aspx?linkId=' + linkId +'&url='+url+'&name='+name+'&description='+description+'&locRelevance='+locRelevance+'&lang='+lang+'&contentStyleFact='+contentStyleFact+'&contentStyleFun='+contentStyleFun+'&contentStyleBusiness='+contentStyleBusiness+'&contentStyleCompassion='+contentStyleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 	

function updateBook(bookId,locRelevance,lang,contentStyleFact,contentStyleFun,contentStyleBusiness,contentStyleCompassion,detailsOverview,detailsDetailed){ 
new xhr('/ajax/book/bookUpdate.aspx?bookId=' + bookId +'&locRelevance='+locRelevance+'&lang='+lang+'&contentStyleFact='+contentStyleFact+'&contentStyleFun='+contentStyleFun+'&contentStyleBusiness='+contentStyleBusiness+'&contentStyleCompassion='+contentStyleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 	

function updateAudio(audioId,name,descr,mp3,m4a,oggvorbis,torrent1,torrent2,torrent3,hostingUrl,locrel,lang,styleFact,styleFun,styleBusiness,styleCompassion,detailsOverview,detailsDetailed){ 
new xhr('/ajax/audio/audioUpdate.aspx?audioId=' + audioId +'&name='+name+'&mp3='+mp3+'&m4a='+m4a+'&oggVorbis='+oggvorbis+'&torrent1='+torrent1+'&torrent2='+torrent2+'&torrent3='+torrent3+'&description='+descr+'&locRelevance='+locrel+'&hostingUrl='+hostingUrl+'&lang='+lang+'&contentStyleFact='+styleFact+'&contentStyleFun='+styleFun+'&contentStyleBusiness='+styleBusiness+'&contentStyleCompassion='+styleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 
function updateFeed(fid,name,descr,url,locrel,lang,styleFact,styleFun,styleBusiness,styleCompassion,detailsOverview,detailsDetailed){ 
new xhr('/ajax/feed/feedUpdate.aspx?feedid='+fid+'&name='+name+'&description='+descr+'&locRelevance='+locrel+'&url='+url+'&lang='+lang+'&contentStyleFact='+styleFact+'&contentStyleFun='+styleFun+'&contentStyleBusiness='+styleBusiness+'&contentStyleCompassion='+styleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 
function updateVideo(videoId,name,descr,mkv,mp4,m4v,mov,wmv,flv,hostingUrl,torrent1,torrent2,torrent3,videopage,locrel,lang,styleFact,styleFun,styleBusiness,styleCompassion,detailsOverview,detailsDetailed){ 
new xhr('/ajax/video/videoUpdate.aspx?videoId=' + videoId +'&name='+name+'&mkv='+mkv+'&mp4='+mp4+'&m4v='+m4v+'&mov='+mov+'&wmv='+wmv+'&flv='+flv+'&hostingUrl='+hostingUrl+'&torrent1='+torrent1+'&torrent2='+torrent2+'&torrent3='+torrent3+'&description='+descr+'&locRelevance='+locrel+'&videopage='+videopage+'&lang='+lang+'&contentStyleFact='+styleFact+'&contentStyleFun='+styleFun+'&contentStyleBusiness='+styleBusiness+'&contentStyleCompassion='+styleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 
function updatePlace(pid,name,descr,homepage,street,city,isfree,isprivate,lang,styleFact,styleFun,styleBusiness,styleCompassion,detailsOverview,detailsDetailed,lat,longi,mapfromgeo,mapfromstreet){ 
var showmap=-1;
if(mapfromgeo)showmap=1;
else if(mapfromstreet)showmap=2;
new xhr('/ajax/place/placeUpdate.aspx?pid='+pid+'&name='+name+'&descr='+descr+'&homepage='+homepage+'&street='+street+'&city='+city+'&isfree='+isfree+'&isprivate='+isprivate+'&lang='+lang+'&contentStyleFact='+styleFact+'&contentStyleFun='+styleFun+'&contentStyleBusiness='+styleBusiness+'&contentStyleCompassion='+styleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+'&lat='+lat+'&longi='+longi+'&showmap='+showmap+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 		


function issueUserUpdateCommand(userId,firstname,lastname,email,homepage,country,about){ 	
firstname=safeVal(firstname);
lastname=safeVal(lastname);
email=safeVal(email);
homepage=safeVal(homepage);
about=safeVal(about);		
new xhr('/ajax/member/userUpdate.aspx?userId='+userId+'&firstname='+firstname+'&lastname='+lastname+'&email='+email+'&homepage='+homepage+'&country='+country+'&about='+about+ts(),{     
   method:'get', onSuccess: function(transport){    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 		
	

function issueGroupUpdateCommand(groupId,name,description,homepage,email,country,permissionpublic,permissionprivate,permissionhidden){ 
name = safeVal(name);	
description = safeVal(description); 
homepage = safeVal(homepage);
email = safeVal(email);		
new xhr('/ajax/group/groupUpdate.aspx?groupId=' + groupId +'&name='+name+'&description='+description+'&homepage='+homepage+'&country='+country+'&email='+email+'&accessLevelpublic='+permissionpublic+'&accessLevelprivate='+permissionprivate+'&accessLevelhidden='+permissionhidden+ts(),{     
   method:'get', onSuccess: function(transport)
     {    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);pageReload();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 		


function DeleteTopic(topicId){
new xhr('/ajax/tag/topicDelete.aspx?topicId='+topicId+ts(),{     
   method:'get', onSuccess: function(transport){    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);goHome();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 


function DeleteGroup(groupId){
new xhr('/ajax/group/groupDelete.aspx?groupId='+groupId+ts(),{     
   method:'get', onSuccess: function(transport){    
        var res=transport.responseText || "No Response"; 		                       
        if(!isErrorMsg(res)){msg(res);goHome();}
		else{msgErr(res);}                	
     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
}); 
} 

function isValidURL(url){ 
var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
if(RegExp.test(url)){ 
    return true; 
}else{ 
    return false; 
} 
} 	    


function isValidEmail(str){
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }

	 return true					
}



var uploadpanelloaded=false;
function injectPhotouploadpanel(header,resid,fuzobjtype,imgctrl,noimgpath){
if(!uploadpanelloaded){
hideAll();
str='<div class="webpartboxHeader">'+header+'</div>';
str+='<div class="lightWebpart pt5"><div id="divRemoveImage" style="display:none"><div class="t5 b5">Are you sure you want to remove the image?</div>';
str+='<input type="button" class="button r5" id="btRemoveConfirm" value="Remove" onclick="javascript:RemoveImage('+resid+',\''+fuzobjtype+'\',\''+imgctrl+'\',\''+noimgpath+'\');"/><input type="button" class="button" id="Button1" value="Cancel" onclick="new Effect.BlindUp(\'imageUploadPanel\', {duration:.1});"/>';
str+='</div><div id="divFrame"><iframe id="ifrPhoto" onload="initPhotoUpload()" scrolling="no"  frameborder="0" hidefocus="true" style="border-style:none;margin:0;height:95px;border-width:0;overflow-x:hidden;overflow-y:hidden;overflow:hidden;width:100%" src="/ajax/PhotoUpload/PhotoUpload.aspx?id='+resid+'&type='+fuzobjtype+'&imgctrlId='+imgctrl+'"></iframe></div>';
str+='<div id="divUploadMessage" style="padding-top:4px;display:none"></div><div id="divUploadProgress" style="padding-top:4px;display:none">Uploading photo...<br /><img id="imgProgressBar" src="/images/progressbar.gif"></div><div id="divUploadMasterError" class="error" style="display:none"></div></div>';
$('imageUploadPanel').innerHTML=str;
uploadpanelloaded=true;
}
getStyleObject('imageUploadPanel').display="block"; 
}

function RemoveImage(id,type,imgCtrl,emptyImg)
{
    new xhr('/ajax/PhotoUpload/DeleteImage.aspx?id='+id+'&type='+type+ts(),
    {
         method:'get', onSuccess: function(transport)
         {
            var response = transport.responseText || "No Response";  
            if( ! isErrorMsg(response)){
	            msg(response);
				if(! imgCtrl){
				     msgErr('Missing ctrl parameter');
				     return;
				     }
				     
				if(emptyImg!='null'){	
				     $(imgCtrl).src=emptyImg;				    			     
				}else{
				    getStyleObject(imgCtrl).display='none';				     				    
				}
				window.setTimeout('new Effect.BlindUp(\'imageUploadPanel\',{duration:.2});',1000);   
				getStyleObject('divRemoveImage').display='none';		
				getStyleObject('divFrame').display='';		
				              
				
	        }else
               msgErr(response);
         },
         onFailure:  function(t){
             msgErr('Failed to remove image.<br>Error '+t.status+' - '+t.statusText);	
         }
    }); 
}

function showTagging(){
getStyleObject('divAddPrivatetags').display='none';
toggleDisplay('divAddTags');
toggleDisplay('divRelevantResources');
getObject('txtSearch').focus();
if($('taggingAddButton').className.indexOf('bt_addover')>-1){
$('taggingAddButton').className='bt_add bt';
}else{
$('taggingAddButton').className='bt_addover bt';
}
}

function showPrivatetagging(){
getStyleObject('divAddTags').display='none';
getStyleObject('divRelevantResources').display='none';
toggleDisplay('divAddPrivatetags');
}

/*function showOtherRelevantResources(){
getStyleObject('divAddTags').display='none';
getStyleObject('divAddPrivatetags').display='none';
toggleDisplay('divRelevantResources');
}*/

function AddResourceAsFavourite(resourceId,resourceType,addAsSuperFavourite)
{
    new xhr('/ajax/resource/ResourceAddAsFavourite.aspx?resourceId='+resourceId+'&resourceType=' + resourceType+'&addAsSuperFavourite='+addAsSuperFavourite+ts(),   
    { 
         method:'get', onSuccess: function(transport)
         {       
            var response = transport.responseText || "No Response";  
            if(!isErrorMsg(response)) {           		   
	            msg(response); 
	            GetWhoOwnsResource(resourceId, resourceType);		             
	        }else                   
                msgErr(response);                   
         },     
         onFailure:  function(t) {               
             msgErr('Failed on GetOwnersOfBook().<br>Error ' + t.status + ' - ' + t.statusText);	
         }
    }); 
}

function issueResourceTagVote(tagId,resourceId,resourceType,isVoteUp,reltype)
{
    new xhr('/ajax/resource/VoteTagOnResource.aspx?tagId=' + tagId + '&resourceId=' + resourceId + '&resourceType=' + resourceType + '&isVoteUp=' + isVoteUp+ts(),   
    { 
         method:'get', onSuccess: function(transport)
         {       
            var response = transport.responseText || "No Response";  
            if( ! isErrorMsg(response)){             		   
	             msg(response);  
	             getTagsForResource(resourceId,resourceType,reltype);
	        }else                   
               msgErr(response);                   
         },     
         onFailure:  function(t) {               
             msgErr('Failed to vote on resource tag relation.<br>Error ' + t.status + ' - ' + t.statusText);	
         }
    }); 
}


function topiccreateMultipleForResource(resId,resType){ 
    var topicnames=encodeURI(getObject('TextBoxNewTopics').value); //,getObject('ddTagsubtypes').value
    topicnames = safeVal(topicnames);	
    new xhr('/ajax/resource/topiccreateMultipleForResource.aspx?topicnames='+topicnames+'&resourceId='+resId+'&resourceType='+resType+ts(),   
    { 
         method:'get', onSuccess: function(transport)
         {       
            var response = transport.responseText || "No Response"; 
            if( ! isErrorMsg(response)){             		   
	             msg(response);  
	             getTagsForResource(resId,resType,1);  //reload reltype 1 (what)
	        }else                   
               msgErr(response);                   
         },     
         onFailure:  function(t) {               
             msgErr('Failed to vote on bookmark tag relation.<br>Error ' + t.status + ' - ' + t.statusText);	
         }            
    }); 
}


function showExpertSearch(){
hideAll(); 
new Effect.BlindDown('divAddExpertSearch', {duration:.2}); 
}


function hideExpertSearch(){
new Effect.BlindUp('divAddExpertSearch', {duration:.2}); 
}  
function hideTagBag(){
new Effect.BlindUp('divTagBag', {duration:.2});  
}

function toggleAddToTagBagForm(){
   if(getStyleObject('divTagBag').display == 'block')
       getStyleObject('divTagBag').display='none';
   else
       showAddToTagBagForm();
}

function issueResourceClickCountUpdate(resId,resType){ 	
	new xhr('/ajax/resource/follow.aspx?resId='+resId+'&resType='+resType+ts(),{     
	   method:'get',onSuccess: function(transport){
	   var res=transport.responseText || "No Response"; 		                       
       if(isErrorMsg(res)){msgErr(res);}
	   },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 

function getAggregatedLinksForTopic(topicName,topicId){ 	
	new xhr('/ajax/tag/GetAggregatedLinksForTopic.aspx?topicName='+topicName+'&topicId='+topicId+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){$('bookmarksElsewhere').innerHTML=res;}
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 		
	
function updateTopic(topicId,name,description,synonyms,psi,uri,subtype){ 	
	name=safeVal(name);
	description=safeVal(description);
	synonyms=safeVal(synonyms);
	psi=safeVal(psi);
	new xhr('/ajax/tag/topicUpdate.aspx?topicId=' + topicId +'&name='+name+'&description='+description+'&synonyms='+synonyms+'&psi='+psi+'&uri='+uri+'&subtype='+subtype+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){msg(res);pageReload();}
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 	


function AddUserAsFriend(friendId){
	new xhr('/ajax/member/userAddAsFriend.aspx?friendId='+friendId +ts(),   
	{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response";                     
            if(!isErrorMsg(res)){msg(res);}
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
}
	
	
function addExpert(uid,tid)
{
	new xhr('/ajax/member/AddAsExpert.aspx?uid='+uid+'&tid='+tid+ts(),   
	{     
	   method:'get', onSuccess: function(transport)
	     {       
            var response = transport.responseText || "No Response";   
            if( ! isErrorMsg(response))
            {	                
				msg(response);	
				LoadExperts(tid);
			}else{ 
				msgErr(response);       
			}
	     },     
	      onFailure: function(t) {
           alert('Failed to add expert for tag. Error ' + t.status + ' - ' + t.statusText);
         }  
	}); 
}


 function GetSimilarTopics(strName, useForWhat, resourceId,resourceType){ 				
	new xhr('/ajax/tag/GetSimilarTopics.aspx?q=' + strName+'&useForWhat='+useForWhat+'&resourceId='+resourceId+'&resourceType='+resourceType+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){
            $('similarTopicsList').innerHTML = res;               
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 



function issueDeleteRelation(relationId){ 		
	new xhr('/ajax/tag/associationDelete.aspx?relationId='+relationId+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response";                     
            if(!isErrorMsg(res)){msg(res);}
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 

  	

function getTagsStartingWith(strName,useForWhat,resourceId,resType){ 	
$('suggestListLoading').show();
	new xhr('/ajax/tag/GetSuggestedTopics.aspx?q='+safeVal(strName)+'&useForWhat='+useForWhat+'&resourceId='+resourceId+'&resourceType='+resType+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response";                     
            if(!isErrorMsg(res)){
            $('suggestedTopicsList').innerHTML = res;window.setTimeout('$(\'suggestListLoading\').hide();',100);
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 


function getRefinementSelector(topicId,resId,resType,useForWhat){ 	 		
	new xhr('/ajax/tag/TopicRefinementSelector.aspx?id='+topicId+'&resourceId='+resId +'&resourceType='+resType+'&useForWhat='+useForWhat+ts(),{     
	   method:'get', onSuccess: function(transport){    
	        var res=transport.responseText||"No Response"; 		                       
            if(!isErrorMsg(res)){
            changeObjectDisplayStyle('topicRefinement','block');
            $('topicRefinement').innerHTML = res;
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 


function saveUserPermissions(gid,userid,permission){
XhrCmd('/ajax/group/saveUserPermissions.aspx?gid='+gid+'&userid='+userid+'&permission='+permission);
}

function removeMemberFromGroup(gid,userid){
XhrCmd('/ajax/group/RemoveMemberFromGroup.aspx?gid='+gid+'&userid='+userid);
}


function writeRemoteTags(strTags,panelId,originTagId,strOriginTagName)
{
    var strHTML = "";
    var arrRemoteTags = strTags.split("%%");    
    if( arrRemoteTags.length>1 && strTags.length>2)
    {
        strHTML = '<div style="display:block" id="RemoteTagsColapsed'+panelId+'"><img src="/images/buttons/plus.gif" class="ImgBt" onClick="togglePanels(\'RemoteTagsExpanded'+panelId+'\',\'RemoteTagsColapsed'+panelId+'\')"> Remote Tags <div style="display:inline" class="smallText">(' + (arrRemoteTags.length-1) + ' tags)</div></div><div id="RemoteTagsExpanded'+panelId+'" style="display:none"><img src="/images/buttons/minus.gif"  class="ImgBt"  onclick="togglePanels(\'RemoteTagsExpanded'+panelId+'\',\'RemoteTagsColapsed'+panelId+'\')"> Remote Tags<table>';
        for(i=0; i<arrRemoteTags.length-1; i++)
        {                                                 
            var arrTagItems = arrRemoteTags[i].split("##");
            if(arrTagItems.length > 0)
            {
                var style = '';
                if(i % 2==1) style = 'class="rowCol1"';
                if(arrTagItems[LOCALTAGID] > 0) //exist locally so connect. If -1 then not local
                { 
                    arrTagItems[TAGNAME] = arrTagItems[TAGNAME].replace(/'/g,'&#39;');
                    strOriginTagName = strOriginTagName.replace(/'/g,'&#39;');
                
                    strHTML += '<tr '+style+'><td><a href="/tag/'+arrTagItems[TAGID]+'/" onmouseout="hideddrivetip();" onmouseover="ddrivetip(unescape(\'<b>'+arrTagItems[TAGNAME]+'</b> '+ arrTagItems[ROLE]+ ' <b>' + strOriginTagName+'</b><br>Tag found at <b>'+ arrTagItems[PEER]+ '</b> but it also exist locally but connected here.<br>PSI: '+arrTagItems[TAGPSI]+'<br>Click connect to create relation between local tags.\'));">'+arrTagItems[TAGNAME]+'</a></td><td><img src="/images/buttons/connect.gif" border="0" class="ImgBt"';
                    if(panelId==1) //parent
                        strHTML += ' onclick="createRelationMinimal('+originTagId+','+arrTagItems[LOCALTAGID]+',\''+arrTagItems[ROLEPSI]+'\','+panelId+',\''+strOriginTagName+'\')"';                      
                    else  
                        strHTML += ' onclick="createRelationMinimal('+arrTagItems[LOCALTAGID]+','+originTagId+',\''+arrTagItems[ROLEPSI]+'\','+panelId+',\''+strOriginTagName+'\')"'; 
                    strHTML += ' title="Tag already exist on this site but are not related to ' + strOriginTagName+ ' as on remote site ' + arrTagItems[PEER] + '"></td></tr>';   
                }
                else //only remote do import
                {
                    strHTML += '<tr '+style+'><td><a href="http://' + arrTagItems[PEER]+ '/tag/'+arrTagItems[TAGID]+'/" target="_blank" onmouseout="hideddrivetip();" onmouseover="ddrivetip(\'yellowNoteBox\', event,unescape(\'<b>'+arrTagItems[TAGNAME]+'</b> '+ arrTagItems[ROLE]+ ' <b>' + strOriginTagName+'</b><br>Tag found at '+ arrTagItems[PEER]+ '<br>PSI: '+arrTagItems[TAGPSI]+'\'));">'+arrTagItems[TAGNAME]+'</a></td><td><a href="/tag/import/?tagId='+arrTagItems[TAGID]+'&peer='+arrTagItems[PEER]+'&originTagId=' + originTagId +'"><img src="/images/buttons/importMore.gif" border="0" class="ImgBt" title="Show import dialog for remote tag \''+ arrTagItems[TAGNAME]+'\'"></a></td></tr>';                        
                }
            }
        }
        strHTML += "<table></div>"; 
    }                    
    return strHTML;
}


function createRelationMinimal(tag1,tag2,role,panel,strOriginTagName)
{	
    var tidA = tag1;
    var tidB = tag2;
    if(panel==1){
	   tidA = tag2;
       tidB = tag1;
    }       
    new xhr('/ajax/tag/topicCreateRelationMinimal.aspx?tidA=' + tidA +'&roleA=' + role +'&tidB='+tidB+ts(),   
	{     
	     method:'get', onSuccess: function(transport)
	     {       
            var response = transport.responseText || "No Response";   
            if( ! isErrorMsg(response))
            {	
                msg(response);
				getRelationsForTopic(tag1); 						
                window.setTimeout('getRemoteRelations('+tag1+',\''+strOriginTagName+'\')',480);
			}else{ 
				msgErr(response);									
			}
	     },     
	      onFailure: function(t) {
           alert('Failed to create relation between . Error ' + t.status + ' - ' + t.statusText);
         }  
	}); 
}	


function getRemoteRelations(tagId,strOriginTagName)
{
  new xhr('/ajax/tag/GetRemoteRelationsForTopic.aspx?topicId=' + tagId+ts(),   
  {     
     method:'get', onSuccess: function(transport)
     {       
        var response = transport.responseText;                
        var strOut;
        if(response=='')
        {
            $('remoteTagsBox').innerHTML = "";          
            return;                
        }     
                          
        if(! isErrorMsg(response))
        {                   
            var strAllParentTags = "";  //for all peers
            var strAllChildTags = "";
            var strAllRelatedTags = "";                    
            
            //get peer collections  
            var arrPeer = response.split("@@");  
        //alert(response);
            //reorder items so that parent, child and related are top ordering   
            for(i=0;i<arrPeer.length;i++)
            {
             
                var arrPeerItem = arrPeer[i].split("??");                        
                var strPeerName = arrPeerItem[0];
                var strPeerURL = arrPeerItem[1];
                var strPeerData = arrPeerItem[2];            
             
                var arrByRelationType;
                
               // if(strPeerData) 
                //   arrByRelationType = strPeerData.split("||"); 

               /* //parent tags
                if(arrByRelationType[0])
                {
                    var arrParentItems = arrByRelationType[0].split("%%");                          
                    for(i=0; i<arrParentItems.length-1; i++)
                    {   
                        var arrParentTag = arrParentItems[i].split("##");                         
                        strAllParentTags += "" + arrParentTag[0]+"##"+arrParentTag[1]+"##"+arrParentTag[2]+"##"+arrParentTag[3]+"##"+arrParentTag[4]+"##"+arrParentTag[5]+"##"+strPeerName+"##"+strPeerURL+"%%";                                                          
                    }   
                }
           
                //child tags
          //   alert(arrByRelationType[1]);
                var arrChildItems = arrByRelationType[1].split("%%");                          
                for(i=0; i<arrChildItems.length-1; i++)
                {   
                    var arrChildTagItems = arrChildItems[i].split("##");                         
                    strAllChildTags += "" + arrChildTagItems[0]+"##"+arrChildTagItems[1]+"##"+arrChildTagItems[2]+"##"+arrChildTagItems[3]+"##"+arrChildTagItems[4]+"##"+arrChildTagItems[5]+"##"+strPeerName+"##"+strPeerURL+"%%";                                                          
                }   */ 
                
                //related tags                
                //var arrRelatedItems = arrByRelationType[2].split("%%");      strPeerData                    
                var arrRelatedItems =strPeerData;                    
                for(i=0; i<arrRelatedItems.length-1; i++)
                {   
                    var arrRelatedTag = arrRelatedItems[i].split("##");                         
                    strAllRelatedTags += "" + arrRelatedTag[0]+"##"+arrRelatedTag[1]+"##"+arrRelatedTag[2]+"##"+arrRelatedTag[3]+"##"+arrRelatedTag[4]+"##"+arrRelatedTag[5]+"##"+strPeerName+"##"+strPeerURL+"%%";                                                          
                }                                               
            }     
         
          //  $('parentRemoteTagsBox').innerHTML = writeRemoteTags(strAllParentTags,"1",tagId,strOriginTagName); 
           // $('childRemoteTagsBox').innerHTML = writeRemoteTags(strAllChildTags,"2",tagId,strOriginTagName); 
            $('relatedRemoteTagsBox').innerHTML = writeRemoteTags(strAllRelatedTags,"3",tagId,strOriginTagName);                                      
            
        }
        else
        {
           //$('parentRemoteTagsBox').innerHTML = response;  
          // $('childRemoteTagsBox').innerHTML = ""; 
           $('relatedRemoteTagsBox').innerHTML = response;                   
        }			        
        
     },     
     onFailure: function(){ alert('Failed to load remote peer site tags')}   
}); 
}


function CreateTopicForResource(name,description,synonyms,descriptionUrl,resourceId,resourceType,reltype,tagsubtype,taguri){ 
    name = safeVal(name);  
	description = safeVal(description);
	synonyms = safeVal(synonyms);
    new xhr('/ajax/resource/topicCreateForResource.aspx?name='+name+'&description='+description+'&synonyms='+synonyms+'&descriptionURL=' + descriptionUrl + '&resourceId='+resourceId+ '&resourceType='+resourceType+'&tagsubtype='+tagsubtype+'&reltype='+reltype+'&subjectUri'+ts(),   
    { 
         method:'get', onSuccess: function(transport)
         {       
            var response = transport.responseText || "No Response"; 
            if( ! isErrorMsg(response)){             		   
	             msg(response);
				//update page with topics listing			
               getTagsForResource(resourceId,resourceType,reltype); 
				//clear the create topic input fields
				var txtName = $('txtName');					  
				var txtSynonyms = $('txtSynonyms');
				var txtDescription = $('txtDescription');
				if(txtName) txtName.value='';
				if(txtSynonyms) txtSynonyms.value='';
				if(txtDescription) txtDescription.value='';
	        }else                   
               msgErr(response);                   
         },     
         onFailure: function(t) {               
             msgErr('Error executing CreateTopicForResource().<br>Error '+t.status+' - '+t.statusText);	
         }             
    }); 
}



function AddTagForResource(topicId,resourceId,resType){	   
var listbox=$('selectRelationType');
var reltype=listbox.options[listbox.selectedIndex].value;
	new xhr('/ajax/resource/topicAddForResource.aspx?topicId='+topicId+'&resourceId='+resourceId+'&resourceType='+resType+'&reltype='+reltype+ts(),{
	   method:'get',onSuccess:function(transport){
            var response = transport.responseText||"No Response";
            if(!isErrorMsg(response)){
				msg(response);
                getTagsForResource(resourceId,resType,reltype);
				//clear the create topic input fields
				var txtName=$('txtName');
				var txtSynonyms=$('txtSynonyms');
				var txtDescription=$('txtDescription');
				if(txtName) txtName.value='';
				if(txtSynonyms) txtSynonyms.value='';
				if(txtDescription) txtDescription.value='';
			}else{ 
				msgErr(response);       
			}
	     },     
	      onFailure: function(t) {
           alert('Failed to load tags. Error '+t.status+' - '+t.statusText);
         }  
	}); 
}


function removeTag(tagId,resourceId,resourceType,isPrivateTag,taggroup){
 	var strPage;
 	if(isPrivateTag)
        strPage='resourceRemovePrivateTag.aspx';
    else
        strPage ='resourceRemoveTag.aspx';
         	
    new xhr('/ajax/resource/'+strPage+'?resourceId='+resourceId+'&resourceType='+resourceType+'&tagId='+tagId+ts(),{     
       method:'get', onSuccess: function(transport){       
            var response=transport.responseText||"Error No Response";   
            if(!isErrorMsg(response)){	
                msg(response);		          
	            if(isPrivateTag)
	                getPrivateTagsForResource(resourceId,resourceType,'tagsListingPrivate');
	            else             
	                getTagsForResource(resourceId,resourceType,taggroup);  
            }
            else{msgErr(response);}
         },     
         onFailure:function(t){alert('Failed to remove tag. <br>Error '+t.status+' - '+t.statusText);}
    }); 
}


function photoUploadComplete(message,isError,imgCtrl,newPathAndfilename)
{
    _divUploadProgress.style.display='none';
    _divUploadMessage.style.display='none';
    _divFrame.style.display='';
    var d = new Date();
    $(imgCtrl).src=newPathAndfilename+"?ts="+d.getMinutes()+d.getSeconds();
    getStyleObject(imgCtrl).display="block";
    window.setTimeout('new Effect.BlindUp(\'imageUploadPanel\',{duration:.2});',1000);  
    window.setTimeout('_ifrPhoto.contentWindow.history.back()',1600); 
    window.setTimeout('msg(\'Image was successfully updated\');',1800); 
       
    if (message.length)
    {
        var color=(isError)?'#ff0000':'#008000';
        _divUploadMessage.innerHTML='<span style=\"color:'+color+'\;font-weight:bold">'+message+'</span>';
        _divUploadMessage.style.display='';
        if (isError)
        {
            _ifrPhoto.contentWindow.document.getElementById('filPhoto').focus();
        }
    }
}




function GetBooksForGroup(groupId,panelId){        
    new xhr('/ajax/book/GetBooksForGroup.aspx?id='+groupId+ts(),   
    { 
         method:'get', onSuccess: function(transport)
         {       
            var res = transport.responseText || "No Response"; 
            if( ! isErrorMsg(res)){$(panelId).innerHTML = res;}else msgErr(res);                   
         },     
         onFailure:  function(t) {               
             msgErr('Failed to load books for user. GetBooksForUser()<br>Error ' + t.status + ' - ' + t.statusText);	
         }            
    }); 
}

function sendFriendRequest(uid,msg){
	XhrCmd('/ajax/member/userAddAsFriend.aspx?friendId='+uid+'&msg='+msg+ts());
	new Effect.BlindUp('sendfriendrequestform', { duration: .3 });
}


function ageprompt(){
	agewindow=dhtmlmodal.open('agebox', 'div', 'modalalertdiv', 'Age Check', 'width=350px,height=150px,left=150px,top=100px,resize=0,scrolling=0')
}

function sendfeedback(msg)
{
getStyleObject('feedbackLoading').display="block";
new xhr('/ajax/feedback/?msg='+msg+ts(),   
{ 
     method:'get',onSuccess: function(transport){       
        var response=transport.responseText||"No Response";  
        if(!isErrorMsg(response)){         		   
            //msg(response);
            $('feedbackError').innerHTML=response;      		            
			$('txtFeedbackMsg').value='';
			window.setTimeout('hidefeedbackform()',1000);							
        }else{                   
           msgErr(response); 
           $('feedbackError').innerHTML='Error while sending feedback';
           }
       getStyleObject('feedbackLoading').display="none";                  
     },     
     onFailure:  function(t) {               
         msgErr('Failed to vote on resource group relation.<br>Error '+t.status+' - '+t.statusText);	
     }
}); 
}



function GetRolesForAssocCreateTopic(ctrlassocId,cetrlreverse,ctrlnameA,ctrlnameB){
	assocId=$(ctrlassocId).options[$(ctrlassocId).selectedIndex].value;
	reverse = $(cetrlreverse).checked;
	new xhr('/ajax/GetRolesForAssoc.aspx?assocId='+assocId+'&reverse='+reverse+ts(),   
	{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response";                     
            if(!isErrorMsg(res)){
             var strPreview;				    
				var arrRoles = res.split("\n");						
				var arrRolesItem1 = arrRoles[0].split("&&");						
				var arrRolesItem2 = arrRoles[1].split("&&");                  						
				
				var textA =  $(ctrlnameA).innerHTML;
				var textB =  $(ctrlnameB).innerHTML;
				var nPos = textA.indexOf('(alias for');
				if(nPos > 0){
					textA = textA.substr(nPos+10);
					textA = textA.substr(0,textA.length-1);
				}
				nPos = textB.indexOf('(alias for');
				if(nPos > 0){
					textB = textB.substr(nPos+10);
					textB = textB.substr(0,textB.length-1);
				}									
				
			    strPreview = '<table cellpadding="3"><tr><td>' + textA + ' <b><span id="roleA">&nbsp; ' + arrRolesItem1[1] + ' &nbsp;</span></b> ' + textB +'. </td></tr> ' +
			    '<tr><td> ' + textB + ' <b><span id="roleB">&nbsp; ' + arrRolesItem2[1] + ' &nbsp;</span></b> ' + textA 
			       + '.</td></tr></table>'; 
                $('PanelAssocRolePreview').innerHTML = strPreview;                    
                new Effect.Appear('PanelAssocRolePreview', {duration:.1});
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
}

function issueDeleteTopicFavourite(topicId){ 			
	new xhr('/ajax/tag/topicFavouriteDelete.aspx?topicId='+topicId+ts(),{     
	   method:'get', onSuccess: function(transport){    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){               
            msg(res);
            window.setTimeout('location.reload(true)',1000);
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 	

function add2irrelevantList(resid,restype,userid,callback){
new xhr('/ajax/resource/add2irrelevantList.aspx?resId='+resid+'&resType='+restype+'&userId='+userid+ts(),{     
	   method:'get', onSuccess: function(transport){    
	        var res=transport.responseText||"No Response"; 		                       
            if(!isErrorMsg(res)){
            msg(res);
            eval('showResourcesFiltered'+callback+'();');
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
}

function addFormat(media,id,url,format){ 			
	new xhr('/ajax/'+media+'/addFormat.aspx?id='+id+'&url='+url+'&format='+format+ts(),{
	   method:'get',onSuccess: function(transport){
	        var res=transport.responseText||"No Response";
            if(!isErrorMsg(res)){
            msg(res);window.setTimeout('location.reload(true)',1000);
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
}

function issueDeleteFavouriteLink(linkId){	
	new xhr('/ajax/link/linkRemoveFavourite.aspx?linkId='+linkId+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){               
            msg(res);
            pageReload();                
            }
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 		 


function updateHappening(eventid,name,descr,street,cityid,location,startdate,enddate,conference,seminar,workshop,presentation,networking,other,isfree,homepage,lang,styleFact,styleFun,styleBusiness,styleCompassion,detailsOverview,detailsDetailed,twitterhashtag){ 
	name = safeVal(name);
	descr = safeVal(descr);	
	twitterhashtag = safeVal(twitterhashtag);	
	new xhr('/ajax/happening/happeningUpdate.aspx?eventid=' + eventid +'&name='+name+'&description='+descr+'&street='+street+'&cityid='+cityid+'&location='+location+'&startdate='+startdate+'&enddate='+enddate+'&conference='+conference+'&seminar='+seminar+'&workshop='+workshop+'&presentation='+presentation+'&networking='+networking+'&other='+other+'&isfree='+isfree+'&homepage='+homepage+'&lang='+lang+'&contentStyleFact='+styleFact+'&contentStyleFun='+styleFun+'&contentStyleBusiness='+styleBusiness+'&contentStyleCompassion='+styleCompassion+'&detailsDetailed='+detailsDetailed+'&detailsOverview='+detailsOverview+'&twitterhashtag='+twitterhashtag+ts(),{     
	   method:'get', onSuccess: function(transport)
	     {    
	        var res=transport.responseText || "No Response"; 		                       
            if(!isErrorMsg(res)){msg(res);pageReload();}
			else{msgErr(res);}                	
	     },onFailure:function(t){msgErr('Error '+t.status +' - '+t.statusText);}  
	}); 
} 



function getOtherRelevantResourcesForResource(resourceId,resourceType){
    new xhr('/ajax/resource/getOtherRelevantResourcesForResource.aspx?resid=' + resourceId + '&restype='+resourceType+ts(),{     
       method:'get', onSuccess: function(transport){       
            var response = transport.responseText || "No Response";   
            $('otherResources').innerHTML = response;  
         },     
         onFailure:  function(t) {
           $('otherResources').innerHTML = 'Failed to load tags.<br>Error ' + t.status + ' - ' + t.statusText;
         }
    }); 
}


function retweet(id){XhrCmd('/ajax/twitter/Retweet.aspx?id='+id+ts());}

function PopulateCreateNewTagForm(title,uri,descr,alias){
$('txtName').value=title;
$('txtURI').value=uri;
if(descr.length>2){
$('txtDescription').value=descr;
}
if(alias.length>2){
  $('txtSynonyms').value=alias;
}
}

function taggingDescrPopulateFromDBpedia(q){
if(q.length<2)return false;
new Ajax.Request('/ajax/tag/GetDBpediaDescrDuringTagCreate.aspx?q='+q+ts(), {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
    var json = transport.responseText.evalJSON(true);
    if(json.length>1){ //multiple results    
      var towrite='';
      var i=0;
      for(i=0;i<json.length-1;i++){           
        towrite=towrite+'<tr><td><a onmouseover="ddrivetip(unescape(\'<b>Description:</b> '+ escape(json[i].Description)+'\'));" onmouseout="hideddrivetip();" class="popupLink" href="'+ json[i].URI+'">'+ json[i].Title+'</a></td><td><a title="Populate fields below by reusing this wikipedia subject" href="javascript:PopulateCreateNewTagForm(\''+safeVal(json[i].Title)+'\',\''+safeVal(json[i].URI)+'\',\''+ safeVal(json[i].Description)+'\',\''+ safeVal(json[i].Redirects)+'\');"><div class="bt bt_use"></div></a></td></tr>';
      }          
      $('dbpediasuggestions').innerHTML="<table cellpadding=1 cellspacing=0>"+towrite+"</table>";  
    }
    else if(json.length==0){
       msg('No matching subjects found at wikipedia');
    }
    else{     
       PopulateCreateNewTagForm(json[0].Title,json[0].URI,json[0].Description,json[0].Redirects);
    } 
  }    
});   
 return false;
}



