var host = "/cgi-bin/";
var currentTimeOut = 0;
var fileSizeError = false;

var lastPercentage = 0;

function HttpConnection(url, method, messageObject, contentType) {
    this.url = url;
    this.contentType = contentType;
    this.method = method;
    this.messageObject = messageObject;
    this.responseHandler = null;
    this.invalidResponseHandler = null;
    this.disposed = false;
};

HttpConnection.prototype.connect = function() {
                                       if (!this.responseHandler) {
                                           throw "HttpConnection response handler not set.";
                                       }
                                       var usingActiveXObject = false;
                                       if (window.XMLHttpRequest) {
                                           this.xmlHttpRequest = new XMLHttpRequest();
                                       } else if (window.ActiveXObject) {
                                           usingActiveXObject = true;
                                           this.xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                                       } else {
                                           throw "Connect failed: Cannot create XMLHttpRequest.";
                                       }
                                       var instance = this;
                                       this.xmlHttpRequest.onreadystatechange = function() {
                                                   if (!instance) {
                                                       return;
                                                   }
                                                   try {
                                                       instance.processReadyStateChange();
                                                   } finally {
                                                       if (instance.disposed) {
                                                           instance = null;
                                                       }
                                                   }
                                               };
                                       this.xmlHttpRequest.open(this.method, this.url, true);
                                       if (this.contentType && (usingActiveXObject || this.xmlHttpRequest.setRequestHeader)) {
                                           this.xmlHttpRequest.setRequestHeader("Content-Type", this.contentType);
                                       }
                                       this.xmlHttpRequest.send(this.messageObject ? this.messageObject : null);
                                   };
HttpConnection.prototype.dispose = function() {
                                       this.messageObject = null;
                                       this.responseHandler = null;
                                       this.invalidResponseHandler = null;
                                       this.xmlHttpRequest = null;
                                       this.disposed = true;
                                   };
HttpConnection.prototype.getResponseText = function() {
            return this.xmlHttpRequest ? this.xmlHttpRequest.responseText : null;
        };
HttpConnection.prototype.getResponseXml = function() {
            return this.xmlHttpRequest ? this.xmlHttpRequest.responseXML : null;
        };
HttpConnection.prototype.processReadyStateChange = function() {
            if (this.disposed) {
                return;
            }
            if (this.xmlHttpRequest.readyState == 4) {
                if (this.xmlHttpRequest.status == 200) {
                    if (!this.responseHandler) {
                        this.dispose();
                        throw "HttpConnection response handler not set.";
                    }
                    this.responseHandler(this);
                    this.dispose();
                } else {
                    if (this.invalidResponseHandler) {
                        this.invalidResponseHandler(this);
                        this.dispose();
                    } else {
                        var statusValue = this.xmlHttpRequest.status;
                        this.dispose();
                        throw "Invalid HTTP Response code (" + statusValue + ") and no handler set.";
                    }
                }
            }
        };
HttpConnection.nullMethod = function() { };

function ProcessData(con)
{
    try
    {
        var t = con.getResponseText();
        var res = t.split(" ");
        if (res.length > 2)
        {
            var doConnection = false;



            if (res[1] != res[2])
            {
            	if(res[1]==0 && res[2]==-1 )
            	{
            		doConnection = false;
            	}
            	else
            	{
            		doConnection = true;
            	}
            }
            if (res[2] == '-1')
            {
                // Get("stat").innerText = 'Unknown';
                // Get("stat").innerText = '';
            }
            else
            {
                ShowProgressBar(res, !doConnection);
            }

			if(fileSizeError)	doConnection = false;

            if (doConnection || currentTimeOut==1)
            {
				setTimeout("DoConnection(0)",250);
        	}
        	else
        	{
				lastPercentage = 0;
        	}
        }
    }
    catch (exception)
    {
        for (attribute in exception)
            log(attribute +'='+exception[attribute]);
    }
}

function ErrorProcessData(con) {
    log('ErrorProcessData!');
}


function DoConnection(start)
{
	currentTimeOut = start;
	var zeit = new Date();
	var ms = zeit.getMilliseconds();
    var sid = document.upload.sid.value;
    con = new HttpConnection(host+'progress.cgi?sid='+sid+'&start='+start+'&dontCache='+ms, 'GET', null, 'text/html');
    con.responseHandler = ProcessData;
    con.invalidResponseHandler = ErrorProcessData;
    con.connect();
}

var start_time = 0;
var time = 0;
var read = 0;

function ShowProgressBar(res, finished) {
    var curr_time = new Date().getTime();
    var curr_read = res[1];
    var dt = curr_time - time;
    var dr = curr_read - read;
    var speed = 0;
    var total = res[2];

    if (finished) {
        dt = curr_time - start_time;
        dr = total;
    }

    if (dt > 0) {
        speed = dr/dt;
    }

    time = curr_time;
    read = curr_read;

   	if(read>0 && total>0)
	{


		percentValue = Math.round(read/(total/100));
		if(percentValue>lastPercentage || percentValue==lastPercentage)
		{
			top.document.getElementById("processMessage").innerHTML = percentValue+"% hochgeladen";
			top.document.getElementById("processMessage").style.backgroundPosition = (-200+2*percentValue)+"px 0px";
			lastPercentage = percentValue;
		}

		if(total>maxUploadFileSize)
		{
			fileSizeError = true;
		}

	}
	if (finished)
	{
		top.document.getElementById("processMessage").innerHTML = "100% hochgeladen";
	}
	if(fileSizeError==true)
	{
		finished = true;
		top.document.getElementById("processMessage").innerHTML = "Die Datei ist zu groß.";
	}
}

