/*
AJAX RELATED FUNCTIONS
*/

var currentSearchPage = 1;

function createAjax() {
    var ro;
    if(window.XMLHttpRequest){
        ro = new XMLHttpRequest();
    }else if (window.ActiveXObject) {
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        ro = null;
    }
    return ro;
} 

/*
DRAGGABLE CONTENT RELATED FUNCTIONS
*/
function addMouseDrag(d) {
    draggableDiv = document.getElementById(d);
    document.onmousemove = dragDiv;
    var IE = document.all?true:false;
    if (IE) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft
        tempY = event.clientY + document.body.scrollTop
    } else {  // grab the x-y pos.s if browser is NS
        tempX = ev.pageX
        tempY = ev.pageY
    }
    // catch possible negative values in NS4
    if (tempX < 0){tempX = 0}
    if (tempY < 0){tempY = 0}
    initialPosition.mouseX = tempX;
    initialPosition.mouseY = tempY;
    initialPosition.divX = findPosX(d);
    initialPosition.divY = findPosY(d);
}
function removeMouseDrag(d) {
    draggableDiv = document.getElementById(d);
    draggableDiv.onmousemove = function(){};
}

function dragDiv(ev) {
    //alert(ev.screenX);
    //alert(ev.screenY);

    var IE = document.all?true:false;
    if (IE) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft
        tempY = event.clientY + document.body.scrollTop
    } else {  // grab the x-y pos.s if browser is NS
        tempX = ev.pageX
        tempY = ev.pageY
    }
    // catch possible negative values in NS4
    if (tempX < 0){tempX = 0}
    if (tempY < 0){tempY = 0}
    window.status=""+tempX+"-"+tempY;
    draggableDiv.style.left = initialPosition.divX + (tempX - initialPosition.mouseX);
    draggableDiv.style.top = initialPosition.divY + (tempY - initialPosition.mouseY);
}

function setupDraggable() {
    document.onmousemove = mouseMove;
    document.onmouseup   = mouseUp;
}


var dragObject  = null;
var mouseOffset = null;

