var Ofme = {

    comparison : {
        add : function(goodId, from) {
            Comparison.add(goodId);
            var _button, _message;
            
            switch(from) {
                case 'details' :
                    _button = jQuery('#good_details_comparison_'+goodId);
                    _message = '<div class="b-good-details-comparison" id="good_details_comparison_'+goodId+'">В сравнении</div>';
                    break;
                
                case 'history' :
                    _button = jQuery('#details_history_comparison_'+goodId);
                    _message = '<span class="aa1_2">В сравнении</span>';
                    break;
                    
                case 'related' :
                    _button = jQuery('#details_related_comparison_'+goodId);
                    _message = '<span class="aa1_2">В сравнении</span>';
                    break;     
            }       
                        
            if (_button.size() > 0) {
                _button.replaceWith(_message);
            }
        },
        
        check : function(goodId) {
            var cache = {
                'good_details_comparison_' : '<a class="a1" href="javascript:void(0)" onclick="Ofme.comparison.add('+goodId+', \'details\')" id="good_details_comparison_'+goodId+'">Сравнить</a>'    
            };
                                  
            jQuery.each(cache, function(k, v) {
                var elem = k+''+goodId;
                            
                if (jQuery('#'+elem).size()) {
                    jQuery('#'+elem).replaceWith(v);
                } 
                
                elem = null;
            }); 
        }
    },

    media : {
    
        cache : [],
    
        loadCss : function(filename) {
            if (Ofme.media.cache.length) {
                if (jQuery.inArray(filename, Ofme.media.cache) !== 1) {
                    return;
                }
            }
        
            var link = jQuery('<link>');
                
            link.attr({
                type : 'text/css',
                rel  : 'stylesheet',
                href : Env.css_url + filename
            });
            
            jQuery('head').append( link );
                        
            Ofme.media.cache.push( filename );
        },
        
        clear : function() {
            Ofme.media.cache = [];
        }
        
    }, 

    forms : {
    
        callmeProcess : function() {
            var
                call_name    = jQuery('#call_name'),
                call_phone   = jQuery('#call_phone'),
                call_subject = jQuery('#call_subject');
                
            if (jQuery.trim(call_name.val()).length <= 0) {
	        jQuery.notifier.error('Ошибка', 'Пожалуйста, введите Ваше имя');
	            call_name.focus();
	               return false;
	    } else if (jQuery.trim(call_name.val()).length > 100) {
	        jQuery.notifier.error('Ошибка', 'Извините, но Ваше имя слишком длинное, пожалуйста сократите его.');
	            call_name.focus();
	                return false;   
	    } else if (jQuery.trim(call_phone.val()).length <= 0) {
	        jQuery.notifier.error('Ошибка', 'Пожалуйста, введите Ваш номер телефона');
	            call_phone.focus();
	                return false;      
	    } else if (jQuery.trim(call_phone.val()).length > 100) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, введите корректный номер телефона');
                    call_phone.focus();
	                return false;          
            } else if (jQuery.trim(call_subject.val()).length <= 0) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, введите тему разговора сообщения');
                    call_subject.focus(); 
                        return false;       
            } else if (jQuery.trim(call_subject.val()).length > 5000) {
                jQuery.notifier.error('Ошибка', 'Извините, но тема для разговора слишком длинная. Пожалуйста, сократите её');
                    call_subject.focus(); 
                        return false;        
            } else {
                jQuery.post(Env.base_url+'contact/callme/', {'name':call_name.val(), phone:call_phone.val(), subject:call_subject.val(),action:'callme','do':'send',form:'callme'},
                        function(json) {
                            try {
                                if (json.status.toLowerCase() === 'error') {
                                    jQuery.notifier.error('Ошибка', json.message);
                                        return false;
                                } else {
                                    jQuery.notifier.success('Сообщение отправлено', 'Сообщение успешно отправлено');
                                        popup.dialog.close();
                                }
                            } catch (e) {
                                if (Ofme.debug) {
                                    Ofme.log(e);
                                }
                            }
                        }, 'json');
            }
        },    
    
        callme : function() {
            jQuery.post(Env.base_url + 'contact/', {action:'index','form':'callmeback'},
                function(json) {
                    try {
                        if (json.status.toLowerCase() === 'error') {
                            jQuery.notifier.error('Ошибка', json.message);
                                return false;
                        } else {                            
                            Ofme.media.loadCss('contact.css');
                            
                            popup.dialog({
                                title : 'Запоните форму и мы Вам перезвоним',
                                content : json.content,
                                showOverlay : false,
                                width : 540,
                                buttons : {
                                    'Отправить' : function() {                                   
                                        Ofme.forms.callmeProcess();                                 
                                    },
                                    'Закрыть' : function() {
                                        popup.dialog.close();
                                    }
                                }
                            });
                        
                            return false;
                       }
                    } catch (e) {
                        if (Env.debug) {
                            Ofme.log(e);
                        }
                    }
                }, 'json');
        },
        
        contactProcess : function() {
            var
                contact_name    = jQuery('#contact_name'),
                contact_phone   = jQuery('#contact_phone'),
                contact_subject = jQuery('#contact_subject'),
                contact_message = jQuery('#contact_message');
                
            if (jQuery.trim(contact_name.val()).length <= 0) {
	        jQuery.notifier.error('Ошибка', 'Пожалуйста, введите Ваше имя');
	            contact_name.focus();
	               return false;
	    } else if (jQuery.trim(contact_name.val()).length > 100) {
	        jQuery.notifier.error('Ошибка', 'Извините, но Ваше имя слишком длинное, пожалуйста сократите его.');
	            contact_name.focus();
	                return false;   
	    } else if (jQuery.trim(contact_phone.val()).length <= 0) {
	        jQuery.notifier.error('Ошибка', 'Пожалуйста, введите Ваш номер телефона');
	            contact_phone.focus();
	                return false;      
	    } else if (jQuery.trim(contact_phone.val()).length > 100) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, введите корректный номер телефона');
                    contact_phone.focus();
	                return false;          
            } else if (jQuery.trim(contact_subject.val()).length <= 0) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, введите тему сообщения');
                    contact_subject.focus(); 
                        return false;       
            } else if (jQuery.trim(contact_subject.val()).length > 100) {
                jQuery.notifier.error('Ошибка', 'Извините, но тема сообщения слишком длинная. Пожалуйста, сократите её');
                    contact_subject.focus(); 
                        return false;       
            } else if (jQuery.trim(contact_message.val()).length <= 0) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, введите сообщение');
                    contact_message.focus();
                        return false;           
            } else if (jQuery.trim(contact_message.val()).length > 15000) {
                jQuery.notifier.error('Ошибка', 'Пожалуйста, сократите сообщение, оно слишком длинное');
                    contact_message.focus();
                        return false;        
            } else {
                jQuery.post(Env.base_url+'contact/', {'name':contact_name.val(), phone:contact_phone.val(), subject:contact_subject.val(), 'message':contact_message.val(),action:'index','do':'send',form:'contact'},
                        function(json) {
                            try {
                                if (json.status.toLowerCase() === 'error') {
                                    jQuery.notifier.error('Ошибка', json.message);
                                        return false;
                                } else {
                                    jQuery.notifier.success('Сообщение отправлено', 'Сообщение успешно отправлено');
                                        popup.dialog.close();
                                }
                            } catch (e) {
                                if (Ofme.debug) {
                                    Ofme.log(e);
                                }
                            }
                        }, 'json');
            }
        },
        
        contact : function() {
            jQuery.post(Env.base_url + 'contact/', {action:'index','form':'contact'},
                function(json) {
                    try {
                        if (json.status.toLowerCase() === 'error') {
                            jQuery.notifier.error('Ошибка', json.message);
                                return false;
                        } else {
                            Ofme.media.loadCss('contact.css');
                            
                            popup.dialog({
                                title : 'Написать сообщение',
                                content : json.content,
                                showOverlay : false,
                                width : 510,
                                buttons : {
                                    'Отправить' : function() {                                   
                                        Ofme.forms.contactProcess();                                
                                    },
                                    'Закрыть' : function() {
                                        popup.dialog.close();
                                    }
                                }
                            });
                        
                            return false;
                       }
                    } catch (e) {
                        if (Env.debug) {
                            Ofme.log(e);
                        }
                    }
                }, 'json');
        }    
    },
                
    log : function(text) {    
        if (typeof(console) !== "undefined") {
            console.log(text);
        } else {
            if (typeof(popup) !== "undefined") {
                popup.alert(text);
                    return false;
            } else {
                alert(text);
                    return false;
            }
        }       
    },
    
    cart : {
    
        add : function(goodId, from) {
            jQuery.post(Env.base_url+'cart/', {action:'add',id:goodId},
                function(json) {
                    try {
                        if (json.status.toLowerCase() === 'error') {
                            jQuery.notifier.error('Ошибка', json.message);
                                return false; 
                        } else {
                            jQuery.notifier.success('Товар добавлен в корзину', json.notify);
                            
                            var order_button, order_message;
                            
                            if (!from) {
                                from = 'catalog';   
                            }
                                                                                    
                            switch (from) {
                               case 'catalog' :
                                   order_button = jQuery('#good_order_'+goodId);
                                   order_message = '<div class="ordered">Товар заказан</div>';
                                   break; 
                               case 'comparison' :
                                   order_button = jQuery('#comparison_good_order_'+goodId);
                                   order_message = '<div class="b-comparison-ordered">Товар заказан</div>';
                                   break;
                               case 'details' :
                                   order_button = jQuery('#good_details_order_'+goodId);
                                   order_message = '<div class="b-good-details-ordered">Товар заказан</div>';
                                   break;  
                               case 'hit' :
                                   order_button = jQuery('#sales_hit_'+goodId);
                                   order_message = '<div class="ordered">Товар заказан</div>'; 
                                   break;
                               case 'offers' :
                                   order_button = jQuery('#special_offer_'+goodId);
                                   order_message = '<div class="ordered">Заказан</div>';
                                   break;
                                case 'history' :
                                   order_button = jQuery('#details_history_order_'+goodId);
                                   order_message = '<span class="aa2_2">Товар заказан</span>';
                                   break; 
                                case 'related' :
                                   order_button = jQuery('#details_related_order_'+goodId);
                                   order_message = '<span class="aa2_2">Товар заказан</span>';
                                   break; 
                            }
                            
                            if (order_button.size() > 0) {
                                order_button.replaceWith(order_message);
                            }
                                                        
                            var cart = jQuery('#block_cart');
                            if (cart.size() > 0) {
                                var goods_count_total = parseInt( json.goods_count_total );
                                jQuery('#block_cart_goods_count').text(goods_count_total);
                                jQuery('#block_cart_price').text(json.money_total+' Р');
                            }
                        }
                    } catch (e) {
                        if (Ofme.debug) {
                            Ofme.log(e);
                        }
                    }
                }, 'json');            
        }
    
    }

};

