﻿try{
var progressMod = progressModal;
var progcompMod = ProgressComplete;
var progresstd = document.getElementById("tdProgress");
var progcomphead = document.getElementById("tdCompleteHead");
var progcompcont = document.getElementById("tdProgressResult");
}catch(e){
}

function MyEverlifeSlab(id,displayareaid){
    this.detailspage = "HandleMyEverlifeSlab.aspx";
    this.emailpage = "EmailSlabToFriend.aspx";
    this.printpage = "PrintSlab.aspx";
    this.columncnt = 3;
    this.imageWidth = 180;
    this.imageHeight = 113;
    this.thumbnailpage = "thumbnailimage.aspx?width="+ this.imageWidth +"&height="+ this.imageHeight;
    this.method = "POST";
    this.submitfrm = null;
    if(displayareaid!=null){
        this.displaySlabs = true;
        this.displayarea = this.GetElement(displayareaid);
        this.selectedSlabs = this.GetSelectedSlabIds(this.id + "_selectedItems");
        this.frame = this.GetFrame(this.id + "_frame");
    }else{
        this.displaySlabs = false;
        this.displayarea = null;
        this.selectedSlabs = null;
        this.frame = null;
    }
    this.id = id;
    this.displaynear = null;
    this.infoDiv = this.GetInfoDiv(this.id + "_InfoDiv");
    this.Init();    
    return this;
}

