var matchClassName = function (node, className){
    try {
        var re = new RegExp ("\\b" + className + "\\b", "gi");
        return ( node.className.match(re)); 
    } catch ( e ) {return}
}


var applyClassName = function (node, className, state ){
    try {

        var re = new RegExp ("\\b" + className + "\\b", "gi");
        if ( state ) {
            if ( !node.className.match(re) ) node.className += (" " + className); 
        }else{
            node.className = node.className.replace(re, "");
            node.className = node.className.replace(/\s+/gi, " ");
        }
    } catch ( e ) {}
}

var dispatchEventForElement = function ( node, eventType ) {
    try {

        if(!node.fireEvent){
            var evt = document.createEvent("MouseEvents");
            evt.initMouseEvent(eventType, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            node.dispatchEvent(evt)
        }else{
            node.fireEvent("on"+eventType);
        }
    } catch ( e ) {}
}


var getElementsByClassName = function ( container, className ) {

    var tmpArr = [];
    try {
        var nodeList = container.getElementsByTagName( "*" );
        var i = nodeList.length;
        do {
            if ( matchClassName( nodeList.item( i-1 ), className ) ) tmpArr.push( nodeList.item( i-1 ) );
        } while ( --i );
    } catch ( e ) {};
    return tmpArr;    
}


var getInnerText = function ( node ) {
    try {
        if ( node.innerText ) return node.innerText;
        else 
        {
            var range = document.createRange( );
            range.selectNodeContents ( node );
            return range.toString();;
        }

    } catch ( e ) { }    
}




        var tabInit = function ( tabBoxID, tabSwitchContainerID, switchID, activityID, initHandler ) {
            try {
                var tabBoxNode = document.getElementById( tabBoxID );
                var tabSwitchContainer = document.getElementById( tabSwitchContainerID );
                var switchNodesList = getElementsByClassName ( tabBoxNode, switchID );

                var activeTab = switchNodesList[ 0 ];
                                                          
                for ( var i = switchNodesList.length; i--; ) {

                
                    switchNodesList[ i ].options = { 
                            linkedNode: switchNodesList[ i ].parentNode,
                            tabSwitchContainer: tabSwitchContainer,
                            switchID: switchID,
                            activityID: activityID
                    }

                    tabSwitchContainer.appendChild ( switchNodesList[ i ] ); 
                    if ( matchClassName ( switchNodesList[ i ], activityID ) ) activeTab = switchNodesList[ i ];
                }

    
                dispatchEventForElement ( activeTab, "click" );

                if ( initHandler ) initHandler ( switchNodesList )

            } catch ( e ) {alert( "Sorry, an error occured." )}
        }

        var switchTab = function ( node ) {
            try {

                if ( !node.options ) {
                    do{
                        node = node.parentNode;
                    } while ( !node.options )
                }
    
                var opts = node.options;
                var tabSwitchList = getElementsByClassName( opts.tabSwitchContainer, opts.switchID );

                for ( var i=tabSwitchList.length; i--; ) {
                    applyClassName ( tabSwitchList[ i ], opts.activityID, tabSwitchList[ i ] == node );
                    applyClassName ( tabSwitchList[ i ].options.linkedNode, "hiddenBlock", tabSwitchList[ i ] != node );
                }

                
            } catch ( e ) {alert( "Sorry, an error occured." )};
        }              

var switchNodeVisibility = function( id ){
	try {
		var tmpNode = document.getElementById( id );
		var removeClassName = ( !matchClassName( tmpNode, "hiddenBlock" ) );
		applyClassName( tmpNode, "hiddenBlock", removeClassName );
	} catch ( e ) {} 
}

function startUpload(){
      document.getElementById('f1_upload_process').style.visibility = 'visible';
      document.getElementById('f1_upload_form').style.visibility = 'hidden';
      return true;
}

function stopUpload(success){
      var result = '';
      if (success == 1){
         result = '<br/><br/><strong class="revresult">Спасибо, за ваш отзыв.<\/strong><br/><br/>\n\
                <a href="javascript:closeReviewForm();" onclick="closeReviewForm();" id="revClose">закрыть</a><br/><br/>';
      }
      else {
         result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
      }
      document.getElementById('f1_upload_process').style.visibility = 'hidden';
      document.getElementById('revHeader').style.visibility = 'hidden';
      document.getElementById('reviewRes').innerHTML = result;
      document.getElementById('f1_upload_form').style.visibility = 'visible';      
      return true;   
}

function clearElement(elementName){
    document.getElementById(elementName).innerHTML = '';
}
function clearValue(elementName){
    if ((elementName == 'name')&&(document.getElementById(elementName).value == 'Ваше имя *')){
           document.getElementById(elementName).value = '';
    }
    if ((elementName == 'email')&&(document.getElementById(elementName).value == 'Ваш e-mail *')){
           document.getElementById(elementName).value = '';
    }
    if ((elementName == 'phone')&&(document.getElementById(elementName).value == 'Ваш телефон')){
           document.getElementById(elementName).value = '';
    }
    if ((elementName == 'reviewText')&&(document.getElementById(elementName).value == 'Ваш отзыв *')){
           document.getElementById(elementName).value = '';
    }
    
}
function showError(elementName, text){
    document.getElementById(elementName).innerHTML = text;
}
function trim(value){
    reg = /^\s*(.+?)\s*$/;
    return value.replace(reg,'$1');
}
function showReviewForm(){
    document.getElementById('review_wrapper').style.display = 'block';
}
function closeReviewForm(){
    document.getElementById('review_wrapper').style.display = 'none';
}
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");s
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
function checkcap(){
    var xmlhttp = getXmlHttp();
    var cod = document.getElementById('code').value;
    var params = 'code=' + cod;
    xmlhttp.open('GET', '/otziv/checkCap.php?'+params, true);
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4) {
         if(xmlhttp.status == 200) {
            updateText(xmlhttp.responseText);
         }
      }
    };
    xmlhttp.send(null);
}
function updateText(result){
    if (result == 0){
        showError('code_error','Вы не правильно ввели код.');
        document.getElementById('captchaIMG').src = 'otziv/captcha.php?' + Math.random();
        return 0;
    }else{
        document.forms["reviewForm"].submit();
        startUpload();
        return 1;
    }
}
function validateReviewForm(){
    var vError = false;
    //name
    clearValue('name');
    clearValue('email');
    clearValue('reviewText');
    var name = document.getElementById('name').value;
    if (trim(name)== ''){
        vError = true;
        showError('name_error', 'Поле "Имя" обязательно для заполнения');
    }
    //email
    var email = document.getElementById('email').value; 
    if (trim(email)==''){
       vError = true;
       showError('email_error','Поле "email" обязательно для заполнения');
    }else{
        var regEmail = /^[a-z\d\.\-_]+@[a-z\d\.\-_]{2,}\.[a-z]{2,10}$/i;
        if (regEmail.test(email)){
            clearElement('email_error');
        }else{
            vError = true;
            showError('email_error','Неккоректный e-mail');
        }
    }
    //reviewText
    var reviewText = document.getElementById('reviewText').value;
    if (trim(reviewText) == ''){
        vError = true;
        showError('reviewText_error', 'Поле "отзыв обязательо для заполнения"');
    }
    if (!vError){
        
        checkcap();
    }
    
}
