
/* ----------------------------          redBus SEAT LAYOUT Html/Js Code            ---------------------------------- */
    
var redBus = {};
redBus.widget = function(){};   

redBus.widget.SeatLayout = function(container, seatLayoutData){
    //alert("here again");
    this._elContainer = container;
    this._data = seatLayoutData;
    //alert(this._data.sid);
    //alert(this._data.seats);
    if(this._data.sid < 1000000)
		this.init();
	else
		this.init1();
}

redBus.widget.SeatLayout.prototype._elContainer = null;
redBus.widget.SeatLayout.prototype._elTable = null;
redBus.widget.SeatLayout.prototype._elBPList = null;
redBus.widget.SeatLayout.prototype._Row1 = null;
redBus.widget.SeatLayout.prototype._Row2 = null;
redBus.widget.SeatLayout.prototype._Row3 = null;
redBus.widget.SeatLayout.prototype._Row4 = null;
redBus.widget.SeatLayout.prototype._Row5 = null;
redBus.widget.SeatLayout.prototype._elCell = null;
redBus.widget.SeatLayout.prototype._data = null;
redBus.widget.SeatLayout.CLASS_TABLE="sLyt";
redBus.widget.SeatLayout.CLASS_TCELL="cell";
redBus.widget.SeatLayout.CLASS_TCELL_EMPTY="emptycell";

redBus.widget.SeatLayout.prototype.init = function(){
    this._elContainer.innerHTML = "";
    this._elTable = this._elContainer.appendChild(document.createElement("table"))
	
    this._elTable.id = "rBSeatLayout";
    YAHOO.util.Dom.addClass(this._elTable,redBus.widget.SeatLayout.CLASS_TABLE)
    this.addSeats();

	this.setBoardingPoints();
}

redBus.widget.SeatLayout.prototype.init1 = function(){
    this._elContainer.innerHTML = "";
    //this._elTable = this._elContainer.appendChild(document.createElement("table"))
    this._elTable = document.createElement("table");
	
    this._elTable.id = "rBSeatLayout";	
    YAHOO.util.Dom.addClass(this._elTable,redBus.widget.SeatLayout.CLASS_TABLE)
    
    //alert(this._data.seats);
    if(this._data.sid < 4000000)
    {
		this.addSeats1();
    }
    else
    {
		this.addSeats2();
	}

	this.setBoardingPoints();
}

redBus.widget.SeatLayout.prototype.addSeats1 = function(){

	var avseats = this._data.avseats.split(",");
	var avfares = this._data.avfares.split(",");
	var types = this._data.types.split(",");
	var shtyp = false;
	var shfrs = false;
	if(types.length > 1)
		shtyp = true;
	if(this._data.f.split("/").length > 1)
		shfrs = true;
	
	var det = this._data.seats.split("|");
	var rows = det[0];
	var cols = det[1];
	var gaps = det[2].split(",");
	if(det[2] == "") gaps.length = 0;
	var seats = det[3].split("-");
	
	var cw = (540/cols);
	var ch = 47;
	var gl = 20;
	
	var xpos = 0;
	var ypos = 0;
	var iele = this._elContainer.offsetParent;
	while(iele != null)
	{
		xpos += iele.offsetLeft;
		ypos += iele.offsetTop;
		iele = iele.offsetParent;
	}
	for(var iSeat = 0 ; iSeat < seats.length ; iSeat++)
	{
		var seat = seats[iSeat].split(":");
		var ele = document.createElement("div");
		
		
		var colNo = (seat[3])%cols;
		var rowNo = (seat[3] - colNo)/cols;
		
		var ngaps = 0;
		for(var j = 0; j < gaps.length; j++)
		{
			if(rowNo > gaps[j]) ngaps++;
		}
		
		ele.style.width = cw * seat[4];
		ele.style.height = ch * seat[5];
		
		ele.style.position = "absolute";
		ele.style.left = colNo*cw + xpos;
		ele.style.top = ch*rowNo + ypos + ngaps*gl;
				
		//is it available
		var index = -1;
		var bavailable = false;
		for(var j = 0; j < avseats.length ; j++)
		{
			if(avseats[j] == seat[0])
			{
				index = j;
				bavailable = true;
				break;
			}
		}
		//ele.onMouseOver="alert('test');"
		
		if(bavailable)
		{
			if(shfrs)
				ele.innerHTML = ""+seat[1]+"<input type='checkbox' id='" + seat[1] + "' onclick='setSeatSelected(this);'/>"+"<br><br><font size=1pt>Rs."+avfares[index]+"</font>";
			else
				ele.innerHTML = "<br>"+seat[1]+"<input type='checkbox' id='" + seat[1] + "' onclick='setSeatSelected(this);'/>";
				
			var st = "";
			if(seat[2] == "st") st = "Seater";
			if(seat[2] == "ss") st = "Semi Sleeper";
			if(seat[2] == "sl") st = "Sleeper";
			if(seat[2] == "db") st = "Double Berth";
			if(seat[2] == "sp") st = "Special Seat";
			
			//ele.onMouseOver="alert('sdfsdfsdf');";//"show_seatdetails('"+seat[1]+"','"+st+"','"+avfares[index]+"');";
			//alert(ele.onMouseOver);
			//ele.onMouseOut ="hide_seatdetails();";
		}
		else
			ele.innerHTML = "<br>"+seat[1];

		this._elContainer.appendChild(ele);
	}
	//add gaps
	for(var igap = 0 ; igap < gaps.length ; igap++)
	{
		var ele = document.createElement("span");
		ele.style.width = cw * cols;
		ele.style.height = gl;
		
		var ngaps = 0;
		for(var j = 0; j < gaps.length; j++)
		{
			if(gaps[igap] > gaps[j]) ngaps++;
		}
		ele.style.position = "absolute";
		ele.style.left = xpos;
		ele.style.top = ch*gaps[igap] + ypos + ngaps*gl + ch;
		ele.align = "center";
		
		ele.innerHTML = "------------------------------------------------------------------------------------------";
		this._elContainer.appendChild(ele);
	}
	this._elContainer.style.height = ch*rows + gaps.length * gl;
}

