var xmlhttp=GetXmlHttpObject();

function proddata(prod) {
  //If XHR unavailable then redirect to original destination
  if (xmlhttp==null) {
    return true;
  }
  var url="prodsum2.asp?code="+prod;
  xmlhttp.open("GET",url,true);
  xmlhttp.onreadystatechange=xmlhttpstateChanged;
  xmlhttp.send(null);
  
  //format fog layer
  var fogstyle=document.getElementById("fog").style;
  fogstyle.display="block";
  fogstyle.opacity=0.0;
  //position product data layer based on window size
  var winWidth=0;
  var leftpos=0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    winWidth = window.innerWidth;
  } else if( document.documentElement && document.documentElement.clientWidth ) {
    //IE 6+ in 'standards compliant mode'
    winWidth = document.documentElement.clientWidth;
  } else if( document.body && document.body.clientWidth ) {
    //IE 4 compatible
    winWidth = document.body.clientWidth;
  }
  //center content based on available window width
  if (winWidth<750) {
    leftpos=0;
  } else {
    leftpos=(winWidth-750)/2;
  }
  document.getElementById("prodsumtext").style.left=leftpos+"px";
  //initiate animation
  fadeInFog();
  return false;
}

function fadeInFog() {
  var fogstyle=document.getElementById("fog").style;
  var o=parseFloat(fogstyle.opacity);
  if (o<0.80) {
    o=o+0.10;
    fogstyle.opacity=o;
    fogstyle.filter="alpha(opacity="+o*100+")";
    setTimeout("fadeInFog()",40);
  } else {
    document.getElementById("prodsumtext").style.display="block";
  }
}

function fadeOutFog() {
  var fogstyle=document.getElementById("fog").style;
  var o=parseFloat(fogstyle.opacity);
  if (o>0) {
    o=o-0.10;
    fogstyle.opacity=o;
    fogstyle.filter="alpha(opacity="+o*100+")";
    setTimeout("fadeOutFog()",40);
  } else {
    document.getElementById("fog").style.display="none";
  }
}

function xmlhttpstateChanged() {
  if (xmlhttp.readyState==4) {
    if (xmlhttp.status == 200) {
      document.getElementById("prodsumtext").innerHTML=xmlhttp.responseText;
    } else {
      var resptext="<table border='0' cellspacing='0' width='750px' class='prodsumtable'><tr><td class='prodsumhead' colspan='2'><a href='' onclick='emptydata(); return false;'><img style='vertical-align: bottom;' alt='Close' src='/products/images/closeblue.gif' /></a>An Error Has Occurred " + xmlhttp.status + "</td></tr></table>"+xmlhttp.responseText;
      document.getElementById("prodsumtext").innerHTML=resptext;
      
    }
  }
}

function emptydata() {
  document.getElementById("prodsumtext").innerHTML="";
  document.getElementById("prodsumtext").style.display="none";
  fadeOutFog();
}

function GetXmlHttpObject() {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  if (window.XMLHttpRequest) return new XMLHttpRequest();

// code for IE6, IE5
  if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");

  return null;
}

