var reg_words = ['модель','модели','моделей'],
isIE = '\v'=='v';

function close_light()
{
	$('.more_models_div').hide();
	lparange.addClass('dhidden');
}
/**
 * Ajax menu pages load
 * @param but - clicked buton
 * @param to_open - is to open page window
 * @param to_up - is to scroll page top
 */
function click_menu(but,to_open,to_up,to_rozn)
{
    var but = (but.tagName.toLowerCase()=='div'?$(but).children():$(but)),
    to_up = to_up || false,
    to_rozn = to_rozn || false,
    to_open = to_open || false;
    if(but.parent().hasClass('enabled'))
    {
    	return false;
    }
    if(!to_open)
    {
    	page_div_ch.find('td.td_content').addClass('opac40');
    	$('#menu li.enabled span',page_div_ch).animate({width:'15px'},100).parent().toggleClass('enabled disabled');
    }
    $.post(but.attr('href'),{multipage:true,to_open:to_open},function(data){
    	 if(to_open)
    	 {
    	     page_div.show();
    	     parange.show();
	    	 page_div_ch.html(data);
	    	 if(to_rozn)
	    	 {
	    	     page_div.find('#tabs_ul li.year a[rel="2"]').addClass('rozn').click();
	    	 }
	    	 on_resize();
	    	 if(to_up)
	    	 {
	    	 	$('html,body').animate({scrollTop:0},100,'linear');
	    	 }
    	 }
    	 else
    	 {
    	 	 but.prev().animate({width:'200px'},100).parent().toggleClass('disabled enabled');
    	 	 page_div_ch.find('td.td_content').html(data).removeClass('opac40');
    	 }
    });
}

/**
 * Click menu href inside ajax page
 * @param but - if close-button or parange was clicked
 */
function click_menu_href(a)
{
    var h = $('.data #menu li a').filter('[href="'+base_url+$(a).attr('href')+'"]');
    if(h.length>0)
    {
        h.click();
        return false;
    }
    return true;
}

/**
 * Close page window and parange
 * @param but - if close-button or parange was clicked
 */
function fclose(but)
{
	var but = (but)?($(but)):false;
	if(but)
	{
		but.parent().hide();
	}
	else
	{
		page_div_ch.html('');
		page_div.hide();
	}
    parange.hide();
}

/**
 *  Send feedback form on zakaz.html
 */
function zakaz()
{
    if(send_but.hasClass('disabled'))
    {
        return false;
    }
    var fk = new Object();
    feedback.each(function(){
        fk[$(this).attr('name')] = $(this).val();
    });
    $.post(base_url+'feedback/send',{ feedback:fk},function(data){
        data = $.parseJSON(data);
        alert(data['message']);
        if(!data['success'])
        {
            return false;
        }
        feedback.val('').change();
    });
}

/**
 * Check if email is valid
 * @param email
 */
