var user = false;

window.onload = function ()
{
    if (! navigator.cookieEnabled && window.location.toString().indexOf('/error') == -1) {
    	window.location = '/error/cookies/'
	}
	var image = new Image(32, 32);
    image.src = '/i/splash.gif';
    document.getElementById('container').style.display = 'block';
    //document.getElementById('tail').style.display = 'block';
}

function submitLoginForm()
{
    var frm = document.getElementById('login_form');

    showSplash(document.getElementById('user_area'));
    new Ajax.Request('/login/',
    {
        method: 'post',
        parameters: {user_login: frm.elements['user_login'].value, user_password: frm.elements['user_password'].value},
        onSuccess: function(transport)
        {
            var response = transport.responseText.evalJSON() || "Ошибка";
            if (response.status == 'success') {
                window.location.reload();
            } else {
                var messages = showSubmitResult(response, false, frm);
                if (messages) {
                    hideSplash(document.getElementById('user_area'));
                    alert(messages);
                }
            }
        },
        onFailure: function()
        {
            var messagesContainer = document.getElementById(messageId);
            messagesContainer.innerHTML = 'Ошибка';
        },
        onComplete: function()
        {
            hideSplash(document.getElementById('user_area'));
        }
    });
}

function checkCurrentUser() {
    if (document.getElementById('user_name')) {
        res = true;
    } else {
        res = false;
    }
    
    return res;
}

function replaceContent(container, url)
{
    new Ajax.Request(url,
    {
        onSuccess: function(transport)
        {
            var response = transport.responseText || "Ошибка";
            container.innerHTML = response;
        },
        onFailure: function()
        {
            var messagesContainer = document.getElementById(id);
            container.innerHTML = 'Ошибка';
        }
    });
}

function showSplash(container)
{
    container.style.visibility = 'hidden';
    container.parentNode.style.backgroundImage = "url('/i/splash.gif')";
    container.parentNode.style.background = "url('/i/splash.gif') no-repeat 50% 50%";
}

function hideSplash(container)
{
    container.parentNode.style.background = 'none';
    container.style.visibility = 'visible';
}

function showSubmitResult(response, container, form)
{
    ret = false;
    if (response.status == 'highlight') {
        ret = hightlightForm(response.fields, container, form);
    } else {
        showMessages(response.fields, container)
    }
    
    if (response.status == 'success') {
        clearForm(form);
    }
    return ret;
}

function showMessages(messages, container)
{
    var i = 0;
    while (message = messages[i]) {
        var span = document.createElement('span');
        if (message.type == 'error') {
            span.className = 'error';
        } else if(message.type == 'message') {
            span.className = 'message';
        }
        span.innerHTML = message.text;
        container.appendChild(span);
        i++;
    }
    container.parentNode.style.display = 'block';
}

var oldClasses = new Array();
function hightlightForm(fields, container, form)
{
	if (oldClasses.length == 0) {
		for (i = 0; i < form.elements.length; i++) {
			oldClasses[i] = form.elements[i].className;
		}
	}
    for (i = 0; i < form.elements.length; i++) {
        var element = document.getElementById(form.elements[i].name);
        if (element) {
        	if (! oldClasses[i]) {
        		oldClasses[i] = '';
        	}
          	element.className = oldClasses[i];
        }
    }

    var i = 0;
    var str = '';
    while (row = fields[i]) {
    	oldClasses[i] = document.getElementById(row.field).className;
        document.getElementById(row.field).className = 'highlight';
        str = str + row.text + '\n';
        i++;
    }
    
    if (str.length > 0) {
        return str;
    } else {
        return false;
    }
}

function clearForm(form)
{
    for (i = 0; i < form.elements.length; i++) {
        var element = document.getElementById(form.elements[i].name);
        if (element) {
            element.className = oldClasses[i];
            element.value = '';
        }
    }
}

function isErrors(messages)
{
    var i = 0;
    while (message = messages[i]) {
        if (message.type == 'error') {
            return true;
        }
        i++
    }
    return false;
}

function setNewProtectImage() {
    new Ajax.Request('/generate-protect-image/',
    {
        onSuccess: function(transport, protectImage)
        {
            imageData = transport.responseText.evalJSON();
            var image = document.getElementById('protect_image');
            image.src = imageData.url;
        },
        onFailure: function()
        {
            var messagesContainer = document.getElementById(messageId);
            messagesContainer.innerHTML = 'Ошибка';
        }
    });
}

