/*global window, document, navigator*/
var flashinstalled = 0,
	flashversion = 0,
	MSDetect = "false";


function M(){
		var D = "undefined",
			S = "Shockwave Flash",
			W = "ShockwaveFlash.ShockwaveFlash",
			q = "application/x-shockwave-flash",
			R = "SWFObjectExprInst",
			x = "onreadystatechange",
			O = window,
			r = "object",
			aa = typeof document.getElementById != D && typeof document.getElementsByTagName != D && typeof document.createElement != D, 
			ah = navigator.userAgent.toLowerCase(), 
			Y = navigator.platform.toLowerCase(), 
			ae = Y ? /win/.test(Y) : /win/.test(ah), 
			ac = Y ? /mac/.test(Y) : /mac/.test(ah), 
			af = /webkit/.test(ah) ? parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, 
			X = !+"\v1", T,
			ag = [0, 0, 0], 
			ab = null;
		
        if (typeof navigator.plugins != D && typeof navigator.plugins[S] == r) {
            ab = navigator.plugins[S].description;
            if (ab && !(typeof navigator.mimeTypes != D && navigator.mimeTypes[q] && !navigator.mimeTypes[q].enabledPlugin)) {
                T = true;
                X = false;
                ab = ab.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
                ag[0] = parseInt(ab.replace(/^(.*)\..*$/, "$1"), 10);
                ag[1] = parseInt(ab.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
                ag[2] = /[a-zA-Z]/.test(ab) ? parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
            }
        }
        else {
            if (typeof O.ActiveXObject != D) {
                try {
                    var ad = new ActiveXObject(W);
                    if (ad) {
                        ab = ad.GetVariable("$version");
                        if (ab) {
                            X = true;
                            ab = ab.split(" ")[1].split(",");
                            ag = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)];
                        }
                    }
                } 
                catch (Z) {
                }
            }
        }
        return {
            pv: ag,
            ie: X
        }
    }
    function F(Z){	
        var Y = M().pv,
			X = Z.toString().split(".");
        X[0] = parseInt(X[0], 10);
        X[1] = parseInt(X[1], 10) || 0;
        X[2] = parseInt(X[2], 10) || 0;
        return (Y[0] > X[0] || (Y[0] == X[0] && Y[1] > X[1]) || (Y[0] == X[0] && Y[1] == X[1] && Y[2] >= X[2])) ? true : false;
    }

function insFl(v,fl,gif,lnk,w,h,flash_vars) {	
	var d=' width='+w+' height='+h,
		flash;
	if (F(v)) {
		flash = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+d+'><param name="wmode" value="transparent"/><param name="movie" value="'+fl+'"/>';
		 if(flash_vars){
			flash += '<param name="flashvars" value="'+flash_vars+'"/>';
		 }
		flash += '<embed src="'+fl+'" quality=high'+d+' wmode="transparent"';
		if(flash_vars){
			flash += ' flashvars="'+flash_vars+'" ';
		}
		flash += '></embed></object>';
		
		document.write(flash);
	} else {	
		if (gif != '') {
			document.write('<a href='+lnk+'><img src='+gif+d+' border=0></a>')
		}
		else if(M().pv[0]>6){
			document.write("<div id='noFlash'></div>");
			var txt;
			if(M().ie){
				txt = '<object width="310" height="137" id="SWFObjectExprInst" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="MMplayerType=ActiveX"/><param name="movie" value="/images/expressInstall.swf"/></object>';
			}else{
				txt = '<object width=300 height=120 type="application/x-shockwave-flash" data="/images/expressInstall.swf" id="SWFObjectExprInst"><param name="flashvars" value=""/></object>';
			}
				document.write(txt);
		}
		else{
			document.write(noFlash)
		}
	}
}

var swfobject = {
	expressInstallCallback: function(){
		document.getElementById("SWFObjectExprInst").parentNode.removeChild(document.getElementById("SWFObjectExprInst"));
		document.getElementById("noFlash").innerHTML = noFlash;
		}
	}

