var loading = '<img src="/res/img/tool/loading.gif"/>';
var img_close = '<big><b>X</b></big>';//'<img src="/res/img/tool/close.gif"/>';

//---------------------------movemouse----------------------------//

if(document.getElementById&&!document.all){
    var nn6=document.getElementById&&!document.all;
}else{
    var nn6 = false;
}

var isdrag=false;
var x=0,y=0;
var dobj;

    function movemouse(e){
        if (isdrag){
            dobj.style.left = nn6 ? e.clientX + x : event.clientX + x;
            dobj.style.top = nn6 ? e.clientY + y : event.clientY + y;
            return false;
        }
    }

   function cleanup(e) {
      document.onmousemove=null;
      document.onmouseup=null;
      isdrag=false;
   }

function selectmouse(e)
{
var fobj = nn6 ? e.target : event.srcElement;
var topelement = nn6 ? "HTML" : "BODY";
if(fobj.className=="setmoveable"){
    while (fobj.tagName != topelement && fobj.className != "moveable")
    {
        fobj = nn6 ? fobj.parentNode : fobj.parentElement;
    }
    if (fobj.className=="moveable")
    {
        isdrag = true;
        dobj = fobj;
        tx = parseInt(dobj.style.left+0,10);
        ty = parseInt(dobj.style.top+0,10);
        x = nn6 ? tx-e.clientX : tx-event.clientX;
        y = nn6 ? ty-e.clientY : ty-event.clientY;
        document.onmousemove=movemouse;
        document.onmouseup=cleanup;
    return false;
    }
}
}
document.onmousedown=selectmouse;

//---------centering------------//

function PopUpCentering(objID)
{
    shift = 20;
    pos = new Array(2);
    pos = ScrollPositionXY();
    var obj = document.getElementById(objID);
    obj.style.left =  220;//+pos[0]+ 'px';
    if(pos[1]==0) shift=100;
    obj.style.top =  shift+pos[1]+ 'px';
}

function ScrollPositionXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

//-------popup-window--------//

function PopUpWrite(prefix, size){
    pop_up_write  = '<div id="pop_up'+prefix+'" class="moveable" style="z-index:102; position: absolute; top:110px; left:200px; width:'+size+'px; display: none;">';
    pop_up_write += '<table class="popup">';
    pop_up_write += '<tr><td align="right" class="setmoveable"><a href="javascript:PopUpClose(\''+prefix+'\');">'+img_close+'</a></td></tr>';
    pop_up_write += '<tr><td style="border: #ccc 1px solid;"><div id="pop_up_body'+prefix+'"></div></td></tr>';
    pop_up_write += '<tr><td align="center" class="setmoveable"><a href="javascript:PopUpClose(\''+prefix+'\');">закрыть</a></td></tr>';
    pop_up_write += '</table>';
    pop_up_write += '<iframe id="pop_up_source'+prefix+'" name="pop_up_source'+prefix+'" onload="pop_up_source_Onload(\''+prefix+'\');" height="0" width="0" frameborder="0" src=""></iframe>';
    pop_up_write += '</div>'
    document.write(pop_up_write);
}

function PopUpClick(prefix, src){
    if(document.getElementById('pop_up'+prefix) && document.getElementById('pop_up_source'+prefix) && document.getElementById('pop_up_body'+prefix)){ 
        document.getElementById('pop_up'+prefix).style.display='block';
        document.getElementById('pop_up_source'+prefix).src = src;   
        document.getElementById('pop_up_body'+prefix).innerHTML = 'Выполняется загрузка:<br/>'+loading;
        PopUpCentering('pop_up'+prefix); 
    }
}

function pop_up_source_Onload(prefix){
    if(document.getElementById('pop_up_body'+prefix) && document.getElementById('pop_up_source'+prefix) && document.getElementById('pop_up_source'+prefix).src != '' && document.getElementById('pop_up_source'+prefix).contentWindow.document.getElementById(prefix)){
        src = document.getElementById('pop_up_source'+prefix).contentWindow.document.getElementById(prefix).innerHTML
        //frames['pop_up_source'+prefix].document.body.innerHTML
        document.getElementById('pop_up_body'+prefix).innerHTML = src;
    }else{
        if(document.getElementById('pop_up_source'+prefix).src != '' && document.getElementById('pop_up'+prefix) && document.getElementById('pop_up'+prefix).style.display=='block')alert("Ошибка на странице!");
        PopUpClose(prefix);
    }    
}

function PopUpTimeoutClose(prefix, timeout){
    setTimeout('PopUpClose('+prefix+')', timeout);
}