function isValidEmail (email)
{
    return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

/**
 * Check if is valid input on zakaz.html
 * @param but - curent input
 */
function ask_change(but)
{
	var val = $.trim($(but).val()),
    name = $(but).attr('name');
    if(name == 'email' && !isValidEmail(val))
    {
        val = '';
    }
    if(val.length < 2)
    {
        span_mess.filter('[name="'+name+'"]').removeClass('dhidden');
        var l = span_mess.filter('.dhidden').length;
        if(l==0) //one dhidden
        {
            comma_span.html(', ').show();
            and_span.show();
        }
        else if(l==1)
        {
            if((name=='email' || name == 'name') && span_mess.filter('[name="text"]').hasClass('dhidden'))
            {
                comma_span.html(' и').show();
            }
            else
            {
                and_span.show();
            }
        }
        else //no dhidden
        {
            td_mess.show();
        }
        send_but.addClass('disabled');
    }
    else
    {
        span_mess.filter('[name="'+name+'"]').addClass('dhidden');
        var l = span_mess.filter('.dhidden').length;
        
        if(l==1)
        {
            if(name=='email' || name == 'name')
            {
                comma_span.hide();
            }
            else
            {
                comma_span.html(' и');
                and_span.hide();
            }
        }
        else if(l==2)
        {
            comma_span.hide();
            and_span.hide();
        }
        else
        {
            td_mess.hide();
            send_but.removeClass('disabled');
        }
    }
}

/**
 * Send email on prices.html
 * @param action - current action
 */
function action_price(action)
{
	$.post(base_url+'catalog',{ action:action,email:email.val()},function(data){
		data = $.parseJSON(data);
		alert(data['message']);
		if(!data['success'])
		{
			return false;
		}
		email.val('').change();
	});
	
}

/**
 * Number - word function
 * @param c - number
 */
function reg_word(c)
{
    var cases = [2, 0, 1, 1, 1, 2];
    return reg_words[(c%100>4 && c%100<20) ? 2 : cases[Math.min(c%10, 5)]];
}

/**
 * Set absolute div position
 * @param e - event object
 * @param o_x - 'margin-left'
 * @param o_y - 'margin-top'
 */
function set_preview_pos(e,o_x,o_y,but)
{
    var o_x = o_x||15,
    o_y = o_y||15,
    but = but||dop_info,
    e_x = e.pageX,
    e_y = e.pageY,
    w_h = $(document).scrollTop() + $(window).height(),
    w_w = $(document).scrollLeft() + $(window).width();
    if(w_h - (e_y + o_y*2 + but.height()) < 0)
    {
        o_y = - (o_y + but.height());
    }
    
    if(w_w - (e_x + o_x*2 + but.width()+10) < 0)
    {
        o_x = - (o_x + but.width()+20);
    }
    but.css('top',(e_y + o_y) + 'px').css('left', (e_x + o_x) + 'px');
    return true;
}

/**
 * Ajax get catalog items list
 * @param is_r - if filter params were changed (default:false is scroll page)
 */
function add_items(is_r)
{
	var is_r = is_r || false;
    page++;
    if(is_r)
    {
	    catalog_list.addClass('opac40');
	    if(par_brends.hasClass('fixed'))
	    {
	    	$('html,body').animate({scrollTop:scrltop},100,'linear');
	    	par_brends.removeClass('fixed').addClass('relative');
	    	left_block.removeClass('lfixed');
	    }
    }
    $.post(base_url+'catalog/'+current_cat,{ action:'page',id_parent:id_parent,page:page,models:models,original:is_origin,name:search_name,'new':is_new},function(data){
    	if(is_r)
    	{
    		catalog_list.html(data).removeClass('opac40');
    	}
   	    else
    	{
            catalog_list.append(data);
    	}
    	var l = 0;
    	for(var i in models)
	    {
    	    l++;
    	    break;
	    }
    	(l==0?$($('#clean_pop_brends').hide()):($('#clean_pop_brends').show()));
        if(data.length != 0)
        {
        	resize_image();
            doc_height = $(document).height();
	    	on_resize();
            is_reload = false;
        }
    });
}

/**
 * Managers show/hide function
 * @param but - clicked button
 */
function toggle_left(but)
{
    var par = $(but).parent();
    var ico = $(but).children('.ico_close');
	function _toggle_left(){
        dop_info.hide();
        if(par.hasClass('ofhidden'))
        {
            par.css('z-index',1000).animate({ width:'204px'},100).removeClass('ofhidden').children('.manager_list').show();
            ico.show();
        }
        else
        {
            par.animate({ width:'31px'},100).addClass('ofhidden').css('z-index',100).children('.manager_list').hide();
            ico.hide();
        }
    };
    
	if(act){
	    var int_id = setInterval(function(){if(interval_id==0){ _toggle_left(); clearInterval(int_id); }},560);
    }else{
    	_toggle_left();
    }
}

/**
 * View managers mail and icq
 * @param but - clicked manager
 * @param e - event object
 */
function get_dop_info(but,e)
{
    var icq = but.attr('icq'),
    mail = but.attr('mail'),
    skype = but.attr('skype');
    if(mail!=undefined)
    {
        info.height(55).find('.mail').show().children('a').attr('href','mailto:'+mail).text(mail);
    }
    else
    {
        info.height(35).find('.mail').hide();
    }
    if(skype!=undefined)
    {
        info.height(55).find('.skype').css('backgroundImage','url('+skype_bg+skype+')').show().children().attr('href','skype:'+skype+'?chat').text(skype);
    }
    else
    {
        info.height(35).find('.skype').hide();
    }
    info.find('.icq').css('background-image',bg_url+icq+'&img=5)').children().attr('href',icq_url+icq).text(icq);
    dop_info.html(info.html()).show();
    set_preview_pos(e,20,-60);
}

/**
 * Models filter click
 * @param but - clicked button
 */
function to_choose(but)
{
    if(but.attr('id')=='choose_add')
    {
    	choose_add_filter();
    	return false;
    }
	var div_p = but.parent().parent(),
    c = 0,
    ch_par = 0,
    cval = 0,
    is_add = typeof(but.attr('add'))!='undefined',
    is_catalog = typeof(but.attr('cat'))!='undefined',
    m = is_catalog?models:new Object(),
    mes = '';
    div_p.find('input[type="checkbox"]').each(function(i){
        if(i==0)
        {
            ch_par = $(this).attr('parent');
        }
        cval = $(this).val();
        if($(this).attr('checked'))
        {
            mes += $(this).attr('rel')+', ';
            c++;
            m[cval] = cval;
            if(is_catalog)
            {
            	all_brends.find('.td_info input[value="'+cval+'"]').attr('checked','checked');
            }
        }
        else if(is_catalog)
        {
            delete(m[cval]);
            all_brends.find('.td_info input[value="'+cval+'"]').removeAttr('checked');
        }
    });
    if(is_catalog)
    {
        models = m;
        (c>0)?delete(models[ch_par]):(models[ch_par]=ch_par);
        all_brends.find('tr[num="'+ch_par+'"]').addClass('is_changed').find('a.to_choose').click();
        if(!to_block)
        {
            page = 0;
            add_items(true);
        }
    }
    if(c > 0)
    {
        mes = mes.substr(0,mes.length-2);
        div_p.next().removeClass('dhiddeni').children('.data').html(mes);
        div_p.prev().html('<span>Вы выбрали '+c+' '+reg_word(c)+'</span>').removeClass('dhidden').prev().addClass('dhidden');
    }
    else
    {
        div_p.prev().addClass('dhidden').prev().removeClass('dhidden');
        div_p.next().addClass('dhiddeni');
    }
    if(is_add)
    {
    	but.parents('.chk_t').addClass('is_changed');
    }
    div_p.hide();
    lparange.addClass('dhidden');
}

/**
 * Add catalog filter choose
 */
function choose_add_filter()
{
	to_block = true;
	is_reload = true;
	var c = 0,k=0,is_in10 = false,rel,prel,checked,pb_ch = pop_brends.find('.pop_models');
	/*
	pb_ch.filter(':checked')
		.removeAttr('checked')
		.parents('.td_info')
		.children('div')
		.addClass('dhidden')
		.find('a.to_clean')
		.click();
	models = {};
	* */
    all_brends.find('.is_changed input.add_pop_models').each(function(){
    	var cur = $(this);
    	checked = cur.attr('checked');
    	is_in10 = cur.hasClass('first10');
		prel = cur.attr('rel');
		if(checked)
		{
	    	all_brends.find('tr[num="'+prel+'"] .td_info input').each(function(){
	    		rel = $(this).val();
	    		if($(this).attr('checked'))
	    		{
		    		models[rel] = rel;
			    	if(is_in10)
			    	pop_brends.find('.td_info input[value="'+rel+'"]').attr('checked','checked');
		    		c++;
	    		}
	    		else
	    		{
	    			delete(models[rel]);
	    			if(is_in10)
	    			pop_brends.find('.td_info input[value="'+rel+'"]').removeAttr('checked');
	    		}
	    	});
	    	if(c === 0)
	    	{
	    		models[prel] = prel;
	    	}
	    	else
	    	{
	    		delete(models[prel]);
	    	}
	    	if(is_in10)
	    	{
		    	pb_ch.filter('[rel="'+prel+'"]').attr('checked','checked').triggerHandler('click');
	    		pop_brends.find('.td_info[num="'+prel+'"] a.to_choose').click();
	    	}
		}
		else
		{
			all_brends.find('tr[num="'+prel+'"] .td_info input').each(function(){
				delete(models[$(this).val()]);
			});
			if(is_in10)
            {
                pb_ch.filter('[rel="'+prel+'"]').removeAttr('checked').triggerHandler('click');
            }
			delete(models[prel]);
		}
    	k++;
    	c = 0;
    });
    if(k!=0)
    {
	    page = 0;
	    add_items(true);
    }
	all_brends.hide();
	to_block = false;
    //is_reload = false;
}

/**
 * Open add catalog filter
 */
function open_add_filter()
{
	all_brends.find('tr.is_changed').removeClass('is_changed');
	all_brends.show();
}

/**
 * Parange resize function
 */
function on_resize()
{
	var man_h = manager.height(),
    w_h = $(window).height();
    if(200+man_h-w_h>0)
    {
        manager.css('top',(w_h-man_h-2)+'px');
    }
    else
    {
        manager.css('top','200px');
    }
    parange.height($(document).height());
    //parange.width($(window).width());	
}

/**
 * Catalog add filter checkbox click
 * @param but - clicked checkbox
 */
function pop_click(but)
{
   var but = $(but),	
   rel = but.attr('rel'),
   checked = but.attr('checked');
   is_reload = true;
   if(checked)
   {
       but.parents('.td_info').children('div').removeClass('dhidden');
       models[rel] = rel;
   }
   else
   {
   	   if(!to_block)
   	   {
	       to_block = true;
	       but.parents('.td_info').children('div').addClass('dhidden').find('a.to_clean').click();
	       to_block = false;
   	   }
   	   else
   	   {
   	   	   but.parents('.td_info').children('div').addClass('dhidden').find('a.to_clean').click();
   	   }
       delete(models[rel]);
   }
   if(!to_block)
   {
       page = 0;
       add_items(true);
       is_reload = false;
       if(checked)
       {
           all_brends.find('input.add_pop_models[rel="'+rel+'"]').attr('checked','checked').triggerHandler('click');
	   }
	   else
	   {
           all_brends.find('input.add_pop_models[rel="'+rel+'"]').removeAttr('checked').triggerHandler('click');
       }
   }
}

function resize_image()
{
	$('img[rel="new"]',catalog_list).load(function(){
	    var img = $(this),w=img.width();
	    if(w>70)
	    {
	        img.css('right',((w-70)/2)+'px');
	    }
	    img.removeAttr('rel');
    });
}

function setCookie(name, value, expires, path, domain) {
    document.cookie = name+ "="+ escape(value)+ ((expires) ? "; expires="+ expires : "")+ ((path) ? "; path=" + path : "")+ ((domain) ? "; domain="+ domain : "");
}

function getCookie(name, default_val) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = default_val || null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0){
        offset = cookie.indexOf(search);
        if (offset != -1){
            offset += search.length;
            end = cookie.indexOf(";", offset);
            if (end == -1) {
                end = cookie.length;
            }
            
            setStr = unescape(cookie.substring(offset, end));
        }
    }
        
    return(setStr);
}