// register to the DOM 2 event mechanism
// add page specific anon function to load event
// Behaviour: Attach click events to the 'check boxes to restrict the amount
//            of 'checked' checkboxes
//            Attach click events to the required anchor elements to allow content
//            to be toggled.


    var myData = {
//properties
        printCheckClass: 'printIt',
        compareCheckClass: 'compareIt',
        printNamePrefix: 'PRINT_',
        parentDivID: 'proddata',

// Behaviour: Event handler to restrict the amount of 'checked' compare checkboxes
        restrictCheckBoxes_onEvent: function (e) {
            try{
                var partner=0;
                var chkd = myData.getCheckBoxes('on', myData.compareCheckClass );
                var maxChkd =2;
// check for maximum permitted checkboxes
                if(chkd.length > maxChkd) {
                    for (var j=0; j<chkd.length; j++){
                        if( chkd[j] != this) {
                            if (partner>=1){
// we have a partner and it is not the current clicked object, remove checked attribute
                                chkd[j].checked = false;
                            }
                            partner++;
                        }
                    }
                }
            }
            catch(ex) {
// create custom property to be passed with error object
                ex.croakedInMethod =' - in the data.restrictCheckBoxes_onEvent function in data.js ';
                ErrorHelper.onError(ex);
            }
        },
 // Behaviour: collect all checkboxes with the passed state and class name
         getCheckBoxes: function(state, className){
            try{
                var chkd =[];
                var parent = DOMHelper.get(myData.parentDivID);
                if (parent) {
// collect parent to filter getElementsByClassName call - 20090225KO
                  var elems=DOMHelper.getElementsByClassName(className, parent, 'input');
                  for(var i=0; i<elems.length; i++){
                    if (elems[i].getAttribute("type") == "checkbox"){
// checkbox found, push onto checkbox array depending on passed state
                        if(state === null) {
// no state .. collect all checkboxes
                            chkd.push(elems[i]);
                        }
                        else{
                            if(elems[i].checked == true && state =="on") {
// state = on , collect checked checkboxes
                                chkd.push(elems[i]);
                            }
                            else if (elems[i].checked == false && state =="off"){
//  state = off, collect unchecked checkboxes
                                chkd.push(elems[i]);
                            }
                        }
                    }
                  }
                }
                return chkd;
            }
            catch(ex) {
// create custom property to be passed with error object
                   ex.croakedInMethod =' - in the data.getCheckBoxes function in data.js ';
                   ErrorHelper.onError(ex);
            }
        },

  // Behaviour: Event handler to transfer to compare page if we have correct amount of checkboxes

        gotoCompare_onEvent: function (e){
            try{
                var ev = e || window.event;
                var chkd = myData.getCheckBoxes("on", myData.compareCheckClass);
                var params='';
                var sector;
                var secPos;
                var nextParamPos;
                var URL = 'compare.asp';
                var errorParentDivID = 'errorContainer';
                var errorDivID = 'compareErrorMsg';
                var errorParentDiv = DOMHelper.get(errorParentDivID);
                var para;
                var minReq = 2;
// remove the error message div element from the error container div to allow error message div to be re-created
                DOMHelper.removeElement(errorParentDivID, errorDivID);
                if (chkd.length < minReq) {
// create error div wrapper and append anchor and text element to it
                    var errorDiv = DOMHelper.addElement(errorParentDivID, errorDivID, 'div');
                    errorDiv.className = "error";
                    para = document.createElement("p");
                    para.appendChild(document.createTextNode("Please select two products to compare."));
                    errorDiv.appendChild(para);
// append error div to container div
                    errorParentDiv.appendChild(errorDiv);
// cancel default  href action
                    DOMHelper.cancelClick(ev);
                    return false;
                }
                else{
// collect sector
                    secPos=location.search.indexOf('sector=');
                    nextParamPos =location.search.indexOf('&',secPos);
                    params += (nextParamPos >= 0) ? '?' + location.search.substring(secPos, (nextParamPos-secPos)) :  '?' + location.search.substring(secPos, location.search.length)
// collect comparisons
                    for(var i=0; i<chkd.length; i++){
                        params+="&sel"+ (i+1) + "=" + chkd[i].name;
                    }
// redirect to compare page by changing the anchor href to the required page
                    this.href= URL+params;
                }
            }
            catch(ex) {
// create custom property to be passed with error object
                ex.croakedInMethod =' - in the data.gotoCompare_onEvent function in data.js ';
                ErrorHelper.onError(ex);
            }
        },

// Behaviour: Event handler to transfer to dataprint page if we have correct amount of checkboxes

        gotoDataPrint_onEvent: function (e){
            try{
                var ev = e || window.event;
                var chkd = myData.getCheckBoxes("on", myData.printCheckClass);
                var params='';
                var sector ='';
                var secPos;
                var nextParamPos;
                var URL = 'dataprint.asp';
                var errorParentDivID = 'errorContainer';
                var errorDivID = 'compareErrorMsg';
                var errorParentDiv = DOMHelper.get(errorParentDivID);
                var para;
                var minReq = 1;
// remove the error message div element from the error container div to allow error message div to be re-created
                DOMHelper.removeElement(errorParentDivID, errorDivID);
                if (chkd.length < minReq) {
// create error div wrapper and append anchor and text element to it
                    var errorDiv = DOMHelper.addElement(errorParentDivID, errorDivID, 'div');
                    errorDiv.className = "error";
                    para = document.createElement("p");
                    para.appendChild(document.createTextNode("Please select one or more products to print."));
                    errorDiv.appendChild(para);
// append error div to container div
                    errorParentDiv.appendChild(errorDiv);
// cancel default  href action
                    DOMHelper.cancelClick(ev);
                    return false;
                }
                else{
// collect sector
                    secPos=location.search.indexOf('sector=');
                    nextParamPos =location.search.indexOf('&',secPos);
                    sector += (nextParamPos >= 0) ? '?' + location.search.substring(secPos, (nextParamPos-secPos+1)) :  '?' + location.search.substring(secPos, location.search.length)
// collect product prints
                    params="&printsel=";
                    for(var i=0; i<chkd.length; i++){
                        params+= chkd[i].name.replace(myData.printNamePrefix,'') + ' ';
                    }
// redirect to dataprint page by changing the anchor href to the required page
                    params = CommonUtils.trim(params);
// add csv delimiter
                    params = params.replace(new RegExp(/\s+/g),',');
                    this.href= URL+sector+params;
// open in new window
                    window.open(this.href,"windowed","toolbar=1,menubar=1,resizable=1,scrollbars=1,width=530,height=600");
// cancel default  href action
                    DOMHelper.cancelClick(ev);
                    return false;

                }
            }
            catch(ex) {
// create custom property to be passed with error object
                ex.croakedInMethod =' - in the data.gotoDataPrint_onEvent function in data.js ';
                ErrorHelper.onError(ex);
            }
        }
};

        DOMHelper.addEvent(window,'load',
		    function(){
                try{
//setup toggle object to be passed to addToggles
                      var togObj = {
                          noDisplayClass: 'noDisplay',
                          togglerClass: 'prodlink',
                          toggleBodyName: 'row',
                          events:['click'],
                          tag: 'a',
                          initTog: true
                      };
// setup animation object to be passed to addToggles
                      var animObj = {
                          animLen: 1000,
                          timerLen: 5
                      };
                      DisplayUtils.addToggles(togObj, animObj);
// change tog object properties for next addToggles call
                      togObj.initTog = false;
                      togObj.togglerClass = 'prodlink2';
                      DisplayUtils.addToggles(togObj, animObj);
                      togObj.togglerClass = 'closeIt';
                      DisplayUtils.addToggles(togObj, animObj);
// setup image toggle object to be passed to addImageToggles
                      var imgTogObj = {
                          togglerClass: 'prodlink',
                          togglerTag: 'a',
                          event: 'click',
                          imageName: 'imgplusminus',
                          image1: 'plus3.gif',
                          image2: 'minus3.gif'
                      };
                      DisplayUtils.addImageToggles(imgTogObj);
                      imgTogObj.togglerClass = 'prodlink2';
                      DisplayUtils.addImageToggles(imgTogObj);
                      imgTogObj.togglerClass = 'closeIt';
                      DisplayUtils.addImageToggles(imgTogObj);
// collect compare checkboxes and add event handler for comparison logic to be applied
                      var elems = myData.getCheckBoxes(null,myData.compareCheckClass );
                      for (var i=0; i<elems.length; i++){
                        DOMHelper.addEvent(elems[i], 'click', myData.restrictCheckBoxes_onEvent);
                      }
// add event handler to transfer to compare.asp anchor element/s
                      var anchors = DOMHelper.getElementsByClassName('gotoCompare');
                      for (var j=0; j<anchors.length; j++){
                        DOMHelper.addEvent(anchors[j], 'click', myData.gotoCompare_onEvent);
                      }
// collect print checkboxes and add event handler for comparison logic to be applied
                    //var elems = myData.getCheckBoxes(null,myData.compareCheckClass );
                    //for (var i=0; i<elems.length; i++){
                     //   DOMHelper.addEvent(elems[i], 'click', myData.restrictCheckBoxes_onEvent);
                    //}
// add event handler to transfer to dataprint.asp anchor element/s
                      anchors = null;
                      anchors = DOMHelper.getElementsByClassName('gotoPrint');
                      for (var k=0; k<anchors.length; k++){
                        DOMHelper.addEvent(anchors[k], 'click', myData.gotoDataPrint_onEvent);
                      }
                    }
                    catch(ex) {
// create custom property to be passed with error object
                      ex.croakedInMethod =' - in the page specific anon function used within DOMHelper.addEvent in data.js ';
                      ErrorHelper.onError(ex);
                  }
              });
