
var current_category = null;
var dummy = null;
var focused = false;
var sort_type = '';
var sort_value = '';

function get_url_parts()
{
    var path = location.pathname;
    var parts = [];
    path.split("/").each(function(item)
    {
        if(!item.empty())
            parts.push(item);
    });
    return parts;
}

function load_delicious_tags() // Does not work yet, Dimitri
{
	var delicious_username = $("delicious_username").value;
	var delicious_password = $("delicious_password").value;
	
  if (!delicious_username) return alert("please enter your delicious username");
  if (!delicious_password) return alert("please enter your delicious password");
	
  var delicious_get_tags_url = 'https://' + delicious_username + ':' + delicious_password + '@api.del.icio.us/v1/tags/all';
	var myAjax = new Ajax.Request
	(
	  delicious_get_tags_url, 
		{ 
      method: 'get',
      onFailure: function(response)
      {
        alert(response.status);
        alert(response.responseText);
      },
      onFailure: function(response)
      {
        alert(response.status);
        alert(response.responseText);
      },
	    onSuccess: function(response)
	    {
	    	alert(response.status);
	  	  alert(response.responseText);
	    }
		}
	);
}

function change_category(category_id)
{		
	if(current_category == category_id){
		$("sub-category").className = 'hide';
		$('cat_'+current_category).className = "";
		current_category = null;
	}
	else
	{	var myAjax = new Ajax.Request('/categories/change?id='+category_id,
			{
				onComplete: function(response)
				{   
					//$("sub-category").removeClassName('hide');	
					$("sub-category").className = "category"+category_id;
                    $('cat_'+category_id).className = "selected";
					$('scc-content').innerHTML = response.responseText + "<div id=\"spacer\"></div>";
					if(current_category != null)
						$('cat_'+current_category).className = "";
					current_category = category_id;
                    dummy = setTimeout(hide_categories, 5000);
                    $("sub-category").onmouseover = function() { focused = true; };
                    $("sub-category").onmouseout = function() {
                        focused = false;
                        clearTimeout(dummy);
                        dummy = setTimeout(hide_categories, 5000);
                    };
                    document.body.onclick = function()
                    {
                        focused = false;
                        clearTimeout(dummy);
                        hide_categories();
                    };
				}	   	    
			}
		);
	}
}

function hide_categories()
{
    if(!focused)
    {
        var LIs = $("main-category").childElements()[0].childElements();
        LIs.each(function(item){ item.removeClassName('selected'); });
        $("sub-category").addClassName('hide');
    }
    else
        dummy = setTimeout(hide_categories, 5000);
}

function hide_others(element_id)
{
    ['share', 'new-rating'].each(function(item)
    {
        $$("div."+item).each(function(sub_item)
        {
            if(element_id != sub_item.id)
                sub_item.addClassName("hide");
        });
    });
}

function toggle_element(element_id, override)
{	
	
	if(override)
	{
        try
        {
            $(element_id).removeClassName('hide');
            $(element_id).removeClassName('show');
            $(element_id).addClassName(override);
        } catch(e){}
	}
	else{/*
		if($(element_id).hasClassName('show'))
		{
			$(element_id).removeClassName('show');
			$(element_id).addClassName('hide');
		}	
		else if($(element_id).hasClassName('hide'))
		{
			$(element_id).removeClassName('hide');
			$(element_id).addClassName('show');
		}
		else
		{
			$(element_id).addClassName('hide');
		}*/
       if($(element_id).hasClassName('hide'))
           $(element_id).toggleClassName('hide');
       else
           $(element_id).addClassName('hide');
	}	
}


function rate(entry_id, rate_value)
{	
	var ajx = new Ajax.Request('/rate_entry?entry_id='+entry_id+'&rating='+rate_value, 
		{
			parameters : { 'entry_id' : entry_id, 'rating' : rate_value },
			onSuccess : function(response)
			{
                var reply = response.responseText.split('|');
				toggle_element('new_rate_'+parseInt(reply[0])); // function call for hiding rate
				$("updated_rating_"+parseInt(reply[0])).innerHTML = reply[1];
				$("anchor_"+entry_id).innerHTML = '<img src="/images/new_subdomain/vote.jpg" />';
			}
		})
}

function update_total_rate(entry_id, value, rate_by)
{
	$('current_rate_'+entry_id).src = "/images/rating/rating_"+value+".jpg";
	$('current_rate_by_'+entry_id).innerHTML = "(by "+rate_by+")";
}

function untag(tag_id, type)
{
	$("page_tag_"+tag_id).remove();
    suggest(null, null, type);
        
}

function bookmark_untag(tag_id, type)
{
	$("page_tag_"+tag_id).remove();
    bookmark_suggest('', type);
}

function update_suggestion(input, type)
{
	var value = input.value.strip();
	if(!value.empty())
	{	
		// replace "/test.php?action=suggest" with the url of page returning suggested tags
		var ajx = new Ajax.Request('/tags/related?text='+value+'&type='+type, 
			{
				onSuccess : function(response)
				{
                    $("tag-suggest").innerHTML = response.responseText + '<div id="ts-footer"></div>';
                    toggle_element("ts-container", 'show');
				}
			});
	}
	else
		toggle_element("ts-container", 'hide');
}

function update_bookmark_tag_suggestion(input, type)
{
	var value = input.value.strip();
	if(!value.empty())
	{	
		// replace "/test.php?action=suggest" with the url of page returning suggested tags
		var ajx = new Ajax.Request('/tags/bookmark_related?text='+value+'&type='+type, 
			{
				onSuccess : function(response)
				{
                       
					/*															
						reply format
						<ul>
							<li><a href="javascript:void(0);" onclick="suggest({tag_id});">{tag_name}</a></li>
						</ul>
					*/
				
                    $("tag-suggest").innerHTML = response.responseText + '<div id="ts-footer"></div>';
                    toggle_element("ts-container", 'show');
				}
			});
	}
	else
		toggle_element("ts-container", 'hide');
}