var noFlash = "<div style='text-align:center;padding:10px'><noindex><div style='width:400px;margin:0 auto;'><h2 style='text-decoration:none'><img width='16' height='16' alt='Внимание' src='/images/alert.gif'/> Внимание</h2><p>Чтобы посмотреть содержимое страницы, должен быть включен JavaScript, и установлена последняя версия Adobe Flash Player.</p><p class='caption'><a target='_blank' href='http://get.adobe.com/flashplayer/'>Скачать Flash Player!</a></p><a target='_blank' href='http://get.adobe.com/flashplayer/'><img  alt='Скачать Flash Player' src='/images/get_flash_player.gif'/></a></div></noindex></div>";

function ShowPhoto(url, width, height) {
	var scroll = (screen.width < 1000) ? "yes" : "no";
	
	var left = (self.screen.width >> 1) - (width >> 1);
	var top = (self.screen.height >> 1) - (height >> 1);
	var param = 'left='+left+',top='+top+',width='+width+',height='+height+',';
	
	window.open(url, '_blank', param+'menubar=no, scrollbars=' + scroll + ', status=no');
}

function emoticon(theSmilie)
{
	doInsert(" " + theSmilie + " ", "", false);
}

function doInsert(ibTag, ibClsTag, isSingle)
{
	var isClose = false;
	var obj_ta = document.post.message;
	
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	if ( (ua_vers >= 4) && is_ie && is_win){
		if (obj_ta.isTextEdit){
			obj_ta.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null){
				if(ibClsTag != "" && rng.text.length > 0)
					ibTag += rng.text + ibClsTag;
				else if(isSingle)
					isClose = true;
	
				rng.text = ibTag;
			}
		}
		else{
			if(isSingle){
				isClose = true;
			}			
			obj_ta.value += ibTag;
		}
	}
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	else if ( obj_ta.selectionEnd ){ 
		var ss = obj_ta.selectionStart,
			st = obj_ta.scrollTop,
			es = obj_ta.selectionEnd;
		
		if (es <= 2){
			es = obj_ta.textLength;
		}
		
		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0){
			middle = ibTag + middle + ibClsTag;
		}
		else{
			middle = ibTag + middle;
			
			if (isSingle){
				isClose = true;
			}
		}
		
		obj_ta.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;
	}
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	else{
		if (isSingle){
			isClose = true;
		}		
		obj_ta.value += ibTag;
	}
	
	obj_ta.focus();

	return isClose;
}	
function getBodyScrollTop() {
  return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

function ShowPhotoHere(url, alt, width, height) {
var fragment = document.createDocumentFragment(),
		scrolling = getBodyScrollTop(body),
		body = document.getElementsByTagName("body")[0],
	    over = document.createElement('div'),
		h,
		conteiner = document.createElement('div'),
		inside = document.createElement('div'),
		style,
		image = document.createElement('img'),
		descr = document.createElement('p');
		 
		
 	over.id = "over";  	         
 	conteiner.id = "conteinerimg";             
	inside.id = "inside"; 
	inside.style.width = width+"px";
	inside.style.height = height+"px";
	inside.style.margin = scrolling+"px auto 0 auto";    
	
	h = document.getElementById("conteiner").offsetHeight;
	h = (scrolling + height>h)?(scrolling + height+ 20):h;
	over.style.height = h+"px";       
	
	image.width=width;
	image.height=height;
	image.title="Закрыть";
	image.src = "/"+url;
	                                         
	descr.appendChild(document.createElement('span')).innerHTML = alt;
	
	inside.appendChild(image);
	inside.appendChild(descr);
    conteiner.appendChild(inside);
	fragment.appendChild(over);
	fragment.appendChild(conteiner); 
	//////////////////////////////////////////
	image.onclick = function() {
		over.parentNode.removeChild(over);
		conteiner.parentNode.removeChild(conteiner);
	}
	body.appendChild(fragment);
}

function getBrowserInfo() {
	var t,v = undefined;
	if (window.opera) t = 'Opera';
	else if (document.all) {
		t = 'IE';
		var nv = navigator.appVersion;
		var s = nv.indexOf('MSIE')+5;
		v = nv.substring(s,s+1);
	}
	else if (navigator.appName) t = 'Netscape';
	return {type:t,version:v};
}
 
function bookmark(a){
	var url = window.document.location;
	var title = window.document.title;
	var b = getBrowserInfo();
	if (b.type == 'IE' && 8 > b.version && b.version >= 4) window.external.AddFavorite(url,title);
	else if (b.type == 'Opera') {
		a.href = url;
		a.rel = "sidebar";
		a.title = url+','+title;
		return true;
	}
	else if (b.type == "Netscape" && window.sidebar) window.sidebar.addPanel(title,url,"");
	else alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
	return false;
}

var jsReady = false;
function isReady() {
 return jsReady;
}
function pageInit() {
 jsReady = true;
 document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n";
}
function thisMovie(movieName) {
 if (navigator.appName.indexOf("Microsoft") != -1) {
     return window[movieName];
 } else {
     return document[movieName];
 }
}
function getXY(value) {
 document.getElementById("coords").value = value;
}

function getNoFlash(){
	if(!F("9.1.15")){
		document.getElementById("noflashhead").style.display = "block";
	}
}


/* ------ */

function inputTitler(input, text, color, action){
	if (!action) {
		input.onfocus = function(){inputTitler(this, text, color, 1);}
		input.onblur = function(){inputTitler(this, text, color, 2);}
		input._type = input.type;
		inputTitler(input, text, color, 2);
	} else if (action == 1) {
		input.style.color = "";
		input.type = input._type;
		if (input.value == text) input.value = "";
	} else if (action == 2) {
		if (input.value == "") {
			input.value = text;
			input.style.color = color;
			input.type = 'text';
		}
	}
}

function switchPopup(open, close, href){
	if (close)
		for (var i=0; i<close.length; i++) {
			var x = document.getElementById(close[i]);
			if (x) x.style.display = 'none';
		}
	document.getElementById(open).style.display = 'block';
	if (href) location.href = href;
	return false;
}


/* basket */

window.ajax_busy = false;
window.current_ajax_good = null;
window.current_xmlhttp = null;
window.last_popup_ajax = "";

function GetXmlHttpObject()
{
	var req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){ return null; }
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){ return null; }
        }
    }
	return req;
}

