
YAHOO.namespace("ps.Popup.contact");
(function () {
    var Dom  = YAHOO.util.Dom,
    	Ev   = YAHOO.util.Event,
    	Pop	 = YAHOO.ps.Popup,
    	Con  = YAHOO.ps.Popup.contact;
    
    var btnCompanyEmail,
    	btnAgentEmail;
 
	var successCompanyEmail = 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) {
            // Display success message or error
            if (response['success'] <= 0) { 
            	for(var i=0; i<response['fields'].length; i++) {
                    Dom.addClass(response['fields'][i], 'error');
                }
            } else {                 
        		Pop.setFooter('');
            	setBody(300, 120, '<div class="successCompany">Email Has Been Sent. You should receive a response shortly.</div>');
                window.setTimeout("YAHOO.ps.Popup.hide();",1600);
            }                 
        }         
    };

	var callbackCompanyEmail = {
		success:successCompanyEmail,
		failure:failureCompany,
		timeout:5000
	};    
    
    var sendCompanyEmail = function () {
    	var name   = Dom.get('contactName').value;
    	var email  = Dom.get('contactEmail').value;
    	var key    = Dom.get('contactKey').value;
    	var msg    = Dom.get('contactMessage').value;
    	var semail = Dom.get('sEmail').value;
    	var postData = 'name=' + name + '&email=' + email + '&key=' + key + '&semail=' + semail + '&msg=' + msg;
    	
    	YAHOO.util.Connect.asyncRequest('POST', '/server/contact/company-send', callbackCompanyEmail, postData); 
    };
	
	var successCompany = 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) {
            
            // Set header and buttons if needed
            Pop.setHeader('Contact ' + response['title']);
        	// Make sure button is not hidden
        	if (Dom.hasClass('dynFooter', 'hide')) {
        		Dom.removeClass('dynFooter', 'hide');
        	}
        	if (!Dom.isAncestor('dynFooter', 'companyEmailButton')) {
        		Pop.setFooter('&nbsp;');
        		btnCompanyEmail = new YAHOO.widget.Button({ label:"Send Email", id:"companyEmailButton", container:"dynFooter", onclick: { fn: sendCompanyEmail } });
        	}
            if (response['success'] > 0) {        
            	if (response['email'] == '') {
            		setBody(405, 260, response['content']);      
            	} else {
            		setBody(405, 140, response['content']);  
            	}
            }                 
        }         
    };
    
    var failureCompany = function (o) {
        if (o.responseText !== undefined){
        	setBody(405, 260, "Error: Unable to transmit update request");
        }
    };

	var callbackCompany = {
		success:successCompany,
		failure:failureCompany,
		timeout:5000
	};
	
	var successAgentEmail = 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) {
            // Display success message or error
            if (response['success'] <= 0) { 
            	for(var i=0; i<response['fields'].length; i++) {
                    Dom.addClass(response['fields'][i], 'error');
                }
            } else {              
        		Pop.setFooter('');
            	setBody(300, 120,  '<div class="successCompany">Email Has Been Sent. You should receive a response shortly.</div>');
                window.setTimeout("YAHOO.ps.Popup.hide();",1600);
            }                 
        }         
    };

	var callbackAgentEmail = {
		success:successAgentEmail,
		failure:failureAgent,
		timeout:5000
	};    
    
    var sendAgentEmail = function () {
    	var name  = Dom.get('contactName').value;
    	var email = Dom.get('contactEmail').value;
    	var key   = Dom.get('contactKey').value;
    	var msg   = Dom.get('contactMessage').value;
    	var agent = Dom.get('contactId').value;
    	var postData = 'name=' + name + '&email=' + email + '&key=' + key + '&msg=' + msg + '&agent=' + agent;
    	
    	YAHOO.util.Connect.asyncRequest('POST', '/server/contact/agent-send', callbackCompanyEmail, postData); 
    };
    
	var successAgent = 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) {
         
            // Set header and buttons if needed
        	Pop.setHeader('Contact ' + response['title']);
        	// Make sure button is not hidden
        	if (Dom.hasClass('dynFooter', 'hide')) {
        		Dom.removeClass('dynFooter', 'hide');
        	}
        	// If button is not a child of the footer add it
        	if (!Dom.isAncestor('dynFooter', 'agentEmailButton')) {
        		Pop.setFooter('&nbsp;');
        		btnAgentEmail = new YAHOO.widget.Button({ label:"Send Email", id:"agentEmailButton", container:"dynFooter", onclick: { fn: sendAgentEmail } });
        	} 
            if (response['success'] > 0) {               
            	setBody(568, 375, response['content']);   
            	// Load name and email if logged in
            	checkContact();
            }                 
        }
                
    };
    
    var failureAgent = function (o) {
        if (o.responseText !== undefined){
        	setBody(568, 375, "Error: Unable to transmit update request");
        }
    };

	var callbackAgent = {
		success:successAgent,
		failure:failureAgent,
		timeout:5000
	};
	
	var checkContact = function () {
    	var email = '', 
			name  = '';
		if (Dom.inDocument('userEmail')) {
			email = Dom.get('userEmail').value;
		}
		if (Dom.inDocument('userFirst') && Dom.inDocument('userLast')) {
			name = Dom.get('userFirst').value + ' ' + Dom.get('userLast').value;
		}
		Dom.get('contactEmail').value = email;
		Dom.get('contactName').value  = name;
	};
	
	var setBody = function (w, h, content) {
		// Add content
        Pop.setContent(content);
    	// Parse javascript
        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); 
        } 
        // Set new size
        Pop.showSize(w, h);
    };
	
	var showCompany = function (key, email, title) {
        YAHOO.util.Connect.asyncRequest('POST', '/server/contact/company', callbackCompany, 'title=' + title + '&email=' + email + '&key=' + key); 
    };
	
	var showAgent = function (key, id) {
        YAHOO.util.Connect.asyncRequest('POST', '/server/contact/agent', callbackAgent, 'id=' + id + '&key=' + key); 
    };
    
    // Public functions
    Con.showCompany = showCompany;
    Con.showAgent   = showAgent;
})();