function refine_suggest(input, type)
{
	var value = input.value.strip();
	if(!value.empty())
	{	
		// replace "/test.php?action=suggest" with the url of page returning suggested tags
		var ajx = new Ajax.Request('/tags/related?text='+value+'&type='+type, 
			{
				onSuccess : function(response)
				{
                       
					/*
						reply format
						<ul>
							<li><a href="javascript:void(0);" onclick="suggest({tag_id});">{tag_name}</a></li>
						</ul>
					*/
				
                    $("refine-suggestions").innerHTML = response.responseText + '<div id="ts-footer"></div>';
                    toggle_element("refine-suggest", 'show');
				}
			});
	}
	else
		toggle_element("refine-suggest", 'hide');
}

function suggest(tag_id, age, type, page_num)
{
    if((age == undefined) || (age == null))
    {
        var ageLIs = $("content-age").childElements();
        ageLIs.each(function(item){
            if(item.hasClassName('selected'))
            {
                age = item.id.replace("age-", "");
               	return;
            }                
        });
    }
    // for days only 
    if(typeof tag_id == 'object')
    {
        if(tag_id != undefined)
            selectAge(tag_id);
        tag_id = '';
    }       
    
    // get current tags
    var LIs = $("tags").childElements()[0].childElements();
    var CurrentTags = [];
    
	LIs.each(function(item)
	{
		var id = item.id;
		if(id.indexOf("page_tag_") == 0)
			CurrentTags.push(id.replace("page_tag_", ""));
	});

    // append new tag
	if ((tag_id != '') && !CurrentTags.include(tag_id))
    {
        CurrentTags.push(tag_id);
        var TagName = Try.these (
            function() { return $('tag_suggest_'+tag_id).innerHTML },
            function()
            {
                var TagName = $('tag_refine_'+tag_id).innerHTML ;
                TagName = TagName.substr(0, TagName.lastIndexOf("("));
                return TagName;
            }
            ) || '';
        appendTag(tag_id, TagName, type);
    }    
     
    try
    {
        $("tag-suggest").innerHTML = '';
        toggle_element("ts-container", 'hide');
        $("refine-suggestions").innerHTML = '';
        toggle_element("refine-suggest", 'hide');
    }catch(e){};
    
    var params = {};
    params['days'] = age;
    params['tags'] = CurrentTags.join(',');
    if(type != undefined)
        params['type'] = type;
    if((page_num == undefined) || (page_num == null)) {
    	params['page'] = 1;
    }else{ params['page'] = page_num }        
        
    
    var ajx = new Ajax.Request('/content', 
        {
            method : 'get',
            parameters : params,
            onSuccess : function(response)
            {
                $("entry_list_container").innerHTML = response.responseText;
                
				_qacct="p-44VxhKUX2975c";
				quantserve();
            }
        });
    
    var ajx = new Ajax.Request('/filter_refine_tags', 
        {
            method : 'get',
            parameters : params,
            onSuccess : function(response)
            {
                $("refine_tags").innerHTML = response.responseText;
            }
        });       
        
        
}

function bookmark_suggest(tag_id, type, page, sort)
{
    if((type == null) || (type == undefined))
    {
        $("content-age").childElements().each(function(item)
        {
            if(item.hasClassName('selected'))
            {
                type = item.id.replace("bookmark-", "");
                return;
            }
        });
    }
    
 	if(typeof tag_id == 'object')
    {
        if(tag_id) selectBookmarkType(tag_id);
        tag_id = '';
    }
    
    // get current tags
    var LIs = $("tags").childElements()[0].childElements();
    var CurrentTags = [];
    
	LIs.each(function(item)
	{
		var id = item.id;
		if(id.indexOf("page_tag_") == 0)
			CurrentTags.push(id.replace("page_tag_", ""));
	});

    // append new tag    
	if ((tag_id != '') && !CurrentTags.include(tag_id))
    {
        CurrentTags.push(tag_id);
        var TagName = Try.these (
            function() { return $('tag_suggest_'+tag_id).innerHTML },
            function()
            {
                var TagName = $('tag_refine_'+tag_id).innerHTML ;
                TagName = TagName.substr(0, TagName.lastIndexOf("("));
                return TagName;
            }
            ) || '';
        appendBookmarkTag(tag_id, TagName, type);
    }    
     
    try
    {
        $("tag-suggest").innerHTML = '';
        toggle_element("ts-container", 'hide');
        $("refine-suggestions").innerHTML = '';
        toggle_element("refine-suggest", 'hide');
    }catch(e){};
    
    var params = {};
    params['tags'] = CurrentTags.join(',');
    params['type'] = type;
    
    if((page != null) && (page != undefined))
    {
    	params['current_page'] = page;
    }
    
    if((sort != null) && (sort != undefined))
    {
    	params['sort'] = sort;
    }                   
    //var ajx = new Ajax.Request('/change_bookmark_display?tag_id='+tag_id, 
    var ajx = new Ajax.Request('/change_bookmark_display', 
        {
            method : 'get',
            parameters : params,
            onSuccess : function(response)
            {
                $("bookmark_list").innerHTML = response.responseText;
            }
        });
}

function selectAge(selectThis)
{
    var LIs = $("content-age").childElements();
    LIs.each(function (item)
        {
            item.className = null;
        });
    selectThis.className = 'selected';
}

function selectBookmarkType(selectThis)
{
    $("content-age").childElements().each(function (item)
    {
        item.className = null;
    });
    selectThis.className = 'selected';
}

function appendTag(id, name, type){
    var UL = $("tags").childElements()[0];
    var LIs = UL.childElements();		
    
    // create new ul element
    var newUL = document.createElement("ul");
    
    // append tag-header
    newUL.appendChild(LIs.shift());
    
    // append current tags
    LIs.each(function(item){
    	if(item.id != "tag-input")
    		newUL.appendChild(item);
    });
    
    // add new tag
    var li_tpl = '<div class="tag-container"><em><span>{tag_name}</span></em><b onclick="untag({tag_id}, \''+type+'\');"><img src="/images/new_subdomain/tag-delete.jpg" /></b></div>';
    var newLI = document.createElement("li");
    newLI.id = "page_tag_"+id;
    
    newLI.innerHTML = (li_tpl.replace("{tag_id}", id)).replace("{tag_name}", name);
    newUL.appendChild(newLI);
    
    // append tag-input
    newUL.appendChild(LIs[LIs.length-1]);
    
    
    // add newUL
    $("tags").innerHTML = '';
    $("tags").appendChild(newUL);
    
    // add spacer
    var spacer = Object.extend(document.createElement('div'), { 'className' : 'spacer' });
    $("tags").appendChild(spacer);
}

