function init() {
    UpdateCodes();
    UpdateFavoriteInfo();
    var btn = document.getElementById("btnChooseExistingCollection");
    if (btn) btn.disabled = false;
}
function DeleteThisPicture() {
    if (confirm("This cannot be undone, are you sure?")) {
        document.getElementById("lnkDeletePicture").onclick = function() { }
        document.getElementById("lnkDeletePicture").innerHTML = "<i>Deleting this picture, please wait...</i>";
        Methods.DeletePictureSave(sid, "lnkDeletePicture", DeleteThisPictureCallback);
    }
}
function DeleteThisPictureCallback(res) {
    if (res.error != null) { return; }
    if (res.value == "lnkDeletePicture") {
        // success
        //        alert("This picture has been deleted successfully!");
        document.getElementById("lnkDeletePicture").innerHTML = "<i>Deleted picture, please wait...</i>";
        if (document.getElementById(PreviousID).href != "") {
            window.location = document.getElementById(PreviousID).href;
        }
        else if (document.getElementById(NextID).href != "") {
            window.location = document.getElementById(NextID).href;
        }
        else if (document.getElementById(BrowseID).href != "") {
            window.location = document.getElementById(BrowseID).href;
        }
    }
}
function showActions() {
    document.getElementById("pb_iwantto").className = "selected";
    document.getElementById("pb_sharethis").className = "";
    document.getElementById("share_this").style.display = "none";
    Toggle("actions");
    if (document.getElementById("actions").style.display == "none") {
        document.getElementById("pb_iwantto").className = "";
    }
}

function showShareOptions() {
    document.getElementById("pb_iwantto").className = "";
    document.getElementById("pb_sharethis").className = "selected";
    document.getElementById("actions").style.display = "none";
    Toggle("share_this");
    if (document.getElementById("share_this").style.display == "none") {
        document.getElementById("pb_sharethis").className = "";
    }
}

function showEmailOptions() {
    document.getElementById("email_options").style.display="block";
}

function hideEmailOptions() {
    document.getElementById("email_options").style.display = "none";
}

function sendEmail() {
    var email_input = document.getElementById(email_client_id);
    var btn_input = document.getElementById("btnSendEmail");
    var email_preview_size = document.getElementById("email_preview_size");
    var email_attachment_size = document.getElementById("email_attachment_size");
    var email_send_copy = document.getElementById("email_send_copy");
    var recipients = email_input.value;
    var defaulttext = email_input.getAttribute("defaulttext");
    if (recipients != "" && recipients != defaulttext) {
        btn_input.value = "Sending...";
        email_input.disabled = true;
        btn_input.disabled = true;
        email_preview_size.disabled = true;
        email_attachment_size.disabled = true;
        email_send_copy.disabled = true;
        Methods.SendPictureEmail(sid, uname, uid, recipients, email_preview_size.value, email_attachment_size.value, email_send_copy.checked,SendPictureEmailCallback);
    }
    else {
        alert("Please enter at least one (1) valid email address!");
    }
}

function SendPictureEmailCallback(res) {
    var email_input = document.getElementById(email_client_id);
    var btn_input = document.getElementById("btnSendEmail");
    var email_preview_size = document.getElementById("email_preview_size");
    var email_attachment_size = document.getElementById("email_attachment_size");
    var email_send_copy = document.getElementById("email_send_copy");
    if (res.error != null) {
        btn_input.value = "Send Now";
        email_input.disabled = false;
        btn_input.disabled = false;
        email_preview_size.disabled = false;
        email_attachment_size.disabled = false;
        email_send_copy.disabled = false;
        alert("There was a problem sending the email, please try again later...");
        return;
    }
   
    if (res.value == -1) {
        alert("We're sorry, but you need to be logged in to send an email.");
    }
    else if (res.value == 0) {
    btn_input.value = "Send Now";
    email_input.disabled = false;
    btn_input.disabled = false;
    email_preview_size.disabled = false;
    email_attachment_size.disabled = false;
    email_send_copy.disabled = false;
        alert("The email has not been sent, please check to make sure that you entered a valid email address and try again...");
    }
    else {
        btn_input.value = "Send Now";
        email_input.disabled = false;
        btn_input.disabled = false;
        email_preview_size.disabled = false;
        email_attachment_size.disabled = false;
        email_send_copy.disabled = false;
        email_input.value = "";
        hideEmailOptions();
        email_input.onblur();
        alert("The email has been successfully sent to "+res.value+" recipient(s).");
    }
}

