var inProcessMode;
//Get HTML from the server
function Ahah(url, target, busy,noReturnValue, finishedFunction)
{   
    inProcessMode = setTimeout("AhahWorking('"+busy+"')",500);
    var self=this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var url = url;

    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            clearTimeout(inProcessMode);
            if (!noReturnValue) {
                target.innerHTML = self.xmlHttpReq.responseText;
            }
            else {
                target.innerHTML = '';
            }

            document.body.style.cursor = "";
            var element = document.getElementById(busy);
            element.style.display = "none";
            clearTimeout(inProcessMode);
            if (finishedFunction != null ) {            
                finishedFunction();
            }
        }
    }
    self.xmlHttpReq.open('GET', url, true);
    self.xmlHttpReq.send("");
    
    var element = document.getElementById(busy);
    doPopupResize();
}

function Ajax(url, target, busy)
{
    inProcessMode = setTimeout("AhahWorking('"+busy+"')",1500);
    
    var self=this;
    // Mozilla/Safari   
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var url = url;
    
    self.xmlHttpReq.open('GET', url, false);
    self.xmlHttpReq.send("");
    
    if(self.xmlHttpReq.responseText != 'false')
    {
        clearTimeout(inProcessMode);
        var element = document.getElementById(busy);
        element.style.display="none"; 
    //    target.innerHTML = self.xmlHttpReq.responseText;
    }
    doPopupResize();
}

//Post a form using ajax and trigger callback depending on result
function AjaxPost(url, data, busy)
{
    inProcessMode = setTimeout("AhahWorking('"+busy+"')",1500);
    
    var self=this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var url = url;
    
    self.xmlHttpReq.open('POST', url, false);
    self.xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");//;charset=iso-8859-1");
    self.xmlHttpReq.setRequestHeader("Content-length", data.length);
    self.xmlHttpReq.send(data);
    
    if(self.xmlHttpReq.responseText != 'false')
    {
        clearTimeout(inProcessMode);
        var element = document.getElementById(busy);
        element.style.display="none"; 
    //    target.innerHTML = self.xmlHttpReq.responseText;
    }
}

function AhahWorking(busy){
    var element = document.getElementById(busy);
    element.style.display = 'block';
}

function getClientHeight() {
    var height=600;
    if (self.innerHeight) {
        height= self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        height=document.documentElement.clientHeight;
    } else if (document.body) {
        height=document.body.clientHeight;
    }
    return Math.max(height,200);
}
function getElementPosition(e){ 
    var left = 0; 
    var top  = 0; 
    while (e.offsetParent){ 
        left += e.offsetLeft; 
        top  += e.offsetTop; 
        e     = e.offsetParent; 
    } 
    left += e.offsetLeft; 
    top  += e.offsetTop; 
    return {x:left, y:top}; 
} 

function resize(resizeElementId){
    var element = document.getElementById(resizeElementId);
    var pos = getElementPosition(element);
    element.style.height =  (getClientHeight() -  (pos.y) - 5 ) + "px";
    element.style.display = "none";
    element.style.display = "block";
    element.style.overflow="auto";
}
function emptyFunc(){}

/*
//Not used any longer
function resizePopup(element,doneCallback)
{
    var theElement = document.getElementById(element);
    
 //   doneCallback.onreadyOK(theElement);
    
}*/
function resetScrollHeight()
{
    document.getElementById('modal').style.height = (document.body.parentNode.scrollHeight)+ 'px';
}

function doPopupResize(){
    if(document.getElementById('modal'))
    {
        var element = document.getElementById('modal'); 
        var clientHeight = getClientHeight();
        element.style.height = getClientHeight() + 'px';
        setTimeout("resetScrollHeight()",500);
    }
}

function resizeShoppingcart(){
    var additionalHeight = 122;
    var element = document.getElementById("ScrollView");
    if(navigator.userAgent.indexOf('MSIE')!= -1 )additionalHeight = 177;

    element.style.height =  (getClientHeight() -  (document.body.offsetTop*2) - element.offsetTop-additionalHeight) + "px";   
}

