//***********************************
// js/util/yper_lib.js
//***********************************
/**
 * \file yper_lib.js.ros
 * Personals JavaScript Utilities library
 * 
 * $Id:  $
 *
 * @copyright Copyright (c), 2003-2006 Yahoo, Inc. 
 */


YAHOO.namespace("Personals.util");

YAHOO.Personals.util = {
  
  sendIM : function(requestUrl, loginUrl, trackData) {
  //{{{ sendIM function
    var callback = 
    {
      success : function(o)
              {
                  imResponse = eval('('+o.responseText+')');

                  if (imResponse.errors.length)
                  {
                    return false;
                  }

                  var content = imResponse.content;
                  if (!content)
                  {
                    return false;
                  }

                  if (content.redirUrl == "im")
                  {
                      top.location.href='ymsgr:im?sendas='+content.senderAlias+'&to='+content.receiverAlias+'&imv='+content.intl+'connect&arg=server:"'+content.intl+'.personals.yahoo.com",duet:"'+content.duet+'",intl:"'+content.intl+'",site:"'+content.site+'"';
                  }
                  else if (content.redirUrl)
                  {
                    top.location.href = content.redirUrl;
                    return false;
                  }
                  return false;
                },
      failure : function(o)
                {
                }
    };
    
    if (loginUrl) {
      top.location.href = loginUrl;
    }

    YAHOO.util.Connect.asyncRequest('GET', requestUrl, callback);

    if (trackData && YAHOO.Personals && YAHOO.ULT)
    {
        trackData[YAHOO.ULT.SRC_SPACEID_KEY] = YAHOO.Personals.PAGE_INFO.space_id;
        var flag  = YAHOO.ULT.beacon_click(trackData) 
    }

  //}}} sendIM function
  },
  saveProfile:function (url){ 
  		 //{{{ saveProfile function
  
	  		return function(p_sType, p_aArguments, p_oMenu){
	 
	  			var actionDiv;	
				var callback =   
				{   
				     success: function (obj){
				        
				     	var jsonResponse = eval ("("+obj.responseText+")");

		                var errorString = "";
		                var error;
		                for (error in jsonResponse.errors){
		                	 
		                   	errorString = jsonResponse.errors[error].title +"\n"+jsonResponse.errors[error].body+"\n\n";
		                    	
		                }
		                if (errorString != ""){
		                	alert (errorString);
		                	saveProfileButton.cfg.setProperty("text", "Save this Profile");  
					  		saveProfileButton2.cfg.setProperty("text", "Save this Profile");
		                	return false;
		                }  
				     
				      saveProfileButton.cfg.setProperty("text", "Saved Profile");  
					  saveProfileButton2.cfg.setProperty("text", "Saved Profile");
					  //Hide submenus
					  hideSubmenus();
					  
					  //remove hover	  
				    
				        YAHOO.util.Dom.removeClass(actionDiv,"hover");
				        YAHOO.util.Dom.removeClass(actionDiv.parentNode,"hover");
				        if (actionDiv.firstChild.className){
				            YAHOO.util.Dom.removeClass(actionDiv.firstChild,"hover");
				        }
			

				        //disable the saved profile button.
					   saveProfileButton.cfg.setProperty("disabled", true);  
					   saveProfileButton2.cfg.setProperty("disabled", true);
					   
					   hideProfileButton.cfg.setProperty("disabled", false);
					   hideProfileButton2.cfg.setProperty("disabled", false);
					   hideProfileButton.cfg.setProperty("text","Hide this Profile");
					   hideProfileButton2.cfg.setProperty("text","Hide this Profile");
					   
					  
					 },   
				     failure:function  () {
					   alert ("Profile could not be saved.  Please check your internet connection.");    
					 }
				}; 
					if(p_aArguments[0].srcElement){
					    actionDiv = p_aArguments[0].srcElement;
					} else {
					    actionDiv = p_aArguments[0].target;
					}
				    saveProfileButton.cfg.setProperty("text", "Saving...");  
					saveProfileButton2.cfg.setProperty("text", "Saving...");
					
				 	YAHOO.util.Connect.asyncRequest('GET',url , callback);
				 	return false;
	  		};
	    //}}} saveProfile function
  },
  popWin:function (url,name,width,height,keys){ 
    var a=[],o=null,r=arguments;
    a[0]="width="+width+",height="+height;
    a[1]=",scrollbars="+((keys&1)?1:0);
    a[2]=",resizable="+((keys&2)?1:0);
    a[3]=",toolbar="+((keys&4)?1:0);
    a[4]=",status="+((keys&8)?1:0);
    a[5]=",location="+((keys&16)?1:0);
    a[6]=",menubar="+((keys&32)?1:0);
    if(r.length>=6){a[7]=(document.layers)?",screenX="+r[5]:",left="+r[5]}
    if(r.length>=7){a[8]=(document.layers)?",screenY="+r[6]:",top="+r[6]}
    a=a.join("");o=open(url,name,a);o.focus();
    return o;
  }

};


//***********************************
// js/util/yper_gallery.js
//***********************************
//<script>
function debug(msg){
//	if(typeof console != 'object'){
//		//alert(msg);
//	}else{
//	    console.log(msg);
//	}
}


//set namespace
YAHOO.namespace("Personals");

YAHOO.Personals.widget = {};

YAHOO.Personals.events = {};

//HACK: custom event to notify off changed caption
//YAHOO.Personals.events.changedCaption = new YAHOO.util.CustomEvent("changedCaption", this);
YAHOO.Personals.events.showILE = new YAHOO.util.CustomEvent("showILE", this);
YAHOO.Personals.events.deletePhoto = new YAHOO.util.CustomEvent("deletePhoto", this);



