//Инициализация пространства имен
if (typeof AutoSmartJS == 'undefined') {
	AutoSmartJS = function() {};
}

AutoSmartJS.Author = 'Starovikov Dmitry (ICQ: 12-53-53)';
AutoSmartJS.Version = '0.5[alpha]';
AutoSmartJS.Debug = false;

//Загрузка юзерских настроек
AutoSmartJS.IsDefaultOpen = (typeof as_is_open=='undefined'? false : as_is_open);
AutoSmartJS.DisplayType = (typeof as_display_type=='undefined'? 'banner' : as_display_type);
AutoSmartJS.DefaultContainer = (typeof as_default_container=='undefined'?false:as_default_container);



AutoSmartJS.Skin = 'default';
AutoSmartJS.MainSite = 'http://calcmodule.autosmart.ru/';


//Список подгружаемых библиотек
AutoSmartJS.aAllJSes = [
						'osago.js',
						'JsHttpRequest.js',
						'jquery.cookie.js',
						'jquery.calendar.js',
						'jquery.dimensions.js',
						'jquery.checkbox.js',
						'jquery.selectbox.js',
						'jquery.tabs.pack.js',
						'jquery.js'
					   ];
AutoSmartJS.nAllJScripts = AutoSmartJS.aAllJSes.length;