/**
 * Validate email
 * @param  {string} email
 * @return {bool}   validate flag
 */
var isValidEmail = function(email) {
    var pattern = new RegExp(/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i);
    return pattern.test(email);
}

/**
 * Send form on key press ctrl+enter
 *
 * @param  object
 * @param  function
 * @return void
 */
var ctrlEnter = function(event, fn) {
    if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) {
        if (jQuery.isFunction(fn)) {
            fn.apply();
        }
    }
}

function goToSection() {
	
	var mebel    = document.getElementById('mebel');
	var category = document.getElementById('category');	
	var series   = document.getElementById('series');	
	var mod   = document.getElementById('mod');	

	if(mebel != null && category != null && series != null) {
		var clink  = '';

		switch(parseInt(mebel.value)) {
			case 8: 
				clink += '/catalog/903/params?category='+category.value;
				//clink += '&group_id=903';
				clink += '&mebel='+mebel.value;
				clink += '&size='+series.value;
				break;
			
			case 901:
				var group = (parseInt(series.value) == 0) ? category.value : series.value;
				if(group == 0) group = 901;
				clink += '/catalog/'+group;
				clink += '?cab='+mebel.value;
				if (parseInt(category.value) != 0) {
				    clink += '&cab_category='+category.value;
				}
				if (parseInt(series.value) != 0) {
				    clink += '&cab_series='+series.value;
				}
				break;
			default:
				clink += '/catalog/params?mebel='+mebel.value;
				clink += '&category='+category.value;
				clink += '&series='+series.value;
		}
		
		location.href = clink;
	}
}

