

sfHover = function() {
	var sfEls = document.getElementById("navigation").getElementsByTagName("li");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

var filmography = {
	showAll : function() {
		$('filmographyLink').hide();
		Effect.BlindDown('filmography');
	}
};
var bioWidget = {
	showMore : function() {
		Element.hide('readMoreLink');
		Element.show('extraBio');
		Element.show('hideMoreLink');
	},
	hideMore : function() {
		Element.show('readMoreLink');
		Element.hide('extraBio');
		Element.hide('hideMoreLink');
	}
};

/*--------------------------------------------------------------------------*/
/* Movie List Link Widget
/*--------------------------------------------------------------------------*/
var ListLink = Class.create();
ListLink.prototype = {
	STATES : { READY : 0, SAVING : 1, TIMEOUT : 2, FAILURE : 3, SAVED : 4 },
	initialize : function(link, actor) {
		this.state = this.STATES.READY;
		this.link = link;
		this.actor = actor;
		this.onClickHandler = this.onClick.bindAsEventListener(this);
		Event.observe(this.link, "click", this.onClickHandler);
	},
	onClick : function(event) {
		if (currentUser.isLoggedIn()) {
			Event.stop(event);
			Event.stopObserving(this.link, "click", this.onClickHandler);
			var params = "actorid="+this.actor+"&listId=FAV";
			new Ajax.Request('/favlist/addactor', {parameters:params, onSuccess:this.onSuccess.bind(this), onFailure:this.onFailure.bind(this), onTimeout:this.onTimeout.bind(this)});
			this.state = this.STATES.SAVING;
			this.paint();
		}
	},
	onSuccess : function(event) {
		this.state = this.STATES.SAVED;
		this.paint();
	},
	onFailure : function() {
		this.state = this.STATES.FAILURE;
		this.paint();	
	},
	onTimeout : function() {
		this.state = this.STATES.TIMEOUT;
		this.paint();	
	},
	paint : function() {
		switch(this.state) {
			case this.STATES.READY:
				$(this.link).update("Add to My Favorites");
				break;
			case this.STATES.SAVING:
				$(this.link).href = "/listsAction.do?viewFavoriteActorList=";
				$(this.link).update("Saving...");
				break;
			case this.STATES.FAILURE:
				document.location = '/favlist/addactor';
				break;
			case this.STATES.TIMEOUT:
				document.location = '/listsAction.do?listAction=addFavoriteActor&actorId='+this.actor;
				break;
			case this.STATES.SAVED:
				$(this.link).href = "/listsAction.do?viewFavoriteActorList=";
				$(this.link).update("Saved! - View My Favorite Actors");
				break;
		}
	}
}

var ActorListWidget = Class.create();
ActorListWidget.prototype = {
	initialize : function(listSelectView, listSavingView) {
		this.listSelectView = listSelectView;
		this.listSavingView = listSavingView;
		this.state = ListWidgetStates.READY;
	},
	handleAdd : function(actorId, listId) {
		if (listId == '---') {
			// do nothing
		} else if (!currentUser.isLoggedIn()) {
			alert("Whoops, you'll need to register or sign-in first.");
		} else if (listId == 'NEW') {
			document.location = '/listsAction.do?addActorList=&type=USR&actorId='+actorId;
		} else {
			this.state = ListWidgetStates.SAVING;
			this.paint();
			var params = "service=addActor&actorId="+actorId+"&uid="+currentUser.id+"&listId="+listId;
			new Ajax.Request('/list.sv', {parameters:params, asynchronous:true, onComplete:this.processAdd.bind(this)});
		}
	},
	processAdd : function(response) {
		floatie.show(response.responseText);
		this.state = ListWidgetStates.READY;
		this.paint();
	},
	paint : function() {
		switch(this.state) {
			case ListWidgetStates.READY:
				Element.show($(this.listSelectView));
				Element.hide($(this.listSavingView));
				break;
			case ListWidgetStates.SAVING:
				Element.hide($(this.listSelectView));
				Element.show($(this.listSavingView));
				break;
		}
	}
};


    var functionCalled = null;

    var nameWidget={sampleName:"Enter a name for the list",
        handleFocus:function(name){
            if(name.value==this.sampleName){
                name.value="";
            }
        },
        handleBlur:function(name){
            if(name.value==""){
            name.value=this.sampleName;
        }
    }};

    var descriptionWidget={sampleDescription:"Briefly, describe the list",
        handleFocus:function(desc){
        if(desc.value==this.sampleDescription){
        desc.value="";
        }
        },handleBlur:function(desc){
        if(desc.value==""){
        desc.value=this.sampleDescription;
        }
    }};



    function finishedListAdd()
    {
        
        
    }

    

            
    function showAddListRequest(callbackFn) {

        var submitForm = function()
        {        
    		var params = Form.serialize($('addListForm'));	
    		new Ajax.Request('/userlist/create', {parameters:params, asynchronous:true, evalScript:true, onComplete:finishedListAdd});
            return false;
        }
        
        var finishedListAdd = function(t)
        {
            //alert(document.getElementById('name').value);
            //alert("response is " + t.responseText);
            var fc = t.responseText.split("<br>");
            //alert("val1 is " + fc[0]);
            //alert("val2 is " + fc[1]);
            //callbackFn(document.getElementById('name').value, t.responseText);
            callbackFn(fc[0],fc[1]);
            Windows.focusedWindow.close();
            return true;
            //alert(t.responseText);
        }

        Dialog.confirm($('addListRequest').innerHTML, 
            {className:"alphacube", width:320, 
            showEffect: Effect.Appear,
            showEffectOptions: { 
                duration: 0.0
            },            
            okLabel: "Submit", cancelLabel: "Cancel", 
            onOk:function(win){
                var tmp_name = document.getElementById('name');
                if ((tmp_name.value == '')||
                    (tmp_name.value == nameWidget.sampleName)) {
                  $('error_msg').innerHTML='<i>The list name cannot be empty</i>'; $('error_msg').show(); 
                  Windows.focusedWindow.updateHeight();
                  return false; 
                }
                submitForm();
                return true;
            }
            });


    }
    
    