MyEverlifeSlab.prototype = {
    Init: function(){
        if(this.displaySlabs){            
            this.displayarea.innerHTML = "<table style='height:200px; width:100%;'><tr><td class='defaultfontb' align='center' valign='middle'>Gathering informations please wait...</td></tr></table>";
            this.setRequest("RequestedFor=init", this.WriteSlabs, false);
        }
    },
    Refresh: function(){
        if(this.displaySlabs){ 
            progressMod.Show();
            progresstd.innerHTML = "Arranging Slabs please wait...";
            this.setRequest("RequestedFor=getslabs", this.WriteSlabs, true);
        }
    },
    Add: function(comp, Slabid, MaterialType){
        this.displaynear = comp;
        this.setRequest("RequestedFor=addslab&slabid=" + Slabid + "&mtype=" + MaterialType + "&rate=0", this.WriteInfo, false);
    },
    Delete: function(Id){
        progressMod.Show();            
        progresstd.innerHTML = "Deleting slabs please wait..."
        this.setRequest("RequestedFor=deleteslab&slabid=" + Slabid, this.WriteSlabs, true);
    },
    DeleteSelected: function(){
        if(this.areSlabsSelected()){
            progressMod.Show();
            progresstd.innerHTML = "Deleting Slabs please wait...";
            this.setRequest("RequestedFor=deleteslabs&slabid=" + this.selectedSlabs.value, this.WriteSlabs ,true);
        }else{
            alert("Select atleast one slab to delete.");
        }
    },
    RateIt: function(Slabid, rate){
        this.setRequest("RequestedFor=rateit&slabid=" + Slabid + "&rate=" + rate);
    },    
    PrintSelected: function(printframe){
        if(!this.areSlabsSelected()){        
            alert("Select atleast one slab to print.");
            return;
        }
        if(printframe){
            this.frame.src = this.printpage + "?slabids=" + this.selectedSlabs.value;            
        }else{
            this.submitfrm.action = this.printpage;
            this.submitfrm.submit();            
        }
    },
    EmailSelected: function(divId){
        if(!this.areSlabsSelected()){        
            alert("Select atleast one slab to send an email.");
            return;
        }
        if(divId!= null){            
            var params = this.GetParams(divId);
            progressMod.Show();
            progresstd.innerHTML = "Sending email please wait...";
            this.setRequest(params,this.WriteEmailInfo,true,this.emailpage,this.method);            
        }else{
            this.submitfrm.action = this.emailpage;
            this.submitfrm.submit();
        }
    },
    WriteEmailInfo: function(info){
        if(info.request.readyState==4){            
            if(info.request.status==200){
               var respxml = info.request.responseXML.documentElement.getElementsByTagName('messages');
               var dtslabs = new DataTable(respxml);
               progcomphead.innerHTML = "Email Status";
               if(dtslabs.rows[0]["message"].toUpperCase()=="SUCCESS"){
                    progcompcont.innerHTML = "Your Email was sent successfully.";                    
               }else{
                    progcompcont.innerHTML = "Email Sending Failed.<br/>ERROR : " + dtslabs.rows[0]["message"].split(":::")[1];                    
               }
            }else{
                progcompcont.innerHTML = "Email Sending Failed.<br/>ERROR : " + info.request.statusText;                
            }
            progressMod.Hide();
            progcompMod.Show();   
        }
    },
    WriteInfo: function(info){
        info.from.infoDiv.style.display = "block";        
        info.from.infoDiv.innerHTML = "<table class='defaultfont' style='background-color:#E9E9EA;color:#6E6E6E;'><tr><td>Adding Slab Please Wait...</td></tr></table>";
        var Bounds = getBounds(info.from.displaynear);
        var infoDivBound = getBounds(info.from.infoDiv);
        info.from.infoDiv.style.left = Bounds.left + "px";
        info.from.infoDiv.style.top = (Bounds.top - infoDivBound.height) + "px";
        if(info.request.readyState==4){
            if(info.request.status==200){
                var respxml = info.request.responseXML.documentElement.getElementsByTagName('slab');
                var dtslabs = new DataTable(respxml);     
                var str = new String("");
                info.from.infoDiv.style.borderColor = "#595552";
                str += "<table cellspacing='0' cellpadding='3' border='0'>";
                str += "    <tr class='defaultfontb' style='color:White;background-color:#A0A0A0;'>";
                str += "        <td align='left'>Added to My Favorites</td>";
                str += "        <td align='right'><img src='images/popup_close.gif' alt='' style='border:none 0px; cursor:pointer;' title='close' onclick='javascript:document.getElementById(\""+ info.from.infoDiv.id +"\").style.display = \"none\"; return false;' /></td>";
                str += "    </tr>";
                str += "    <tr class='defaultfont' style='background-color:#E9E9EA;color:#6E6E6E;'>";
                str += "        <td colspan='2'>"+ dtslabs.rowcount +" Slabs in My Favorites</td>";
                str += "    </tr>";
                str += "    <tr class='defaultfont' style='background-color:#CECDCC;color:#141111;'>";
                str += "        <td colspan='2' align='center'><a href='MyEverlifeSlabs.aspx' class='MenuLnk'><img src='images/btnViewMyEverlife.jpg' alt='' border='0' /></a></td>";
                str += "    </tr>";
                str += "</table>";
                info.from.infoDiv.innerHTML = str;
                Bounds = getBounds(info.from.displaynear);
                infoDivBound = getBounds(info.from.infoDiv);
                info.from.infoDiv.style.left = Bounds.left + "px";
                info.from.infoDiv.style.top = (Bounds.top - infoDivBound.height) + "px";
            }else{                
                var str = new String("");
                info.from.infoDiv.style.borderColor = "#850000";
                str += "<table cellspacing='0' cellpadding='3' border='0'>";
                str += "    <tr class='defaultfontb' style='background-color:#850000;color:White;'>";
                str += "        <td align='left'>Adding Failed</td>";
                str += "        <td align='right'><img src='images/popup_close.gif' alt='' style='border:none 0px; cursor:pointer;' title='close' onclick='javascript:document.getElementById(\""+ info.from.infoDiv.id +"\").style.display = \"none\"; return false;' /></td>";
                str += "    </tr>";
                str += "    <tr class='defaultfont' style='background-color:#FFB8B8;color:#E10000;'>";
                str += "        <td colspan='2'>Adding slab to My Favorites Failed.<br/>Please try after some time.<br/><b><font color='#FF0000'>Error : " + info.request.statusText + "</font></b></td>";
                str += "    </tr>";
                str += "</table>";
                info.from.infoDiv.innerHTML = str;
                Bounds = getBounds(info.from.displaynear);
                infoDivBound = getBounds(info.from.infoDiv);
                info.from.infoDiv.style.left = Bounds.left + "px";
                info.from.infoDiv.style.top = (Bounds.top - infoDivBound.height) + "px";
            }
        }
    },
    WriteSlabs: function(info){        
        if(info.request.readyState==4){
            if(info.request.status==200){
                info.from.selectedSlabs.value = "";
                var respxml = info.request.responseXML.documentElement.getElementsByTagName('slab');
                var dtslabs = new DataTable(respxml);
                var str = new String("");
                if(dtslabs.rowcount<=0){
                    str = "<table align='center'><tr><td class='defaultfontb'>No slabs were added to My Favorites</td></tr></table>";
                }else{
                    str = "<table cellpadding='0' cellspacing='0' border='0' align='left'>";
                    str += "<tr>";
                    var cnt = 0;
                    for(i=0;i<dtslabs.rowcount;i++){                        
                        if(cnt>=info.from.columncnt){
                            cnt = 1;
                            str += "</tr><tr>";
                        }else{
                            cnt++;
                        }
                        str += "<td>";
                        str += "<table width='100%'>";
                        str += "    <tr>";
                        str += "        <td valign='bottom' align='center'>";
                        str += "            <img src='images/macCheckbox.jpg' alt='' checked='false' onclick='javascript:changeState(this,\""+ info.from.selectedSlabs.id +"\",\""+ dtslabs.rows[i]["slabid"] +"\");' />";
                        str += "        </td>";
                        str += "        <td>";
                        str += "            <a href='" + dtslabs.rows[i]["filename"] + "'><img src='"+ info.from.thumbnailpage + "&filename=" + dtslabs.rows[i]["slabpath"] + "' alt=''></a>";
                        str += "        </td>";
                        str += "    </tr>";                        
                        str += "    <tr>";
                        str += "        <td></td>";
                        str += "        <td align='center'>";
                        str += "            <table width='100%'>";
                        str += "                <tr>";
                        str += "                    <td align='center'>"+ dtslabs.rows[i]["name"] +"</td>";
                        str += "                </tr>";                        
                        str += "                <tr>";
                        str += "                    <td align='center'>"+ dtslabs.rows[i]["type"] + " : " + dtslabs.rows[i]["classification"] +"</td>";
                        str += "                </tr>";                        
                        str += "                <tr>";
                        str += "                    <td align='center' id='"+ info.from.displayarea.id +"_tdStars" + i + "'>" + getStars(dtslabs.rows[i]["rate"],dtslabs.rows[i]["slabid"],info.from.displayarea.id +"_tdStars"+i,info.from.id) + "</td>";
                        str += "                </tr>";                        
                        str += "            </table>";
                        str += "        </td>";
                        str += "    </tr>";
                        str += "</table>";
                        str += "</td>";                            
                    }
                    str += "</tr>";
                    str += "</table>";                    
                }
                if(info.from.displayarea){
                    info.from.displayarea.innerHTML = str
                }                
            }else{
                // Statements Shown When Error Occurs.
            }
            progressMod.Hide();
        }
    },    
    areSlabsSelected: function(){
       var selectedSlabs = this.selectedSlabs.value;
       selectedSlabs = selectedSlabs.replace(":::","");
       selectedSlabs = selectedSlabs.replace(" ","");
       if(selectedSlabs!=""){
            return true;
       }else{
            return false;
       }
    },
    GetParams: function(fromid){
        var cont = document.getElementById(fromid);
        if(cont){
            var params = new String("");
            var postelems = cont.getElementsByTagName("input");
            for(i=0;i<postelems.length;i++){
                if(postelems[i].name!=null && postelems[i].name!="undefined" && postelems[i].name!=""){
                    if(params!=""){
                        params += "&";
                    }
                    params += postelems[i].name + "=" + postelems[i].value;
                }
            }
            postelems = cont.getElementsByTagName("textarea");
            for(i=0;i<postelems.length;i++){
                if(postelems[i].name!=null && postelems[i].name!="undefined" && postelems[i].name!=""){
                    if(params!=""){
                        params += "&";
                    }
                    params += postelems[i].name + "=" + postelems[i].value;
                }
            }
            if(params!=""){
                params += "&"
            }
            params += "slabids=" + this.selectedSlabs.value;
            return params;
        }
        return "";
    },
    GetSelectedSlabIds: function(id){
        if(!this.GetElement(id)){
            var newform = document.createElement("form");
            newform.id = id + "_form";
            newform.setAttribute("method",this.method);
            this.displayarea.parentNode.insertBefore(newform,this.displayarea);
            var newcomp = document.createElement("input");
            newcomp.setAttribute("type","hidden");
            newcomp.setAttribute("name","slabids");
            newcomp.setAttribute("id", id);
            newform.appendChild(newcomp);            
        }
        this.submitfrm = this.GetElement(id + "_form");
        return this.GetElement(id);
    },
    GetFrame: function(id){
        if(!this.GetElement(id)){
            var newcomp = document.createElement("iframe");
            newcomp.id = id;            
            newcomp.width = "0";
            newcomp.height = "0";
            if(this.displaySlabs){
                this.displayarea.parentNode.insertBefore(newcomp,this.displayarea);
            }else{
                document.body.appendChild(newcomp);
            }
        }
        return this.GetElement(id);
    },
    GetInfoDiv: function(id){
        if(!this.GetElement(id)){
            var newcomp = document.createElement("div");            
            newcomp.id = id;
            newcomp.style.position = "absolute";
            newcomp.style.left = "0px";
            newcomp.style.top = "0px";
            newcomp.style.display = "none";          
            newcomp.style.borderColor = "#595552";
            newcomp.style.borderWidth = "1px";
            newcomp.style.borderStyle = "solid";
            newcomp.style.backgroundColor = "White";
            if(this.displaySlabs){
                this.displayarea.parentNode.insertBefore(newcomp,this.displayarea);
            }else{
                document.body.appendChild(newcomp);
            }
        }
        return this.GetElement(id);
    },    
    GetElement:function(id){
        return document.getElementById(id);
    },
    setRequest: function(params,callbackfunction,displayprogress,requrl,reqmethod){
        var RanNum = Math.random();
        var url = this.detailspage;
        var actionmethod = this.method;
        if(requrl!=null){
            url = requrl;
        }
        if(reqmethod!=null){
            actionmethod = reqmethod;
        }
        url = url + "?Rnum=" + RanNum;
        var RequestServer = this.xmlRequest();
        if(RequestServer){
            var from = this;
            RequestServer.onreadystatechange = function(){                                 
                var str = new String("");
                str += "<div style='width:200px; height:15px;'>";
                str += "<table width='100%' cellpadding='0' cellspacing='0' height='100%' style='border:solid 1px black;'>";
                str += "    <tr>";
                str += "        <td style='width:" + (RequestServer.readyState * 25) + "%; background-image:url(images/completeBG.jpg);'><img src='images/pixel_trans.gif' alt='' width='1' height='1' /></td>";
                str += "        <td style='background-image:url(images/progressBG.jpg);'><img src='images/pixel_trans.gif' alt='' width='1' height='1' /></td>";
                str += "    </tr>";
                str += "</table>";
                str += "</div>";
                if(callbackfunction){
                    var retobj = new Object();
                    retobj.request = RequestServer;
                    retobj.progress = str;
                    retobj.from = from;
                    retobj.displayprogress = displayprogress;
                    callbackfunction(retobj);
                }
            }
            RequestServer.open(actionmethod,url);
            var contlength = 0;
            if(params!=null){
                contlength = params.length;
            }
            RequestServer.setRequestHeader('Content-Length',contlength);
            RequestServer.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            RequestServer.send(params);
        }
    },
    xmlRequest: function(){
        var objXmlReq;
	    try{
		    objXmlReq = new ActiveXObject("Msxml2.XMLHTTP");
	    }catch(e){
		    try{
			    objXmlReq = new ActiveXObject("Microsoft.XMLHTTP");
		    }catch(oc){
			    objXmlReq = null;
		    }
	    }
	    if(!objXmlReq && typeof XMLHttpRequest != "undefined"){
		    objXmlReq = new XMLHttpRequest();
	    }
	    return objXmlReq;
    }
}