//Инициализация калькулятора
AutoSmartJS.initFirst = function() {
	jq = jQuery.noConflict(true);
		//Удаляем гиперссылку
		var oBanner = jq('#as_cbi');
		var oBannerHref = jq('#as_cbi').parent();
		if (oBannerHref.attr('href')=='http://www.autosmart.ru/') {
			oBanner.clone().insertAfter(oBannerHref);
			oBannerHref.remove();
		}

		//подключаем таблицу стилей
        AutoSmartJS.loadCSS("as_main.css");
		AutoSmartJS.loadCSS("as_selectbox.css");
		AutoSmartJS.loadCSS("as_calendar.css");
		AutoSmartJS.loadCSS("as_tabs.css");
		if (jq.browser.msie) {
			AutoSmartJS.loadCSS("as_tabs-ie.css");
		}

        switch (AutoSmartJS.DisplayType) {
	        case 'inline':
				 jq("#"+AutoSmartJS.DefaultContainer).html("<div id='as_outer_div' style='display:none'><img class='loading' src='"+AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/images/loading.gif'></div>");
		        break;
	        case 'banner':
	        default:
	            //добавляем основное окно
	            jq("body").append("<div id='as_outer_div' style='display:none'><img class='loading' src='"+AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/images/loading.gif'></div>");

	            //Позиционируем его
	            var oBannerOffset = jq("#as_cbi").offset();
	            var oBannerWidth = jq('#as_cbi').width();
	            var oBannerHeight = jq('#as_cbi').height();
	            var nModuleTop = oBannerHeight + oBannerOffset.top;
	            var nWindowWidth = jq(document).width();
	            if (parseInt(oBannerOffset.left+oBannerWidth/2) < parseInt(nWindowWidth - (oBannerOffset.left+oBannerWidth/2)) ){
	                var nModuleLeft = oBannerOffset.left;
	            } else {
	                var nModuleLeft = oBannerOffset.left - (450-oBannerWidth);
	            }
	            jq("#as_outer_div").css( {
	                position: 'absolute',
	                top: nModuleTop+"px",
	                left: nModuleLeft+"px"
	            });
	            //добавляем анимацию открытия
	            jq("#as_cbi").click(
	                function() {
						if (jq("#as_outer_div").css('display')=='none') {
	                        var req = new JsHttpRequest();
	                        req.loader = 'script';
	                        req.open('GET', 'http://www.autosmart.ru/modules/calc/statopens.php', true);
	                        req.send( { userAgent: navigator.userAgent,
	                                    host: document.location.host,
	                                    pathname: document.location.pathname,
	                                    uid: sASUserId
	                                } );
						}

	                    jq("#as_outer_div").animate({
	                       height: 'toggle', width:'toggle', opacity: 'toggle'
	                     }, "slow", AutoSmartJS.ModuleOpenCallBack );
                        var mydate = new Date();
                        if (jq.cookie('as_last_open')){
                            var sASUserId = jq.cookie('as_user_id');
                        } else {
                            var sASUserId = Math.floor(Math.random()*1000000);
                            jq.cookie('as_user_id', sASUserId);
                        }
	                }
	            );
/*
				jq('#as_outer_div').focus(function(){
					console.log('111');
					jq('#as_outer_div').toggle();
				});
*/
		        break;
        }
		//Подгружаем контент
        AutoSmartJS.preLoad();
}

AutoSmartJS.ModuleOpenCallBack = function() {
    if (jq.browser.msie){
        var fBVersion = parseFloat(jq.browser.version);
        if ( (fBVersion<7.0) && (fBVersion>5.0) ){
                if (jq("#as_outer_div").css('display')!='none') {
                    if (!document.getElementById("AS_WCH")){
                        AutoSmartJS.createWCH();
                    }
                    var oAS_WCH = jq("#AS_WCH");
                    AutoSmartJS.setupWCH_el(oAS_WCH, jq("#as_outer_div"));
                    jq("#as_outer_div").css('z-index', 1);
                } else {
                    var oAS_WCH = jq("#AS_WCH");
                    AutoSmartJS.hideWCH(oAS_WCH);
                }
        }
    }
}


AutoSmartJS.preLoad = function() {
    var req = new JsHttpRequest();
    req.loader = 'script';
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            document.getElementById("as_outer_div").innerHTML = (req.responseJS.content_kasko);
			//инициализируем селекты, чекбоксы, табы, линки
			jq('#as_outer_tab select').selectbox();
			jq("#as_outer_tab").cssCheckbox();

	        jq('#as_outer_tab').tabs( { fxFade: true, fxSpeed: 'fast' } );
			jq('#autosmart_kasko_tab_outer').tabs();
			jq('#autosmart_osago_tab_outer').tabs();


			jq("a[@name=as_gonext_kasko_link1]").click(function(){
				if (jq('#as_calc_kasko_type').val()==0) {
					jq('div[@name=validation_info_kasko_tab1]').html('Укажите производителя автомобиля');
					jq('#as_calc_kasko_type').change(function(){
                    	jq('div[@name=validation_info_kasko_tab1]').html('');
					});
					return false;
				}
				if (jq('#as_calc_kasko_brand').val()==0) {
					jq('div[@name=validation_info_kasko_tab1]').html('Укажите марку автомобиля');
					jq('#as_calc_kasko_brand').change(function(){
                    	jq('div[@name=validation_info_kasko_tab1]').html('');
					});
					return false;
				}
				if (jq('#as_calc_kasko_model').val()==0) {
					jq('div[@name=validation_info_kasko_tab1]').html('Укажите модель автомобиля');
					jq('#as_calc_kasko_model').change(function(){
                    	jq('div[@name=validation_info_kasko_tab1]').html('');
					});
					return false;
				}
				if (jq('#as_calc_kasko_retail').val()==0) {
					jq('div[@name=validation_info_kasko_tab1]').html('Укажите оценочную стоимость автомобиля');
					jq('#as_calc_kasko_retail').change(function(){
                    	jq('div[@name=validation_info_kasko_tab1]').html('');
					});
					return false;
				}
				jq('#autosmart_kasko_tab_outer').triggerTab(jq('#autosmart_kasko_tab_outer').activeTab()+1);
			});

			jq("a[@name=as_gonext_kasko_link2]").click(function(){
				if (jq('#as_calc_kasko_fio').val()==0) {
					jq('div[@name=validation_info_kasko_tab2]').html('Укажите Ваши ФИО');
					jq('#as_calc_kasko_fio').change(function(){
                    	jq('div[@name=validation_info_kasko_tab2]').html('');
					});
					return false;
				}
				if (jq('#as_calc_kasko_tel').val()==0) {
					jq('div[@name=validation_info_kasko_tab2]').html('Укажите Ваш контактный телефон');
					jq('#as_calc_kasko_tel').change(function(){
                    	jq('div[@name=validation_info_kasko_tab2]').html('');
					});
					return false;
				}
				if (jq('#as_calc_kasko_date').val()==0) {
					jq('div[@name=validation_info_kasko_tab2]').html('Укажите предполагаемую дату страхования');
					jq('#as_calc_kasko_date').change(function(){
                    	jq('div[@name=validation_info_kasko_tab2]').html('');
					});
					return false;
				}
				sendKaskoData();
				jq('#autosmart_kasko_tab_outer').triggerTab(jq('#autosmart_kasko_tab_outer').activeTab()+1);
			});

			jq("a[@name=as_gonext_osago_link1]").click(function(){
				/*if (!jq('#as_calc_osago_tsowner').val()) {
					jq('div[@name=validation_info_osago_tab1]').html('Укажите владельца ТС');
					jq('#as_calc_osago_tsowner').change(function(){
                    	jq('div[@name=validation_info_osago_tab1]').html('');
					});
					return false;
				}
				console.log(111);*/
				jq('#autosmart_osago_tab_outer').triggerTab(jq('#autosmart_osago_tab_outer').activeTab()+1);
			});

			jq("a[@name=as_gonext_osago_link2]").click(function(){
				if (jq('#as_calc_osago_fio').val()==0) {
					jq('div[@name=validation_info_osago_tab2]').html('Укажите Ваши ФИО');
					jq('#as_calc_osago_fio').change(function(){
                    	jq('div[@name=validation_info_osago_tab2]').html('');
					});
					return false;
				}
				if (jq('#as_calc_osago_tel').val()==0) {
					jq('div[@name=validation_info_osago_tab2]').html('Укажите Ваш контактный телефон');
					jq('#as_calc_osago_tel').change(function(){
                    	jq('div[@name=validation_info_osago_tab2]').html('');
					});
					return false;
				}
				if (jq('#as_calc_osago_date').val()==0) {
					jq('div[@name=validation_info_osago_tab2]').html('Укажите предполагаемую дату страхования');
					jq('#as_calc_osago_date').change(function(){
                    	jq('div[@name=validation_info_osago_tab2]').html('');
					});
					return false;
				}
				sendOsagoData();
				jq('#autosmart_osago_tab_outer').triggerTab(jq('#autosmart_osago_tab_outer').activeTab()+1);
			});




			jq("a[@name=as_gonext_kasko_link]").click(function(){
				jq('#autosmart_kasko_tab_outer').triggerTab(jq('#autosmart_kasko_tab_outer').activeTab()+1);
			});
			jq("a[@name=as_goprev_kasko_link]").click(function(){
				jq('#autosmart_kasko_tab_outer').triggerTab(jq('#autosmart_kasko_tab_outer').activeTab()-1);
			});
			jq("a[@name=as_gonext_osago_link]").click(function(){
				jq('#autosmart_osago_tab_outer').triggerTab(jq('#autosmart_osago_tab_outer').activeTab()+1);
			});
			jq("a[@name=as_goprev_osago_link]").click(function(){
				jq('#autosmart_osago_tab_outer').triggerTab(jq('#autosmart_osago_tab_outer').activeTab()-1);
			});

			jq("a[@name=as_close_link]").click(function(){
				jq('#as_outer_div').toggle();
			});

			jq("a[@name=as_close_error_request]").click(function(){
				jq('#as_send_error_request').css({display:'none'});
			});

			jq("#as_error_report_link").click(function(){
				jq('#as_send_error_request').css({display:'block'});
			});

			jq('#as_calc_kasko_date').calendar();
			jq('#as_calc_osago_date').calendar();

	        jq("#as_calc_kasko_type").change( function() {
				jq("#as_calc_kasko_td_brands").html("<img src='"+AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/images/loading.gif'>");
	            var req = new JsHttpRequest();
	            req.loader = 'script';
	            req.onreadystatechange = function() {
	                if (req.readyState == 4) {
	                    document.getElementById("as_calc_kasko_td_brands").innerHTML = (req.responseJS.selectBrands);
						jq('#as_calc_kasko_td_brands select').selectbox();

						jq("#as_calc_kasko_brand").change( function() {
	                        jq("#as_calc_kasko_td_models").html("<img src='"+AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/images/loading.gif'>");
	                        var req = new JsHttpRequest();
	                        req.loader = 'script';
	                        req.onreadystatechange = function() {
	                            if (req.readyState == 4) {
	                                document.getElementById("as_calc_kasko_td_models").innerHTML = (req.responseJS.selectModel);
	                                jq('#as_calc_kasko_td_models select').selectbox();
								}
							}
	                        req.open('GET', 'http://www.autosmart.ru/modules/calc/loadModel.php', true);
	                        req.send( { q: jq("#as_calc_kasko_brand").val() } );
						});
	                }
	            }
	            req.open('GET', 'http://www.autosmart.ru/modules/calc/loadBrands.php', true);
	            req.send( { q: jq("#as_calc_kasko_type").val() } );

				return false;
	        });

	        switch (AutoSmartJS.DisplayType) {
	            case 'inline':
					jq("#as_outer_div").show();
	                break;
	            case 'banner':
	            default:
	                break;
	        }
//			jq("select[@name=as_calc[kasko][type]]").val();

        }
    }
    req.open('GET', 'http://www.autosmart.ru/modules/calc/preload.php', true);
    req.send( { q: '111' } );
}

function sendKaskoData() {
    var req = new JsHttpRequest();
    req.loader = 'script';
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            jq("#cabinet_link_kasko").attr('href', 'http://www.autosmart.ru/cabinet/'+req.responseJS.identstring);
        }
    }
    req.open('GET', 'http://www.autosmart.ru/modules/calc/sendfrommodule.php', true);
	var aData = jq('#autosmart_kasko_tab_outer').fastSerialize();
    req.send( {data:aData, host:document.location.host} );
}

