/********************************************************************
    File:   
        quote.js
    Brief:  
        Implementation of JavaScript functionality for 
        the contact.html page
    Dependencies:
        jquery-1.3.2.min.js             (jQuery library)
        jquery.easing.1.2.js            (jQuery library plugin)
        cufon-yui.js                    (font replacement tool)
        sendQuote.php                 (php script used to send contact message via email) 
    Author:
        DigitalCavalry
    Author URI:
        http://graphicriver.net/user/DigitalCavalry
*********************************************************************/ 

// alias to jQuery library, function noConflict release control of the $ variable 
// to whichever library first implemented it
var $j = jQuery.noConflict();
// if true the send button is blocked
var g_blockSendButton = false;

/***************************************
    SETUP CONTACT FORM
****************************************/

function setupInputControls()
{
    // change border color wehen controls take focus
    $j(".commonInput, .commonTextarea, .contactInputHuman").focus(
        function()
        {
            $j(this).css("border", "1px solid #3399cc");
        }
    );
    
    // restore border color wehen controls lost focus
    $j(".commonInput, .commonTextarea, .contactInputHuman").blur(
        function()
        {
            $j(this).css("border", "1px solid #ccc");
            $j(this).css("border-right", "1px solid #eee");
            $j(this).css("border-bottom", "1px solid #eee");
        }
    );
    
    // when input name lost focus, validate the value
    $j("#inputName").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactNameErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactNameErrorMsg").html("&nbsp;Please include your name").css("visibility", "visible");            
            }
        }
    );

	// when input TITLE lost focus, validate the value
    $j("#inputTitle").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactTitleErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactTitleErrorMsg").html("&nbsp;Please your title").css("visibility", "visible");            
            }
        }
    );


	// when input SCHOOL lost focus, validate the value
    $j("#inputSchool").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactSchoolErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactSchoolErrorMsg").html("&nbsp;Please include your school or team").css("visibility", "visible");            
            }
        }
    );
	
	
	// when input email lost focus validate the value 
    $j("#inputEmail").blur(
        function()
        {
            
            if($j(this).val() != "")
            {
                // create regular expression object
                var regExp = new RegExp(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i);
                // check email address, if result is null the email string dont match to pattern
                var resultExp = regExp.exec($j(this).val());
                if(resultExp == null) 
                {
                    $j(this).css("border", "1px solid #FF0000");
                    $j("#contactEmailErrorMsg").html("&nbsp;Sorry, but that's not a vailid email address").css("visibility", "visible");
                } else
                {
                    $j("#contactEmailErrorMsg").css("visibility", "hidden");
                }
                
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactEmailErrorMsg").html("&nbsp;Please include your email address").css("visibility", "visible"); 
            }
        }
    );
	
	// when input PHONE lost focus, validate the value
    $j("#inputPhone").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactPhoneErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactPhoneErrorMsg").html("&nbsp;Please include your phone number").css("visibility", "visible");            
            }
        }
    );
	
	// when input HEAR lost focus, validate the value
    $j("#inputHear").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactHearErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactHearErrorMsg").html("&nbsp;Please tell us how you found Summit").css("visibility", "visible");            
            }
        }
    );
	
	// when input OUTSOURCE lost focus, validate the value
    $j("#inputOutsource").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactOutsourceErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactOutsourceErrorMsg").html("&nbsp;Please tell us if you outsource your design work").css("visibility", "visible");            
            }
        }
    );
	
    // when input TYPE lost focus validate the value 
    $j("#inputType").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactTypeErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactTypeErrorMsg").html("&nbsp;What Kind of Project is this?").css("visibility", "visible");            
            }
        }
    );    

    // when input DETAILS lost focus validate the value 
    $j("#inputDetails").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactDetailsErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactDetailsErrorMsg").html("&nbsp;Please describe your project").css("visibility", "visible");            
            }
        }
    );

    // when input DUE DATE lost focus validate the value 
    $j("#inputDue").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactDueErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactDueErrorMsg").html("&nbsp;Please include your due date").css("visibility", "visible");            
            }
        }
    );    
    // when input HUMAN lost focus validate the value 
    $j("#inputHuman").blur(
        function()
        {
            if(parseInt($j(this).val(), 10) == 4)
            {
                $j("#contactHumanErrorMsg").css("visibility", "hidden"); 
            } else
            {
                $j(this).css("border", "1px solid #FF0000");
                $j("#contactHumanErrorMsg").html("&nbsp;Please answer the security question").css("visibility", "visible");            
            }
        }
    );         
    
} // end of function setupInputControl