redBus.widget.SeatLayout.prototype.addSeats2 = function(){

	var avseats = this._data.avseats.split(",");
	var avfares = this._data.avfares.split(",");
	var types = this._data.types.split(",");
	var shtyp = false;
	var shfrs = false;
	if(types.length > 1)
		shtyp = true;
	if(this._data.f.split("/").length > 1)
		shfrs = true;
	
	var det = this._data.seats.split("-");
	var rows = det[0];
	var cols = det[1];
	var gaps = det[2].split(",");
	if(det[2] == "") gaps.length = 0;
	var seats = det[4].split(";");
	
	var cw = (540/cols);
	var ch = 47;
	var gl = 20;
	
	var xpos = 0;
	var ypos = 0;
	var iele = this._elContainer.offsetParent;
	while(iele != null)
	{
		xpos += iele.offsetLeft;
		ypos += iele.offsetTop;
		iele = iele.offsetParent;
	}
	var showlegend = false;
	for(var iSeat = 0 ; iSeat < seats.length ; iSeat++)
	{
		var seat = seats[iSeat].split(":");
		var ele = document.createElement("div");
		
		
		var colNo = seat[4];
		var rowNo = seat[5];
		
		var ngaps = 0;
		for(var j = 0; j < gaps.length; j++)
		{
			if(rowNo > gaps[j]) ngaps++;
		}
		
		ele.style.width = cw * seat[6];
		ele.style.height = ch * seat[7];
		
		ele.style.position = "absolute";
		ele.style.left = colNo*cw + xpos;
		ele.style.top = ch*rowNo + ypos + ngaps*gl;
				
		//is it available
		var index = -1;
		var bavailable = false;
		for(var j = 0; j < avseats.length ; j++)
		{
			if(avseats[j] == seat[2])
			{
				index = j;
				bavailable = true;
				break;
			}
		}
		//ele.onMouseOver="alert('test');"
		var strSeat = seat[2];
		var slindex = seat[2].indexOf("L");
		if(slindex >= 0)
		{
			showlegend = true;
			strSeat = seat[2].substring(0,slindex)+"<span style=\"color: red\">L</span>"+seat[2].substring(slindex+1);
		}
		var slindex = seat[2].indexOf("U");
		if(slindex >= 0)
		{
			showlegend = true;
			strSeat = seat[2].substring(0,slindex)+"<span style=\"color: red\">U</span>"+seat[2].substring(slindex+1);
		}
		
		if(bavailable)
		{
			if(shfrs)
				ele.innerHTML = ""+strSeat+"<input type='checkbox' id='" + seat[2] + "' onclick='setSeatSelected(this);'/>"+"<br><br><font size=1pt>Rs."+avfares[index]+"</font>";
			else
				ele.innerHTML = "<br>"+strSeat+"<input type='checkbox' id='" + seat[2] + "' onclick='setSeatSelected(this);'/>";
				
			var st = "";
			if(seat[3] == "st") st = "Seater";
			if(seat[3] == "ss") st = "Semi Sleeper";
			if(seat[3] == "sl") st = "Sleeper";
			if(seat[3] == "db") st = "Double Berth";
			if(seat[3] == "sp") st = "Special Seat";
			
			//ele.onMouseOver="alert('sdfsdfsdf');";//"show_seatdetails('"+seat[1]+"','"+st+"','"+avfares[index]+"');";
			//alert(ele.onMouseOver);
			//ele.onMouseOut ="hide_seatdetails();";
		}
		else
			ele.innerHTML = "<br>"+strSeat;

		this._elContainer.appendChild(ele);
	}
	if(showlegend)
	{
		document.getElementById("seatLayoutLegend").style.visibility="visible";
		document.getElementById("seatLayoutLegend").style.display="block";
	}
	else
	{
		document.getElementById("seatLayoutLegend").style.visibility="hidden";
		document.getElementById("seatLayoutLegend").style.display="none";
	}
	//add gaps
	for(var igap = 0 ; igap < gaps.length ; igap++)
	{
		var ele = document.createElement("span");
		ele.style.width = cw * cols;
		ele.style.height = gl;
		
		var ngaps = 0;
		for(var j = 0; j < gaps.length; j++)
		{
			if(gaps[igap] > gaps[j]) ngaps++;
		}
		ele.style.position = "absolute";
		ele.style.left = xpos;
		ele.style.top = ch*gaps[igap] + ypos + ngaps*gl + ch;
		ele.align = "center";
		
		ele.innerHTML = "------------------------------------------------------------------------------------------";
		this._elContainer.appendChild(ele);
	}
	this._elContainer.style.height = ch*rows + gaps.length * gl;
}

