﻿
var GetXY = function (G)
		{
			return Sys.UI.DomElement.getBounds(G);
		}
		
function getScroll(G)
{
	if(typeof(G) == "undefined")
	{

		return {left:0,top:0};
	}
	if(G==(document || document.body || document.documentElement))
	{
		return {left:document.documentElement.scrollLeft,top:document.documentElement.scrollTop};
	}
}

function fileupload(cf)
{
    this.uploadID = cf.file_ID||"";
    this.imgID = cf.img_ID||"";
    this.btnID = cf.btn_ID||"";
    this.pDiv = cf.div_id||"preview_div";
    this.valid = cf.v;
    this.image = "";
    this.txt = cf.txt_id||"";
    
    var upload = $get(this.uploadID);
    upload.width = "30px";
    upload.size=1;
    upload.style.fontSize = "10px";
     if(upload==null)
            return null;
    if(window.ActiveXObject)
        upload.style.filter = "alpha(opacity=0)"; 
    else
        upload.style.opacity = 0;
    
    var temp = this;
    upload["onchange"] = function ()
    {
        if(temp.valid)
        {
            temp.valid();
        }
        
        if(temp.imgID!="")
            temp.ReplceImage(this.value);
        if(temp.txt!="")
            temp.SetTxtValue(this.value);
    }
    
    $get(this.btnID)["onmouseover"] = function (event)
    {
        var eArg = window.event || event; 
        temp.SetUpload(eArg,this);
    }
    var temp_onunload = window.onunload;
    window.onunload = function ()
    {
         $get(temp.btnID)["onmouseover"] = null;
         upload["onchange"] = null;
         if(temp_onunload)
         temp_onunload();
         temp_onunload = null;
         delete temp_onunload;
         if(typeof(CollectGarbage)!="undefined")
         CollectGarbage();
    } 
}


fileupload.prototype.SetUpload = function (event,btn)
{   
    var upload = $get(this.uploadID);
    var btnAndUploadSize_width = btn.offsetWidth - (upload.offsetWidth-30);
    var btnAndUploadSzie_height = btn.offsetHeight - upload.offsetHeight;
    
    var btn_left = GetXY(btn).x;
    var btn_right = GetXY(btn).x+btn.offsetWidth;
    var btn_top = GetXY(btn).y;
    var btn_bottom = GetXY(btn).y+btn.offsetHeight;

     var upload_left = 0;
    var upload_right = 0;
    var upload_top = 0;
    var upload_bottom = 0;
    
    if(window.ActiveXObject)
    {
        upload.style.top = (event.clientY - upload.offsetHeight/2+window.document.documentElement.scrollTop)+"px";
        upload.style.left = (event.clientX - upload.offsetWidth/2+window.document.documentElement.scrollLeft)+"px";        
        upload_left = GetXY(upload).x;
        upload_right = GetXY(upload).x+upload.offsetWidth;
        upload_top = GetXY(upload).y;
        upload_bottom = GetXY(upload).y+upload.offsetHeight;
        

    }
    else
    {
        upload.style.top = (event.pageY-upload.offsetHeight/2)+"px";
        upload.style.left = (event.pageX-upload.offsetWidth/2-45)+"px";
        upload_left = GetXY(upload).x;
        upload_right = GetXY(upload).x+upload.offsetWidth;
        upload_top = GetXY(upload).y;
        upload_bottom = GetXY(upload).y+upload.offsetHeight;
    }
    var isSet = false;
    if(window.ActiveXObject)
    {
      
        if(upload_left<btn_left)
        {
            set_left(upload,btn_left);
            isSet = true;
        }
        if(upload_right>btn_right && !isSet)
        {
            set_right(upload,btn_right);
        }
    }
    else
    {
        if(upload_left<btn_left)
        {
            set_left(upload,btn_left);
            isSet = true;
        }
        if(upload_right+40>btn_right&&!isSet)
        {
            set_right(upload,btn_right);
        }
    }
  
   
    if(upload_top>btn_top)
    {

        set_top(upload,btn_top);
    }
    if(upload_bottom>btn_bottom)
    {
        set_bottom(upload,btn_bottom);
    }
    upload = btnAndUploadSize_width=btnAndUploadSzie_height=btn_right=null;
    btn_top = btn_bottom=upload_left=upload_right=upload_top=upload_bottom=null;
    delete upload;
    delete btnAndUploadSize_width;
    delete btnAndUploadSzie_height;
    delete btn_right;
    delete btn_left;
    delete btn_top;
    delete btn_bottom;
    delete upload_left;
    delete upload_right;
    delete upload_top;
    delete upload_bottom;
    if(typeof(CollectGarbage)!="undefined")
    CollectGarbage();
}

fileupload.prototype.ReplceImage = function (path)
{
    $get(this.pDiv).style.display = "";
    if(window.ActiveXObject)
    {
        $get(this.pDiv).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = path;
        $get(this.imgID).style.display = "none";
    }
    else
    {
        $get(this.imgID).alt = path;
        $get(this.imgID).title = path;
        $get(this.pDiv).style.display ="";
        $get(this.pDiv).innerHTML = "<span style='color:red'>"+path.substr(path.lastIndexOf("\\")+1)+"</span>"
        $get(this.imgID).style.display ="none";
        $get(this.pDiv).previousSibling.style.display = "none";
        
    }
}
fileupload.prototype.SetTxtValue = function (path)
{
    if(typeof($get(this.txt).value)!="undefined")
         $get(this.txt).value = path;  
     else if(typeof($get(this.txt).innerHTML)!="undefined")  
         $get(this.txt).innerHTML = path;  
}

function set_right(element,right)
{
    if(element==null) return false;
    if(typeof(element)=="undefined") return false;
    if(window.ActiveXObject)
    {
        var width = element.offsetWidth;
        element.style.left =  (right - width+2)+'px';
        delete width;
    }
    else
    {
        var width = element.offsetWidth+40;
        element.style.left =  (right - width+2)+'px';
        delete width;
        
        
    } 
    if(typeof(CollectGarbage)!="undefined")
    CollectGarbage();   
}

function set_top(element,top)
{
    if(element==null) return false;
    if(typeof(element)=="undefined") return false;
    element.style.top =  top+'px';
}

function set_left(element,left)
{
    if(element==null) return false;
    if(typeof(element)=="undefined") return false;
     if(window.ActiveXObject)
    {
        element.style.left =  left+'px';
    }
    else
    {
        element.style.left =  (left-30)+'px'
    }
}

function set_bottom(element,bottom)
{
    if(element==null) return false;
    if(typeof(element)=="undefined") return false;
    if(window.ActiveXObject)
    {
        var height = element.offsetHeight;
        element.style.top =  (bottom - height+2)+'px';
        delete height;
    }
    else
    {
         var height = element.offsetHeight;
         element.style.top =  (bottom - height)+'px';
         delete height;
    }
    if(typeof(CollectGarbage)!="undefined")
    CollectGarbage();
}