function callServer(method, url, data, dataType, callback)
{
	var xhr = GetXmlHttpObject();
	if (!xhr) return false;
	if (!method) method = 'GET';
    xhr.onreadystatechange = callback;
    xhr.open(method, url, true);
    if (data) {
		if (!dataType) dataType = 'application/xml';
		xhr.setRequestHeader('Content-Type', dataType);
    }
    xhr.send(data);
    return xhr;
}

function bsk_SetTableValue(tr_id, td_index, value)
{
	var tr = document.getElementById(tr_id);
	if (!tr) return false;
	var td = tr.getElementsByTagName('td');
	var inp = td[td_index].getElementsByTagName('input');
	if (inp.length > 0 && inp[0].type == 'text') {
		inp[0].value = value;
	} else {
		td[td_index].innerHTML = value;
	}
}
function bsk_GetGoodCounts()
{
	var tbl = document.getElementById('bsk_form');
	var tr = tbl.getElementsByTagName('tr');
	var rx = new RegExp('^bsk_good(\\d+)$');
	var res = new Array();
	for (var i=0; i<tr.length; i++) {
		var match = rx.exec(tr[i].id);
		if (tr[i].id && match) {
			var id = parseInt(match[1]);
			var td = tr[i].getElementsByTagName('td');
			var inp = td[5].getElementsByTagName('input');
			res[inp[0].name] = inp[0].value;
		}
	}
	return res;
}
function bsk_RemoveTableLine(id)
{
	var tr = document.getElementById(id);
	tr.parentNode.removeChild(tr);
}
function bsk_RemoveEmptyGoods(existing)
{
	var tbl = document.getElementById('bsk_form');
	var tr = tbl.getElementsByTagName('tr');
	var rx = new RegExp('^bsk_good(\\d+)$');
	for (var i=0; i<tr.length; i++) {
		var match = rx.exec(tr[i].id);
		if (tr[i].id && match) {
			if (!existing[tr[i].id]) bsk_RemoveTableLine(tr[i].id);
			var table = tr[i].parentNode;
			if (table.tagName.toLowerCase() == 'tbody') table = table.parentNode;
			var ttr = table.getElementsByTagName('tr');
			if (ttr.length < 3) {
				var cid = table.id;
				var ch = document.getElementById(cid+'h');
				ch.parentNode.removeChild(ch);
				table.parentNode.removeChild(table);
			}
		}
	}
}
function bsk_GetAjaxData(type, adddata)
{
	var all = (type == 'all');
	var data = new Array();
	if (all || type == 'goods') {
		data = bsk_GetGoodCounts();
	}
	if (type == 'discount') {
		var p = document.getElementById('basket_discount');
		var inp = p.getElementsByTagName('input')[0];
		data['id_category'] = inp.name;
		data['discount'] = inp.value;
	}
	data['is_ajax'] = 1;
	data['ajax_type'] = type;
	var s='';
	for (var key in data) {
		s += "&" + key + "=" + escape(data[key]);
	}
	s = s.substr(1);
	if (adddata) s += "&" + adddata;
	return s;
}
function bsk_RunAjax(type, url, adddata, callback)
{
	if (window.ajax_busy) return false;
	var data = bsk_GetAjaxData(type, adddata);
	var dataType = "application/x-www-form-urlencoded";
	var xhr = callServer('POST', url, data, dataType, callback);
	if (xhr) {
		window.current_xmlhttp = xhr;
		window.ajax_busy = true;
	}
	return xhr;
}
function bsk_Ajax(type, adddata)
{
	var url = "/basket/";
	var callback = function() {try{
		if (!window.ajax_busy) return false;
		if (!window.current_xmlhttp) {
			var xhr = this;
		} else {
			var xhr = window.current_xmlhttp;
		}
		
		try {
			if (xhr.readyState != 4) return false;
		} catch(e) {
			return false;
		}
		
		if (xhr.responseXML) {
			bsk_ProcessAjaxResult(xhr.responseXML);
		}
		
		window.ajax_busy = false;
		window.cat_ajax_busy = false;
	}catch(e){alert(e);}}
	
	try{bsk_RunAjax(type, url, adddata, callback);}catch(e){alert(e);}
	
	return false;
}
function cloneBasket(){
	var bask = document.getElementById('basket');
	var baskClone = document.getElementById('clone_basket');
	baskClone.innerHTML = bask.innerHTML;
	baskClone.style.display = bask.style.display;
}
function bsk_ProcessAjaxResult(xml)
{
	var root = xml.documentElement;
	var cost = root.getAttribute('result_cost');
	var count = root.getAttribute('count_different');
	var bask = document.getElementById('basket');
	var baskClone = document.getElementById('clone_basket');
	var bask1 = document.getElementById('smbask_result_cost');
	var bask2 = document.getElementById('smbask_count_goods');
	if (bask1) bask1.innerHTML = cost;
	if (bask2) bask2.innerHTML = count;
	if (bask) {
		if (count > 0) bask.style.display = '';
		else bask.style.display = 'none';
		
		baskClone.innerHTML = bask.innerHTML;
		baskClone.style.display = bask.style.display;
	}
	var totalcst = document.getElementById('bsk_total_cost');
	if (totalcst) totalcst.innerHTML = cost;
	var goods = root.getElementsByTagName('goods')[0];
	if (goods) {
		var gd = goods.getElementsByTagName('good');
		var existing = new Array();
		var count_goods = 0;
		for (var i=0; i<gd.length; i++) {
			var id = gd[i].getAttribute('id');
			var node_id = "bsk_good"+id;
			var count = gd[i].getAttribute('count');
			var cost = gd[i].getAttribute('cost');
			bsk_SetTableValue(node_id, 5, count);
			bsk_SetTableValue(node_id, 6, cost);
			existing[node_id] = id;
			count_goods++;
		}
		bsk_RemoveEmptyGoods(existing);
		if (count_goods == 0) location.href = "/basket/";
		var ct = goods.getElementsByTagName('category');
		for (var i=0; i<ct.length; i++) {
			var id = ct[i].getAttribute('id');
			var cost = ct[i].getAttribute('cost');
			var cost_cont = document.getElementById('bsk_cat_cost'+id);
			if (cost_cont) cost_cont.innerHTML = cost;
		}
	}
	var prices = root.getElementsByTagName('prices')[0];
	if (prices) {
		var disco = prices.getAttribute('discount');
		var discp = document.getElementById('basket_discount');
		var discinp = discp.getElementsByTagName('input')[0];
		discinp.value = disco;
		var pr = prices.getElementsByTagName('price');
		for (var i=0; i<pr.length; i++) {
			var id = pr[i].getAttribute('id');
			var price = pr[i].getAttribute('price');
			var price_cont = document.getElementById('bsk_price'+id);
			if (price_cont) price_cont.innerHTML = price;
		}
	}
	var change = root.getElementsByTagName('change')[0];
	if (change) {
		var id = change.getAttribute('id');
		var count = change.getAttribute('count');
		var d1 = document.getElementById('bsk_cat_a'+id);
		var d2 = document.getElementById('bsk_cat_b'+id);
		var f = document.bsk_category;
		var ix = f.elements['count'+id];
		var i1 = document.getElementById('bsk_update'+id);
		var i2 = document.getElementById('bsk_remove'+id);
		i1.value = count;
		i2.value = count;
		bsk_cat_Close(id);
		ix.value = count;
	}
}

