/********************************************************************
    File:   
        contact.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)
        sendMessage.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;

var g_strBadName = 'please insert your name';
var g_strBadMailFormat = 'sorry, but the email addres have bad format';
var g_strBadMail = 'please insert your email adress';
var g_strBadSubject = 'you forgot to write an email subject';
var g_strBadMessage = 'please input some text which you want send to us';
var g_strBadHuman = 'you really dont know?';
var g_messageErrorColor = '#AA0000';


var g_markControlsOnFocus = true;
var g_markColor = '#3399cc';
var g_markErrorColor = '#FF0000';
var g_markControlsOnError = true;

var g_panelBgColorOK = '#ccFFcc';
var g_panelBorderColorOK = '#339933';
var g_panelTextColorOK = '#000000';
var g_panelSendOK = 'Yor email was sended.'; 

var g_panelBgColorError = '#FFcccc';
var g_panelBorderColorError = '#993333';
var g_panelTextColorError = '#000000';
var g_panelSendError = 'There was an error during email sending.';

var g_humanAnswer = '4';
var g_emailAddress = 'piotrbesta@o2.pl'; 

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

function setupInputControls()
{

        // change border color when controls take focus
        $j(".commonInput, .commonTextarea, .contactInputHuman").focus(
            function()
            {
                if(g_markControlsOnFocus != false)
                {
                    $j(this).css("border", "1px solid "+g_markColor);
                }
            }
        );  
    
    // 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
            {
                if(g_markControlsOnError)
                {
                    $j(this).css("border", "1px solid "+g_markErrorColor);
                }
                $j("#contactNameErrorMsg").css('color', g_messageErrorColor).html(g_strBadName).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) 
                {
                    if(g_markControlsOnError)
                    {                
                        $j(this).css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactEmailErrorMsg").css('color', g_messageErrorColor).html(g_strBadMailFormat).css("visibility", "visible");
                } else
                {
                    $j("#contactEmailErrorMsg").css("visibility", "hidden");
                }
                
            } else
            {
                if(g_markControlsOnError)
                {            
                    $j(this).css("border", "1px solid "+g_markErrorColor);
                }
                $j("#contactEmailErrorMsg").css('color', g_messageErrorColor).html(g_strBadMail).css("visibility", "visible"); 
            }
        }
    );
    
    // when input subject lost focus validate the value 
    $j("#inputSubject").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactSubjectErrorMsg").css("visibility", "hidden"); 
            } else
            {
                if(g_markControlsOnError)
                {            
                    $j(this).css("border", "1px solid "+g_markErrorColor);
                }
                $j("#contactSubjectErrorMsg").css('color', g_messageErrorColor).html(g_strBadSubject).css("visibility", "visible");            
            }
        }
    );    

    // when input message lost focus validate the value 
    $j("#inputMessage").blur(
        function()
        {
            if($j(this).val() != "")
            {
                $j("#contactMessageErrorMsg").css("visibility", "hidden"); 
            } else
            {
                if(g_markControlsOnError)
                {            
                    $j(this).css("border", "1px solid "+g_markErrorColor);
                }
                $j("#contactMessageErrorMsg").css('color', g_messageErrorColor).html(g_strBadMessage).css("visibility", "visible");            
            }
        }
    );
    
    // when input human lost focus validate the value 
    $j("#inputHuman").blur(
        function()
        {
            if($j(this).val() == g_humanAnswer)
            {
                $j("#contactHumanErrorMsg").css("visibility", "hidden"); 
            } else
            {
                if(g_markControlsOnError)
                {            
                    $j(this).css("border", "1px solid "+g_markErrorColor);
                }
                $j("#contactHumanErrorMsg").css('color', g_messageErrorColor).html(g_strBadHuman).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 inputEmail = $j("#inputEmail").val();
            var inputSubject = $j("#inputSubject").val();
            var inputMessage = $j("#inputMessage").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 = (inputHuman == g_humanAnswer);
            // check the error by logical sum
            var error = (resultHuman != true) || (resultExp == null) || (inputName == "") || (inputEmail == "") ||
                (inputSubject == "") || (inputMessage == "");

            // 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("#contactEmailErrorMsg").css("visibility", "hidden");
                $j("#contactSubjectErrorMsg").css("visibility", "hidden");
                $j("#contactMessageErrorMsg").css("visibility", "hidden");
                $j("#contactHumanErrorMsg").css("visibility", "hidden");
                $j("#contactErrorPanel").slideUp(300);
                
                // errors processing
                if(inputName == "")
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputName").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactNameErrorMsg").css('color', g_messageErrorColor).html(g_strBadName).css("visibility", "visible");
                }
                if(inputEmail == "")
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputEmail").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactEmailErrorMsg").css('color', g_messageErrorColor).html(g_strBadMail).css("visibility", "visible"); 
                } else                
                if(resultExp == null) 
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputEmail").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactEmailErrorMsg").css('color', g_messageErrorColor).html(g_strBadMailFormat).css("visibility", "visible");
                }
                if(inputSubject == "")
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputSubject").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactSubjectErrorMsg").css('color', g_messageErrorColor).html(g_strBadSubject).css("visibility", "visible"); 
                }
                if(inputMessage == "")
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputMessage").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactMessageErrorMsg").css('color', g_messageErrorColor).html(g_strBadMessage).css("visibility", "visible");
                }
                if(resultHuman != true)
                {
                    if(g_markControlsOnError)
                    {                
                        $j("#inputHuman").css("border", "1px solid "+g_markErrorColor);
                    }
                    $j("#contactHumanErrorMsg").css('color', g_messageErrorColor).html(g_strBadHuman).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", g_panelBgColorOK);
                        $j("#contactErrorPanel").css("color", g_panelTextColorOK); 
                        $j("#contactErrorPanel").css("border", "1px solid "+g_panelBorderColorOK);                        
                        $j("#contactErrorPanel").append(g_panelSendOK);                        
                        $j("#contactErrorPanel").slideDown(300, function(){  g_blockSendButton = false;});
                        
                        $j("#inputName").val("");
                        $j("#inputEmail").val("");
                        $j("#inputSubject").val("");
                        $j("#inputMessage").val("");
                        $j("#inputHuman").val(""); 
                    } else // if error/problem during email sending in php script
                    {
                        $j("#contactErrorPanel").text("");
                        $j("#contactErrorPanel").css("background-color", g_panelBgColorError);
                        $j("#contactErrorPanel").css("color", g_panelTextColorError);
                        $j("#contactErrorPanel").css("border", "1px solid "+g_panelBorderColorError);
                        $j("#contactErrorPanel").append(g_panelSendError);
                        $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 += "&"+"inputEmail="+inputEmail;
                data += "&"+"inputSubject="+inputSubject;
                data += "&"+"inputMessage="+inputMessage;
                data += "&"+"emailAddress="+g_emailAddress; 
                
                // try to send email via php script executed by server
                $j.post(g_themePathWP+"/php/contact/sendMessage.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();        
        setupToolTipText();
        setupSearchBox();
        setupCufonFontReplacement();
        setupSideBarMiniSlider();
        setupMultiImageLightBox();
        setupSidebarTabsPanel();
        setupLoadingAsynchronousImages();
        setupToolTipImagePreview();
        setupTextLabelImagePreview();
        // this file
        setupInputControls();
        setupSendButton();
    }
);




    