function appendBookmarkTag(id, name, type){
    var UL = $("tags").childElements()[0];
    var LIs = UL.childElements();		
    
    // create new ul element
    var newUL = document.createElement("ul");
    
    // append tag-header
    newUL.appendChild(LIs.shift());
    
    // append current tags
    LIs.each(function(item){
    	if(item.id != "tag-input")
    		newUL.appendChild(item);
    });
    
    // add new tag
    var li_tpl = '<div class="tag-container"><em><span>{tag_name}</span></em><b onclick="bookmark_untag({tag_id}, \''+type+'\');"><img src="/images/new_subdomain/tag-delete.jpg" /></b></div>';
    var newLI = document.createElement("li");
    newLI.id = "page_tag_"+id;
    
    newLI.innerHTML = (li_tpl.replace("{tag_id}", id)).replace("{tag_name}", name);
    newUL.appendChild(newLI);
    
    // append tag-input
    newUL.appendChild(LIs[LIs.length-1]);
    
    
    // add newUL
    $("tags").innerHTML = '';
    $("tags").appendChild(newUL);
    
    // add spacer
    var spacer = Object.extend(document.createElement('div'), { 'className' : 'spacer' });
    $("tags").appendChild(spacer);
}

function selectTab(elem)
{
    var childs = elem.parentNode.childNodes;

    for(var i=0; i< childs.length; i++)
    {
        if(childs[i].nodeType == 1)
            childs[i].className = "";
    }
    elem.className = "selected";
}

function changeProfileGemziesPage(page, member_id)
{
    var id = page.substr(0,1).toUpperCase() + page.substr(1).toLowerCase();
    selectTab($(id));
	var ajx = new Ajax.Request('/change_profile_gemzies_page?page='+page+'&member_id='+member_id, 
		{			
			onSuccess : function(response)
			{					
				$('user-pages').innerHTML = response.responseText;				
			}
		})
}

function changeActivityPage(page, member_id)
{	
    //var id = page.substr(0,1).toUpperCase() + page.substr(1).toLowerCase();
    //selectTab($(id));
    $('page_id').value = '';
    $('Contributions').className = 'selected';
    $('page-select').className = 'hide';
    var report = $("pages-select").childElements()[0].className = "";
	$("pages-select").childElements()[0].innerHTML = 'All Pages <img src="/images/new_subdomain/share-down-arrow.png"/>';
	$("pages-sort").childElements()[0].innerHTML = 'Latest Entries <img src="/images/new_subdomain/share-down-arrow.png"/>';
    
	var ajx = new Ajax.Request('/change_activity_page?activity='+page+'&member_id='+member_id, 
		{			
			onSuccess : function(response)
			{					
				$('profile-activity').innerHTML = response.responseText;
				
			}
		})
}

function setTab(obj){
    $("NI-TABS").childElements().each(function(item)
        {
            item.removeClassName("selected");
        });
    obj.parentNode.addClassName("selected");
    
    $("NI-CONTENT").childElements().each(function(item)
        {
            item.removeClassName("selected");
        });
    $("NI-TABS").childElements().each(function(item, idx)
        {
            if(item.hasClassName("selected"))
                $("NI-CONTENT").childElements()[idx-1].addClassName('selected');
        });
}

function setVideo(form, value)
{
    $("video_url").value = decodeURIComponent(value);
    form.submit();
}


function setBook(form, value)
{
    $("book_url").value = decodeURIComponent(value);
    form.submit();
}

function setDocument(form, value)
{
	$("document_url").value = decodeURIComponent(value);
    form.submit();
}

function rss_rate(rate)
{
    $("site_rating").value = rate;
    var RateWidth = [null, 19, 38, 57, 76, 95];
    $("current_rss_rate").style.width = RateWidth[rate]+'px';
}

function checkURL(url, page_id)
{    
    url = url.strip();
    if(!url.empty())
    {
        if(/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(url))
        {
            var ajx = new Ajax.Request("/checkDuplicateEntry",
                {
                    method : 'get',
                    parameters : { 'page_id' : page_id, 'url' : url},
                    onCreate : function (response)
                    {
                        $("rss_url").readonly = true;
                        $("RSS_URL_STAT").innerHTML = '<img src="/images/new_subdomain/loading.gif" alt="Checking... Please wait." title="Checking... Please wait." />';
                    },
                    onSuccess : function(response)
                    {
                        $("rss_url").readonly = false;
                        if(response.responseText == 1)
                            change_status('RSS_URL_STAT', 'ok', 'URL is valid and unique.');
                        else
                            change_status('RSS_URL_STAT', 'invalid', 'URL has been used already in this page.');
                    }
                });
        }
        else
            change_status('RSS_URL_STAT', 'error', 'Invalid URL format!');
    }
    else
        $("RSS_URL_STAT").innerHTML = "";    
}

function change_status(id, msgtype, alt)
{
    alt = alt==undefined?'':alt;
    var img = document.createElement('img');
    img.title = alt;
    img.alt = alt;
    img.src = "/images/new_subdomain/"+msgtype+".png";
    img.width = "12";
    img.height = "12";
    if(document.all)
        img.style.behavior = "url(/css/iepngfix.htc)";    
    $(id).innerHTML = '';            
    $(id).appendChild(img);
}

function NewItemValidate(FormName){
    var form = document.forms[FormName];
    var value = form.elements[2].value.strip();
    
    if(value.empty())
        alert("Please fill-up the field.");
    else
    {
        var embedRX = /<embed.*src="\b[^\"]*"/img;
        if (embedRX.test(value)) 
		{
			var match = value.match(embedRX).toString();
			var mStart = match.indexOf('src="');
			match = match.substr(mStart + 5, match.length - (mStart + 6));
			form.elements[2].value = match;
		}
		else 
		{
			var reg = new RegExp("^http://(.*)");
			if (!reg.test(value)) 
				form.elements[2].value = "http://" + value;
		}
        window.location = form.action + '?' + decodeURIComponent($(form.name).serialize());
    }
    
    return false;
}

