/**
 * arena/browse.js
 *
 * Dependencies
 * - YUI
 *
 * @author Royston Olivera (royo_2004) <royston.olivera@xoriant.com>
 **/



YAHOO.namespace ("gaia.app.Arena");
YAHOO.gaia.app.Arena.Browse = function(settings) {
	  	this.init(settings);
	
};





YAHOO.gaia.app.Arena.Browse.prototype = {
	
	init : function(settings) {
	  	
		this._settings = {
		  	//variables for carousel
			//variables for carousel
			//variables for carousel
            
			arenaType : settings.arenaType,
			contentType : settings.contentType,
			request : settings.request,
			results: settings.results,
			size: settings.size,
			divId : settings.divId,
			prevArrow : settings.prevArrow,
			nextArrow : settings.nextArrow,
			flag : settings.flag,
			ajaxURL   :settings.ajaxURL
			 
			 
			 
		};
		//alert(this._settings.flag);
		//if (this._settings.flag) {
			this.pageLoad(settings);
			
		//}
		//else {
				
			//YAHOO.util.Event.addListener(window, 'load', this.pageLoad, this, true);
		//}
	
	},



	pageLoad : function(settings) {
		
	    this._settings.divId = new YAHOO.extension.Carousel(this._settings.divId, 
	        {
	            numVisible:        this._settings.results,
	            animationSpeed:    1,
	            scrollInc:         this._settings.results,
				ajaxURL:			this._settings.ajaxURL,
				contentType: 		this._settings.contentType,
				numOfResults:		this._settings.results,
				size: this._settings.size,  
				//wrap : true,
				prevElement:       this._settings.prevArrow,
	            nextElement:       this._settings.nextArrow,
				loadInitHandler:   this.loadInitialItems,
	            loadNextHandler:   this.loadNextItems,
	            loadPrevHandler:   this.loadPrevItems,
	            prevButtonStateHandler:   this.handlePrevButtonState,
				
	            nextButtonStateHandler:   this.handleNextButtonState 
				
				
				
	        }
			
	    )
		
		
		
	},


	
   loadInitialItems : function(type, args) {
	var start = args[0]-1;
    var last = args[1]; 
	
    YAHOO.gaia.app.Arena.Browse.prototype.makeRequest(this, this.ajaxURL, this.contentType, start, this.numOfResults * 2);    


	},

   loadNextItems : function(type, args) {    

    var start = args[0]-1;
    var last = args[1];
    var alreadyCached = args[2];
    
    if(!alreadyCached) {
        YAHOO.gaia.app.Arena.Browse.prototype.makeRequest(this, this.ajaxURL, this.contentType, start, this.numOfResults * 2);
    }

	},

    loadPrevItems : function(type, args) {
    var start = args[0];
    var last = args[1]; 
    var alreadyCached = args[2];

    if(!alreadyCached) {
        YAHOO.gaia.app.Arena.Browse.prototype.makeRequest(this, this.ajaxURL, this.contentType, start, this.numOfResults * 2);
    }
	},

	handleSuccess : function(callbackResponse)
	{
    var start = callbackResponse.argument[0];
    var numResults = callbackResponse.argument[1];
    var carousel = callbackResponse.argument[2];
    var contentType = callbackResponse.argument[3];
      if(callbackResponse.responseText !== undefined) {
        var thePosts = eval( '(' + callbackResponse.responseText + ')' );
		var count=0;
		if(contentType == "picture")
		{
	        for(var i in thePosts) {
				
	            var result = thePosts[i];
				carousel.addItem(start+1+count, YAHOO.gaia.app.Arena.Browse.prototype.makePictureInnerHTML(result,i));
				count++;
	        }
        }
        if(contentType == "avatar")
		{
	        for(var i in thePosts) {
	            var result = thePosts[i];
				carousel.addItem(start+1+count, YAHOO.gaia.app.Arena.Browse.prototype.makeAvatarInnerHTML(result));
				count++;
	        }
        }
        if(contentType == "home")
		{
	        for(var i in thePosts) {
	            var result = thePosts[i];
				//alert(YAHOO.gaia.app.Arena.Browse.prototype.makeHomeInnerHTML(result));
				carousel.addItem(start+1+count, YAHOO.gaia.app.Arena.Browse.prototype.makeHomeInnerHTML(result));
				
				count++;
	        }
        }
        if(contentType == "text")
		{	
			var textInnerHTML = '<div>';
	        for(var i in thePosts) {
	            var result = thePosts[i];
				textInnerHTML += YAHOO.gaia.app.Arena.Browse.prototype.makeTextInnerHTML(result);
				
	        }
	        textInnerHTML += '<\/div>';
	        
	        carousel.addItem(start+count, textInnerHTML);
        }
       }
	},


  makePictureInnerHTML : function(result,i) {
		//var image_url = result['48x48'] || result['url']
		if(result['48x48']){
      var pictureInnerHTML = 
          '<a href="' + 
          result['rate_url'] + 
          '"><img id="'+
		  i+
		  '" src="' +
          result['48x48'] +
          '"/>'  
          '<\/a>' 
		  }else{
		  	var pictureInnerHTML = 
          '<a href="' + 
          result['rate_url'] + 
          '"><img height="48px" width="48px" id="'+
		  i+
		  '" src="' +
          result['url'] +
          '"/>'  
          '<\/a>' 
		  	
		  }
    return pictureInnerHTML;
    
	},
	test1 : function(i){
		//YAHOO.gaia.app.Arena.Browse.prototype.swell(document.getElementById(i),1);
	},
	
	swell : function(el,duration){
		
	var attributes = {
			
		width: { from:48,to: 72 },
		height: { from:48,to: 72 }
	};
	var anim = new YAHOO.util.Anim(el,attributes,duration);
	anim.animate();
	},
	
	
	test2 : function(i){
		//YAHOO.gaia.app.Arena.Browse.prototype.dswell(document.getElementById(i),1);
	},
	
	dswell : function(el,duration){
		
	var attributes = {
			
		width: { from:72,to: 48 },
		height: { from:72,to: 48 }
	};
	var anim = new YAHOO.util.Anim(el,attributes,duration);
	anim.animate();
	},
	
	makeAvatarInnerHTML : function(result) {

     var avatarInnerHTML;
	if(result['url'].length > 0){	
      avatarInnerHTML = 
          '<a href="' + 
          result['rate_url'] + 
          '"><img src="' +
          result['url'] +
          '" width="' +
        48 +
        '" height="' +
        48+
        '"/>'  
          '<\/a>'  
  	}
    return avatarInnerHTML;
    
	},
	
	
makeHomeInnerHTML : function(result) {

      var homeInnerHTML =
      	'<div><object onclick="location.href=\''+
		result['rate_url']+
		'\'"><param name="movie" value="'+
      	result['url']+
      	'" \/><param name="play" value="true" \/><param name="wmode" value="transparent" \/><param name="loop" value="true" \/><param name="quality" value="high" \/><param name="AllowScriptAccess" value="never" \/><embed style="margin:-8px 0px 0px -4px" wmode="transparent" height="95" width="129" src="'+
		result['url']+
		'" AllowScriptAccess="never" play="true" loop="true" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"><\/embed><\/object><a href="'+
		result['rate_url']+
		'">View Details</a><\/div>'  
          
  
    return homeInnerHTML;
    
	},

 move :function(){
	alert("test");
},	
	

	makeTextInnerHTML : function(result) {
		var title = (result['title'].length > 17)? result['title'].substring(0,14).concat("...") : result['title'];
		var username = (result['username'].length > 9)? result['username'].substring(0,6).concat("...") : result['username'];
		var description = (result['description'].length > 124)? result['description'].substring(0,121).concat("...") : result['description'];
      var textInnerHTML =
      	'<div style="width: 265px; float: left; margin:0px 0px 6px 0px"><div style="width: 195px; float: left; text-align: left; color:#3e53a2; font-size:12px; font-weight:bold;"><a href="'+
		result['rate_url']+
		'">'+
      	title +
		'<\/a><\/div><div style="width: 70px; float: right; text-align:right; color:#3e53a2; font-size:12px; font-weight:bold;"><a href="'+
		result['profile_url']+
		'">'+
		username+
		'<\/a><\/div><div style="width: 265px; text-align: left; color:#000000;">'+
		description+
      	'<\/div><\/div>' 
          
  
    return textInnerHTML;
    
	},

	handleFailure : function(o)
	{
     var result = o.status + " " + o.statusText;
     //alert("Transaction failed.  The error is: " + result);   
	},
  

 	makeRequest : function(carousel, url, contentType, start, numResults)
	{
			
    var params =     '&offset=' + start + 
                            '&num_of_records=' + numResults;   
    
    var callback =
    {
          success: this.handleSuccess,
          failure: this.handleFailure,
          argument: [start, numResults, carousel, contentType]
    };
    
    var sUrl = url + params; 
	
    YAHOO.util.Connect.asyncRequest("GET", sUrl, callback, null);
	},



 	handlePrevButtonState : function(type, args) {

    var enabling = args[0];
    var leftImage = args[1];
    if(enabling) {
      YAHOO.util.Dom.removeClass(leftImage,'disable_left');
	  YAHOO.util.Dom.addClass(leftImage,'enable_left');
		
    } else {
       // leftImage.src = "/images/arena-images/ic_hyperlink_arrowback_15x15.png";
	   //var elem = new YAHOO.util.Element(leftImage);
		//elem.setStyle('background-position-y', '-15px');
		YAHOO.util.Dom.removeClass(leftImage,'enable_left');
	  	YAHOO.util.Dom.addClass(leftImage,'disable_left');    
    }
	},

	handleNextButtonState : function(type, args) {
    var enabling = args[0];
    var rightImage = args[1];
    
    if(enabling) {
        //rightImage.src = "/images/arena-images/ic_hyperlink_arrow_15x15.png";
		YAHOO.util.Dom.removeClass(rightImage,'disable_right');
	  YAHOO.util.Dom.addClass(rightImage,'enable_right');
    } else {
        //rightImage.src = "/images/arena-images/ic_hyperlink_arrow_15x15.png";
		YAHOO.util.Dom.removeClass(rightImage,'enable_right');
	  	YAHOO.util.Dom.addClass(rightImage,'disable_right');  
    }
    
	}
};


 