var cur_sort = '';
var cur_sort_asc;

function e(id) {
	return document.getElementById(id);
}


function _(form_name,elem_name) {
	return document.forms[form_name].elements[elem_name];
}


function trim(string) {
	return string.replace(/(^\s+)|(\s+$)/g, "");
}


function getMore() {
    e('more_hotels_button').style.display = 'none';
    e('descript_more_hotels').style.display = 'none';
    e('searching_progress_pic').style.display = '';
    //x_ajax_get_more(fromDate, toDate, CountryCode, City, roomType, amountOfRooms, referenceID, showHotels);
    x_ajax_get_more(referenceID, showHotels);
}


function showHotels(result) {

    var hotels = result['hotels'];
    
    e('hotels').style.display = 'none';
    
    for (var i in hotels) {
        var tr = document.createElement('tr');
		tr.className = 'data';
        var td0 = document.createElement('td');
        var td1 = document.createElement('td');
        var td2 = document.createElement('td');
        var td3 = document.createElement('td');

        tr.appendChild(td0);
        tr.appendChild(td1);
        tr.appendChild(td2);
        tr.appendChild(td3);

        td0.innerHTML = '<a href="javascript:void(0)" onclick="window.open(\'/horse_partner/hotelview.php?brand='+hotels[i]['Brand']+'&pid='+hotels[i]['Pid']+'&roomType='+roomType+'&amountOfRooms='+amountOfRooms+'&fromDate='+fromDate+'&toDate='+toDate+'&CountryCode='+CountryCode+'&City='+City+'&Country='+Country+'&Indicator='+hotels[i]['Indicator']+'&Deposit='+hotels[i]['Deposit']+'\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false"><img class="hotel-image" src="'+hotels[i]['PicURL']+'"></a>';
        td1.innerHTML = '<a href="javascript:void(0)" class="name" onclick="window.open(\'/horse_partner/hotelview.php?brand='+hotels[i]['Brand']+'&pid='+hotels[i]['Pid']+'&roomType='+roomType+'&amountOfRooms='+amountOfRooms+'&fromDate='+fromDate+'&toDate='+toDate+'&CountryCode='+CountryCode+'&City='+City+'&Country='+Country+'&Indicator='+hotels[i]['Indicator']+'&Deposit='+hotels[i]['Deposit']+'\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false">' + hotels[i]['Prop_Name'] + '</a><br><br><br>' + '<a href="javascript:void(0)" onclick="window.open(\'/horse_partner/hotelview.php?brand='+hotels[i]['Brand']+'&pid='+hotels[i]['Pid']+'&roomType='+roomType+'&amountOfRooms='+amountOfRooms+'&fromDate='+fromDate+'&toDate='+toDate+'&CountryCode='+CountryCode+'&City='+City+'&Country='+Country+'&Indicator='+hotels[i]['Indicator']+'&Deposit='+hotels[i]['Deposit']+'\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false">'+open_hotel_info+'</a><br><a href="javascript:void(0)" onclick="window.open(\'/horse_partner/hotelview.php?brand='+hotels[i]['Brand']+'&pid='+hotels[i]['Pid']+'&roomType='+roomType+'&amountOfRooms='+amountOfRooms+'&fromDate='+fromDate+'&toDate='+toDate+'&CountryCode='+CountryCode+'&City='+City+'&Country='+Country+'&Indicator='+hotels[i]['Indicator']+'&Deposit='+hotels[i]['Deposit']+'&bron\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false">'+variants+'</a>';
        td1.className = 'hotelName';
         
        if ((hotels[i]['Rating'] > 0)&&(hotels[i]['Rating'] < 10)) {
           	for (var j=0;j<hotels[i]['Rating'];j++) {
               	td2.innerHTML += '<img src="/horse_partner/img/star.gif">';
           	}
        } else {
        	td2.innerHTML = '&nbsp;';
        }
        td2.className = 'hotelClass';
        td3.innerHTML = '<table style="width:100%; height:100%;"><tr><td style="width:100%; height:100%; border:none;"><span class="preprice">&#8364;&nbsp;</span><span class="price">' + hotels[i]['Price'] + '</span><br><br>' + '<input input type="button" onclick="window.open(\'/horse_partner/hotelview.php?brand='+hotels[i]['Brand']+'&pid='+hotels[i]['Pid']+'&roomType='+roomType+'&amountOfRooms='+amountOfRooms+'&fromDate='+fromDate+'&toDate='+toDate+'&CountryCode='+CountryCode+'&City='+City+'&Country='+Country+'&Indicator='+hotels[i]['Indicator']+'&Deposit='+hotels[i]['Deposit']+'&bron\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false" value="'+bron_hotel+'" class="button" style="width:100px; height:20px;">';
        td3.className = 'hotelPrice';
        td3.style.height = '100%';
		
        insertTr(tr);
	}    
    
    e('hotels').style.display = '';
    
    e('total_hotels').innerHTML = result['totalHotels'];
    e('checked_hotels').innerHTML = result['checkedHotels'];
    e('online_hotels').innerHTML = parseInt(e('online_hotels').innerHTML) + parseInt(result['onlineHotels']);
    
    e('searching_progress_pic').style.display = 'none';
    
    if (result['checkedHotels'] < result['totalHotels']) {
	    e('more_hotels_button').style.display = '';
    	e('descript_more_hotels').style.display = '';
    }
}