function RSSFormValidate()
{
    var Fields = ['rss_url', 'rss_title', 'site_rating', 'rss_review', 'rss_tags'];
    var Errors = [];
    Fields.each(function (item)
        {
            if($(item).value.empty())
                Errors.push(item);
        });
    if(Errors.length == 0)
        return true;
    else
    {
        alert("Please fill-up all fields!");
        return false;
    }
}



function editMemberBio()
{
	var ajx = new Ajax.Request('/edit_member_bio', 
		{			
			onSuccess : function(response)
			{					
				$('profile-bio').innerHTML = response.responseText;
				
			}
		})
}

function saveMemberBio()
{
	var ajx = new Ajax.Request('/save_member_bio?bio='+$('profile_bio_textarea').value, 
		{			
			onSuccess : function(response)
			{					
				$('profile-bio').innerHTML = response.responseText;
				
			}
		})
}

function displayUploadForm()
{
	var ajx = new Ajax.Request('/display_upload', 
		{			
			onSuccess : function(response)
			{					
				$('upload_image').innerHTML = response.responseText;
				
			}
		})
}

function editMemberExpertise()
{
	var ajx = new Ajax.Request('/edit_member_expertise', 
		{			
			onSuccess : function(response)
			{					
				$('expertises').innerHTML = response.responseText;
				
			}
		})
}

function saveMemberExpertise()
{
	var ajx = new Ajax.Request('/save_member_expertise?expertise='+$('expertises_textarea').value, 
		{			
			onSuccess : function(response)
			{					
				$('expertises').innerHTML = response.responseText;
				
			}
		})
}

function editMemberLinks()
{
	var ajx = new Ajax.Request('/edit_member_links', 
		{			
			onSuccess : function(response)
			{					
				$('member_links').innerHTML = response.responseText;
				
			}
		})
}

function saveMemberLinks()
{
	
	var linkedin = $('linkedin').value;
	var myspace = $('myspace').value;
	var facebook = $('facebook').value;
	var other = $('other').value;
	
	linkedin = linkedin.search(/http:\/\//i) != -1 ? linkedin.substr(7) : linkedin;
	myspace = myspace.search(/http:\/\//i) != -1 ? myspace.substr(7) : myspace;
	facebook = facebook.search(/http:\/\//i) != -1 ? facebook.substr(7) : facebook;
	other = other.search(/http:\/\//i) != -1 ? other.substr(7) : other;
	
	var link_error = '';
	link_error += linkedin.search(/www.linkedin.com/) == -1 && linkedin != '' ? "Invalid linkedin address. " : '';
	link_error += myspace.search(/myspace.com/) == -1 && myspace != '' ? "Invalid myspace address. " : '';
	link_error += facebook.search(/facebook.com/) == -1 && facebook != '' ? "Invalid facebook address. " : '';
	
	if(link_error == '')
	{
		var ajx = new Ajax.Request('/save_member_links&linkedin='+linkedin+'&myspace='+myspace+'&facebook='+facebook+'&other='+other, 
			{			
				onSuccess : function(response)
				{					
					$('member_links').innerHTML = response.responseText;
					
				}
			})
	}
	else
	{
		$('link_error').innerHTML = link_error;
	}
}

function editMemberConnects()
{
	var ajx = new Ajax.Request('/edit_member_connects', 
		{			
			onSuccess : function(response)
			{					
				$('member_connects').innerHTML = response.responseText;
				
			}
		})
}

function saveMemberConnects()
{
	
	var twitter_usr = $('twitter_usr').value;
	var twitter_pwd = $('twitter_pwd').value;
	var facebook_usr = $('facebook_usr').value;
	var facebook_pwd = $('facebook_pwd').value;
	var friendfeed_usr = $('friendfeed_usr').value;
	var friendfeed_pwd = $('friendfeed_pwd').value;
	
	var connect_error = '';
	connect_error += twitter_usr && !twitter_pwd ? "Please fillout your twitter password " : '';
	connect_error += facebook_usr && !facebook_pwd ? "Please fillout your facebook password " : '';
	connect_error += friendfeed_usr && !friendfeed_pwd ? "Please fillout your friendfeed remote key " : '';
	
	if(connect_error == '')
	{
		var ajx = new Ajax.Request('/save_member_connects&twitter_usr='+twitter_usr+'&twitter_pwd='+twitter_pwd+'&facebook_usr='+facebook_usr+'&facebook_pwd='+facebook_pwd+'&friendfeed_usr='+friendfeed_usr+'&friendfeed_pwd='+friendfeed_pwd, 
			{			
				onSuccess : function(response)
				{					
					$('member_connects').innerHTML = response.responseText;
					
				}
			})
	}
	else
	{
		$('connect_error').innerHTML = connect_error;
	}
}

function displayImportBookmarks(elem)
{
    selectTab(elem.parentNode);
	var ajx = new Ajax.Request('/display_import_bookmarks', 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_main_content').innerHTML = response.responseText;
				
			}
		})
}

function displayGrabImportBookmarksButton(elem)
{
    selectTab(elem.parentNode);
	var ajx = new Ajax.Request('/display_grab_bookmark_button', 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_main_content').innerHTML = response.responseText;
				
			}
		})
}

function displayMyBookmarks(elem)
{
    selectTab(elem.parentNode);
	var ajx = new Ajax.Request('/display_my_bookmarks', 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_main_content').innerHTML = response.responseText;
			}
		})
}

function displayChangePassword()
{
	var ajx = new Ajax.Request('/display_edit_password', 
		{			
			onSuccess : function(response)
			{					
				$('account_information').innerHTML = response.responseText;
				
			}
		})
}

function checkPasswordFields()
{
	var ajx = new Ajax.Request('/check_password_fields?current_password='+$('current_password').value+'&new_password='+$('new_password').value+'&confirm_password='+$('confirm_password').value, 
		{			
			onSuccess : function(response)
			{					
				$('account_information').innerHTML = response.responseText;
				
			}
		})
}

function invitePopUp()
{
	noc = window.open('/invite/','pop','fullscreen=1,location=0,left=30,top=30,menubar=no,resizable=no,status=no,scrollbars=no');
	noc.resizeTo(700,440);
	noc.moveTo((screen.width/2)-(683/2),(screen.height/2)-(440/2));
}