YAHOO.Personals.gallery = function(editMode){



    //photos is an array of dom ids
    var photos = new Array();

    //cache YUI objects
    var dom = YAHOO.util.Dom;
    var event = YAHOO.util.Event;
    var connect = YAHOO.util.Connect;

    var rejectedCaptionMsg = "This caption is rejected";
    var rejectedPhotoMsg   = "<h2>Photo Rejected:</h2>";
    var ureviewPhotoMsg    = "This photo is under review";
    var ureviewCaptionMsg  = "This caption is under review";
	var maxPhotos = 10;

    var selectedPhoto = null;
    var primaryPhoto = null;
    var preFetched = false;
	var ileDisable = false;
    var primUrl = null;
    var delUrl = null;
    var capUrl = null;
    var deleteBox = {};
    var primaryBox = {};
    var spaceId;

    var inline; //ile
    var inlineStatic = ''; //ile add caption

    var cancelAction = function(e){

        event.preventDefault(e);

    }
    var confirmAction;

    var selectPhoto = function(targ){
		
        if(selectedPhoto != null){
            var thumbHolder = getThumbHolder(photos[selectedPhoto]);
            if(dom.hasClass(thumbHolder[0],'selected')){
                dom.removeClass(thumbHolder[0], "selected");
            }
        }

		if(targ == 0){ //this is to check less often, only when you select the first 
					//image (this always happens on first load)
			//disable uploadMore:
			if(editMode){
				checkUploadButton();
			}
		}

//
        if(typeof(targ) != 'number'){ //check if we got the index or the dom id
            //if we got here it is the dom id and we need to search the array
            //This is a tiny array so this inefficient search is fine.
            var len = photos.length; //lookup once
            for(i=0; i < len; ++i){
                if(targ == photos[i]){
                    selectedPhoto = i;
                    break;
                }
            }

        }else{ //this is an int, so it must be an index
            selectedPhoto = targ;
        }
//
        var thumbHolder = getThumbHolder(photos[selectedPhoto]);
        dom.addClass(thumbHolder[0], "selected");


        var link = getSelectedZoom();
        var url = link.getAttribute('href');
        var iHeight = link.getAttribute('img_height');
        var iWidth = link.getAttribute('img_width');
        setZoomImage(url, iHeight,iWidth);
        swapCaption();
        swapLastUpdated();

		if(editMode == true){
			handleIleHide();
		}


        if(photos[selectedPhoto + 1] == undefined){
        	//this is the last photo
        	activateButtons('last');
        } else if(photos[selectedPhoto - 1] == undefined) {
        	//this is the first photo
        	activateButtons('first');
        }else{
        	activateButtons('both');
        }

        //change photonum
        var photoNum = document.getElementById('yperGalleryPhotoNum');
        var numString = "Photo " + (selectedPhoto+1) + " of " + photos.length;
        photoNum.innerHTML = numString;

		

    }

    var setPrimaryControl = function(state){

    	cancelEvents = function(e){
    		event.preventDefault(e);
    	}

    	aMakePrimary = document.getElementById('GalleryMakePrimary');
    	dom.removeClass(aMakePrimary, 'disabled');
    	event.removeListener(aMakePrimary, 'click');
    	event.addListener(aMakePrimary, 'click', this.cancelEvents);
		
    	switch(state){
    		case 'primary' || 'primaryDisabled':
				var primSpan = document.getElementById('gen-primspan');
				
				if(primSpan != undefined){
					primSpan.parentNode.removeChild(primSpan);
				}
    			var primText = document.createTextNode('Primary: ');
				var newtext = document.createTextNode('Manage');
				aMakePrimary.removeChild(aMakePrimary.firstChild);
				aMakePrimary.appendChild(newtext);
				var primSpan = document.createElement('span');
				primSpan.setAttribute('id','gen-primspan');
				primSpan.appendChild(primText);
				aMakePrimary.parentNode.parentNode.insertBefore(primSpan, aMakePrimary.parentNode);
				event.removeListener(aMakePrimary, 'click');
    			break;
    		case 'disabled':
    			var primSpan = document.getElementById('gen-primspan');
    			if(primSpan != undefined){
    				primSpan.parentNode.removeChild(primSpan);
    			}
    		    var newtext = document.createTextNode('Make Primary');
				aMakePrimary.removeChild(aMakePrimary.firstChild);
				aMakePrimary.appendChild(newtext);
    			dom.addClass(aMakePrimary, 'disabled');
    			break;
    		case 'normal':
    		    var primSpan = document.getElementById('gen-primspan');
    			if(primSpan != undefined){
    				primSpan.parentNode.removeChild(primSpan);
    			}
    		    var newtext = document.createTextNode('Make Primary');
				aMakePrimary.removeChild(aMakePrimary.firstChild);
				aMakePrimary.appendChild(newtext);
    			event.removeListener(aMakePrimary, 'click', this.cancelEvents);
    			event.addListener(aMakePrimary, 'click', makePrimary);
    			break;
    		}
    }


    var setSelectedPhotoCaption = function(type, args, me){
		var str = args[0];
		str = str.replace(/&quot;/g,'"');
 		str = str.replace(/&#39;/g,"'"); 
		str = str.replace(/&/g,'&amp;');
        handleIleHide();
        var selectedDiv = document.getElementById(photos[selectedPhoto]);
        var captionP = dom.getElementsByClassName('imgCaption','p', selectedDiv)[0];
        if(args && args[0]){
            captionP.innerHTML = str;
            markUreview(selectedDiv, false); //mark changed caption "under Review"
        }else{// caption was deleted
            captionP.innerHTML = '';
            markUreview(selectedDiv, true); //clear "under review" text
        }

        var timestampP = dom.getElementsByClassName('imgLastUpdated','p', selectedDiv)[0];
        if(args && args[1]){
            timestampP.innerHTML = args[1];
        }

        selectPhoto(selectedPhoto);
    }

    //Delete photo functions ---------------------------------

    var deletePhoto = function(e){
        event.preventDefault(e);
        var confLink = document.getElementById('primaryOkButton');
        var cancelLink = document.getElementById('primaryCancelButton');
        modalBox.setContent('<h1>Are you sure?</h1><p>The selected photo will be permanently deleted. This cannot be undone.</p>');
        cancelLink.onclick = function(){
            cancelModal();
            return false;
        }
        confLink.onclick = function(){
            deletePhotoAjax();
            modalBox.hide();
            return false;
        }
        modalBox.show();

    }

    var deletePhotoAjax = function(){
        selectedDiv = document.getElementById(photos[selectedPhoto]);
        delUrl = dom.getElementsByClassName('dellink','a',selectedDiv)[0].getAttribute('href');
        connect.asyncRequest('GET', delUrl, deletePhotoCallback, null);
    }

    var deletePhotoCallback = {
        success: function(o){
            try{
                var responseJSON = eval("("+o.responseText+")");
            }catch(oError){
                connectionError("Sorry, a system error occured");
                return false;
            }
            if(responseJSON.errors == 0){
            	YAHOO.Personals.events.deletePhoto.fire();
                //deletePhotoDOM();
            }else{
                connectionError("Sorry, a system error occured");
            }

        },
        failure: function(o){
            alert('Error:404');
        }

    }

    var handleDelete = function(type, args, me){
        debug('delete caught');
    	deletePhotoDOM();
    }

    YAHOO.Personals.events.deletePhoto.subscribe(handleDelete, this);


    var deletePhotoDOM = function(){
        if(photos.length <= 1){
            location.reload(true);
            return;
        }

        var thisThumb = document.getElementById(photos[selectedPhoto]);
        var wrapper = thisThumb.parentNode;
        wrapper.removeChild(thisThumb);
        var deletedIndex = selectedPhoto

        if(photos[deletedIndex+1] != undefined){
            selectPhoto(deletedIndex+1)
        }else{
            selectPhoto(deletedIndex-1);
        }
        photos.splice(deletedIndex,1);
        numPhotos = photos.length;


        var lastPhoto = document.getElementById(photos[numPhotos-1]);
        var placeHolder = createPhotoPlaceHolder(numPhotos+1);
        lastPhoto.parentNode.insertBefore(placeHolder, lastPhoto.nextSibling);

		//disable uploadMore:
		checkUploadButton();
    }


    /**
     *creates a place holder for an image
     *with the number num
     *
     *returns dom node
     */
    var createPhotoPlaceHolder = function(num){

        var wrapper = document.createElement('div');
        dom.addClass(wrapper,'yperGalleryThumb');
        var placeHolder = document.createElement('div');
        wrapper.appendChild(placeHolder);
        dom.addClass(placeHolder, 'yperGalleryThumbHolderEmpty');
        var oTable = document.createElement('table');
        placeHolder.appendChild(oTable);
        var oTbody = document.createElement('tbody');
        oTable.appendChild(oTbody);
        var oTr    = document.createElement('tr');
        oTbody.appendChild(oTr);
        var oTd    = document.createElement('td');
        oTr.appendChild(oTd);
        var oP     = document.createElement('p');
        oTd.appendChild(oP);
        var label  = document.createTextNode('photo'+num);
        oP.appendChild(label);
        debug(wrapper);
        return wrapper;
    }

    //Make Primary functions ===================================

    /**
      *Actually makes the primary flag visible in the dom
      */
    var makePrimaryDOM = function(toBeCropped){
        var selectedDiv = document.getElementById(photos[selectedPhoto]);
        var otherDiv = document.getElementById(photos[primaryPhoto])
        dom.removeClass(otherDiv,'primary');
        dom.addClass(selectedDiv,'primary');

		//if the photo is under review, we should mark it.
		if(toBeCropped == true){
			dom.addClass(selectedDiv, 'ureview');
			
			var uLabel = document.createElement('p');
			uLabel.innerHTML = "Under Review";
			dom.addClass(uLabel, 'yperGalleryError');
			selectedDiv.appendChild(uLabel);
		}
		
        setPrimaryControl('primary');
        primaryPhoto = selectedPhoto;

    }

    var makePrimaryCallBack = {
		
        success: function(o){
			var toBeCropped = false;
            var responseJSON = eval("("+o.responseText+")");
			if(responseJSON.content.to_be_cropped != undefined){
				toBeCropped = responseJSON.content.to_be_cropped;
			}
            if(responseJSON.errors == 0){
                makePrimaryDOM(toBeCropped);
            }else{
                alert("Sorry, a system error occured");
            }

        },
        failure: function(o){
            alert('Sorry, an error has occured. Check your internet connection');
        }
    }

    var connectionError = function(errString){
        modalBox.setContent(errString);
        modalBox.show();
    }

    var makePrimary = function(e){
        var selectedDiv = document.getElementById(photos[selectedPhoto]);
        primUrl = dom.getElementsByClassName('primlink','a',selectedDiv)[0].getAttribute('href');
        event.preventDefault(e);
        confirmPrimary();
    }

    var doMakePrimaryAjax = function(e){
        modalBox.hide();
        connect.asyncRequest('GET', primUrl, makePrimaryCallBack, null);
    }

    var confirmPrimary = function(){
        var confLink = document.getElementById('primaryOkButton');
        var cancelLink = document.getElementById('primaryCancelButton');
        var errMsg = "<h1>Are you sure?</h2><p>The selected photo will be reviewed again in 24 hours.";
        errMsg += "If accepted a headshot of this photo will appear in your profile and search results. This cannot be undone.</p>";
        modalBox.setContent(errMsg);
        cancelLink.onclick = function(){
            cancelModal();
            return false;
        }
        confLink.onclick = function(){
            doMakePrimaryAjax();
            return false;
        }
        modalBox.show();

    }

    var initModal = function(deleteLink, primaryLink){
        //event.addListener(confLink,'click', cancelAction);
        //event.addListener(cancelLink,'click', confirmAction);
        modalBox.init();

    }

    var cancelModal = function(e){
        modalBox.hide();
    }

    //modal box object
    var modalBox = {
        modal:{},
        bId:'primaryBox',
        init:function(){
          var oInit = {
        	close : false,
        	visible : false,
        	modal : true,
        	fixedcenter : true,
        	draggable : false,
        	x : 50,
        	y : 50
           }

           this.modal = new YAHOO.widget.Panel(this.bId, oInit);
           this.modal.render();
        },
        hide:function(){
            this.modal.hide();
        },
        show:function(){
            this.modal.show();
        },
        setContent:function(contentString){
            var contentHolder = document.getElementById('modalMessage');
            contentHolder.innerHTML = contentString;
            contentHolder = null;
        }
    }

    var setUpILE = function(){


        var captionClick = document.getElementById('addNewCaption');
        if(captionClick != undefined){
            event.addListener(captionClick, 'click', handleAddCaption);
            event.addListener(captionClick, 'mouseover', captionRollOn);
            event.addListener(captionClick, 'mouseout', captionRollOut);
        }

        var savedCaption = document.getElementById('detailCaptionSpan');

        if(savedCaption != undefined){
            event.addListener(savedCaption, 'click', handleIleShow);
            event.addListener(savedCaption, 'mouseover', captionRollOn);
            event.addListener(savedCaption, 'mouseout', captionRollOut);
        }


        inline.cancelClicked.subscribe(handleIleHide, this);
    }

    var captionRollOn = function(e){
		if(ileDisabled != true){
			var checkspan = document.getElementById('detailCaptionSpan');
			var addCaption = document.getElementById('addCaption');
			dom.addClass(checkspan, 'hover');
			dom.addClass(addCaption, 'hover');
	    }	
    }

    var captionRollOut = function(e){

			var checkspan = document.getElementById('detailCaptionSpan');
			var addCaption = document.getElementById('addCaption');
			dom.removeClass(checkspan, 'hover');
			dom.removeClass(addCaption, 'hover');
    }
 
    var handleAddCaption = function(){
        if(ileDisabled != true){
            inline.setCaptionAction('add');
            var ileArea = document.getElementById('detailCaption');
            dom.addClass(ileArea, 'active');
            inline.setFocus(); //this sets the focus to the text area. It doesn't work before addClass
        }
    }

    var handleIleShow = function(){
        if(ileDisabled != true){
            inline.setCaptionAction('edit');
            var ileArea = document.getElementById('detailCaption');
            // var capSpan = document.getElementById('detailCaptionSpan');
            // capSpan.style.display = 'none';
            dom.addClass(ileArea, 'active');
            inline.setFocus(); //this sets the focus to the text area. It doesn't work before addClass
        }
    }

    var handleIleHide = function(){
        var ileArea = document.getElementById('detailCaption');
        // var capSpan = document.getElementById('detailCaptionSpan');
        // capSpan.style.display = 'block';
        dom.removeClass(ileArea, 'active');
    }

    var initAjaxControls = function(){
        if(editMode == true){//if edit mode is true


            var initObj = {
                submitLink:'inputOkButton',
                cancelLink:'inputCancelButton',
                formAction:'url',
                charCounter:true,
                targetEl: 'targetEl',
                parentEl: 'detailCaption'
            };

            inline = new YAHOO.Personals.ile(true, initObj);
            inline.init();
            inline.changedCaption.subscribe(setSelectedPhotoCaption, this);
            inline.error.subscribe(handleAjaxError, this);
            inline.submitFailure.subscribe(handleAjaxError, this);

            var photoControlDiv = document.getElementById('photoControls');
        	var aMakePrimary = document.getElementById('GalleryMakePrimary');

        	var cancelPrimary = document.getElementById('primaryCancelButton');
        	var okPrimary = document.getElementById('primaryOkButton');
        	var deletePhotoL = document.getElementById('GalleryDeletePhoto');

        	//event.addListener(cancelPrimary, 'click', cancelModal);
        	//event.addListener(okPrimary, 'click', doMakePrimaryAjax);
        	event.addListener(deletePhotoL, 'click', deletePhoto);
        	event.removeListener(aMakePrimary, 'click');
        	event.addListener(aMakePrimary, 'click', makePrimary);
			

        }

    }

    var handleAjaxError = function(type, args, me){
        var confLink = document.getElementById('primaryOkButton');
        var cancelLink = document.getElementById('primaryCancelButton');
        confLink.onclick = function(){
        	modalBox.hide();
        	return false;
        }
        cancelLink.onclick = function(){
        	modalBox.hide();
        	return false;
        }


    	var errHeader = "Error";
    	var errBody = "An error has occured";
    	if(args[0].eheader != undefined){
    		errHeader = args[0].eheader;
    	}
    	if(args[0].ebody != undefined){
    		errBody = args[0].ebody;
    	}

    	errorString = "<h1>"+errHeader+"</h1>"+"<p>"+errBody+"</p>";
    	modalBox.setContent(errorString);
    	modalBox.show();
    	handleIleHide();
    	selectPhoto(selectedPhoto);
    }

    var getThumbHolder = function(targ){
        var holder = dom.getElementsByClassName('yperGalleryThumbHolder','div',targ);
        return holder;
    }

    var initPhotos = function(){
        setUpDetailsThumbs();
        var thumbContainer = document.getElementById('yperGalleryThumbPane');
        var thumbDivs = dom.getElementsByClassName('yperGalleryThumb','div', thumbContainer);

        for(i=0; i < thumbDivs.length; i++){
            var checkValid = dom.getElementsByClassName('yperGalleryThumbHolder','div',thumbDivs[i]);
            if(checkValid[0] != undefined){
                event.addListener(thumbDivs[i], "mouseout", doRollOut);
                event.addListener(thumbDivs[i], "mouseover", doRollOver);
                if(dom.hasClass(thumbDivs[i],'primary')){
                    primaryPhoto = i;
                }
                var link = thumbDivs[i].getElementsByTagName('A')[0];
                var link = thumbDivs[i];
                event.addListener(link, "click", doClick);

                var newid = dom.generateId(thumbDivs[i]);

                var caption = getCaption(thumbDivs[i]);

//				if(caption != false){ //no tooltip for null caption
//                	toolTipId = newid + '-tt';
//                	var myTooltip = new YAHOO.widget.Tooltip(toolTipId,
//                		{ context:newid,
//                		  text:caption, width:'330px'
//                		} );
//                }

                //thumbDivs[i].addAttribute('id',newid);
                photos.push(newid);
            }
            checkValid = null;
        }

        initAjaxControls(); //do this late to make sure the links are bound correctly

        selectPhoto(0);

    }

    var setUpDetailsThumbs = function(){

        var thumbElements = dom.getElementsByClassName('yperDetailsThumbHolder');
        var contextElements = [];
        var len = thumbElements.length;

        for(i=0; i < len; i++){
            var ce = thumbElements[i];
            var newid = dom.generateId(ce);
            contextElements.push(newid);
        }

        dtt = new YAHOO.widget.Tooltip("detailstt", { context:contextElements } );
    }

    var doRollOver = function(){
        var thumbHolder = getThumbHolder(this);
        dom.addClass(thumbHolder[0], "hover");
        selectedDiv = thumbHolder[0].parentNode;
        var noCaption = false;

        var caption = getCaption(selectedDiv);
        if(caption == false){
            caption = "<span class=\"noCaption\">No Caption</span>";
            noCaption = true;
        }

        toolTipId ='tt' + selectedDiv.getAttribute('id');
        debug(selectedDiv)

        if(noCaption != true){

            var divWidth = dom.getElementsByClassName('imgCaption', 'p', selectedDiv)[0];
            var ttwidth = divWidth.offsetWidth;
            debug(ttwidth);
            if(ttwidth > 250){
                ttwidth = 250;
            }else if(ttwidth < 20){
                ttwidth = 20;
            }else{
                ttwidth = ttwidth + 20;
            }

        }else{
            var ttwidth = 60;
        }

        var strTtWidth = ttwidth +'px';
        var myTooltip = new YAHOO.widget.Tooltip(toolTipId,
            { context:thumbHolder[0],
              text:caption, width:strTtWidth
            } );

    }

    var doRollOut = function(){
        var thumbHolder = getThumbHolder(this);
        dom.removeClass(thumbHolder[0], "hover");

    }

    var doClick = function(e){
        event.preventDefault(e);
        //tid = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute('id');
        var thisNode = this;

        //crawl up tree looking for the parent with the right class
        while (dom.hasClass(thisNode, 'yperGalleryThumb') != true){
            thisNode = thisNode.parentNode;
        }

        tid = thisNode.getAttribute('id');
        selectPhoto(tid);
        return false;
    }


    var getSelectedZoom = function(){
        var tarDiv = document.getElementById(photos[selectedPhoto]);
        var link = tarDiv.getElementsByTagName('A')[0];
        return link;
    }

    var setZoomImage = function(url,height,width){


        var previewTd = document.getElementById('yperGalleryPreview');
        var pImage = previewTd.getElementsByTagName('img')[0];

        pImage.parentNode.removeChild(pImage);
        var newImage = document.createElement('img');
        //newImage.setAttribute('id','yperGalleryPreview');
        newImage.setAttribute('height', height);
        newImage.setAttribute('width', width );
        newImage.setAttribute('src', url);

        previewTd.appendChild(newImage);
    }

    var activateButtons = function(firstLast){
    	var controls = document.getElementById('yperGalleryControls');
    	var nextButton = document.getElementById('yperNextButton');
    	var lastButton = document.getElementById('yperPrevButton');
    	event.removeListener(lastButton);
    	event.removeListener(nextButton);
    	dom.removeClass(lastButton,'active');
    	dom.removeClass(nextButton,'active');

        if(photos.length != 1){
            switch (firstLast){
                case 'first':
                    event.addListener(nextButton, 'click', doNext);
                    dom.addClass(nextButton,'active');
                    dom.removeClass(lastButton, 'active');
                    break;
                case 'last':
                    event.addListener(lastButton, 'click', doPrev);
                    dom.addClass(lastButton,'active');
                    dom.removeClass(nextButton, 'active');
                    break;
                default:
                    event.addListener(lastButton, 'click', doPrev);
                    dom.addClass(lastButton,'active');
                    event.addListener(nextButton, 'click', doNext);     
                    dom.addClass(nextButton,'active');
            }
        }
    }

    var doNext = function(){

    	var nextIm = selectedPhoto + 1;
    	if(photos[nextIm] != undefined){
    		selectPhoto(nextIm);
    	}
    }

    var doPrev = function(){
    	var prevImg = selectedPhoto - 1;
    	if(photos[prevImg] != undefined){
    		selectPhoto(prevImg);
    	}
    }

    var getCaption = function(selectedDiv){
        var objCaption = dom.getElementsByClassName('imgCaption', 'p', selectedDiv)[0];

        var objCaptionLink = objCaption.getElementsByTagName('A')[0];

    	captionString = '';
        captionString = objCaption.innerHTML;
        if(objCaption.innerHTML == ''){
            return false;
        }
        return captionString;
    }

    var swapCaption = function(){
        inlineStatic = null; //destroy any extra inline edits
    	var selectedDiv = document.getElementById(photos[selectedPhoto]);
    	var captionDiv = document.getElementById('detailCaptionSpan');
    	dom.removeClass(captionDiv.parentNode, 'noCaption');


    	var errors = dom.getElementsByClassName('rejectErrorMessages','div',selectedDiv)[0];
        var errorDiv = document.getElementById('galleryErrorMessages');
        var rejected = false;
    	var ureview = false;

    	rejected = dom.hasClass(selectedDiv,'rejected');

    	ureview  = dom.hasClass(selectedDiv,'ureview');
    	primary  = dom.hasClass(selectedDiv, 'primary');


    	if(editMode == true){
			if(rejected == true){
				ileDisabled = true;
			}else{
				ileDisabled = false;
			}
			
			var ileArea = document.getElementById('detailCaption');
			
			if(ileDisabled == true){
				dom.addClass(ileArea, 'disabled');
				
				//if the bubble is present we should hide it
				var bubble = document.getElementById('yperCaptionBubble');
				if(bubble != undefined){
					bubble.style.display = 'none';
				}
				
			}else{
				dom.removeClass(ileArea, 'disabled');
			}
	
    		errorDiv.innerHTML = errors.innerHTML;
    		if(primary == true){
    				setPrimaryControl('primary');
    		}else if(ureview == true || rejected == true){
    			setPrimaryControl('disabled');
    		}else{
    			setPrimaryControl('normal');
    		}

    	}
    	var captionString = cleanString(getCaption(selectedDiv));
    	

    	if(captionString != false){ //if there is no caption we draw nothing
    	    captionDiv.innerHTML = getCaption(selectedDiv);
    	}else{
    	    captionDiv.innerHTML = '';
    	}
    	if(editMode == true){
    	    //setUpILE();

    	    var captionLink = document.getElementById('captionUrl');

    	    var objCaption = dom.getElementsByClassName('imgCaption', 'p', selectedDiv)[0];
    	    var captionInput = document.getElementById('desc');
    	    var captionForm = document.getElementById('captionForm');

    	    if(captionString != false){
    	       captionInput.value = captionString;
    	    }else{
    	        captionInput.value = '';
    	        addRemoveCaptionLink(true);
    	    }
    	    //var objCaptionUrl = objCaption.getElementsByTagName('a')[0];

    	    var captionUrl = objCaption.getAttribute('id');
    	    captionForm.setAttribute('action', captionUrl);
    	    inline.setFormAction(captionUrl);

    	}

    }

    /**
     * add caption under review message
     */
    var markUreview = function(thumb, clear){
        var errors = dom.getElementsByClassName('rejectErrorMessages','div',thumb)[0];
        if(errors != undefined){
            if(clear == false){
                errors.innerHTML = '<h3 class="ureview">Caption Under Review</h3>';
            }else{
                errors.innerHTML = '';
            }
        }
    }

    var cleanString = function(str){
    	if(str != ''){
    		var cStr = str.replace(/&amp;/g,'&');
    	}else{
    		cStr = '';
    	}
    	return cStr;
    }


    var getLastUpdated = function(selectedDiv){
        var objLastUpdated = dom.getElementsByClassName('imgLastUpdated', 'p', selectedDiv)[0];
		if(objLastUpdated == undefined){
			return false;
		}
        var lastUpdatedString = objLastUpdated.innerHTML;
		if(lastUpdatedString == ''){
            return false;
        }
        return lastUpdatedString;
    }

    var swapLastUpdated = function(){

        var selectedDiv = document.getElementById(photos[selectedPhoto]);
        var lastUpdatedDiv = document.getElementById('lastUpdatedTime');

        var lastUpdatedString = getLastUpdated(selectedDiv);

        if(lastUpdatedString != false){ //if there is no timestamp we draw nothing
            lastUpdatedDiv.innerHTML = lastUpdatedString;
			lastUpdatedDiv.parentNode.style.display = 'block';
        }else{
            lastUpdatedDiv.innerHTML = '';
			lastUpdatedDiv.parentNode.style.display = 'none';
        }
    }

	/**
	  * make sure the upload button is disabled if photos >= maxPhotos
	  */
	var checkUploadButton = function(){
		var uploadButton = document.getElementById('uploadButton');
			if(uploadButton != undefined){
			var buttonState = dom.getElementsByClassName('buttonState', 'span', uploadButton)[0];
			if(photos.length >= maxPhotos){
				uploadButton.style.display = "none";
			}else{
				uploadButton.style.display = "block";
			}
		}
	}

    var handleShowILE = function(type, args, me){
        myDesc = new YAHOO.Personals.textAreaCharCount("desc");
    }
    YAHOO.Personals.events.showILE.subscribe(handleShowILE, this);

    var addRemoveCaptionLink = function(linkUrl){
        var captionHolder = document.getElementById('detailCaption');
        var captionAddButton = document.getElementById('addNewCaption');
        var currentDiv = document.getElementById(photos[selectedPhoto]);

        var captionAddURL = dom.getElementsByClassName('imgCaption','p', currentDiv )[0].getAttribute('id');
        var addCaptionTarget = document.getElementById('addCaptionTarget');

        addCaptionTarget.setAttribute('href',captionAddURL);
        dom.addClass(captionHolder, 'noCaption');
    }

    var doPreFetch = function(){
    	//placeholder, we haven't decided if we are going to do this yet

    }




    return {

        select:function(targ){
            selectPhoto(targ);
        },

        connError:function(errString){
        	connectionError(errString);
        },

        next:function(targ){

        },
        getCaptionUrl:function(targ){

        },
        prev:function(targ){

        },
        saveCaption:function(){

        },
        init:function(){
            initPhotos();
            if(editMode == true){
                initModal();
                setUpILE();
            }
			window.setTimeout(function(){selectPhoto(0)}, 1000); 
			//this is to make sure everything is populated right
        },
        pSelectPhoto:selectPhoto,
		pSelectPrimary:function(){
			var len = photos.length;
			for(i=0; i < len; i++){
				var mThumb = document.getElementById(photos[i]);
				if(dom.hasClass(mThumb, 'primary')){
					selectPhoto(i);
					break;
				}
			}
		}

    }

}

//***********************************
// js/profile/quickview.js
//***********************************
var quickViewApplyActive = false;
var origChoicesList = null;
var origTopicsList = null
  
 function quickViewAvail(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
 }

 quickViewAvail.prototype.handleOnAvailable = function(me) {
   
 }
 
 var obj = new quickViewAvail("yperQuickViewUpButtonContainer");

 //This function adds several additional event handlers
function addEvents(){
	var container = document.getElementById('yperQuickViewRemoveText');
	
	var removeContainer = document.getElementById('yperQuickViewRemoveContainer');
	var addContainer = document.getElementById('yperQuickViewAddContainer');
	var downContainer = document.getElementById('yperQuickViewDownButtonContainer');
	var upContainer = document.getElementById('yperQuickViewUpButtonContainer');
	
	var linkSpans = Array(removeContainer, addContainer,downContainer, upContainer);
	
	for(i=0;i<=linkSpans.length;i++){
		if(linkSpans[i] != undefined){
			linkSpans[i].onmouseover = function(){
				
				if(this.getAttribute("class") == "yperQuickViewActive" || this.getAttribute("className")){
					var link = this.getElementsByTagName('span');
					link[0].style.textDecoration = "underline";
				}
			}
			linkSpans[i].onmouseout = function(){
				var link = this.getElementsByTagName('span');
				link[0].style.textDecoration = "none";
			}
		}
	}
	
	addContainer.onclick = function(){
		addQuickViewTrait(); 
	}
	

	
	removeContainer.onclick  = function(){
		removeQuickViewTrait(); 	
	}
	
	downContainer.onclick = function(){
		orderQuickViewList(true);
	}
	
	upContainer.onclick = function(){
		orderQuickViewList(false);
	}
	
	var buttons = YAHOO.util.Dom.getElementsByClassName('default','button','yperQuickViewDlg');
    //buttons[0].setAttribute('disabled','disabled');
    buttons[0].style.backgroundColor = "#eee";
    buttons[0].style.color = "#ccc";
}

function setApplyActive(){
	
	if(!quickViewApplyActive){
		var buttons = YAHOO.util.Dom.getElementsByClassName('default','button','yperQuickViewDlg');
		//buttons[0].removeAttribute('disabled');
		buttons[0].style.backgroundColor = "#a73735";
		buttons[0].style.color = "#fff"
		quickViewApplyActive = true;
	}
}

function addQuickViewTrait() {
  setApplyActive();
  var topicsList = document.getElementById('yperQuickViewTopicsSelect');
  if (topicsList.length < 8) {
    var choicesList = document.getElementById('yperQuickViewChoicesSelect'); 
    var selected = choicesList.selectedIndex;
    
    if (selected > -1) {
      var option = document.createElement("OPTION");
      option.className = "yperQuickViewMenuList";
      option.value = choicesList.options[selected].value;
      option.text = choicesList.options[selected].text;
      option.id = choicesList.options[selected].id;
      option.title = choicesList.options[selected].title;

      try {
	// standards compliant; doesn't work in IE
	topicsList.add(option, null); 
      }
      catch(ex) {
	topicsList.add(option);
      }
      topicsList.selectedIndex = topicsList.length-1;
      choicesList.selectedIndex = -1;
      choicesList.remove(selected);

      if (topicsList.selectedIndex > 0) {
	changeButton('yperQuickViewUpButton', true);
      }
      changeButton('yperQuickViewAddButton', false);
      changeButton('yperQuickViewRemoveButton', true);
    }
  }
  else {
    changeButton('yperQuickViewAddButton', false);
  }

  return false;
}

function removeQuickViewTrait() {
	setApplyActive();
	var topicsList = document.getElementById('yperQuickViewTopicsSelect');
	if (topicsList.length > 1) {
		var choicesList = document.getElementById('yperQuickViewChoicesSelect');
		var selected = topicsList.selectedIndex;
	

		if (selected > -1) {
		
			var option = document.createElement("OPTION");
			option.className = "yperQuickViewMenuList";
			option.value = topicsList.options[selected].value;
			option.text = topicsList.options[selected].text;
			option.title = topicsList.options[selected].title;
			option.id = topicsList.options[selected].id;
			topicsList.remove(selected);

			for (var i = 0, j=choicesList.options.length; i <= j; i++) {
				if (i < j) {
					choiceIntValue = parseInt(choicesList.options[i].value);
					optionIntValue = parseInt(option.value);
					if (choiceIntValue < optionIntValue) {
						continue;
					}
				}

				



						try {
						  // standards compliant; doesn't work in IE
						  if (i < j) {
						    choicesList.add(option, choicesList.options[i]);
						  }
						  else {
						    choicesList.add(option, null);
						  }
						}
						catch(ex) {
						  if (i < j) {
						    choicesList.add(option, i);
						  }
						  else {
						    choicesList.add(option);
						  }
						}
				
				choicesList.selectedIndex = i;
				topicsList.selectedIndex = -1;
				changeButton('yperQuickViewUpButton', false);
				changeButton('yperQuickViewDownButton', false);
				changeButton('yperQuickViewRemoveButton', false);
				changeButton('yperQuickViewAddButton', true);
				break;
			}
		}
	}
  else {
    changeButton('yperQuickViewRemoveButton', false);
  }
    

  return false;
}

function orderQuickViewList(moveDown) {
  setApplyActive();
  var selectList = document.getElementById('yperQuickViewTopicsSelect'); 
  var selected = selectList.selectedIndex;
  //alert(selectList[1]);
  
  if (selected != -1 && selectList.options[selected].value > "") {
    var moveText = selectList.options[selected].text;
    var moveValue = selectList.options[selected].value;
    var moveId = selectList.options[selected].id;
    var moveTitle = selectList.options[selected].title;

    if (!moveDown && selected > 0) {
    	selectList.options[selected].text = selectList.options[selected-1].text;
    	selectList.options[selected].value = selectList.options[selected-1].value;
    	selectList.options[selected].id = selectList.options[selected-1].id;
    	selectList.options[selected].title = selectList.options[selected-1].title;

    	selectList.options[selected-1].text = moveText;
    	selectList.options[selected-1].value = moveValue;
    	selectList.options[selected-1].id = moveId;
    	selectList.options[selected-1].title = moveTitle;
    	selectList.selectedIndex--;
    	if (selectList.selectedIndex == 0) {
    		changeButton('yperQuickViewUpButton', false);
    	}
    	changeButton('yperQuickViewDownButton', true);
    }
    else if (moveDown && selected < selectList.options.length-1) {
    	selectList.options[selected].text = selectList.options[selected+1].text;
    	selectList.options[selected].value = selectList.options[selected+1].value;
    	selectList.options[selected].id = selectList.options[selected+1].id;
    	selectList.options[selected].title = selectList.options[selected+1].title;
    	selectList.options[selected+1].text = moveText;
    	selectList.options[selected+1].value = moveValue;
    	selectList.options[selected+1].id = moveId;
    	selectList.options[selected+1].title = moveTitle;
    	selectList.selectedIndex++;
    	if (selectList.selectedIndex == selectList.options.length-1) {
    		changeButton('yperQuickViewDownButton', false);
    	}
    	changeButton('yperQuickViewUpButton', true);
    }
    
    
    
//    if (!moveDown && selected > 0) {
//      selectList.options[selected].text = selectList.options[selected-1].text;
//      selectList.options[selected].value = selectList.options[selected-1].value;
//      selectList.options[selected].id = selectList.options[selected-1].id;
//      selectList.options[selected].title = selectList.options[selected-1].title;
//
//      selectList.options[selected-1].text = moveText;
//      selectList.options[selected-1].value = moveValue;
//      selectList.options[selected-1].id = moveId;
//      selectList.options[selected-1].title = moveTitle;
//      selectList.selectedIndex--;
//      if (selectList.selectedIndex == 0) {
//	changeButton('yperQuickViewUpButton', false);
//      }
//      changeButton('yperQuickViewDownButton', true);
//    } 
//    else if (moveDown && selected < selectList.options.length-1) {
//      selectList.options[selected].text = selectList.options[selected+1].text;
//      selectList.options[selected].value = selectList.options[selected+1].value;
//      selectList.options[selected].id = selectList.options[selected+1].id;
//      selectList.options[selected].title = selectList.options[selected+1].title;
//      selectList.options[selected+1].text = moveText;
//      selectList.options[selected+1].value = moveValue;
//      selectList.options[selected+1].id = moveId;
//      selectList.options[selected+1].title = moveTitle;
//      selectList.selectedIndex++;
//      if (selectList.selectedIndex == selectList.options.length-1) {
//	changeButton('yperQuickViewDownButton', false);
//      }
//      changeButton('yperQuickViewUpButton', true);
//    } 
  }
  
  return false;
}

function deSelect(selectId) {
  var selectList = document.getElementById(selectId); 
  selectList.selectedIndex = -1;

  return false;
}

function changeButton(buttonId, enable) {
	//added this for convience:
 var dom = YAHOO.util.Dom;	
 
  //var buttonSrc = "http://recent.corp.yahoo.com/test/btn_move";

  var buttonSrc = "http://us.i1.yimg.com/us.yimg.com/i/us/per/abk/btn/1/btn_move"; //akamized url
 

  var isOrderButton = false;
  
  var thisButton = document.getElementById(buttonId);
   
 
  switch (buttonId) {
  case 'yperQuickViewAddButton':
    buttonSrc += 'rgt';
   break;
  case 'yperQuickViewRemoveButton':
    buttonSrc += 'lft';
    break;
  case 'yperQuickViewUpButton':
    buttonSrc += 'up';
    isOrderButton = true;
    break;
  case 'yperQuickViewDownButton':
    buttonSrc += 'dwn';
    isOrderButton = true;
    break;  
  default:
    return false;
  }
  
  if (enable && isOrderButton) {
    var topicsList = document.getElementById('yperQuickViewTopicsSelect');
    if (buttonId == 'yperQuickViewUpButton') {
      if (topicsList.selectedIndex <= 0) {
	return false;
      }
    }
    else if (buttonId == 'yperQuickViewDownButton') {
      if (topicsList.selectedIndex == topicsList.options.length-1) {
	return false;
      }
    }
  }

  //alert("button:" + buttonId + " enable=" +enable);

  if (enable) {
    buttonSrc += '_i_22_i_nrm_1.gif';
    dom.addClass(thisButton.parentNode,'yperQuickViewActive');
   
  }
  else {
    buttonSrc += '_i_22_i_dim_1.gif';
    dom.removeClass(thisButton.parentNode,'yperQuickViewActive');
  }

  var button = document.getElementById(buttonId); 
  if (button.src != buttonSrc) {
    button.src = buttonSrc;
  }
  
  return false;
}

function changeAddButton() {
  var choicesList = document.getElementById('yperQuickViewChoicesSelect');
  if (choicesList.selectedIndex > -1) {
    var topicsList = document.getElementById('yperQuickViewTopicsSelect');
    if (topicsList.length < 8) {
      changeButton('yperQuickViewAddButton', true);
    }
    changeButton('yperQuickViewUpButton', false);
    changeButton('yperQuickViewDownButton', false);
    changeButton('yperQuickViewRemoveButton', false);
  }
  else {
    changeButton('yperQuickViewAddButton', false);
    changeButton('yperQuickViewRemoveButton', true);
    changeButton('yperQuickViewUpButton', true);
    changeButton('yperQuickViewDownButton', true);
  }

  return false;
}

function changeRemoveButton() {
  var topicsList = document.getElementById('yperQuickViewTopicsSelect');
  if (topicsList.selectedIndex > -1) {
    if (topicsList.length > 1) {
      changeButton('yperQuickViewRemoveButton', true);
    }
    changeButton('yperQuickViewAddButton', false);

    //alert("selected="+topicsList.selectedIndex+" len="+topicsList.length)
    if (topicsList.selectedIndex == 0) {
      changeButton('yperQuickViewUpButton', false);
      changeButton('yperQuickViewDownButton', true);
    }
    else if (topicsList.selectedIndex == topicsList.length-1) {
      changeButton('yperQuickViewUpButton', true);
      changeButton('yperQuickViewDownButton', false);
    }
    else {
      changeButton('yperQuickViewUpButton', true);
      changeButton('yperQuickViewDownButton', true);
    }
  }
  else {
    changeButton('yperQuickViewRemoveButton', false);
    changeButton('yperQuickViewUpButton', false);
    changeButton('yperQuickViewDownButton', false);
    changeButton('yperQuickViewAddButton', true);
  }
 
  return false;
}

function submitCallback(obj) {
  //alert("call back success");
  //alert(obj);
  var response = obj.responseText;
  //alert("call back:" .  response );
  //response = response.split("<!")[0];
  //document.getElementById("resp").innerHTML = response;
  //eval(response);
  eval('resp_data = ' + response);
  document.getElementById('yperQuickViewTableDataId').innerHTML = resp_data['content'];
  var choicesList = document.getElementById('yperQuickViewChoicesSelect');
  origChoicesList = choicesList.cloneNode(true);
  var topicsList = document.getElementById('yperQuickViewTopicsSelect');
  origTopicsList = topicsList.cloneNode(true);
}

function submitFailure(obj) {
  alert("Submission failed: " + obj.status);
}

function quickViewInit() {
  var handleCancel = function() {
    var choicesContainer = document.getElementById('yperQuickViewChoicesContainer');
    var choicesList = document.getElementById('yperQuickViewChoicesSelect');
    var topicsContainer = document.getElementById('yperQuickViewTopicSelectContainer');
    var topicsList = document.getElementById('yperQuickViewTopicsSelect'); 
    var newChoicesList = origChoicesList.cloneNode(true);
    var newTopicsList = origTopicsList.cloneNode(true);
    var newChoicesList = origChoicesList.cloneNode(true);
    choicesContainer.replaceChild(newChoicesList, choicesList);
    topicsContainer.replaceChild(newTopicsList, topicsList);

    this.cancel();
  }
  var handleSubmit = function() {
    var topicsList = document.getElementById('yperQuickViewTopicsSelect'); 
    var importantTopics = '';
    var ultValue = '';
    for (var i = 0, j=topicsList.options.length; i < j; i++) {
      if (importantTopics) {
	importantTopics += ',';
	ultValue += ',';
      }
      importantTopics += topicsList.options[i].value;
      var id = topicsList.options[i].id;
      ultValue += id.substring(19, id.length);
    }
    
    var topicInput = document.getElementById('yperQuickViewImportantTopics');
    topicInput.value = importantTopics;

    // do ult tracking
    //alert("ultvalue="+ultValue);
    var clickData = {'sec': 'customizetopics',
		     'slk': ultValue              
                     };

    clickData[YAHOO.ULT.SRC_SPACEID_KEY] = document.getElementById('yperQuickViewSpaceid').value;
    //alert("my spaceid="+clickData[YAHOO.ULT.SRC_SPACEID_KEY]);
    var url = document.getElementById('dlgForm').action;
    //alert("url is " + url);
    var ylcUrl = YAHOO.ULT.track_click(url, clickData) 
    //alert("ylcUrl is " + ylcUrl);

    var cb = { success: function() {},
               failure: function() {},
               argument: [ultValue]
             };
    var transaction = YAHOO.util.Connect.asyncRequest('GET', ylcUrl, cb);

    this.submit();
  }
  
  quickViewDlg = new YAHOO.widget.Dialog("yperQuickViewDlg", { modal:true, visible:false, close:false,width:"645px", underlay:"shadow", fixedcenter:true, constraintoviewport:true, draggable:false});
  
  quickViewDlg.callback.success = submitCallback;
  quickViewDlg.callback.failure = submitFailure;

  var myButtons = 
  [ { text:"Apply Settings",fixedcenter:true, handler:handleSubmit, isDefault:true },
  { text:"Cancel", handler:handleCancel } ];   
  
  quickViewDlg.cfg.queueProperty("buttons", myButtons);

  quickViewDlg.render();
  quickViewDlg.cfg.setProperty('postmethod','async');
  


  // construct tooltip and original choice and topic list
  var modalzIndex = parseInt(quickViewDlg.cfg.getProperty('zIndex'));
  var tooltipIds = null;
  var choicesList = document.getElementById('yperQuickViewChoicesSelect');
  origChoicesList = choicesList.cloneNode(true);
  for (var i = 0, j=choicesList.options.length; i < j; i++) {
    tooltipIds += choicesList.options[i].id + ((i<j-1)?',':'');
  }

  var topicsList = document.getElementById('yperQuickViewTopicsSelect');
  origTopicsList = topicsList.cloneNode(true);
  for (var i = 0, j=topicsList.options.length; i < j; i++) {
    tooltipIds += topicsList.options[i].id + ((i<j-1)?',':'');
  }
  //alert("tooltipids=" +tooltipIds );
  tooltip = new YAHOO.widget.Tooltip('tt', {context:tooltipIds, zIndex: modalzIndex+10});
  addEvents(); 
  return false;
}