function resizeOrderDetails() {
    var element = document.getElementById("MainContentInner");
    var pos = getElementPosition(element);
    element.style.height = (getClientHeight() - (pos.y) - 10) + "px";
    element.style.display = "none";
    element.style.display = "block";
    element.style.overflow = "auto";
}


function AjaxFormPost(url, formElement, busy, doneCallback){
    inProcessMode = setTimeout("AhahWorking('"+busy+"')",500);
    var form = document.getElementById(formElement);
    var inputs = form.getElementsByTagName('input');
    var selects = form.getElementsByTagName('select');
    var textboxes = form.getElementsByTagName('textarea');
    var values = "";
    
    for(var i=0;i<inputs.length;i++){
        if(inputs[i].id!=null && inputs[i].id!="") {
            if (values.length!=0){
                values = values + "&";
            }
            if(inputs[i].type=='checkbox') {
                values = values + inputs[i].id + "=" + inputs[i].checked;
            }
            else {
                values = values + inputs[i].id + "=" + inputs[i].value.replace("&","%26");
            }
        }
        
    }
    for(var i=0;i<selects.length;i++){
        if (values.length!=0){
            values = values + "&";
        }
        values = values + selects[i].id + "=" + selects[i].value.replace("&","%26");
    }

    for(var i=0;i<textboxes.length;i++){
        if (values.length!=0){
            values = values + "&";
        }
        values = values + textboxes[i].id + "=" + textboxes[i].value.replace("&","%26");
    }
    var self=this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var url = url;
    var element = document.getElementById(busy);

    self.xmlHttpReq.open('POST', url, true);

    self.xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");//;charset=iso-8859-1");
    self.xmlHttpReq.setRequestHeader("Content-length", values.length);
    self.xmlHttpReq.setRequestHeader("Connection", "close");
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            clearTimeout(inProcessMode);
            document.body.style.cursor = "";
            var element = document.getElementById(busy);
            if (element != null) {
                element.style.display = "none";
            }
            var text = self.xmlHttpReq.responseText;
            var list = text.split('\n');
            if (list[0] == 'ok') {
                doneCallback.onreadyOK(list.slice(1));
            } else {
                doneCallback.onreadyFailed(list.slice(1));
            }
        }
    }

    self.xmlHttpReq.send(values);

}
function clearError(formElement){
    var form = document.getElementById(formElement);
    var inputs = form.getElementsByTagName('input');
    var selects = form.getElementsByTagName('select');
    var textboxes = form.getElementsByTagName('textarea');
    for(var i=0;i<inputs.length;i++){
        if(inputs[i].type!='button') {
            inputs[i].className = inputs[i].getAttribute('origClass')
            inputs[i].setAttribute('title','');
        }
    }
    
    for(var i=0;i<selects.length;i++){
        selects[i].className = inputs[i].getAttribute('origClass')
        selects[i].setAttribute('title','');
    }
    for(var i=0;i<textboxes.length;i++){
        textboxes[i].className = inputs[i].getAttribute('origClass')
        textboxes[i].setAttribute('title','');
    }
}
function showPopup(){
    if (typeof hideSelects == 'function') {
        hideSelects();
    }
    if (document.getElementById("modal"))
        document.getElementById("modal").style.display="block"; 
    if( document.getElementById("popup"))
        document.getElementById("popup").style.display="block";
}
function hidePopup(){
    if(document.getElementById("modal"))
        document.getElementById("modal").style.display = "none";
    if( document.getElementById("popup"))
        document.getElementById("popup").style.display="none";
    if (typeof showSelects == 'function') {
        showSelects();
    }

}
function hideReloadPopup(){
    if (typeof showSelects == 'function') {
        showSelects();
    }
    if (document.getElementById("modal"))
        document.getElementById("modal").style.display = "none";
    if( document.getElementById("popup"))
        document.getElementById("popup").style.display="none";
 window.location.reload();

}
function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}
   
function showErrors(list, errorAreaName, errorListName){
        var errorList ="";
        
        for(var i=0;i<list.length;i++){
            
            var element = document.getElementById(list[i].split('|')[0]);
            //alert(element);
            var origClass = element.className;
            if(origClass== null || origClass=='null'){
                origClass='';
            }
            element.setAttribute('origClass',origClass);
            element.className= element.className + " formError";
            var errorText = list[i].split('|')[1];
            element.setAttribute('title',errorText);
            errorList=errorList + "<li class='formErrorListItem'>"+errorText+"</li>";
        }
        document.getElementById(errorListName).innerHTML=errorList;
        document.getElementById(errorAreaName).style.display="block";
}