function getMouseOffset(target, ev){
    ev = ev || window.event;

    var docPos    = getPosition(target);
    var mousePos  = mouseCoords(ev);
    return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(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 mouseMove(ev){
    ev           = ev || window.event;
    var mousePos = mouseCoords(ev);

    if(dragObject){
        dragObject.style.position = 'absolute';
        dragObject.style.top      = (mousePos.y - mouseOffset.y) + "px";
        dragObject.style.left     = (mousePos.x - mouseOffset.x) + "px";

        return false;
    }
}
function mouseCoords(ev){
    if(ev.pageX || ev.pageY){
        return {x:ev.pageX, y:ev.pageY};
    }
    return {
        x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y:ev.clientY + document.body.scrollTop  - document.body.clientTop
    };
}
function mouseUp(){
    dragObject = null;
}

function makeDraggable(item){
    if(!item) return;
    item.onmousedown = function(ev){
        dragObject  = this;
        mouseOffset = getMouseOffset(this, ev);
        return false;
    }
}
function makeCustomDraggable(item1, item2){
    if(!item1) return;
    //alert(item1);
    //alert(item2);
    item1.onmousedown = function(ev){
        //alert('mouse down');
        dragObject  = item2;
        mouseOffset = getMouseOffset(this, ev);
        return false;
    }
    //alert("OK");
}
/*
END OF DRAGGABLE CONTENT RELATED FUNCTIONS
*/ 

function showNewMessage(subjPrefill, senderPrefill) {
    var d = document.getElementById('_newMessage_');
    var subject = document.getElementById('_newMessageSubject_');
    var receiver = document.getElementById('_newMessageReceiver_');
    var body = document.getElementById('_newMessageBody_');
    subject.value = subjPrefill;
    receiver.value = senderPrefill;
    body.value = '';
    d.style.display = 'block';
}
function hideNewMessage() {
    var d = document.getElementById('_newMessage_');
    d.style.display = 'none';
}
function sendMessage() {
    var d = document.getElementById('_newMessage_');
    var subject = document.getElementById('_newMessageSubject_');
    var receiver = document.getElementById('_newMessageReceiver_');
    var body = document.getElementById('_newMessageBody_');
    //alert("Sending Message");
    var ajax=createAjax();
    ajax.open("POST", "./ajax/sendNewMessage.php");
    ajax.onreadystatechange = function() {
        //alert("changed:" + ajax.readyState);
        if (ajax.readyState == 4) {
            var response = eval('(' + ajax.responseText + ')');
            alert(response['message']);
            //alert(response['error']);
            if (response['error'] == 3) {
                hideNewMessage();
            }
        }
    };
    
    var params = "receiver=" + encodeURI(receiver.value) + "&subject=" + encodeURI(subject.value) + "&body=" + encodeURI(body.value);
    
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", params.length);
    ajax.setRequestHeader("Connection", "close");
    
    ajax.send(params);
    
    
}

function showAllLanguages() {
    var x = document.getElementById('allLanguagesDiv');
    if (x.style.display == "block") {
        x.style.display = "none";
    } else {
        x.style.display = "block";
    }
}

function changeCurrentLanguage() {
    
}

//select input

Menu.prototype._id;
Menu.prototype._options;
Menu.prototype._selectClass;
Menu.prototype._name;

Menu.prototype._dropClass;
function Menu(id, name, selectClass, dropClass) {
    this._id = id;
    this._selectClass = selectClass;
    this._dropClass = dropClass;
    this._name = name;
    this._options = [];
};
Menu.prototype.getID = function() {
    return this._id;
};
Menu.prototype.addOption = function(value, title, className) {
    var option = {'val':value, 'title':title, 'className': className};
    this._options.push(option);
};
Menu.prototype.display = function(selID) {
    selID -= 1;
    var global = this;
    // the select div
    var selDiv = document.createElement("div");
    selDiv.className = this._selectClass;
    selDiv.id = this._id + "_sel";
    selDiv.innerHTML = this._options[selID].title;
	
    selDiv.onclick = function() {
        var x = document.getElementById(global._id + "_options");
        if (x.style.display != "none") {
            x.style.display = "none";
        } else {
            x.style.display = "block";
        }
    }
    
    // the div containing the options
    var optionsDiv = document.createElement("div");
    optionsDiv.className = this._dropClass;
    optionsDiv.id = this._id + "_options";
    optionsDiv.style.display = "none";
    
    // the hidden input
    var hiddenInput = document.createElement("input");
    hiddenInput.type = "hidden";
    hiddenInput.id = this._id + "_hiddenValue";
    hiddenInput.name = this._name;
	hiddenInput.value = this._options[selID].val;
    
    optionsDiv.appendChild(hiddenInput);
    
    // the options
    var i;
    var opDiv;
    for (i=0;i<this._options.length;i++) {
        opDiv = document.createElement("div");
        opDiv.className = this._options[i].className;
        opDiv.innerHTML = this._options[i].title;
        opDiv.hidValue = this._options[i].val;
        opDiv.onclick = function() {
            document.getElementById(global._id + "_hiddenValue").value = this.hidValue;
			document.getElementById(global._id + "_sel").innerHTML = this.innerHTML;
            document.getElementById(global._id + "_options").style.display = "none";
        }
        optionsDiv.appendChild(opDiv);
    }
    document.getElementById(this._id).appendChild(selDiv);
    document.getElementById(this._id).appendChild(optionsDiv);
};
//end select


function toggleCats(e) {
  	if (e.opened != 0) {
		Effect.BlindUp('category_inputs', {duration: 0.3});
		e.opened = 0;
	} else {
		Effect.BlindDown('category_inputs', {duration: 0.3});
		e.opened = 1;
	}
}

/*
Functions for AJAX search
*/
function applyFilters() {
	currentSearchPage = 1;
	filterModels();
}

function filterModels() {
	// get the categories selected
	var i = 0;
	var x;
	var etnicityParams = "";
	var categoryParams = "";
	var bodyParams = "";
	var online = "";
	var ageParams = "";
	var and = "";
	for (i=0;i<2000;i++) {
		x = document.getElementById('cat_' + i); 
		if (x == null) {
			break;
		}
		if (x.checked) {
			categoryParams = categoryParams + and + x.value;
			and = ",";
		}
	}
	and = "";
	for (i=0;i<2000;i++) {
		x = document.getElementById('body_' + i); 
		if (x == null) {
			break;
		}
		if (x.checked) {
			bodyParams = bodyParams + and + x.value;
			and = ",";
		}
	}
	and = "";
	for (i=0;i<2000;i++) {
		x = document.getElementById('etnicity_' + i); 
		if (x == null) {
			break;
		}
		if (x.checked) {
			etnicityParams = etnicityParams + and + x.value;
			and = ",";
		}
	}
	and = "";
	for (i=0;i<2000;i++) {
		x = document.getElementById('age_' + i); 
		if (x == null) {
			break;
		}
		if (x.checked) {
			ageParams = ageParams + and + x.value;
			and = ",";
		}
	}
	
	online = document.getElementById('onlineStatus').value;
	//document.getElementById("_response_").innerHTML = "asd<img src='images/loading.gif'>";
	var ajax = createAjax();
	if (ajax != null) {
		//alert('s');
		
		//alert('s');
		ajax.open("POST", "search.php");
		var parameters = "page="+currentSearchPage+"&isAjax=1&category=" + categoryParams + "&body=" + bodyParams + "&age=" + ageParams + "&etnicity=" + etnicityParams + "&online=" + online;
		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      	ajax.setRequestHeader("Content-length", parameters.length);
      	ajax.setRequestHeader("Connection", "close");
      	ajax.onreadystatechange = function() {
	      	if (ajax.readyState == 4) {
	      		//alert("response");
	      		document.getElementById("_response_").innerHTML = ajax.responseText;
	      	}
      	};
      	// show the loagin bar
      	
      	ajax.send(parameters);
	}
}

function changePage(x) {
	currentSearchPage = x;
	filterModels();
}

function setFlashSize(w, h) {
	
}