// User area functions
function setUserAreaUserName(value)
{
    document.getElementById('user_name').firstChild.nodeValue = value;
}

function setUserAreaBasketCount(value)
{
    document.getElementById('basket_count').firstChild.nodeValue = value + ' шт.';
}

function getUserAreaBasketCount()
{
    var text = document.getElementById('basket_count').firstChild.nodeValue;
    return parseInt(text);
}

function increaseUserAreaBasketCount()
{
    setUserAreaBasketCount(getUserAreaBasketCount() + 1);
}

function setUserAreaBasketTotal(value)
{
    document.getElementById('basket_total_cost').firstChild.nodeValue = value + ' р.';
}

function getUserAreaBasketTotal()
{
    var text = document.getElementById('basket_total_cost').firstChild.nodeValue;
    return parseInt(text);
}

function openPopup(id, event)
{
	var popup = document.getElementById(id);
	if (popup.style.visibility == 'hidden') {
		popup.style.visibility = 'visible';
		popup.style.display = 'block';
		//popup.style.top = Event.pointerY(event) - 300 + 'px';
		//popup.style.left = Event.pointerX(event) + 'px';
	}
}

function closePopup(id)
{
	var popup = document.getElementById(id);
	if (popup.style.visibility == 'visible') {
	 	popup.style.visibility = 'hidden';
		popup.style.display = 'none';
	}
}

// The following block implements the string.evalJSON method
(function (s) {
  // This prototype has been released into the Public Domain, 2007-03-20
  // Original Authorship: Douglas Crockford
  // Originating Website: http://www.JSON.org
  // Originating URL    : http://www.JSON.org/JSON.js

  // Augment String.prototype. We do this in an immediate anonymous function to
  // avoid defining global variables.

  // m is a table of character substitutions.

  var m = {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '"' : '\\"',
    '\\': '\\\\'
  };

  s.evalJSON = function (filter) {

    // Parsing happens in three smessagesContaineres. In the first smessagesContainere, we run the text against
    // a regular expression which looks for non-JSON characters. We are especially
    // concerned with '()' and 'new' because they can cause invocation, and '='
    // because it can cause mutation. But just to be safe, we will reject all
    // unexpected characters.

    try {
      if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
        test(this)) {

          // In the second smessagesContainere we use the eval function to compile the text into a
          // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
          // in JavaScript: it can begin a block or an object literal. We wrap the text
          // in parens to eliminate the ambiguity.

          var j = eval('(' + this + ')');

          // In the optional third smessagesContainere, we recursively walk the new structure, passing
          // each name/value pair to a filter function for possible transformation.

          if (typeof filter === 'function') {

            function walk(k, v) {
              if (v && typeof v === 'object') {
                for (var i in v) {
                  if (v.hasOwnProperty(i)) {
                    v[i] = walk(i, v[i]);
                  }
                }
              }
              return filter(k, v);
            }

            j = walk('', j);
          }
          return j;
        }
      } catch (e) {

      // Fall through if the regexp test fails.

      }
      throw new SyntaxError("evalJSON");
    };
  }
) (String.prototype);


function submitSearch() {
    if (document.getElementById('search_form').elements['search'].value != 'поиск по сайту') {
        document.getElementById('search_form').submit();
    }
}

function clearSearchBox() {
    if (document.getElementById('search_form').elements['search'].value == 'поиск по сайту') {
        document.getElementById('search_form').elements['search'].value = '';
    }
}

function fillSearchBox() {
    if (document.getElementById('search_form').elements['search'].value == '') {
        document.getElementById('search_form').elements['search'].value = 'поиск по сайту';
    }
}

function reg_show_old() {
    $('#new_user').find('input, textarea').attr('disabled', 'disabled');
    $('#old_user').find('input, textarea').attr('disabled', '');

    $('#new_user').addClass('hidden');
    $('#old_user').removeClass('hidden');
}

function reg_show_new() {
    $('#new_user').find('input, textarea').attr('disabled', '');
    $('#old_user').find('input, textarea').attr('disabled', 'disabled');

    $('#new_user').removeClass('hidden');
    $('#old_user').addClass('hidden');
}