function sendOsagoData() {
    var req = new JsHttpRequest();
	req.loader = 'script';
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            //alert(req.responseJS.identstring);
        }
    }
    req.open('GET', 'http://www.autosmart.ru/modules/calc/sendfrommodule.php', true);
//	var aData = jq('#autosmart_osago_tab_outer').fastSerialize();
//	var sQT = aData.join('&');
//	alert(sQT.length);

	var aData = [];

	aData.push({name: 'as_calc_request_type', value: 'osago'});
	aData.push({name: 'as_calc_osago_tsowner_input', value: jq('input[@name=as_calc_osago_tsowner_input]').val() });
	aData.push({name: 'as_calc_osago_tstype_input', value: jq('input[@name=as_calc_osago_tstype_input]').val() });
	aData.push({name: 'as_calc_osago_homeregion_input', value: jq('input[@name=as_calc_osago_homeregion_input]').val() });
	aData.push({name: 'as_calc_osago_drivernum_input', value: jq('input[@name=as_calc_osago_drivernum_input]').val() });
	aData.push({name: 'as_calc_osago_driverage_input', value: jq('input[@name=as_calc_osago_driverage_input]').val() });
	aData.push({name: 'as_calc_osago_driverexp_input', value: jq('input[@name=as_calc_osago_driverexp_input]').val() });
	aData.push({name: 'as_calc_osago_tspower_input', value: jq('input[@name=as_calc_osago_tspower_input]').val() });
	aData.push({name: 'as_calc_osago_usetc_input', value: jq('input[@name=as_calc_osago_usetc_input]').val() });
	aData.push({name: 'as_calc_osago_ub_input', value: jq('input[@name=as_calc_osago_ub_input]').val() });
	aData.push({name: 'as_calc_osago_AMOUNT', value: jq('input[@name=as_calc_osago_AMOUNT]').val() });
	aData.push({name: 'as_calc_osago_fio', value: jq('input[@name=as_calc_osago_fio]').val() });
	aData.push({name: 'as_calc_osago_tel', value: jq('input[@name=as_calc_osago_tel]').val() });
	aData.push({name: 'as_calc_osago_email', value: jq('input[@name=as_calc_osago_email]').val() });
	aData.push({name: 'as_calc_osago_date', value: jq('input[@name=as_calc_osago_date]').val() });
	aData.push({name: 'as_calc_osago_comment', value: jq('input[@name=as_calc_osago_comment]').val() });

    req.send( {data:aData, host:document.location.host} );
}

