Type.registerNamespace("MySpace");
Type.registerNamespace("MySpace.UI");

MySpace.UI.AppsPopup = function(){throw "Cannot instantiate static class.";} 
MySpace.UI.AppsPopup._contentHolders = {};
MySpace.UI.AppsPopup.create=function(content, title, callback){
    var temp=document.createElement("div");
    temp.innerHTML="<div class='appspopup_wrapper' style='z-index:1000001;left:0px;width:100%;display:none;visibility:hidden;'><div class='appspopup_box'><a></a><div class='appspopup_title'></div><div class='appspopup_content'></div><div class='appspopup_buttons'></div></div></div>";
    var popup = $create(MySpace.UI._Popup,{title:title, content:content, callback:callback},null,null,temp.firstChild);
	return popup;
}
MySpace.UI.AppsPopup.inlinePermissions = function(appid, precontent, postcontent, title, callback){
    var innerContent = "";
    var appidString = appid.toString();
    if(MySpace.UI.AppsPopup._contentHolders.hasOwnProperty(appidString)){
        innerContent = MySpace.UI.AppsPopup._contentHolders[appidString];
    }
    else {
        var inlineContentElement = $get('userapplication_permission_settings_' + appidString);
        innerContent = MySpace.UI.AppsPopup._contentHolders[appidString] = inlineContentElement.innerHTML;
        inlineContentElement.parentNode.removeChild(inlineContentElement);
    }    
    var content = precontent + innerContent + postcontent;
    return MySpace.UI.AppsPopup.create(content, title);       
}
MySpace.UI.AppsPopup.ajaxPermissions = function(appid, precontent, postcontent, title, handler){
    return MySpace.UI.AppsPopup.ajaxPermissionsEx(appid, precontent, postcontent, title, handler, null, null);
}
MySpace.UI.AppsPopup.ajaxPermissionsEx = function(appid, precontent, postcontent, title, handler, category, permission) {
    if(typeof(category) == undefined) {
        category = null;
    }
    if(typeof(permission) == undefined) {
        permission = null;
    }
    
    var appidString = appid.toString();
    
    var requestParams = "appid="+appidString+"&checkuser=true";
    if(category != null) {
        requestParams +="&cat=" + escape(category);
    }
    if(permission != null) {
        requestParams +="&perm=" + escape(permission);
    }
    
    MySpace.WebRequest.invoke("/Modules/Applications/Pages/AppPermissions.aspx", false, requestParams, _onComplete, _onFail, null, 0);

    function _onComplete(response, eventArgs) {
	    var tempDiv = document.createElement('div');
	    tempDiv.innerHTML = response;
		var innerContent = MySpace.UI.AppsPopup._contentHolders[appidString] = $get('userapplication_permission_settings_' + appid.toString(), tempDiv).innerHTML;
	    var content = precontent + innerContent + postcontent;
	    var p = MySpace.UI.AppsPopup.create(content, title);
	    handler(true, p);
	}
	function _onFail() {
	    handler(false, null);
	}
    return;
}

MySpace.UI.AppsPopup.getPermissions = function(sender, isset) {
    var installPermissions = new Array();
    var temps = sender._box.getElementsByTagName('input');
    for(i = 0; i < temps.length; i++) {
        if(Sys.UI.DomElement.containsCssClass(temps[i], 'userAppPermission')
            && temps[i].checked == isset) {
            installPermissions.push(temps[i].value);
        }
    }
    return installPermissions;
}
MySpace.UI.AppsPopup.getSelectedPermissions = function(sender) {
    return MySpace.UI.AppsPopup.getPermissions(sender, true);
}
MySpace.UI.AppsPopup.getUnselectedPermissions = function(sender) {
    return MySpace.UI.AppsPopup.getPermissions(sender, false);
}
MySpace.UI.AppsPopup.registerClass('MySpace.UI.AppsPopup');