function setupSendButton()
{
    $j("#contactSendButton").click(
        function()
        {
            // prevent multiple send call by user
            if(true == g_blockSendButton)
            {
                return;
            }
            
            g_blockSendButton = true;
            // get all data from contact form and save it in local variables
            var inputName = $j("#inputName").val();
			var inputTitle = $j("#inputTitle").val();
			var inputSchool = $j("#inputSchool").val();
            var inputEmail = $j("#inputEmail").val();
			var inputPhone = $j("#inputPhone").val();
            var inputHear = $j("#inputHear").val();
			var inputOutsource = $j("#inputOutsource").val();
			var inputType = $j("#inputType").val();
            var inputDetails = $j("#inputDetails").val();
			var inputDue = $j("#inputDue").val();
            var inputHuman = $j("#inputHuman").val();
           
            // create regular expression object
            var regExp = new RegExp(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i);
            // check email address, if result is null the email string dont match to pattern
            var resultExp = regExp.exec(inputEmail);
            // check user answer, resultHuman = true if ok, false if answer is bad
            var resultHuman = parseInt(inputHuman, 10) == 4;
            // check the error by logical sum
            var error = (resultHuman != true) || (resultExp == null) || (inputName == "") || (inputTitle == "") || (inputSchool == "") || (inputEmail == "") || (inputPhone == "") || (inputHear == "") || (inputOutsource == "") || (inputType == "") || (inputDetails == "") || (inputDue == "");

            // if there was an error we must display some informotion and mark
            // input cotrol with wrong data    
            if(error)
            {                
                $j("#contactNameErrorMsg").css("visibility", "hidden");
				$j("#contactTitleErrorMsg").css("visibility", "hidden");
				$j("#contactSchoolErrorMsg").css("visibility", "hidden");
                $j("#contactEmailErrorMsg").css("visibility", "hidden");
				$j("#contactPhoneErrorMsg").css("visibility", "hidden");
				$j("#contactHearErrorMsg").css("visibility", "hidden");
				$j("#contactOutsourceErrorMsg").css("visibility", "hidden");
                $j("#contactTypeErrorMsg").css("visibility", "hidden");
                $j("#contactDetailsErrorMsg").css("visibility", "hidden");
				$j("#contactDueErrorMsg").css("visibility", "hidden");
                $j("#contactHumanErrorMsg").css("visibility", "hidden");
                $j("#contactErrorPanel").slideUp(300);
                
                // errors processing
                if(inputName == "")
                {
                    $j("#inputName").css("border", "1px solid #FF0000");
                    $j("#contactNameErrorMsg").html("&nbsp;Please include your name").css("visibility", "visible");
                }
				if(inputTitle == "")
                {
                    $j("#inputTitle").css("border", "1px solid #FF0000");
                    $j("#contactTitleErrorMsg").html("&nbsp;Please inlcude your title").css("visibility", "visible");
                }
				if(inputSchool == "")
                {
                    $j("#inputSchool").css("border", "1px solid #FF0000");
                    $j("#contactSchoolErrorMsg").html("&nbsp;Please include your school or team").css("visibility", "visible");
                }
                if(inputEmail == "")
                {
                    $j("#inputEmail").css("border", "1px solid #FF0000");
                    $j("#contactEmailErrorMsg").html("&nbsp;Please include your email address").css("visibility", "visible"); 
                } else                
                if(resultExp == null) 
                {
                    $j("#inputEmail").css("border", "1px solid #FF0000");
                    $j("#contactEmailErrorMsg").html("&nbsp;Sorry, but that's is not a valid email address").css("visibility", "visible");
                }
                if(inputPhone == "")
                {
                    $j("#inputPhone").css("border", "1px solid #FF0000");
                    $j("#contactPhoneErrorMsg").html("&nbsp;Please inlcude your phone number").css("visibility", "visible");
                }
				if(inputHear == "")
                {
                    $j("#inputHear").css("border", "1px solid #FF0000");
                    $j("#contactHearErrorMsg").html("&nbsp;Please tell us how you found Summit").css("visibility", "visible");
                }
				if(inputOutsource == "")
                {
                    $j("#inputOutsource").css("border", "1px solid #FF0000");
                    $j("#contactOutsourceErrorMsg").html("&nbsp;Please tell us if you outsource your design work").css("visibility", "visible");
                }
				if(inputType == "")
                {
                    $j("#inputType").css("border", "1px solid #FF0000");
                    $j("#contactTypeErrorMsg").html("&nbsp;What kind of project is this?").css("visibility", "visible"); 
                }
                if(inputDetails == "")
                {
                    $j("#inputDetails").css("border", "1px solid #FF0000");
                    $j("#contactDetailsErrorMsg").html("&nbsp;Please describe your project").css("visibility", "visible");
                }
				if(inputDue == "")
                {
                    $j("#inputDue").css("border", "1px solid #FF0000");
                    $j("#contactDueErrorMsg").html("&nbsp;Please include your due date").css("visibility", "visible");
                }
                if(resultHuman != true)
                {
                    $j("#inputHuman").css("border", "1px solid #FF0000");
                    $j("#contactHumanErrorMsg").html("&nbsp;Please answer the security question?").css("visibility", "visible"); 
                }
                // unblock send button
                g_blockSendButton = false;                
            } else // if no error, if all data is set correctly
            {
                // let's define function called after ajax successfull call 
                function phpCallback(data)
                {   
                    // if success        
                    if(data == "ok")
                    {   
                        $j("#contactErrorPanel").text("");            
                        $j("#contactErrorPanel").css("background-color", "#ccFFcc");
                        $j("#contactErrorPanel").append("Thank you for your quote request! Someone will get back with you soon.");
                        $j("#contactErrorPanel").css("border", "1px solid #339933");
                        $j("#contactErrorPanel").slideDown(300, function(){  g_blockSendButton = false;});
                        
                        $j("#inputName").val("");
						$j("#inputTitle").val("");
						$j("#inputSchool").val("");
                        $j("#inputEmail").val("");
                        $j("#inputPhone").val("");
						$j("#inputHear").val("");
						$j("#inputOutsource").val("");
						$j("#inputType").val("");
                        $j("#inputDetails").val("");
						$j("#inputDue").val("");
                        $j("#inputHuman").val(""); 
                    } else // if error/problem during email sending in php script
                    {
                        $j("#contactErrorPanel").text("");
                        $j("#contactErrorPanel").css("background-color", "#FFcccc");
                        $j("#contactErrorPanel").css("border", "1px solid #993333");
                        $j("#contactErrorPanel").append("There was an error sending your message. Please try again.");
                        $j("#contactErrorPanel").slideDown(300, function(){  g_blockSendButton = false;});               
                    }
                } // end of function phpCallback            
            
            
                // all data is correct so we can hide error/success panel
                $j("#contactErrorPanel").slideUp(300);
                
                // build data string for post call
                var data = "inputName="+inputName;
                data += "&"+"inputTitle="+inputTitle;
				data += "&"+"inputSchool="+inputSchool;
				data += "&"+"inputEmail="+inputEmail;
                data += "&"+"inputPhone="+inputPhone;
				data += "&"+"inputHear="+inputHear;
				data += "&"+"inputOutsource="+inputOutsource;
				data += "&"+"inputType="+inputType;
                data += "&"+"inputDetails="+inputDetails;
				data += "&"+"inputDue="+inputDue;
                
                // try to send email via php script executed by server
                $j.post("../php/quote/sendQuote.php", data, phpCallback, "text");
                // unblock send button
            } // end else all dara
        }
    );
} // end of function setupSendButton
    
/***************************************
    MAIN CODE - CALL THEN PAGE LOADED
****************************************/
       
// binding action to event onload page
$j(document).ready(
    function()
    {
        // common.js
        setupGlobal();
        setupCommunityButtons();            
        setupToolTipText();
        setupSearchBox();
        setupCufonFontReplacement();
        setupSideBarMiniSlider();
        setupMultiImageLightBox();
        setupSidebarTabsPanel();
        setupLoadingAsynchronousImages();
        setupToolTipImagePreview();
        setupTextLabelImagePreview();
        // this file
        setupInputControls();
        setupSendButton();
    }
);




    