function zebraPrice() {
	var cur_color = 'hotelPrice';
    var hotels = e('hotels_tbody');
    var trs = hotels.getElementsByTagName('tr');
    for (var i=0; i<trs.length; i++) {
        if (trs.item(i).className == 'data') {
            var tds = trs.item(i).getElementsByTagName('td');
            for (var j=0; j<tds.length; j++) {
                if ((tds.item(j).className == 'hotelPrice')||(tds.item(j).className == 'hotelPriceBright')) {
                	tds.item(j).className = cur_color;
                	if (cur_color == 'hotelPrice') {
                		cur_color = 'hotelPriceBright';
                	} else {
                		cur_color = 'hotelPrice';
                	}
                }
            }
        }
    }
}


function insertTr(tr) {
    if (cur_sort == '') {
        e('hotels_tbody').appendChild(tr);
    } else {
        var Vars = new Array();
        var Pointers = new Array();

        if (cur_sort == 'hotel_name') {
            getHotelNames(Vars,Pointers);

            var hotel_name = '';

            var tds = tr.getElementsByTagName('td');
            for (var i=0; i<tds.length; i++) {
                if (tds.item(i).className == 'hotelName') {
                    hotel_name = tds.item(i).innerHTML.toLowerCase();
                    break;
                }
            }

            var inserted = false;
            for (var i=1; i<Pointers.length; i++) {
                if (i == 1) {
                    if (cur_sort_asc) {
                        if (hotel_name < Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_name > Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (i == (Pointers.length - 1)) {
                    if (cur_sort_asc) {
                        if (hotel_name > Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_name < Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (((cur_sort_asc)&&(Vars[i-1] <= hotel_name)&&(hotel_name <= Vars[i]))||
                ((!cur_sort_asc)&&(Vars[i-1] >= hotel_name)&&(hotel_name >= Vars[i]))) {
                    Pointers[i].parentNode.insertBefore(tr,Pointers[i]);
                    inserted = true;
                    break;
                }
            }

            if (!inserted) {
                e('hotels_tbody').appendChild(tr);
            }
        } else if (cur_sort == 'hotel_class') {
            getHotelClasses(Vars,Pointers);

            var hotel_class;

            var tds = tr.getElementsByTagName('td');
            for (var i=0; i<tds.length; i++) {
                if (tds.item(i).className == 'hotelClass') {
                    hotel_class = tds.item(i).getElementsByTagName('img').length;
                    break;
                }
            }

            var inserted = false;
            for (var i=1; i<Pointers.length; i++) {
                if (i == 1) {
                    if (cur_sort_asc) {
                        if (hotel_class < Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_class > Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (i == (Pointers.length - 1)) {
                    if (cur_sort_asc) {
                        if (hotel_class > Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_class < Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (((cur_sort_asc)&&(Vars[i-1] <= hotel_class)&&(hotel_class <= Vars[i]))||
                ((!cur_sort_asc)&&(Vars[i-1] >= hotel_class)&&(hotel_class >= Vars[i]))) {
                    Pointers[i].parentNode.insertBefore(tr,Pointers[i]);
                    inserted = true;
                    break;
                }
            }

            if (!inserted) {
                e('hotels_tbody').appendChild(tr);
            }
        } else if (cur_sort == 'hotel_price') {
            getHotelPrices(Vars,Pointers);

            var hotel_price;

            var tds = tr.getElementsByTagName('td');
            for (var i=0; i<tds.length; i++) {
                if ((tds.item(i).className == 'hotelPrice')||(tds.item(i).className == 'hotelPriceBright')) {
                    var spans = tds.item(i).getElementsByTagName('span');
                    for (var k=0; k<spans.length; k++) {
                    	if (spans.item(k).className == 'price') {
	                   		hotel_price = parseInt(spans.item(k).innerHTML);
    	    	            break;
                    	}
                    }
                }
            }

            var inserted = false;
            for (var i=1; i<Pointers.length; i++) {
                if (i == 1) {
                    if (cur_sort_asc) {
                        if (hotel_price < Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_price > Vars[i-1]) {
                            Pointers[i-1].parentNode.insertBefore(tr,Pointers[i-1]);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (i == (Pointers.length - 1)) {
                    if (cur_sort_asc) {
                        if (hotel_price > Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    } else {
                        if (hotel_price < Vars[i]) {
                            Pointers[i].parentNode.appendChild(tr);
                            inserted = true;
                            break;
                        }
                    }
                }

                if (((cur_sort_asc)&&(Vars[i-1] <= hotel_price)&&(hotel_price <= Vars[i]))||
                ((!cur_sort_asc)&&(Vars[i-1] >= hotel_price)&&(hotel_price >= Vars[i]))) {
                    Pointers[i].parentNode.insertBefore(tr,Pointers[i]);
                    inserted = true;
                    break;
                }
            }

            if (!inserted) {
                e('hotels_tbody').appendChild(tr);
            }
        }
    }
    zebraPrice();
}


function getHotelNames(HotelNames, Pointers) {
    var hotels = e('hotels_tbody');
    var trs = hotels.getElementsByTagName('tr');
    for (var i=0; i<trs.length; i++) {
        if (trs.item(i).className == 'data') {
            Pointers.push(trs.item(i));
            var tds = trs.item(i).getElementsByTagName('td');
            for (var j=0; j<tds.length; j++) {
                if (tds.item(j).className == 'hotelName') {
                    var ass = tds.item(j).getElementsByTagName('a');
                    for (var k=0; k<ass.length; k++) {
                    	if (ass.item(k).className == 'name') {
		                	HotelNames.push(ass.item(k).innerHTML.toLowerCase());
        		            break;
                    	}
                    }
                }
            }
        }
    }
}



function getHotelClasses(HotelClasses, Pointers) {
    var hotels = e('hotels_tbody');
    var trs = hotels.getElementsByTagName('tr');
    for (var i=0; i<trs.length; i++) {
        if (trs.item(i).className == 'data') {
            Pointers.push(trs.item(i));
            var tds = trs.item(i).getElementsByTagName('td');
            for (var j=0; j<tds.length; j++) {
                if (tds.item(j).className == 'hotelClass') {
                    HotelClasses.push(tds.item(j).getElementsByTagName('img').length);
                    break;
                }
            }
        }
    }
}


function getHotelPrices(HotelPrices, Pointers) {
    var hotels = e('hotels_tbody');
    var trs = hotels.getElementsByTagName('tr');
    for (var i=0; i<trs.length; i++) {
        if (trs.item(i).className == 'data') {
            Pointers.push(trs.item(i));
            var tds = trs.item(i).getElementsByTagName('td');
            for (var j=0; j<tds.length; j++) {
                if ((tds.item(j).className == 'hotelPrice')||(tds.item(j).className == 'hotelPriceBright')) {
                    var spans = tds.item(j).getElementsByTagName('span');
                    for (var k=0; k<spans.length; k++) {
                    	if (spans.item(k).className == 'price') {
	                   		HotelPrices.push(parseInt(spans.item(k).innerHTML));
    	    	            break;
                    	}
                    }
                }
            }
        }
    }
}

function sorting(to_sort, sort_type) {
    var Vars = new Array();
    var Pointers = new Array();

    if (to_sort == 'hotel_name') {
        getHotelNames(Vars,Pointers);
    } else if (to_sort == 'hotel_class') {
        getHotelClasses(Vars,Pointers);
    } else if (to_sort == 'hotel_price') {
        getHotelPrices(Vars,Pointers);
    }

    if (cur_sort != '') {
        if (to_sort == cur_sort) {
			var old_sort_asc = cur_sort_asc;
            if (sort_type == 'none') {
            	cur_sort_asc = !cur_sort_asc;
            } else {
            	if (sort_type == 'asc') {
            		cur_sort_asc = true;
            	} else {
            		cur_sort_asc = false;
            	}
            }

        	if (cur_sort_asc != old_sort_asc) {
	            if (old_sort_asc) {
	                e(to_sort + '_asc_selected').style.display = 'none';
	                e(to_sort + '_asc_unselected').style.display = '';
	                e(to_sort + '_desc_selected').style.display = '';
	                e(to_sort + '_desc_unselected').style.display = 'none';
	            } else {
	                e(to_sort + '_asc_selected').style.display = '';
	                e(to_sort + '_asc_unselected').style.display = 'none';
	                e(to_sort + '_desc_selected').style.display = 'none';
	                e(to_sort + '_desc_unselected').style.display = '';
	            }
        	}
        } else {
            if (cur_sort_asc) {
                e(cur_sort + '_asc_selected').style.display = 'none';
                e(cur_sort + '_asc_unselected').style.display = '';
            } else {
                e(cur_sort + '_desc_selected').style.display = 'none';
                e(cur_sort + '_desc_unselected').style.display = '';
            }

        	if (sort_type == 'none') {
	            if (to_sort == 'hotel_name') {
	                cur_sort_asc = true;
	            } else if (to_sort == 'hotel_class') {
	                cur_sort_asc = false;
	            } else if (to_sort == 'hotel_price') {
	                cur_sort_asc = true;
	            }
        	} else {
        		if (sort_type == 'asc') {
        			cur_sort_asc = true;
        		} else {
        			cur_sort_asc = false;
        		}
        	}

            if (cur_sort_asc) {
                e(to_sort + '_asc_selected').style.display = '';
                e(to_sort + '_asc_unselected').style.display = 'none';
            } else {
                e(to_sort + '_desc_selected').style.display = '';
                e(to_sort + '_desc_unselected').style.display = 'none';
            }

            cur_sort = to_sort;
        }
    } else {
        if (sort_type == 'none') {
	    	if (to_sort == 'hotel_name') {
	            cur_sort_asc = true;
	        } else if (to_sort == 'hotel_class') {
	            cur_sort_asc = false;
	        } else if (to_sort == 'hotel_price') {
	            cur_sort_asc = true;
	        }
        } else {
        	if (sort_type == 'asc') {
        		cur_sort_asc = true;
        	} else {
        		cur_sort_asc = false;
        	}
        }
        if (cur_sort_asc) {
            e(to_sort + '_asc_selected').style.display = '';
            e(to_sort + '_asc_unselected').style.display = 'none';
        } else {
            e(to_sort + '_desc_selected').style.display = '';
            e(to_sort + '_desc_unselected').style.display = 'none';
        }
        cur_sort = to_sort;
    }


    for (var k=0; k<(Pointers.length-1); k++) {
        for (var i=1; i<(Pointers.length - k); i++) {
            if (((cur_sort_asc)&&(Vars[i-1] > Vars[i]))||
               ((!cur_sort_asc)&&(Vars[i-1] < Vars[i]))) {

                Pointers[i].parentNode.removeChild(Pointers[i]);
                Pointers[i-1].parentNode.insertBefore(Pointers[i],Pointers[i-1]);

                var tmp = Vars[i-1];
                Vars[i-1] = Vars[i];
                Vars[i] = tmp;

                tmp = Pointers[i-1];
                Pointers[i-1] = Pointers[i];
                Pointers[i] = tmp;

			}
        }
    }
    zebraPrice();
}