redBus.widget.SeatLayout.prototype.addSeats = function(){

	var elMsgBody = document.createElement("tbody");

    var row1_add = false;
    var row2_add = false;
    var row3_add = false;
    var row4_add = false;
    var row5_add = false;
    
    this._Row1 = document.createElement("tr");
    this._Row1.id = "row1";
    this._Row2 = document.createElement("tr");
    this._Row2.id = "row2";
    this._Row3 = document.createElement("tr");
    this._Row3.id = "row3";
    this._Row4 = document.createElement("tr");
    this._Row4.id = "row4";
    this._Row5 = document.createElement("tr");
    this._Row5.id = "row5";
    
    var col = 0;
    //calculate number of columns
    //adding to table rows      
    for(var x=0;x<15;x++)
        if(this._data.seats[x].n != "" || this._data.seats[x+15].n != "" || this._data.seats[x+30].n != "" || this._data.seats[x+45].n != "" || this._data.seats[x+60].n != "")
	        col++; 
	var cw = (500/col);
    for(var i=0; i<this._data.seats.length; i++) {

        var isTxtBox = false;
        var isChkBox = false;
        var isColor = false;            

        this._elCell = document.createElement("td");
        //this._elCell.style.color = "#000000";
        //this._elCell.style.font-size = "11px";
        //this._elCell.style.font-weight = "bold";
        //this._elCell.style.text-align = "justify";
        //this._elCell.style.font-family = "Tahoma,Arial, Helvetica, sans-serif";
        
        //checking if this is an empty cell or needs contents
        if(this._data.seats[i].n != ""){
            
            YAHOO.util.Dom.addClass(this._elCell,redBus.widget.SeatLayout.CLASS_TCELL);
            this._elCell.id = "n-"+this._data.seats[i].n;   
            this._elCell.innerHTML = this._elCell.innerHTML + "<label>" + this._data.seats[i].n  + "<\/label>";
            
            if(typeof this._data.seats[i].cb != "undefined" && this._data.seats[i].cb == true){
                this._elCell.innerHTML = this._elCell.innerHTML + "<input type='checkbox' id='" + this._data.seats[i].n + "' onclick='setSeatSelected(this);'/>";
            }       
            }       
        else {
            YAHOO.util.Dom.addClass(this._elCell,redBus.widget.SeatLayout.CLASS_TCELL_EMPTY);
        }
        this._elCell.style.width = cw;
        
        
        //adding to table rows      
        if(i<15) {
            if(this._data.seats[i].n != ""){
                row1_add = true;
                //add the cell
				this._Row1.appendChild(this._elCell);
            }
            else if(this._data.seats[i+15].n == "" && this._data.seats[i+30].n == "" && this._data.seats[i+45].n == "" && this._data.seats[i+60].n == "")
            {
				//do not add the cell
            }
            else
            {
				//add the cell
				this._Row1.appendChild(this._elCell);
			}
        }
        

        if(14<i && i<30){
        //alert("2--" + i); 
            if(this._data.seats[i].n != ""){
                row2_add = true;
                //add the cell
				this._Row2.appendChild(this._elCell);
            }
            else if(this._data.seats[i-15].n == "" && this._data.seats[i+15].n == "" && this._data.seats[i+30].n == "" && this._data.seats[i+45].n == "")
            {
				//do not add the cell
			}
			else
			{
				this._Row2.appendChild(this._elCell);
			}
        }
                
        if(29<i && i<45){
            if(this._data.seats[i].n != ""){
                row3_add = true;
                //add the cell
				this._Row3.appendChild(this._elCell);
            }
            else if(this._data.seats[i-30].n == "" && this._data.seats[i-15].n == "" && this._data.seats[i+15].n == "" && this._data.seats[i+30].n == "")
            {
				//do not add
            }
            else
            {
				//add the cell
				this._Row3.appendChild(this._elCell);
			}
        }
        if(44<i && i<60) {          
            if(this._data.seats[i].n != ""){
                row4_add = true;
                //add cell
				this._Row4.appendChild(this._elCell);
            }
            else if(this._data.seats[i-45].n == "" && this._data.seats[i-30].n == "" && this._data.seats[i-15].n == "" && this._data.seats[i+15].n == "")
            {
				//do not add cell
            }
            else
            {
				//add cell
				this._Row4.appendChild(this._elCell);
			}
        }
        if(59 < i && i< 75) {
            //alert("last-row" + i);
            if(this._data.seats[i].n != ""){
                row5_add = true;
                //add cell
				this._Row5.appendChild(this._elCell);
            }
            else if(this._data.seats[i-60].n == "" && this._data.seats[i-45].n == "" && this._data.seats[i-30].n == "" && this._data.seats[i-30].n == "")
            {
				//do not add cell
            }
            else
            {
				//add cell
			  this._Row5.appendChild(this._elCell);
            }
            //alert("last-row" + i);
        }

        
        if(row1_add)
            elMsgBody.appendChild(this._Row1);
        if(row2_add || row1_add)
            elMsgBody.appendChild(this._Row2);
        if(row3_add || row2_add)
            elMsgBody.appendChild(this._Row3);
        if(row4_add || (row3_add && row5_add))
            elMsgBody.appendChild(this._Row4);
        if(row5_add)
            elMsgBody.appendChild(this._Row5);
    }   
	
	this._elTable.appendChild(elMsgBody);

}