function saveContact(contact_id)
{	
	var ajx = new Ajax.Request('/profile/connect?contact_id='+contact_id, 
		{			
			onSuccess : function(response)
			{					
				$('contact_confirmation').innerHTML = response.responseText;
				
			}
		});
	closeConfirmContact();
}

function confirmContact(contact_id, contact_name)
{
	// container
	var container = document.createElement("div");
	container.id = "confirmContact";
	
	// bg
	var bg = document.createElement("div");
	bg.id = "confirmContact-bg";
	
	// content
	var content = document.createElement("div");
	content.id = "confirmContact-content";
	content.innerHTML = "<br /><strong>Send a connection request to "+contact_name+"?</strong><br /><button class=\"buttonYES\" onclick=\"saveContact("+contact_id+");\"> </button> <button class=\"buttonNO\" onclick=\"closeConfirmContact()\"> </button><br /><em>If "+contact_name+" accepts your request, you will see the name appear in your contact list. </em>";
	
	container.appendChild(content);
	container.appendChild(bg);
	
	
	$("action").appendChild(container);
}

function closeConfirmContact()
{
	try{
		$("confirmContact").remove();
	} catch(e){};
}

function changeBookmarkByTag(tag_id)
{
	var ajx = new Ajax.Request('/change_bookmark_display?tag_id='+tag_id, 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_list').innerHTML = response.responseText;
				
			}
		})
}

function changeBookmarkByType(type,elem)
{
	var bookmarkLIs = $("content-age").childElements();
        bookmarkLIs.each(function(item){
            if(item.hasClassName('selected'))
            {
                item.className = "";
               	return;
            }                
        });
	elem.parentNode.className = 'selected';
		
	var ajx = new Ajax.Request('/change_bookmark_display?type='+type, 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_list').innerHTML = response.responseText;
				
			}
		})
}


function changeBookmarkByTag(tag_id)
{
	var ajx = new Ajax.Request('/change_bookmark_display?tag_id='+tag_id, 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_list').innerHTML = response.responseText;
				
			}
		})
}

function changeBookmarkByType(type,elem)
{
	var bookmarkLIs = $("content-age").childElements();
        bookmarkLIs.each(function(item){
            if(item.hasClassName('selected'))
            {
                item.className = "";
               	return;
            }                
        });
	elem.parentNode.className = 'selected';
		
	var ajx = new Ajax.Request('/change_bookmark_display?type='+type, 
		{			
			onSuccess : function(response)
			{					
				$('bookmark_list').innerHTML = response.responseText;
				
			}
		})
}

function open_edit_bookmark(entry_id)
{
	noc=window.open('/edit_bookmark/'+entry_id,'pop','fullscreen=1,location=0,left=30,top=30,menubar=no,resizable=no,status=no,scrollbars=no');
	noc.resizeTo(683,440);
	noc.moveTo((screen.width/2)-(683/2),(screen.height/2)-(440/2));
}

function entry_share()
{
    if($("pc-share-link").className == 'selected')
    {
        $("pc-share-link").className = '';
        $("pc-shares").className = "hide";
    }
    else
    {
        $("pc-share-link").className = 'selected';
        $("pc-shares").className = "";
        
    }
}

/* --- [Report related] --- */
function entry_report()
{
    var report = $("ps-report").childElements();
    if(report[0].className == 'selected')
    {
        report[0].className = "";
        report[1].className = "hide";
    }
    else
    {
        report[0].className = "selected";
        report[1].className = "";
    }
}

function report(flag_id, entry_id)
{
    new Ajax.Request("/flagEntry",
    {
        parameters :  { 'entry_id' : entry_id, 'flag_id' : flag_id},
        method : 'get',
        onSuccess : function(response)
        {
            $("ps-report").innerHTML = '';
            $("report_result").innerHTML = response.responseText;
            
        }
    });
}
/* --- [/Report related] --- */

/* --- [Rating related] --- */
function comment_rate(rate)
{
    $("comment-rating").value = rate;
    $("current-comment-rate").style.width = (rate*19) + 'px';
}

function edit_comment_rate(rating, rate_value_el, element)
{
    $(rate_value_el).value = rating;
    $(element).style.width = (rating*19) + 'px';
}

function entry_rate(rate, entry_id)
{
    new Ajax.Request("/entry_rate", 
    {
        parameters : {'entry_id' : entry_id, 'rate' : rate },
        method : 'get',
        onSuccess : function (response)
        {
            var reply = response.responseText;
            if(!reply.empty() || reply == "Error!")
            {
                var rate_reply = reply.split("|");
                $("entry-average-votes").innerHTML = rate_reply[0] + "/5";
                $("entry-total-votes").innerHTML = " - " + rate_reply[1] + " votes";
                $("current-entry-rate").style.width = (17*Math.floor(rate_reply[0]))+"px";
                $("current-entry-rate").style.cursor = "default";
                for(var i=1; i<=5; i++)
                	$("entry-rate"+i).style.display = "none";
                    //$("entry-rate"+i).parentNode.remove();
                    
                
                 
            }
            else
                alert("There has been an error in rating entry.");
        }
    });
}
/* --- [/Rating related] --- */

/* --- [Comment Tag Auto-Suggest] --- */
var lastTag = '';
function commentTagSuggest(text)
{
    text = text.strip();
    if(!text.empty())
    {
        var arrItem = [];
        text.split(",").each(function(item)
        {
            var txt = item.strip();
            if(!txt.empty())
                arrItem.push(txt);
        });
        var arrLen = arrItem.length;
        var newTag = arrItem[arrLen-1];
        if(newTag != lastTag)
        {
            new Ajax.Request("/getTags",
            {
                parameters : { 'tags': newTag },
                method : 'get',
                onSuccess : function(response)
                {
                    $("comment-tag-suggest").innerHTML = response.responseText;
                    $("comment-tag-suggest").className = '';
                }
            });
        }
    }
    else
    {
        $("comment-tag-suggest").className = 'hide';
    }
}