function DataTable(xmlNodes){
    var Nodes = xmlNodes;    
    var row = new Array();
    for(i=0;i<Nodes.length;i++){        
        row[i] = new cols(Nodes[i]);
    }
    this.columncount = 0;
    this.columnName = null;
    if(Nodes.length>0){
        this.columncount = Nodes[0].childNodes.length;
        var colname = new Array();
        for(i=0;i<this.columncount;i++){
            colname[i] = Nodes[0].childNodes[i].tagName;
        }
        this.columnname = colname;
    }
    this.rowcount = Nodes.length;
    this.rows = row;
    return this;
}

function cols(row){      
    for(j=0;j<row.childNodes.length;j++){        
       var colname = row.childNodes[j].tagName;
       if(typeof colname!="undefined"){
          eval("this." + colname + "= '"+ row.getElementsByTagName(colname)[0].childNodes[0].nodeValue +"';");          
       }
    }
    this.columns = this;    
    return this;
}

function getStars(rate,slabid,contid,id){
    var ratecount = 5;
    var str = "";
    str += "<table cellpadding='0' cellspacing='0' border='0'>"
    str += "<tr>";
    for(stcnt=0; stcnt<ratecount;stcnt++){
        str += "<td>";
        var src = "";
        if(rate>stcnt){
            src = "images/BlackStar.jpg";
        }else{
            src = "images/WhiteStar.jpg";
        }
        var crrate = stcnt+1
        var fnonclick = "javascript:" + id + ".RateIt('" + slabid + "','" + crrate + "');document.getElementById('"+ contid +"').innerHTML=getStars('"+ crrate +"','"+ slabid +"','"+ contid +"','"+ id +"');return false;";
        str += "<img src='" + src + "' alt='' onclick=\"" + fnonclick + "\"/>";
        str += "</td>";
    }
    str += "</tr>";
    str += "</table>";
    return str;
}