function CollectionChooseExisting(pid) {
    var btn = document.getElementById("btnChooseExistingCollection");
    var div = document.getElementById("divCollectionStatus");
    div.style.display = "block";
    div.innerHTML = "<i>Loading, please wait...</i>";
    Methods.LoadCollections(pid, LoadCollectionsCallback, pid);
}

function LoadCollectionsCallback(res) {
    if (res.error != null) {
        return;
    }
    var div = document.getElementById("divCollectionStatus");
    div.innerHTML = res.value;
}

function AddPictureToCollection(pid) {
    var btn = document.getElementById("btnAddPictureToCollection");
    var list = document.getElementById("sCollectionList");
    list.disabled = true;
    btn.value = "Adding...";
    Methods.AddPictureToCollection(eval(list.value), pid, AddPictureToCollectionCallback);
}

function AddPictureToCollectionCallback(res) {
    if (res.error != null) {
        return;
    }
    if (res.value) {
        var div = document.getElementById("divCollectionStatus");
        div.innerHTML = res.value;
    }
    else {
        var div = document.getElementById("divCollectionStatus");
        div.innerHTML = "<span class='error_message'>Something went wrong, please try again later...</span>";
    }
}

function saveOnClick(clientid, value) {
    Methods.UpdatePictureName(sid, value, clientid, UpdateNameCallback);
}
function UpdateNameCallback(res) {
    if (res.error != null) {
        alert(res.error);
        saveUpdate("", false);
        return;
    }
    saveUpdate(res.value.ControlID, res.value.Result);
}

function ExportToService(service, picture_id) {
    if (!picture_is_shared && service == "Twitter") {
        var c = confirm("This picture is currently set to private. For others to view it, you need to make it public.\n\nWould you like to do that now?");
        if (c) {
            SetPrivacy(picture_id, 1, "ABCD", SetPrivacyCallback);
        }
        else {
            return;
        }
    }
    // update the service link
    document.getElementById("lnkExport" + service).onclick = function() { return false; };
    if (service == "Twitter") {
        document.getElementById("lnkExport" + service).innerHTML = "Posting to " + service + ", please wait...";
    }
    else {
        var service_title = service;
        if (service == "BoxDotNet") {
            service_title = "Box.NET";
        }
        else if (service == "PicasaWebAlbums") {
            service_title = "Picasa Web Albums";
        }
        document.getElementById("lnkExport" + service).innerHTML = "Saving to " + service_title + ", please wait...";
    }
    // now use AJAX to do the saving, we may need to prompt the user for the album to save to
    Methods.ExportToService(service, picture_id, ExportToServiceCallback, picture_id);
}

