﻿  var htree = null;  
  var debuggerMessage = "";

  htree = new(
                function()
                  { 
                    this.appUId = "0";
                    this.viewerUId = "0";
                    this.uid = "0";
                    this.token = "";
                    this.appStatus = "0";
                    this.appDisplayName = "";
                    this.appFirstName = "";
                    this.appLastName = "";
                    this.appEmail = "";
                    this.appGender = "";
                    this.appServRespCode =  0;   
                    this.appProfileUrl = "";   
                    this.viewerMode = 1; //1v 2o
                    this.api = 0;
                   
                    
                    //Constants                    
                    this.APPID = "109632";
                    this.INST_PGID = "386253707";
                    
                    this.SITE_ROOT = "http://www.hellotree.com";    
                    
                                     
                    this.INST_URL = "http://www.myspace.com/index.cfm?fuseaction=user.viewprofile&friendid=" + this.INST_PGID;                    
                    this.APP_URL = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=" + this.APPID;
                    
                    this.EXUSERID_APISERVICE = this.SITE_ROOT + "/services/social/getuseridserv.aspx";
                    this.ISAPPINS_APISERVICE = this.SITE_ROOT + "/services/social/detectappinstalled.aspx";
                    this.SIGNUP_APISERVICE = this.SITE_ROOT + "/services/social/signupserv.aspx";
                    this.TREE_PAGE = this.SITE_ROOT + "/addons/opentree.aspx";
                    this.SWF_URL =  "/tree/";                  
                    
                    this.KEY_STR_API = "API";
                    this.KEY_STR_APPUID = "AppUId";
                    this.KEY_STR_UID = "UId";
                    this.KEY_STR_TOKEN = "PublicToken";
                    this.KEY_STR_APPSTATUS = "AppStatus";
                    this.KEY_STR_SERVRESPCODE = "ServRespCode";
                    
                    this.SWF_TREE_CONTAINER = "htContainer";  
                    
                    this.PROFILE_LNK_BLOCK = "mainlnk";           
                    
                  }
               );
              
   htree.debug = function (_msg)
                        {
                           // debuggerMessage += _msg;
                           // YAHOO.util.Dom.get("debug_console").innerHTML = debuggerMessage; //"Debug: " + _msg;                     
                        };
                        
   htree.uuidgen = function()
                    {
                        var g ="";
                        for(var i = 0; i < 9; i++)
                            g += Math.floor(Math.random() * 0xF).toString(0xF) ;
                        return g;
                    };
                    
   htree.loadFrame = function()
                    {                        
                        var container = null;
                        container = YAHOO.util.Dom.get(htree.SWF_TREE_CONTAINER);
                        
                        if(!(YAHOO.lang.isNull(container)) && !(YAHOO.lang.isUndefined (container)))
                        {
                            container.src= this.TREE_PAGE + "?" + "suid=" + htree.uid + "&token=" + htree.token + "&uid=" + htree.uid + "&vm=" + htree.viewerMode;
                        } 

				
                        
                        container = null;                   
                    };                     
                        
   htree.initOpenAPI = function()
                  {
                      var req=opensocial.newDataRequest();
                      req.add(req.newFetchPersonRequest("OWNER"), "owner");
                      req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
                      req.send(htree.initServerResponse);
                      req = null;                    
                  };   
   
   htree.initOpenAPI_SimpleA = function()
                    {
                        var req=opensocial.newDataRequest();
                            req.add(req.newFetchPersonRequest("OWNER"), "owner");
                          
                          req.send(function(data){                                
                                        var owner = data.get("owner").getData(); // owner, the widget user                                
                                        if((!YAHOO.lang.isNull(owner)) && (!YAHOO.lang.isUndefined(owner)))
                                        {
                                            YAHOO.util.Dom.get("uImgThumb").src = owner.getField(opensocial.Person.Field.THUMBNAIL_URL);                                                                             
                                        }                                        
                                    });
                                    
                          req = null;                     
                    };
                 
                  
   htree.initServerResponse = function(data)
                {
                    var owner = data.get("owner").getData(); // owner, the widget user
                    var viewer = data.get("viewer").getData();   //viewer is the login user
                   
                    htree.appUId = owner.getField(opensocial.Person.Field.ID);
                    
                    if((!YAHOO.lang.isNull(viewer)) && (!YAHOO.lang.isUndefined(viewer)))
                    {                        
                        htree.viewerUId = viewer.getField(opensocial.Person.Field.ID);    
                        htree.appProfileUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
                        htree.appDisplayName = viewer.getDisplayName();                      
                        htree.appFirstName = resolveString(htree.appDisplayName.split(" ")[0]);
                        htree.appLastName = resolveString(htree.appDisplayName.split(" ")[1]);  
                    }
                    
                    if(htree.appUId == htree.viewerUId)
                        htree.viewerMode = 2; //owner
                    else
                        htree.viewerMode = 1; //viewer
                        
                        
                                       
                    owner = null;
                    viewer = null;  
                             
                    htree.detectApp();
                   
                };
                
  htree.detectApp = function()
                {        
                    htree.sendRequest(htree.ISAPPINS_APISERVICE + "?bpc=1&ckey=" + htree.uuidgen() + "&" + htree.KEY_STR_APPUID + "=" + htree.viewerUId); 
                };
                
  htree.ownerLoginRequest = function()
                {                    
                    htree.sendRequest(htree.EXUSERID_APISERVICE + "?bpc=1&ckey=" + htree.uuidgen() + "&" + htree.KEY_STR_APPUID + "=" + htree.appUId);   
                };
                
   htree.sendRequest = function(_url)
                {
                    var params = {};  
                    var url = "";
                    
                    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;                      
                    url = _url;
                    gadgets.io.makeRequest(url, htree.recvResponse, params);                  
                };
                
                
    htree.doFlash = function( sid, publictoken, helloId, swfVersion) 
            {                
                htree.SWF_URL += swfVersion;               
                    
                var fo = new FlashObject(htree.SWF_URL, "tree", "100%", "100%", "8.0", "#F0F8FB", true);
                    fo.addParam("allowScriptAccess", "always");
                    fo.addParam("flashvars", "id=" + helloId + "&sid=" + sid + "&token=" + publictoken + "&isWidget=1" + "&site_root=" + htree.SITE_ROOT + "/");
                    fo.addParam("wmode", "opaque");
                    fo.write("flashcontent");
                fo = null;
                                
            }; 
                            
                
   htree.login = function()
                {                                    
                    htree.logic31(); 
                };
                
   htree.recvResponse = function(_respData)
                {
                    //obj.text contains the text of the page that was requested                                   
                   
                    htree.api= _respData.data[htree.KEY_STR_API];     
                    htree.appStatus = _respData.data[htree.KEY_STR_APPSTATUS];
                                            
                    switch(htree.api)
                    {
                      case 30:                     
                        switch(htree.appStatus)
                        {
                            case 1:                            
                            case 3:                           
                                htree.ownerLoginRequest();
                                
                                break;                            
                            case 0:                            
                                htree.login(); 
                                break;
                            default:
                                alert("System error occured(30030)");
                                break;
                        }
                        
                        break;
                        
                      case 31:  //event: get uid   
                        htree.setInternalUser(_respData);     
                        htree.login();              
                        break;                       
                         
                      case 32:     //event:signed up                       
                        switch(htree.appStatus)
                        {
                            case 2:                        
                                                               
                                htree.ownerLoginRequest();
                                htree.notifyOpenSocialMembers();
                                
                                break;                                
                            case -1: //error occurred
                                htree.appServRespCode = _respData.data[htree.KEY_STR_SERVRESPCODE];
                                handleException(htree.appServRespCode);  
                                
                                htree.showHidePage("PgSignUp", "");                                                                                                         
                                htree.showHidePage("debug_console", "none");  
                                
                                               
                                break;
                            default:
                                alert("System error occured(30032)");
                                break;
                         }                        
                        break;                                 
                      default:
                        alert("System error occured(30000)");
                        break;
                    }              
                };
                
   htree.setInternalUser = function(_respData)
                {   
                    
                    this.uid = _respData.data[htree.KEY_STR_UID];
                    this.token = _respData.data[htree.KEY_STR_TOKEN];                  
                };
                
  htree.loadApp = function()
                {
                    htree.loadFrame();         
			htree.showHidePage("debug_console", "none");                             
                    htree.showHidePage("PgSignUp", "none");                                                                                                         
                    htree.showHidePage("PgTree", "");  
                };
                
  htree.notifyOpenSocialMembers = function()
                {
                   // htree.postActivity("Richard Feng added the application abc");
                   htree.requestShareApp();
                    
                    return;
                };
                
               
  htree.requestShareApp = function()
            {
                postToBulletins(this.appDisplayName); //post to friends bulletin
            };
  
                
  htree.logic31 = function()
                {
                    htree.showHidePage("debug_console", "none");    
                                   
                        switch(htree.appStatus)
                        { 
                            case 1: //ready to use                                
                            case 2: // reg success
                                {                                    
                                    htree.loadApp();  
                                }   
                                    break;
                            
                            case 0: //not installed
                                {                                                                
                                  if(htree.viewerMode == 2  || ((htree.viewerMode==1) && htree.api==30))
                                  {
                                    htree.preFillValue();
                                    htree.showHidePage("PgTree", "none");
                                    htree.showHidePage("PgSignUp", "");                                                                                                 
                                   }
                                   else
                                   {
                                    htree.showHidePage("PgTree", "none");                                                                                                         
                                    htree.showHidePage("PgSignUp", "none");  
                                    htree.showHidePage("PgNotSignUp", ""); 
                                   
                                   }
                                }                            
                                    break;
                        }
                };          
              
                
   htree.showHidePage = function(_page, _isVisible)
                    {
                        YAHOO.util.Dom.get(_page).style.display = _isVisible;                    
                    };
   
   htree.autoShowHideMemberPage = function(_page)
                    {
                        if(YAHOO.util.Dom.get(_page).style.display == "")
                            YAHOO.util.Dom.get(_page).style.display = "none";
                        else 
                            YAHOO.util.Dom.get(_page).style.display = "";      
                    };
                    
   htree.preFillValue = function ()
                   {
                   
                        YAHOO.util.Dom.get("firstName").value = htree.appFirstName;
                        YAHOO.util.Dom.get("lastName").value = htree.appLastName;
                   };
                   
     htree.validateFieldsAndSignUp = function()
            {
                  if(signup_submit(textBoxValidatorA('firstName', 'noteFname', 'First name is required'), 
                                   textBoxValidatorA('lastName', 'noteLname', 'Last name is required'), 
                                   true, 
                                   true,
                                   textBoxValidatorA('pwd', 'notePassword', 'Password is required'), 
                                   isPasswordMatch('pwd','pwd2','noteVerify', 'Password does not match'), 
                                   emailValidator('email', 'noteEmail', 'Email is incorrect'))) 
                    {
                        htree.showHidePage("debug_console", "");
                        htree.showHidePage("PgSignUp", "none");
                        htree.signUp();
                    }
            };
            

                
                   
   htree.signUp = function()
                {
                    var pwd = null;
                    var url = "";                    
                    
                  //  htree.validateFieldsBeforeSignUp();                    
                    
                    htree.showHidePage("callbackMsg", "none");
                    
                    this.appEmail = YAHOO.util.Dom.get("email").value;
                    pwd = YAHOO.util.Dom.get("pwd").value;
                    this.appFirstName = YAHOO.util.Dom.get("firstName").value;
                    this.appLastName = YAHOO.util.Dom.get("lastName").value;
                    this.appGender = getCheckedValue(document.getElementsByName("rdoGender"));                                      
                   
                   url = this.SIGNUP_APISERVICE 
                                + "?e=" + this.appEmail
                                + "&pwd=" + pwd
                                + "&fn=" + this.appFirstName
                                + "&ln=" + this.appLastName
                                + "&g=" + this.appGender                                
                                + "&" + htree.KEY_STR_APPUID + "=" + htree.viewerUId
                                + "&src=" + escape(this.appProfileUrl);     
                    
                   htree.sendRequest(url);           
                
                };  
                
   htree.writeCallbackMessage = function (_msg)
            {
                YAHOO.util.Dom.get("callbackMsg").innerHTML = _msg;
            };   
            
            
         


            
      





                  

   
   