function changeState(comp,slabsid,slabid){
    var slabids = document.getElementById(slabsid).value;
    var slabidArr = new Array();
    var tranArr = new Array();
    slabidArr = slabids.split(":::");
    for(sl=0;sl<slabidArr.length;sl++){
        if(slabidArr[sl]!=slabid){
            tranArr[tranArr.length] = slabidArr[sl];
        }
    }    
    if(comp.checked==true){        
        comp.checked = false;
        comp.src = "images/macCheckbox.jpg";
    }else{
        tranArr[tranArr.length] = slabid;        
        comp.checked = true;
        comp.src = "images/macCheckboxChecked.jpg";
    }
    document.getElementById(slabsid).value = tranArr.join(":::");    
}

// The Following function gets the Left of an object
function getLeft(obj){
    return obj.offsetLeft + (obj.offsetParent ? getLeft(obj.offsetParent) : obj.x ? obj.x : 0);
}
// The Following function gets the Top of an object
function getTop(obj){
    return (obj.offsetParent ? obj.offsetTop + getTop(obj.offsetParent) : obj.y ? obj.y : 0);    
}
// The Following function gets the Right and width of an object
function getRight(obj){
	var leftpos = getLeft(obj);
	return {right:obj.offsetWidth + leftpos, width:obj.offsetWidth };
}
// The Following function gets the Bottom and height of an object
function getBottom(obj){
	var bottompos = getTop(obj);
	return {bottom:obj.offsetHeight + bottompos, height:obj.offsetHeight };	
}

// The Following function gets the Bounds of an object
function getBounds(obj){
	var LeftPos = getLeft(obj);
	var TopPos = getTop(obj);
	var RightPos = getRight(obj).right;
	var BottomPos = getBottom(obj).bottom;
	var Width = getRight(obj).width;
	var Height = getBottom(obj).height;
	return{left: LeftPos, top: TopPos, right: RightPos, bottom: BottomPos, width: Width, height: Height};
}