function ExportToServiceCallback(res) {
    if (res.error != null) {
        alert(res.error); 
        return;
    }
    if (res.value.Result) {
        if (res.value.Ready) {
            // image has been exported and we are ready to go to the link
            document.getElementById("lnkExport" + res.value.Service).setAttribute("finish_link", res.value.VisitUrl)
            document.getElementById("lnkExport" + res.value.Service).onclick = function() { window.open(this.getAttribute("finish_link")); return false; };
            document.getElementById("lnkExport" + res.value.Service).innerHTML = "<b>" + res.value.Action + " successfully</b>, now go to " + res.value.ServiceTitle;
        }
        else {
            // show the step2 html
        }
    }
    else {
        if (res.value.Connected) {
            document.getElementById("lnkExport" + res.value.Service).innerHTML = res.value.Html;
        }
        else {            
            // not connected so prompt the user if he/she would like to do that now
            if (confirm("You are not currently connected to " + res.value.ServiceTitle + ", would you like to do that now?")) {
                // open the new window
                QuickConnect(res.value.Service);
            }
            document.getElementById("lnkExport" + res.value.Service).setAttribute("picture_id", res.context)
            document.getElementById("lnkExport" + res.value.Service).setAttribute("service_name", res.value.Service)
            document.getElementById("lnkExport" + res.value.Service).onclick = function() { ExportToService(this.getAttribute("service_name"), this.getAttribute("picture_id")); return false; };
            document.getElementById("lnkExport" + res.value.Service).innerHTML = (res.value.ServiceTitle == "Twitter" ? "Post" : "Save") + " this picture to " + res.value.ServiceTitle;
        }
    }
}
// required method for the quick connect dialog
function CheckConnectedStatus(name) {
    //lets try to automatically post the picture
   // if (document.getElementById("lnkExport" + name))
       // document.getElementById("lnkExport" + name).click();
}

function QuickConnect(service) {
    var src = basePath + "Connect/QuickConnect.aspx?name="+service+"#" + service.toLowerCase();
    var setSize = 'height=600,width=830,top=20,left=20,scrollbars=yes,resizable=yes,toolbar=no,status=no,menubar=no';
    window.open(src, null, setSize);
}

var busy = false;
function SetPrivacy(picture, privacy, clientid) {
    if (!busy) {
        busy = true;
        var a = document.getElementById('PrivacyA_' + clientid);
        a.innerHTML = "Changing...";
        Methods.SetPicturePrivacy(picture, privacy, clientid, SetPrivacyCallback);
    }
}
function SetPrivacyCallback(res) {
    if (res.error != null) {
        alert("Something went wrong!!!"); return;
    }
    if (res.value != null) {
        busy = false;
        var a = document.getElementById('PrivacyA_' + res.value[0]);
        if (eval(res.value[1]) == 0) {
            picture_is_shared = false;
            a.innerHTML = "Make Public";
            a.onclick = function() { SetPrivacy(res.value[2], 1, res.value[0]); return false; }
            document.getElementById("picture_stats").style.display = "none";
        }
        else {
            picture_is_shared = true;
            a.innerHTML = "Make Private";
            a.onclick = function() { SetPrivacy(res.value[2], 0, res.value[0]); return false; }
            document.getElementById("picture_stats").style.display = "block";
        }
    }
    else {
        alert("Something went wrong!!!");
    }
}

var fcb = false;
function Favorite(i, add_as_favorite) {
    if (!fcb) {
        if (add_as_favorite_url != "") {
            if (confirm("You need to login or sign up first to add this as a favorite, login now?")) {
                window.location = add_as_favorite_url;
            }
        }
        else {
            if (document.getElementById("FavoriteLink1")) {
                document.getElementById("FavoriteLink1").innerHTML = "Saving...";
                document.getElementById("FavoriteLink1").onclick = function() { return false; }
            }
            fcb = true;
            Methods.SaveFavorite(_ubi,i,uid, add_as_favorite, FavoriteCallback, add_as_favorite);
        }
    }
}
function FavoriteCallback(res) {
    if (res.error != null) {alert(res.error);  return; }
    var add_as_favorite = res.context;
    fcb = false;
    if (res.value) {
        if (document.getElementById("FavoriteLink1")) {
            var num = eval(document.getElementById("favorites_num").innerHTML.replace(",", ""));
            document.getElementById("FavoriteLink1").innerHTML = "Favorite";
            document.getElementById("FavoriteLink1").setAttribute("picture_id", sid);
            if (add_as_favorite) {
                document.getElementById("FavoriteLink1").setAttribute("add_as_favorite", false);
                document.getElementById("FavoriteLink1").onclick = function() { Favorite(eval(this.getAttribute("picture_id")), eval(this.getAttribute("add_as_favorite"))); return false; }
                document.getElementById("FavoriteLink1").className = "favorite";
                num = num + 1;
            }
            else {
                document.getElementById("FavoriteLink1").setAttribute("add_as_favorite", true);
                document.getElementById("FavoriteLink1").onclick = function() { Favorite(eval(this.getAttribute("picture_id")), eval(this.getAttribute("add_as_favorite"))); return false; }
                document.getElementById("FavoriteLink1").className = "notfavorite";
                num = num - 1;
            }
            document.getElementById("favorites_num").innerHTML = addCommas(num);
        }
        UpdateFavoriteInfo();
    }
    else {
        alert("Opps, something went wrong while trying to save/remove this favorite...");
    }
}

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function UpdateNameCallback(res) {
    if (res.error != null) {
        alert(res.error);
        saveUpdate("", false);
        return;
    }
    saveUpdate(res.value.ControlID, res.value.Result);
}
function ToggleOptions(option) {
    if (!document.getElementById(option + "_Options")) return;

    var o = document.getElementById(option + "_Options");
    SetOption("Edit", "block");
    SetOption("Collage", "block");
    SetOption("Animation", "block");
    SetOption("Collection", "block");
    SetOption(option, o.style.display);
}