function PopUpClose(prefix){
    if(document.getElementById('pop_up'+prefix) && document.getElementById('pop_up_source'+prefix) && document.getElementById('pop_up_body'+prefix)){  
        document.getElementById('pop_up_body'+prefix).innerHTML = '';
        document.getElementById('pop_up'+prefix).style.display='none'; 
    }
}

//-------popup-message----------//

function MessageShow(msg, timeout){
    if(document.getElementById('pop_up_message')){
       document.getElementById('pop_up_message').style.display='block';
       document.getElementById('pop_up_message').innerHTML = '<table class="popup"><tr><td align="right" class="setmoveable"><a href="javascript:MessageClose();">'+img_close+'</a></td></tr><tr><td style="border: #ccc 1px solid;">'+msg+'</td></tr><tr><td align="center" class="setmoveable"><a href="javascript:MessageClose();">закрыть</a></td></table>';
       PopUpCentering('pop_up_message'); 
       if (timeout > 0) MessageTimeoutClose(timeout);
    }
}        

function MessageTimeoutClose(timeout){
   setTimeout('MessageClose()', timeout);
}


function MessageClose(){
    if(document.getElementById('pop_up_message')){
       document.getElementById('pop_up_message').innerHTML = '';
       document.getElementById('pop_up_message').style.display='none';
    }
}

// -------------------- ajax ------------------------

var ajaxpagefetcher={
loadingmessage: "Идет загрузка, пожалуйста ждите...",
exfilesadded: "",

connect:function(containerid, pageurl, bustcache, jsfiles, cssfiles){
	var page_request = false
	var bustcacheparameter=""
	if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE6 or below
		try {
		page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
			page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}
	else
		return false
	var ajaxfriendlyurl=pageurl.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/") 
	page_request.onreadystatechange=function(){ajaxpagefetcher.loadpage(page_request, containerid, pageurl, jsfiles, cssfiles)}
	if (bustcache) //if bust caching of external page
		bustcacheparameter=(ajaxfriendlyurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
	document.getElementById(containerid).innerHTML=ajaxpagefetcher.loadingmessage //Display "fetching page message"
	page_request.open('GET', ajaxfriendlyurl+bustcacheparameter, true)
	page_request.send(null)
},

loadpage:function(page_request, containerid, pageurl, jsfiles, cssfiles){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
		document.getElementById(containerid).innerHTML=page_request.responseText
		for (var i=0; i<jsfiles.length; i++)
			this.loadjscssfile(jsfiles[i], "js")
		for (var i=0; i<cssfiles.length; i++)
			this.loadjscssfile(cssfiles[i], "css")
		this.pageloadaction(pageurl) //invoke custom "onpageload" event
	}
},

createjscssfile:function(filename, filetype){
	if (filetype=="js"){ //if filename is a external JavaScript file
		var fileref=document.createElement('script')
		fileref.setAttribute("type","text/javascript")
		fileref.setAttribute("src", filename)
	}
	else if (filetype=="css"){ //if filename is an external CSS file
		var fileref=document.createElement("link")
		fileref.setAttribute("rel", "stylesheet")
		fileref.setAttribute("type", "text/css")
		fileref.setAttribute("href", filename)
	}
	return fileref
},

loadjscssfile:function(filename, filetype){ //load or replace (if already exists) external .js and .css files
	if (this.exfilesadded.indexOf("["+filename+"]")==-1){ //if desired file to load hasnt already been loaded
		var newelement=this.createjscssfile(filename, filetype)
		document.getElementsByTagName("head")[0].appendChild(newelement)
		this.exfilesadded+="["+filename+"]" //remember this file as being added
	}
	else{ //if file has been loaded already (replace/ refresh it)
 	var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using
 	var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
 	var allsuspects=document.getElementsByTagName(targetelement)
 	for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
  	if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1){
   	var newelement=this.createjscssfile(filename, filetype)
   	allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
  	}
		}
 }
},


pageloadaction:function(pageurl){
	this.onpageload(pageurl) //call customize onpageload() function when an ajax page is fetched/ loaded
},

onpageload:function(pageurl){
 //do nothing by default
},

load:function(containerid, pageurl, bustcache, jsfiles, cssfiles){
	var jsfiles=(typeof jsfiles=="undefined" || jsfiles=="")? [] : jsfiles
	var cssfiles=(typeof cssfiles=="undefined" || cssfiles=="")? [] : cssfiles
	this.connect(containerid, pageurl, bustcache, jsfiles, cssfiles)
}

} //End object