function CheckIsNum(e)
{
	if(window.event) {
		var code = e.keyCode;
	} else if(e.which) {
		var code = e.which;
	}
	if (((code < 48) || (code > 57)) && (code!=46 && code!=8 && code!=13 && code!=9)) {
		e.preventDefault? e.preventDefault() : e.returnValue = false;
		return false;
	}
	return true;
}

window.bsk_cat_opened = 0;
window.cat_ajax_busy = false;

function bsk_cat_Process(id, action)
{
	var d1 = document.getElementById('bsk_cat_a'+id);
	var d2 = document.getElementById('bsk_cat_b'+id);
	var f = document.bsk_category;
	if (!d1 || !d2 || !f) return false;
	var ix = f.elements['count'+id];
	var i1 = document.getElementById('bsk_update'+id);
	var i2 = document.getElementById('bsk_remove'+id);
	
	document.body.onclick = bsk_cat_Onblur;
	
	if (action == 'open') {
		if (window.bsk_cat_opened != 0 && window.bsk_cat_opened != id) {
			bsk_cat_Close(window.bsk_cat_opened);
		}
		d1.style.display = 'none';
		d2.style.display = '';
		i2.style.display = 'none';
		i1.style.display = '';
		ix.value = ix.value > 0 ? ix.value : '';
		ix.focus();
		window.bsk_cat_opened = id;
	}
	
	if (action == 'close') {
		if (i1.value <= 0) {
			d2.style.display = 'none';
			d1.style.display = '';
		}
		ix.value = i1.value;
		i1.style.display = 'none';
		i2.style.display = '';
	}
	
	if (action == 'ajax' || action == 'remove') {
		var c = (action == 'remove') ? 0 : parseInt(ix.value);
		if (isNaN(c)) return;
		var data = 'id_good='+id+'&count='+c;
		window.cat_ajax_busy = true;
		return bsk_Ajax("change", data);
	}
}