function Tick()
{
	fileSizeError = false;
	if(document.getElementById("file").value=="")
	{
		document.getElementById("file_").style.display = "block";
		top.shakeObject("editContainer");
		return "nofile";
	}

	cleanErrorObjects();
	document.getElementById("save").value="1";


	document.getElementById("file_").style.display = "none";
    start_time = time = new Date().getTime();
    read = 0;
    Get("stat").innerHTML = "";
    document.upload.submit();
    document.upload.b_save.disabled = "true";
	document.getElementById("save").value="";
    if(document.upload.b_delete)	document.upload.b_delete.disabled = "true";

    setTimeout("DoConnection(1)", 1);
}

function Get(elem) { return document.getElementById(elem); }

function Log(text) { log(text); }

function log(text) {
    // Get("log").innerHTML = text+"<br>"+Get("log").innerHTML;
//    Get("log").innerHTML += "<br>"+text;

    // Get("log").innerHTML = Get("log").innerHTML.substring(0,5120);
}

function triggerMainMenu()
{
	if(document.getElementById("mainMenueContainer").style.width == "26px" || document.getElementById("mainMenueContainer").style.width=="")
	{
		new Effect.Morph('mainMenueContainer', { style: 'width:1000px;', duration: 0.2 });

	}
	else
	{
		new Effect.Morph('mainMenueContainer', { style: 'width:26px;', duration: 0.2 });
	}
}
function showOrHideElement(objId,styleString)
{
	if(document.getElementById(objId))
	{
		if(document.getElementById(objId).style.display == "none")
		{
			if(styleString=="")
			{
				styleString = "block";
			}
			document.getElementById(objId).style.display = styleString;
		}
		else
		{
			if(styleString=="")
			{
				styleString = "none";
			}
			document.getElementById(objId).style.display = styleString;
		}
	}
}
function triggerDisplay(objId)
{
	if(document.getElementById(objId))
	{
		if(document.getElementById(objId).style.display == "none")
		{
			if(objId=="middleBasketContent")
			{
				showOrHideElement("smallBasketMoney","none");
			}
			new Effect.BlindDown(objId, { duration: 0.2 });
		}
		else
		{
			if(objId=="middleBasketContent")
			{
				showOrHideElement("smallBasketMoney","inline");
			}
			new Effect.BlindUp(objId, { duration: 0.2 });
		}
	}
}

function switchClassName(newname,objId)
{
	document.getElementById(objId).className = newname;
}

function configurator(obj,type,zahl,val,chosenname,oldname)
{
  //alert(document.getElementById('shirtlist').value);

  var toggle_off = "";
  for(i=1;i<zahl;i++)
  {
    objId = "box_" + type + "_" + i + "_op";
    if(i == obj && document.getElementById(objId).className == chosenname)
      toggle_off = "j";

    if(i == obj && document.getElementById(objId).className != chosenname)
      newname = chosenname;
    else
      newname = oldname;
    document.getElementById(objId).className = newname;

  }

  var aktuell = type + "_akt";
  if(toggle_off == "")
  {
    document.getElementById(aktuell).style.display = "block";
    document.getElementById(type).value=val;
  }
  else
  {
    document.getElementById(aktuell).style.display = "none";
    document.getElementById(type).value='';
  }

  if(type == "size")
  {
    var aktuell = type + "_akt_ang";
    document.getElementById(aktuell).innerHTML=val;
  }
  else
  {

    for(i=1;i<zahl;i++)
    {
      objId = type + "_akt_" + i;
      objIdt = type + "_akt_" + i + "_t";
      if(i == obj && !toggle_off)
      {
        document.getElementById(objId).style.display = "block";
        document.getElementById(objIdt).style.display = "block";
      }
      else
      {
        document.getElementById(objIdt).style.display = "none";
        document.getElementById(objId).style.display = "none";
      }
    }
  }


  J(document).ready(function(){

	J('#fnc').val('retVal');

    var url = J('#vlIntoBasket').attr('action');
    var data = J('#vlIntoBasket').serializeArray();


    J.post(url, data, function(xml){

        var xhr;
        if( !window.DOMParser )
        {
          xhr = new ActiveXObject( "Microsoft.XMLDOM" ) ;
          xhr.async = "false" ;
          xhr.loadXML( xml ) ;
        }
        else
        {
        	xhr = xml;
        }


        var type_arr = new Array("size","fit","col","cuff");
        var anz_arr = new Array("9","4","5","3");

        for (var i = 0; i < type_arr.length; i++)
        {
          for (var e = 1; e < anz_arr[i]; e++)
          {
            var id = type_arr[i] + '_' + e;
			var res = J(xhr).find(id).text();
            J('#'+id).text(res);
          }
        }


		J('#total').text(J(xhr).find('total').text());
		J('#shirtlist').text(J(xhr).find('shirtlist').text());

		document.getElementById('shirtlist_p').value=J(xhr).find('shirtlist').text();

        if(J('#total').text() == "0")
		{
           J('#disp_null').show();
           J('#search_btn').hide();
           document.getElementById('absenden').disabled = true;
        }
        else
        {
          document.getElementById('absenden').disabled = false;
          J('#search_btn').show();
          J('#disp_null').hide();
        }



      }, "XML" );

      return false;
  });




}

