/**
 * Listing Details
 * Copyright: 2008 Portal Systems, Inc.
 * Author: Dylan Oster
 */
YAHOO.ps.details = function() { };
YAHOO.ps.details = {
    handleSuccess:function(o){
		// Run response Ajax response through common eval
		var response = YAHOO.ps.Ajax.eval(o);
		// If not false response was evaluated
		if (response !== false) {
            // Remove loading and display message or results
            YAHOO.util.Dom.removeClass('reDetails','loading');                                
            if (response['success'] <= 0) { 
            	YAHOO.ps.details.setBody(response['error']);
            } else {  
        		YAHOO.util.Dom.removeClass('quicklink','hide');
        		// Remove last crumb without click listener
        		YAHOO.ps.Realestate.criteria.removeLastCrumb();
        		YAHOO.ps.Realestate.criteria.addCrumb('bcResults', 'span', 'Find a Home', YAHOO.ps.details.hide);
        		YAHOO.ps.Realestate.criteria.addCrumb('bcDetails', 'span', 'Listing Details', null, 4);
				YAHOO.ps.details.setBody(response['content']); 
            }                 
        }     
    },                   
    handleFailure:function(o){
        if (o.responseText !== undefined){
        	YAHOO.ps.details.setBody("Error: Unable to transmit update request");
        }
    },
	setBody:function(content){
        // Load HTML to details div tag
        document.getElementById('reDetails').innerHTML=content;
        
        var search = content; 
        var script; 
        // Find all javascript and append the code to the header to run commands      
        while (script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i)) { 
            search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length); 
           
            if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break; 
           
            block  = search.substr(0, search.indexOf(RegExp.$1)); 
            search = search.substring(block.length + RegExp.$1.length); 
            // Create script element, add text and append child
            var oScript = document.createElement('script'); 
            oScript.text = block; 
            document.getElementsByTagName("head").item(0).appendChild(oScript); 
        } 
    },  
	show:function(key,track){
		// Empty the body and add the loading image first
		document.getElementById('reDetails').innerHTML = '';
		YAHOO.util.Dom.addClass('reDetails','loading');
		// Make sure page has been scrolled to the top
		scroll(0,0);
		// First get the content 
		var postData = 'key=' + key;
        YAHOO.util.Connect.asyncRequest('POST', '/server/realestate/details', YAHOO.ps.details.callback, postData); 
        
        if (pageTracker && track != '') {
        	pageTracker._trackPageview('/' + track + '/' + key + '/details');
        }
        // Hide search and set footer
        YAHOO.util.Dom.addClass('reSearch','hide');
		YAHOO.util.Dom.removeClass('reDetails','hide');
    },
    hide:function(){
		// Clear the key value now that the listing is hidden and record history
		YAHOO.ps.Realestate.criteria.updateValues({ 'key': '' });
		YAHOO.ps.Realestate.criteria.recordHistory();
    },
    clear:function(){
    	if (YAHOO.util.Dom.hasClass('reSearch', 'hide')) {
	    	// Hide listing details 
			YAHOO.util.Dom.addClass('reDetails','hide');
			YAHOO.util.Dom.addClass('quicklink','hide');
			YAHOO.util.Dom.removeClass('reSearch','hide');
			document.getElementById('reDetails').innerHTML = '';
			// Double check map size from realestate results class
			YAHOO.ps.Realestate.results.checkMapSize();
			// Update the bread crumb if last item is 'Listing Details'
			var items = YAHOO.ps.Realestate.criteria.getCrumbItems();
			YAHOO.ps.Realestate.criteria.removeLastCrumb();
			YAHOO.ps.Realestate.criteria.removeLastCrumb();
			YAHOO.ps.Realestate.criteria.addCrumb('bcResults', 'span', 'Find a Home', null);
			
			// Clear background and check footer
			YAHOO.ps.Viewport.clearMainBg();
    	}
    }
};
                        
YAHOO.ps.details.callback =
{
    success:YAHOO.ps.details.handleSuccess,
    failure:YAHOO.ps.details.handleFailure,
    scope:YAHOO.ps.details,
    timeout:25000
};