function SelectAll(element)
{
	element.select();
}
		
		function SaveComment(value1,value2)
		{
		    var comment = document.getElementById(CommentTextBoxID).value;
			var d = document.getElementById(CommentTextBoxID).getAttribute("defaulttext");
			if(comment != "" && comment != d)
			{
				comment = Base64.encode(comment);
				document.getElementById(CommentSaveButtonID).disabled = true;
				document.getElementById(CommentTextBoxID).disabled = true;
				document.getElementById(CommentStatusID).innerHTML = "<span class='result'><b>Please wait a few seconds...</b></span>";
				Methods.SaveComment(-1,value1,comment,value2,uname,SaveCommentCallback);
			}
			else
			{
				alert("That would not work! Type a message in the box before saving your comment.");
			}
		}
		function SaveCommentCallback(res)
		{
			if(res.error != null)
			{
				document.getElementById(CommentStatusID).innerHTML = "<span class='result'><b>Oh no, Something went terribly wrong!</b> Please try again later...</span>";
				return;
			}
			document.getElementById(CommentSaveButtonID).disabled = false;
			document.getElementById(CommentTextBoxID).disabled = false;
			if(res.value.Result) {
			    var auto_show = res.value.AutoShow;
			    document.getElementById(CommentTextBoxID).value = "";
			    document.getElementById(CommentStatusID).innerHTML = "<span class='result'><b>OK, your comment was posted.</b> " + (auto_show ? "" : "It will appear after it is approved since you aren't friends.") + "</span>";
			    if (auto_show) {
			        // also increment the comment count
			        var comments_count = eval(document.getElementById("comments_num").innerHTML.replace(",", ""));
			        comments_count = comments_count + 1;
			        document.getElementById("comments_num").innerHTML = addCommas(comments_count);
			        // lets append it to the top of the comments
			        var comments_holder = document.getElementById("comments");
			        var new_comment = document.createElement("DIV");
			        new_comment.id = "Comment"+res.value.NewCommentID;
			        new_comment.innerHTML = res.value.CommentHtml;
			        var first_comment = comments_holder.firstChild;
			        if (first_comment) {
			            comments_holder.insertBefore(new_comment, first_comment);
			        }
			        else {
			            comments_holder.appendChild(new_comment);
			        }
			    }
			}
			else
			{
				//alert("Opps, thats not supposed to happen! Please make sure you are logged in and try again later...");
				document.getElementById(CommentStatusID).innerHTML = "<span class='result'><b>Oh no, Something went terribly wrong!</b> Please make sure you are logged in and try again later...</span>";
			}
		}
		function CommentFocus(element)
		{
			var d = element.getAttribute("defaulttext");
			var v = element.value;
			if(v == d)
			{
				element.value = "";
			}
			element.style.color = "#000000";
		}
		
		function CommentBlur(element)
		{
			var d = element.getAttribute("defaulttext");
			var v = element.value;
			if(v == "")
			{
				element.value = d;
				element.style.color = "#777777";
			}
			
		}
		
		function Toggle(panel)
		{
		    var _p = document.getElementById(panel);
			if(_p.style.display == 'none')
			{
				_p.style.display = 'block';
			}
			else
			{
				_p.style.display = 'none';
			}						
		}
		
		