function replace_text(text)
{
    var CurTags = $("comment-tags").value;
    if(!CurTags.empty())
    {
        var tags = CurTags.split(",");
        var found = false;
        tags.each(function(item)
        {
            if(item.strip() == text)
                found = true;
        });
    }
    if(found)
        alert("Tag is already added.");
    else
    {
        tags[tags.length - 1] = text;
        $("comment-tags").value = tags.join(",");
        lastTag = text;
    }
    $("comment-tag-suggest").className = 'hide';
}
/* --- [/Comment Tag Auto-Suggest] --- */

/* --- [Full Screen function] --- */
var PreviewContent = '';
function fsClose()
{
    $("preview-content").innerHTML = PreviewContent;
    PreviewContent = '';
}

function fsOpen()
{
    PreviewContent = $("preview-content").innerHTML;
    $("preview-content").innerHTML = '';
}
/* --- [/Full Screen function] --- */


//var RefineTags = null;
function GetRefinements()
{
    // get current tag ids
    var CurTags = [];
    var LIs = $("rs-content").childElements()[0].childElements();
    LIs.shift();
    LIs.each(function(item)
    {
        var rx = /refine_item_([0-9]+)/;
        if(rx.match(item.id))
            CurTags.push(item.id.match(rx)[1]);
    });
    
    new Ajax.Request("/MoreRefineTags", 
    {
        parameters : { 'tags' :  CurTags.join(",")},
        method : 'get',
        onSuccess: function (response)
        {
            var reply = response.responseText;
            if(!reply.empty())
            {
                reply.split(",").each(function(item)
                {
                    var tag = item.split("=");
                    AddRefinement(tag[0], tag[1]);
                });
            }
        }
    });
}
function AddRefinement(id, name)
{   
    var url = get_url_parts();
    var UL = $("rs-content").childElements()[0];
    var LIs = UL.childElements();
    // remove more... button
    if(LIs[LIs.length-1].id == "rs-more")
        UL.removeChild(LIs[LIs.length-1]);
    
    var LI = document.createElement("li");
    LI.className = "addedRefinement";
    LI.id = "refine_item_"+id;
    switch(url[0])
    {
        case 'new_show':
        case 'show':/*
            var matches = name.match(/(.*)\([0-9]+\)$/);
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="/tags/display/'+matches[1]+'">'+name+'</a>';*/
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="javascript: void(0);" onclick="getRelatedEntries('+id+');">'+name+'</a>';
            break;
        case 'profile':
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="javascript: void(0);" onclick="bookmark_suggest('+id+', null, \''+url[0]+'\');">'+name+'</a>';
            break;/*
        case 'overview':
        case 'website':
        case 'video':
        case 'photo':
        case 'book':
        case 'news':*/
        case 'search':
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="javascript: void(0);" onclick="SearchSuggest('+id+');">'+name+'</a>';
            break;
        case 'categories':
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="javascript: void(0);" onclick="CategoryTagSuggest('+id+');">'+name+'</a>';
            break;
        default:
            LI.innerHTML = '<a id="tag_refine_'+id+'" href="javascript: void(0);" onclick="suggest('+id+', null, \''+url[0]+'\');">'+name+'</a>';
            break;
    }
    
    UL.appendChild(LI);
}

var ElementFocused = {};
var TimeoutHandler = {};
var AutoHideTimeout = 2000;
function AutoHideMe(id)
{
    $(id).onmouseover = function () { ElementFocused[this.id] = true; if(TimeoutHandler[this.id]) clearTimeout(TimeoutHandler[this.id]); }
    $(id).onmouseout = function () { ElementFocused[this.id] = false; TimeoutHandler[this.id] = setTimeout("toggle_element('"+this.id+"', 'hide')", AutoHideTimeout); }
    if(TimeoutHandler[id])
        clearTimeout(TimeoutHandler[id]);
    TimeoutHandler[id] = setTimeout("toggle_element('"+id+"', 'hide')", AutoHideTimeout);
}

function filterActivityByPage(page_id, member_id)
{
	$('page_id').value = page_id;
	var params = {};
	params['page_id'] = page_id;
	params['member_id'] = member_id;
	if(!$("sort_type").value.blank())
		params['sort'] = $("sort_type").value;
	if(!$("sort_value").value.blank())
		params['order'] = $("sort_value").value;
    
	new Ajax.Request("/change_activity_page",
    {
        parameters :  params,
        method : 'get',
        onSuccess : function(response)
        {
            $("profile-activity").innerHTML = response.responseText;
			
			// get page name
			var page_name = $("page-filter-"+page_id).childElements()[0].innerHTML;
			page_name = page_name.substr(0, page_name.lastIndexOf("("));
			
			$("pages-select").childElements()[0].innerHTML = page_name;
			
            close_pages_select();
        }
    });
}


function page_items()
{
	$('Contributions').className = '';
    
    var report = $("pages-select").childElements();
    if(report[0].className == 'selected')
    {
        report[0].className = "";
        report[1].className = "hide";
       
    }
    else
    {
        report[0].className = "selected";
        report[1].className = "";
       
    }
    var focused;
    $("pages-select").onmouseover = function() { focused = true;  };
    $("pages-select").onmouseout = function() { focused = false; };               
    
    document.body.onclick = function()
    {
    	if(focused == false){
			$("page-select").className = "hide";
			$("pages-select").childElements()[0].className = "";
		}
        	
    };
}

function close_pages_select()
{
    var report = $("pages-select").childElements();
    report[0].className = "";
    report[1].className = "hide";
}

function page_sort_items()
{
	$('Contributions').className = '';
    
    var report = $("pages-sort").childElements();
    if(report[0].className == 'selected')
    {
        report[0].className = "";
        report[1].className = "hide";
       
    }
    else
    {
        report[0].className = "selected";
        report[1].className = "";
       
    }
    var focused;
    $("pages-sort").onmouseover = function() { focused = true;  };
    $("pages-sort").onmouseout = function() { focused = false; };               
    
    document.body.onclick = function()
    {
    	if(focused == false){
			$("page-sort").className = "hide";
			$("pages-sort").childElements()[0].className = "";
		}
        	
    };
}

function close_pages_sort()
{
    var report = $("pages-sort").childElements();
    report[0].className = "";
    report[1].className = "hide";
}

function clearField(el)
{
	$(el).value = '';
}