AutoSmartJS.loadCSS = function(sName) {
    var oContr = document.getElementsByTagName('head')[0];
    if (!oContr) {
        oContr = document.body;
        if (!oContr) {
            oContr = document;
        }
    }
	var oLink = document.createElement('link');
	oLink.setAttribute('rel', 'stylesheet');
	oLink.setAttribute('type', 'text/css');
	if (AutoSmartJS.Debug) {
		oLink.setAttribute('href', AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/css/"+sName+"?ver="+AutoSmartJS.Version+"&r="+Math.random());
	} else {
		oLink.setAttribute('href', AutoSmartJS.MainSite+"skins/"+AutoSmartJS.Skin+"/css/"+sName+"?ver="+AutoSmartJS.Version);
	}
	oLink.setAttribute('media', "print, projection, screen");
	oContr.appendChild(oLink);
}

//Асинхронная загрузка скриптов
AutoSmartJS.loadJS = function() {
    var oContr = document.getElementsByTagName('head')[0];
    if (!oContr) {
        oContr = document.body;
        if (!oContr) {
            oContr = document;
        }
    }
	var oScript = document.createElement('script');
	oScript.type = 'text/javascript';
	if (AutoSmartJS.Debug) {
		oScript.src = AutoSmartJS.MainSite+"js/"+AutoSmartJS.aAllJSes[AutoSmartJS.nAllJScripts-1]+"?ver="+AutoSmartJS.Version+"&r="+Math.random();
    } else {
		oScript.src = AutoSmartJS.MainSite+"js/"+AutoSmartJS.aAllJSes[AutoSmartJS.nAllJScripts-1]+"?ver="+AutoSmartJS.Version;
	}
	oScript.onreadystatechange = function() {
		if ( (this.readyState == 'loaded') || (this.readyState == 'complete') ) {
			AutoSmartJS.oCallbackJSLoad();
		}
	}
	oScript.onload = AutoSmartJS.oCallbackJSLoad;
	oContr.appendChild(oScript);
}

AutoSmartJS.oCallbackJSLoad = function() {
	AutoSmartJS.nAllJScripts--;
	if (AutoSmartJS.nAllJScripts==0){
		AutoSmartJS.initFirst();
	} else if (AutoSmartJS.nAllJScripts > 0) {
		AutoSmartJS.loadJS(AutoSmartJS.aAllJSes);
	}
}

AutoSmartJS.AttachEvent = function(obj,evt,fnc,useCapture){
    if (!useCapture) useCapture=false;
    if (obj.addEventListener){
        obj.addEventListener(evt,fnc,useCapture);
        return true;
    } else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
    else{
        MyAttachEvent(obj,evt,fnc);
        obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
    }
  return false;
}

AutoSmartJS.createWCH = function() {
	var sId = 'AS_WCH';
	var sIframe = [
		'<iframe id="',
		sId,
		'" scrolling="no" frameborder="0" style="z-index:0;position:absolute;visibility:hidden;filter:progid:DXImageTransform.Microsoft.alpha(style=0,opacity=0);border:0;top:0;left:0;width:0;height:0" src="javascript:false"></iframe>'
	].join('');

	jq("body").append(sIframe);
};

AutoSmartJS.setupWCH_el = function(f, el) {
	if (f) {
		var pos = AutoSmartJS.getAbsolutePos(el.get(0));
//			X2 = X1 + el.get(0).offsetWidth,
//			Y2 = Y1 + el.get(0).offsetHeight;

		var x=pos.x;
		var y=pos.y;
		var w=el.get(0).offsetWidth;
		var h=el.get(0).offsetHeight;
		var s = f.get(0).style;
		if (typeof x != "undefined")
			s.left = x + "px";
		if (typeof y != "undefined")
			s.top = y + "px";
		if (typeof w != "undefined")
			s.width = w + "px";
		if (typeof h != "undefined")
			s.height = h + "px";
		s.visibility = "inherit";
	}
};


AutoSmartJS.hideWCH = function(f) {
	if (f)
		f.get(0).style.visibility = "hidden";
};


AutoSmartJS.getAbsolutePos = function(el, scrollOff) {
	var SL = 0, ST = 0;
	if (!scrollOff) {
		var is_div = /^div$/i.test(el.tagName);
		if (is_div && el.scrollLeft)
			SL = el.scrollLeft;
		if (is_div && el.scrollTop)
			ST = el.scrollTop;
	}
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = AutoSmartJS.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};


//Инициализация
AutoSmartJS.AttachEvent(window, 'load', AutoSmartJS.loadJS);