function ToggleOptions(option)
		{		
		if(!document.getElementById(option+"_Options"))return;	
		
			var o = document.getElementById(option+"_Options");
			SetOption("Edit","block");	
			SetOption("Collage","block");	
			SetOption("Animation","block");	
			SetOption("Collection","block");	
			SetOption(option,o.style.display);					
		}
		
		function SetOption(o,d)
		{
		    var e = document.getElementById(o + "_Options");
		    if (!e) return;
		    var l = document.getElementById(o + "_Link");
			if(d == 'none') {
			    l.className = "option selected";
				e.style.display = 'block';
			}
			else {
			    l.className = "option more";
				e.style.display = 'none';
			}
		}		
		
		function LoadTemp(option)
		{			
			if(!document.getElementById(option+"_Preview"))return;
			var _p = document.getElementById(option+"_Preview");
			if(_p.getAttribute("hastemp") == "true")
			{
				var src = _p.getAttribute("tempsrc");
				_p.src = src;
				_p.setAttribute("hastemp","false")
			}
}

function DeletePictureComment(id) {
    if (confirm("Are you sure?")) {
        // disable the link
        document.getElementById("lnkDeleteComment" + id).innerHTML = "Deleting...";
        document.getElementById("lnkDeleteComment" + id).onclick = function() { return false; }
        Methods.DeleteOrRejectComment(_ubi, "picture", id, DeleteCommentCallback, id);
    }
}

function DeleteCommentCallback(res) {
    if (res.error != null) return;
    if (res.value && res.value > 0) {
        var id = res.context;
        var parent = document.getElementById("comments");
        if (parent) {
            var child_to_remove = document.getElementById("Comment" + id);
            if (child_to_remove) {
            
                parent.removeChild(child_to_remove);
                // also decrement the comment count
                var comments_count = eval(document.getElementById("comments_num").innerHTML.replace(",", ""));
                comments_count = comments_count - 1;
                document.getElementById("comments_num").innerHTML = addCommas(comments_count);
            }
        }
    }
    else {
        alert("That comment cannot be deleted at this time. Please try again later.");
    }
}

function UpdateFavoriteInfo() {
    if (document.getElementById("favorites"))
        Methods.ShowPictureFavoriteInfo(sid, UpdateFavoriteInfoCallback);
}
function UpdateFavoriteInfoCallback(res) {
    if (res.error != null) return;
    if (res.value) {
        if (document.getElementById("favorites")) {
            document.getElementById("favorites").style.display = "block";
            document.getElementById("favorites_summary").innerHTML = "<span>" + res.value + "</span>";
            document.getElementById("favorites_list").innerHTML = "";
        }
    }
    else {
        if (document.getElementById("favorites")) {
            document.getElementById("favorites").style.display = "none";
            document.getElementById("favorites_summary").innerHTML = "";
            document.getElementById("favorites_list").innerHTML = "";
        }
    }
}

function ShowFavoritesList() {
    document.getElementById("favorites_list").innerHTML = "<span class='loading'>Loading, please wait...</span>";
    Methods.ShowPictureFavoriteList(sid, ShowFavoritesListCallback);
}
function ShowFavoritesListCallback(res) {
    if (res.error != null) return;
    if (res.value) {
        document.getElementById("favorites_list").innerHTML = "<span>" + res.value + "</span>";
    }
    else {
        document.getElementById("favorites_list").innerHTML = "";
    }
}