function editSummary()
{
	new Ajax.Request("/edit_summary",
    {      
        onSuccess : function(response)
        {
            $("summary").innerHTML = response.responseText;            
        }
    });
}

function saveSummary()
{	
	//new Ajax.Request("/save_summary?summary="+ $('summary_textarea').value,
	var summary =  $('summary_textarea').value;
	new Ajax.Request("/save_summary",
    {      
    	parameters : { 'summary' : summary},
    	method : 'post',  
        onSuccess : function(response)
        {
            $("summary").innerHTML = response.responseText;            
        }
    });
}

function editFacts()
{
	new Ajax.Request("/edit_facts",
    {      
        onSuccess : function(response)
        {
            $("quick-facts").innerHTML = response.responseText;            
        }
    });
}

function saveFacts()
{	
	var facts = $('facts_textarea').value;
	new Ajax.Request("/save_facts",
    {        
    	parameters : { 'facts' : facts},
    	method : 'post',
        onSuccess : function(response)
        {
            $("quick-facts").innerHTML = response.responseText;            
        }
    });
}

function sortContributions(type, value, member_id, page_num)
{
	$("sort_type").value = type;
	$("sort_value").value = value;
	var page_id = $('page_id').value;
	if((type == undefined) || (type == null)){
		type = $('sort_type').value;
	}else{ $('sort_type').value = type; } 
	
	if((value == undefined) || (value == null)){
		value = $('sort_value').value;
	}else{ $('sort_value').value = value; }
	
	var params = {};
	 		
	if((page_num == undefined) || (page_num == null)){ 
    	params['page_num'] = 1; 
    }else{ params['page_num'] = page_num; }
    params['page_id'] = page_id;
    params['member_id'] = member_id;
    params['sort'] = type;
    params['order'] = value;
    
    		
	new Ajax.Request("/change_activity_page",
    {
        parameters :  params,		        
        method : 'get',
        onSuccess : function(response)
        {
            $("profile-activity").innerHTML = response.responseText;
			$("pages-sort").childElements()[0].innerHTML = $("page-sort-"+type).childElements()[0].innerHTML;
            close_pages_sort();
        }
    });		
}

function saveEntryTitle(entry_id)
{
	var entry_title = $('entry_title_field').value;
	
	new Ajax.Request("/save_entry_title",
    {
    	parameters :  { 'entry_id' : entry_id, 'entry_title' : entry_title},
    	method : 'get',      
        onSuccess : function(response)
        {
            $("entry_title").innerHTML = response.responseText;            
        }
    });
}

function editEntryTitle(entry_id)
{
	noc=window.open('/edit_entry/'+entry_id,'pop','fullscreen=1,location=0,left=30,top=30,menubar=no,resizable=no,status=no,scrollbars=no');
	noc.resizeTo(683,440);
	noc.moveTo((screen.width/2)-(683/2),(screen.height/2)-(440/2));    
}

function editReview(review_id, element)
{
	new Ajax.Request("/edit_review",
    {    
    	parameters :  { 'review_id' : review_id},
    	method : 'get',  	
        onSuccess : function(response)
        {
            $(element).innerHTML = response.responseText;            
        }
    });
}

function saveReview(review_id)
{
	var review = $('review_body_'+review_id).value;
	var rating = $('comment-rating-'+review_id).value;
	var tags = $('review_tags_'+review_id).value;
	
	new Ajax.Request("/save_review",
    {    
    	parameters :  { 'review_id' : review_id, 'review' : review, 'rating' : rating, 'tags' : tags},
    	method : 'get',  	
        onSuccess : function(response)
        {
            $('comment_'+review_id).innerHTML = response.responseText;            
        }
    });
}

function reviewValidate(body_el, rating_el, tag_el, error_el)
{
	//if(($(body_el).value == '') || ($(rating_el).value == '') || ($(tag_el).value == ''))
	if(($(body_el).value == '') || ($(rating_el).value == ''))
	{
		$(error_el).innerHTML = 'All fields are required.';
		return false;
	}
	else
	{
		return true;
	}
}

function entryTitleValidate()
{
	var title_field = $('entry_title_field').value;	
	if($('entry_title_field').value == '')
	{
		$('entry_title_error').innerHTML = 'Title cannot be blank';
		return false;
	}
	else
	{
		return true;
	}
}

function sortMyContributions(sort, by)
{
	// reset all sorts
	$("content-age").childElements().each(function(item)
	{
		item.removeClassName("selected");
	});
	$("sort-"+sort).addClassName("selected");
	
	new Ajax.Request("/update_my_contributions",
	{
		method : 'get',
		parameters : {'sort' : sort, 'order': by},
		onSuccess: function(reply)
		{
			$("profile-activity").innerHTML = reply.responseText;
		}
	});
}

var hover = {};
function search_suggest(searchbox, targetID, inpage)
{
	inpage = (inpage==undefined)?false:inpage;
	searchword = searchbox.value.strip();
	if(!searchword.empty() && (searchword.length>1))
	{
		new Ajax.Request("/search_suggest",
		{
			parameters : { 'q' : searchword, 'inpage' : (inpage?1:0) },
			method : 'get',
			onSuccess : function(response)
			{
				var reply = response.responseText.strip();
				if(!reply.empty())
				{
					var tags = reply.split(",");
					var div = document.createElement("div");
					var ul = document.createElement("ul");
					tags.each(function(item)
					{
						var li = document.createElement("li");
						var text = item.replace(new RegExp(searchword, 'i'), "<strong>"+searchword+"</strong>");
						li.innerHTML = '<a href="javascript:void(0);" onclick="$(\''+searchbox.id+'\').value=unescape(\''+escape(item)+'\'); $(\''+searchbox.id+'\').focus(); $(\''+targetID+'\').style.display=\'none\';">'+text+'</a>';
						ul.appendChild(li);
					});
					div.appendChild(ul);
					$(targetID).innerHTML = '';
					$(targetID).appendChild(div);
					$(targetID).onmouseout = function()
					{
						hover[this.id] = setTimeout("$('"+this.id+"').style.display='none';", 2500);
					}
					$(targetID).onmouseover = function()
					{
						clearTimeout(hover[this.id]);
					}
					$(targetID).style.display = "block";
				}
			}
		});
	}
	return true;
}