redBus.widget.SeatLayout.prototype.setBoardingPoints = function(){
	
	this._elBPList = document.getElementById("BP_list");
	
	this._elBPList.options.length = 0;
	
    var option = document.createElement("OPTION");
    option.text=" -- Select -- ";
	option.value="";
	this._elBPList.options.add(option);
    
    for(var i=0; i<this._data.bps.length; i++) {
        var option = document.createElement("OPTION");
        option.text=this._data.bps[i].n;
		option.value=this._data.bps[i].i;
		this._elBPList.options.add(option);
    }
    document.getElementById("LFrom").innerHTML = SeatLayouts.From;
    document.getElementById("LTo").innerHTML = SeatLayouts.To;
    document.getElementById("LDoj").innerHTML = SeatLayouts.DoJ;
    document.getElementById("LTravels").innerHTML = this._data.tr;
    document.getElementById("LBusType").innerHTML = this._data.bt;
    document.getElementById("LFare").innerHTML = "Rs "+this._data.f;
    document.getElementById("seatsSelected").value = "";
    document.getElementById("qs").value = "d="+SeatLayouts.DoJ+"&r="+this._data.sid;
}


function getSeatLayout(sID){
	    for(var i=0; i<SeatLayouts.sls.length; i++) {
			if(SeatLayouts.sls[i].sid==sID){
				return SeatLayouts.sls[i];
			}
		}
	}

function setSeatSelected(chkbox){
	if(chkbox.checked){
		document.getElementById("seatsSelected").value = add_seat(document.getElementById("seatsSelected").value, chkbox.id);	
	}
	else {
		document.getElementById("seatsSelected").value = remove_seat(document.getElementById("seatsSelected").value, chkbox.id);
	}
}

function add_seat(curseats, seatno)
{
	str = new String(curseats);
	if(str.length > 0)
	{
		return curseats+","+seatno;
	}
	else
	{
		return seatno;
	}
}

function remove_seat(curseats, seatno)
{
	str = new String(curseats);
	i = str.indexOf(seatno);
	if(i >= 0)
	{
		inext = str.indexOf(",",i);
		if(inext == -1 && i == 0)
		{
			return "";
		}
		if(i == 0)
		{
			return str.substring(inext+1);
		}
		else
		{
			if(inext == -1)
			{
				return str.substring(0,i-1);
			}
			else
			{
				return str.substring(0,i-1) + str.substring(inext);
			}
		}
	}
	else
	{
		return curseats;
	}
}
    
    function createSeatLayout(sid){
	clearSeatLayout();
        var container = YAHOO.util.Dom.get("seatLayoutContainer");
        var sL = new redBus.widget.SeatLayout(container, getSeatLayout(sid));
    
    }
    
    function clearSeatLayout()
    {
		document.getElementById("seatLayoutLegend").style.visibility="hidden";
		document.getElementById("seatLayoutLegend").style.display="none";
    }
