var upuBasePath   = '';
var uploadScriptPath = '';
var processID  = '';
var clientForm = null;
var realAction = "";
var objXMLHttpRequest = null;
var upuStep = 1;
var upuTimer = null;
var upuStartTime = 0;
var srvAddr = '';
var upuFormDate = null;
var objFinalForm = null;
var upuUploading = false;

// init upu
function upuInit(obj)
{
    if (upuUploading)
    {
        return false;
    }
    
    upuUploading = true;

    clientForm = obj;
    realAction = clientForm.action;

    // show upload status container
    upuShowContainer();

    upuObj("upu_status").innerHTML = 'Initializing...';
    upuObj("upu_total_size").innerHTML = '';
    
    //return false;
    // init xmlhttp request
    //initXMLHttpRequest();
    
    // make process id
    //processID = genProcessID();
    
    i//setUploadServer();

    // 
    upuTimer = setInterval("getStatus()", 1000);
    
    return false;
}

function upuPreload()
{
    // get upu script path
    var objScripts = document.getElementsByTagName("script");

    for (var i = 0; i < objScripts.length; i ++)
    {
        if (objScripts[i].src && objScripts[i].src.match("upu.js"))
        {
            upuBasePath = objScripts[i].src.replace("misc/upu.js", '');
            break;
        }
    }

    var head = document.getElementsByTagName("head")[0];
    
    var objStyleSheet = document.createElement("link");
    objStyleSheet.type = "text/css";
    objStyleSheet.rel = "stylesheet";
    objStyleSheet.href = upuBasePath + "misc/upu.css";

    head.appendChild(objStyleSheet);

    var objImgTimer = new Image();
    objImgTimer.src = upuBasePath + 'misc/time.gif';

    var objImgProcessBarBackground = new Image();
    objImgProcessBarBackground.src = upuBasePath + 'misc/bar_bg.gif';

    var objImgProcessBar = new Image();
    objImgProcessBar.src = upuBasePath + 'misc/bar_blue.gif';
}


function setUploadServer()
{
    uploadScript = uploadScriptPath == '' ? upuBasePath + 'upload.php': uploadScriptPath;
   
    upuObj("upu_frame_upload").src = uploadScript + "?processid=" + processID;
}