function showPadErrors(list, errorAreaName, errorListName){
        var errorList ="";
        var padErrorAdded = false;
        for(var i=0;i<list.length;i++){
            
            var element = document.getElementById(list[i].split('|')[0]);
            //alert(element);
            var origClass = element.className;
            if(origClass== null || origClass=='null'){
                origClass='';
            }
            element.setAttribute('origClass',origClass);
            element.className= element.className + " formError";
            var errorText = list[i].split('|')[1];
            element.setAttribute('title',errorText);
            
            
            if(element.id.indexOf('pad') == -1)
                errorList=errorList + "<li class='formErrorListItem'>"+errorText+"</li>";
            else
            {
                if(!padErrorAdded) 
                {    
                    errorList=errorList + "<li class='formErrorListItem'>"+errorText+"</li>";   
                    padErrorAdded = true;
                }
            }
        }
        document.getElementById(errorListName).innerHTML=errorList;
        document.getElementById(errorAreaName).style.display="block";
}

function CreateOptionAndAddToSelect(selectElement,text,value){
        var option = document.createElement('option');
            option.value=value;
            option.text=text;
        try {
            // standard
            selectElement.add(option,null);
        } catch(ex){
            // IE
            selectElement.add(option);
        }
        return option;
}

function backCheck()
{
    if(document.getElementById('reloadChk').value != '')
        location.href = location.href;
    else
        document.getElementById('reloadChk').value = '1'; 
}

function enablePadMeasurements(mode)
{
    if(!mode)
    {
        document.getElementById('padLength').value = '';
        document.getElementById('padWidth').value = '';
        document.getElementById('padDiameter').value = '';
        document.getElementById('padsmode').value = '2';
    }
    else
    {
        document.getElementById('padsmode').value = '1';
        
    }
    document.getElementById('padLength').disabled = mode ? '' : 'disabled';
    document.getElementById('padWidth').disabled = mode ? '' : 'disabled';
    document.getElementById('padDiameter').disabled = mode ? '' : 'disabled';
    document.getElementById('padLength').className = mode ? 'enabledText' : 'disabledText';
    document.getElementById('padWidth').className = mode ? 'enabledText' : 'disabledText';
    document.getElementById('padDiameter').className = mode ? 'enabledText' : 'disabledText';   

}

function setPopupWidth(w)
{
    if(document.getElementById('popup'))
        document.getElementById('popup').style.width = w+'px';
}

function toggleFilterType(headerId, childId) {
    var header = document.getElementById(headerId)
    var child = document.getElementById(childId);
    if (header.className == 'compressableahu') {
        header.className = 'expandableahu';
        child.style.display = 'none';
    } else {
        header.className = 'compressableahu';
        child.style.display = '';
    }
}

function toggleFilterClass(headerId, childId) {
    var header = document.getElementById(headerId)
    var child = document.getElementById(childId);
    if (header.className == 'compressableahuclass') {
        header.className = 'expandableahuclass';
        child.style.display = 'none';
    } else {
        header.className = 'compressableahuclass';
        child.style.display = '';
    }
}


function selectSort(id) {
    var lb = id;

    var oldValue = "";
    arrTexts = new Array();

    for (i = 0; i < lb.length; i++) {
        arrTexts[i] = new Array();
        arrTexts[i][0] = lb.options[i].text.toLowerCase();
        arrTexts[i][1] = lb.options[i].text;
        arrTexts[i][2] = lb.options[i].value;
        if (lb.options[i].selected) {
            oldValue = lb.options[i].value;
            lb.options[i].selected = false;
        }
    }
    arrTexts.sort();
    for (i = 0; i < lb.length; i++) {
        //el = arrTexts[i].split(':');
        lb.options[i].text = arrTexts[i][1];
        lb.options[i].value = arrTexts[i][2];

        if (oldValue == lb.options[i].value)
            lb.options[i].selected = true;
        else
            lb.options[i].selected = false;
    }
}