function changeCategory() {
	
	var mebel    = document.getElementById('mebel');
	var category = document.getElementById('category');	
	
	if(mebel && category) {
		switch(parseInt(mebel.value)) {
				
			case 901:
				delOpt(category);			
				
				for(var id in c_category) {
					category.options[category.options.length] = new Option(c_category[id], id);	
				}
				category.options[0].selected = true;
				break;
				
			default:
				delOpt(category);
				for(var id in s_category) {
					var selected = (category.options.length == 0) ? true : false;
					category.options[category.options.length] = new Option(s_category[id], id);	
				}
				category.options[0].selected = true;
				break;
		}
	}
}

function changeSeries(flag) {
	
	var mebel    = document.getElementById('mebel');
	var category = document.getElementById('category');	
	var series   = document.getElementById('series');
	
	
	if(mebel && category && series) {

		
		switch(parseInt(mebel.value)) {
			
			case 8: 
				delOpt(series);
				for(var id in size_category) {
					series.options[series.options.length] = new Option(size_category[id], id);
				}
				if(flag) category.options[0].selected = true;
				series.options[0].selected = true;
				break;
				
			case 901:
				delOpt(series);		
				
				for(var pId in cab_category) {
					if(category.value == 0 || (category.value != 0 && category.value == pId)) {
						for(var id in cab_category[pId]) {
							
							series.options[series.options.length] = new Option(cab_category[pId][id], id);	
						}
						if(flag) category.options[0].selected = true;
						series.options[0].selected = true;
					}
				}
				break;
				
			default:
				delOpt(series);

				for(var id in default_series) {
					if(category.value == 0 || in_array(default_series_del[category.value], id)) {
						series.options[series.options.length] = new Option(default_series[id], id);			
					}
				}
				if(flag) category.options[0].selected = true;
				series.options[0].selected = true;
				break;
		}
	}
}

function in_array(arr, val) {
	for(var i = 0; i< arr.length; i++) {
		if(arr[i] == val) return true;
	}
	return false;
}

function delOpt(obj) {
	if(obj) {
		while(obj.options.length > 1) {
			obj.options[obj.options.length-1] = null;	
		}
	}
}