function AddPageLinks()
{
	try {
		var ExpertSummary = $("summary_content").innerHTML;
		var ES_ReadMore = "";
		if(ExpertSummary.indexOf("...") >= 0)
		{
			ES_ReadMore = ExpertSummary.substr(ExpertSummary.lastIndexOf("..."));
			ExpertSummary = ExpertSummary.substr(0, ExpertSummary.lastIndexOf("...")).stripTags();
		}
			
		var QuickFacts = $("quick-facts").childElements()[1].childElements();
		new Ajax.Request("/getGemziesPages", {
			onSuccess: function(response){
				var reply = response.responseText;
				reply.split("\n").each(function(item){
					var page = item.split("|");
					var name = unescape(page[0]);
					var url = unescape(page[1]);
					if(!name.empty())
					{
						if (url != location.host)
						{
							var rx = "[^a-z0-9]"+name+"[\.,|^A-Za-z0-9 ]?"; // whole word
							//var rx = "[^a-z0-9]" + name;
							var es_matches = ExpertSummary.match(new RegExp(rx, "img"));
							if (es_matches != null) {
								es_matches.each(function(match_item){
									var pretext = '';
									while (match_item.substr(0, 1) == ' ') {
										pretext += ' ';
										match_item = match_item.substr(1);
									}
									/*
									while(match_item.substr(match_item.length-2,1) == ' ')
									{
										subtext += ' ';
										match_item = match_item.substr(1);
									}*/
									match_item = match_item.match("[a-z0-9A-Z]*");
									if(match_item == name)
										ExpertSummary = ExpertSummary.replace(new RegExp(" " + match_item, "gm"), pretext + '<a href="http://' + url + '/">' + match_item + '</a>');
								});
							}
							
							QuickFacts.each(function(QuickFact){
								var text = QuickFact.innerHTML;
								var qf_matches = text.match(new RegExp(rx, "img"));
								if (qf_matches != null) {
									qf_matches.each(function(match_item){
										var pretext = '';
										while (match_item.substr(0, 1) == ' ') {
											pretext += ' ';
											match_item = match_item.substr(1);
										}
										match_item = match_item.match("[a-z0-9A-Z]*");
										if(match_item == name)
											text = text.replace(new RegExp(" " + match_item, "img"), pretext + '<a href="http://' + url + '/">' + match_item + '</a>');
									});
								}
								QuickFact.innerHTML = text;
							});
						}
					}
					
				});
				//alert(ExpertSummary);
				//$("summary").innerHTML = ExpertSummary;
				$("summary_content").innerHTML = ExpertSummary + ES_ReadMore;
			}
		});
	}catch(e){ var xxx = false; }
}

var oldWindowLoad = window.onload;
window.onload = function()
{
	FixLinks();
	//AddPageLinks();
	if(typeof oldWindowLoad == "function")
		oldWindowLoad();
}

function sort_bookmark(tag_id, sort_option)
{
	$('bookmark-sort-default').className = '';
	$('bookmark-sort-title').className = '';
	$('bookmark-sort-date').className = '';
	$(tag_id).addClassName("selected");
	
	
	/*new Ajax.Request("/update_my_contributions",
	{
		method : 'get',
		parameters : {'sort' : sort, 'order': by},
		onSuccess: function(reply)
		{
			$("profile-activity").innerHTML = reply.responseText;
		}
	});*/
}

function displayPageThumbUploadForm()
{
	var ajx = new Ajax.Request('/display_page_thumb_upload', 
		{			
			onSuccess : function(response)
			{		
				$('upload_image_link').innerHTML = '';
				$('upload_image').innerHTML = response.responseText;
				
			}
		})
}

function showMemberAction(action)
{
	var ajx = new Ajax.Request('/createpage/displayMemberAction?action='+action, 
		{			
			onSuccess : function(response)
			{						
				$('member_action').innerHTML = response.responseText;
				
			}
		})
}
var authenticated = false;
function checkLogin()
{
	var username = $('LogInUsername').value;
	var password = $('LogInPassword').value;
	
	new Ajax.Request("/createpage/checklogin",
    {    
    	parameters :  { 'username' : username, 'password' : password },
    	method : 'post',  	
        onSuccess : function(response)
        { 
			if(response.responseText == 0)
			{
            	$('login_error').innerHTML = 'Invalid username or password';            
				//authenticated = false;				
			}
			else if(response.responseText == 1)
			{
				$('login_error').innerHTML = '';            
				//authenticated = true;				
				document.name.submit();
			}
				
        }
    });
		
	return false;
}

function checkSignup()
{
	var username = $('username').value;	
	
	new Ajax.Request("/createpage/checksignup",
    {    
    	parameters :  { 'username' : username},
    	method : 'post',  	
        onSuccess : function(response)
        { 
			if(response.responseText == 0)
			{
            	$('login_error').innerHTML = 'Username is no longer available';            
				//authenticated = false;				
			}
			else if(response.responseText == 1)
			{
				$('login_error').innerHTML = '';            
				//authenticated = true;				
				document.name.submit();
			}				
        }
    });
		
	return false;
}

function SearchPage()
{
	var keyword = $('search_page_field').value;
	if(keyword != '')
	{
		new Ajax.Request("/search/SearchHasResults",
	    {    
	    	parameters :  { 'q' : keyword },
	    	method : 'get',  	
	        onSuccess : function(response)
	        {
	        	//alert(response.responseText);
				if(response.responseText == 1)
				{
					//alert('/?q='+keyword+'&inpage=1');
					document.location.href = '/?q='+keyword+'&inpage=1';
	            	
				}
				else
				{
					$('search-no-result').innerHTML = response.responseText;
				}
				
	        }
	    });
	}
	else
	{
		alert('Enter a search word or phrase.');
		return false;
	}	
	return false;
}

function CloseNoResult()
{
	$('search-no-result').innerHTML = '';
}

function CloseSplashPage()
{
	$('splash').style.display = 'none';
}

function FixLinks()
{
	$$("a").each(function(item)
	{
		var href = item.href;
		var rx = new RegExp("^s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+$", "img");
		if(rx.match(href) && (item.target !== "_blank"))
			item.target = "_top";
	});
}