function bsk_cat_Onblur(e)
{
	if (window.bsk_cat_opened == 0) return;
	var obj = (window.event && window.event.srcElement) ? window.event.srcElement : e.target;
	if (obj && obj.id && obj.id == "bsk_submit") {
		obj = document.bsk_category.elements['count'+window.bsk_cat_opened];
	}
	if (obj && obj.parentNode && obj.parentNode.id) {
		var id = obj.parentNode.id;
		var id1 = "bsk_cat_a" + window.bsk_cat_opened;
		var id2 = "bsk_cat_b" + window.bsk_cat_opened;
		if (id == id1 || id == id2) return;
	}
	bsk_cat_Close(window.bsk_cat_opened);
}

function bsk_cat_Open(id)
{
	bsk_cat_Process(id, 'open');
}

function bsk_cat_Close(id)
{
	bsk_cat_Process(id, 'close');
}

function bsk_cat_Ajax(id, type)
{
	if (!id) id = window.bsk_cat_opened;
	if (!type) bsk_cat_Process(id, 'ajax');
	else bsk_cat_Process(id, type);
}

/* /basket */

function doFix(image){	  
 // Assume IE7 is OK.
 if (!/MSIE (5\.5|6\.)/.test(navigator.userAgent) || /0.gif/.test(image.src) ) return; 
	var s = image.src;
	image.style.width = image.offsetWidth + 'px';
    image.style.height = image.offsetHeight + 'px';
	image.src="/images/0.gif";	
	image.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+s+'",sizingMethod="crop")';
}