function upuShowContainer(cid,catid)
{
    if (upuObj("upu_div_mask"))
    {
        upuObj("upu_div_mask").style.display  = 'block';
        upuObj("upu_container").style.display = 'block';
        //upuObj("upu_cancel").style.display = 'none';
        upuObj("upu_div_submit").style.display = 'none';
        upuObj("upu_manual_redirect").style.display = 'none';
        //upuObj("upu_status").innerHTML = '';
        upuObj("upu_percent").innerHTML = '';
        upuObj("upu_total_size").innerHTML = '';
        upuObj("upu_speed").innerHTML = '';
        //upuObj("upu_uploaded").innerHTML = '';
        upuObj("upu_remain_time").innerHTML = '';
        //upuObj("upu_bar_completed").style.width = 0;

        //upuS.tep = 1;
        upuTimer = null;
        upuStartTime = 0;
        srvAddr = '';
        
        window.status = 'uploading...';
        fixWindow();
        window.onresize = fixWindow;

        return;
    }
    var catname='';
    var objDivIframe = document.createElement("div");
    objDivIframe.id  = "upu_div_iframe";
    objDivIframe.style.display = "none";
    document.body.appendChild(objDivIframe);
    
    /*
    var objFrmSocket = document.createElement("iframe");
    objFrmSocket.id = "upu_frame_socket";
    objFrmSocket.src = "about:blank";
    objDivIframe.appendChild(objFrmSocket);
    */

    objDivIframe.innerHTML += '<iframe src="" width="500" height="200" name="upu_frame_upload" id="upu_frame_upload"></iframe>';

    var objDivMask = document.createElement("div");
    objDivMask.id = 'upu_div_mask';
    //objDivMask.style.height = '';

    document.body.appendChild(objDivMask);
    
    var objDivContainer = document.createElement("div");
    objDivContainer.id = 'upu_container';
    document.body.appendChild(objDivContainer);

    if(cid=='1'){
	    catname='添加分类';
    }
    var html = '<form action="action.php" method="post" name="formtop"><table width="400" cellpadding = "0" cellspacing="4" border="0" id="upu_tbl_box">' + 
    '<tr>' + 
    '    <td width="300"><span id="upu_status">'+ catname +'</span></td>' + 
    '    <td align="right"><span id="upu_percent"></span></td>' + 
    '</tr>' + 
    '<tr>' + 
    '    <td colspan="2"><input type="text" name="varname" value=""><input type="hidden" name="cid" value="'+cid+'"><input type="hidden" name="mid" value="'+catid+'"><input type=submit name=submit value="提交"></td>' + 
    '</tr>' + 
    '<tr>' + 
    '   <td><span id="upu_total_size"></span> ' + 
    '       <span id="upu_speed"></span> &nbsp;<span id="upu_cancel"><a href="javascript:void(0)" onclick="cancelUpload()">取消关闭</a></span></td><td align="rig' + 
    '       <span id="upu_remain_time"></span></td>' + 
    '</tr>' +  
    '</table></form>' + 
    '<div id="upu_div_submit"><input type="button" onclick="manualSubmit()" value="Continue"/></div>' + 
    '<div id="upu_manual_redirect">If you are not automatically redirected, click here please.</div>';

    objDivContainer.innerHTML = html;
    
    upuObj("upu_cancel").style.display = 'inline';
    
    window.status = 'uploading...';
    fixWindow();
    window.onresize = fixWindow;
    //alert(objDivContainer.style.clientWidth);
}


function fixWindow()
{
    var screenInfo = getPageSize();
    var scrollInfo = getPageScroll();

    document.body.style.overflow = 'hidden';

    upuObj("upu_div_mask").style.width  = screenInfo[0] + 'px';
    upuObj("upu_div_mask").style.height = screenInfo[1] + 'px';
    
    if (window.navigator.userAgent.indexOf('Firefox') >= 1)
    {
        upuObj("upu_container").style.top  = 100 + 'px';
    }
    else
    {
        upuObj("upu_container").style.top  = scrollInfo[1] + 100 + 'px';
    }
    
    upuObj("upu_container").style.left = (screenInfo[0] - 416) / 2 + 'px'
}

function upuObj(objID)
{
    return document.getElementById(objID);
}


function cancelUpload()
{
    upuUploading = false;
//    clientForm.action = realAction;
    upuFormDate = null;
    upuObj("upu_frame_upload").src = '';

    upuObj("upu_div_mask").style.display  = 'none';
    upuObj("upu_container").style.display = 'none';

    upuStep = 4;
  //  getStatus();

//    clearInterval(upuTimer);
    window.status = '';
    window.onresize = null;
    document.body.style.overflow = 'auto';
}

function getPageSize()
{
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY)
	{
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{
		// all but Explorer Mac 
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else
	{
		// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari 
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;

	if (self.innerHeight)
	{
		// all except Explorer 
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		// Explorer 6 Strict Mode 
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		// other Explorers 
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}


	// for small pages with total height less then height of the viewport 
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	}
	else
	{
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport 
	if(xScroll < windowWidth)
	{
		pageWidth = windowWidth;
	}
	else
	{
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);

	return arrayPageSize;
}



function getPageScroll()
{

	var yScroll;

	if(self.pageYOffset)
	{
		yScroll = self.pageYOffset;
	}
	else if(document.documentElement && document.documentElement.scrollTop)
	{
		yScroll = document.documentElement.scrollTop;
	}
	else if(document.body)
	{
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('', yScroll);

	return arrayPageScroll;
}

