var http_request = false;

function makeRequest(url,destinationElement) {
    http_request = getHttpRequestObject();
    
    if (!http_request) {
	return false;
    }
    http_request.onreadystatechange = function() { insertResponseToElement(http_request,destinationElement); };
    http_request.open('GET', url, true);
    http_request.send(null);
}

function getHttpRequestObject(){
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType) {
	    http_request.overrideMimeType('text/xml');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    http_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    return http_request;
}

function insertResponseToElement(http_request,destinationElement) {
    if (http_request.readyState == 4) {
	if (http_request.status == 200) {
	    var dest = document.getElementById(destinationElement);
	    if (dest){
		dest.innerHTML = http_request.responseText;
	    }
	}
    }
}

function appendOptionLast(categorySelectId) {
    var elOptNew = document.createElement('option');
    elOptNew.text = '';
    elOptNew.value = '';
    var elSel = document.getElementById(categorySelectId);

    try {
        elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
    }
    catch(ex) {
        elSel.add(elOptNew); // IE only
    }
}

function removeOptionLast(categorySelectId) {
    var elSel = document.getElementById(categorySelectId);
    if (elSel.length > 0) {
            elSel.remove(elSel.length - 1);
     }
}

function createDynamicDropdown(formName,brandIds,brandValues,categorySelectId) {
    var form = document.getElementById(formName);
    var index = form.brand[form.brand.selectedIndex].value;
    var ids = brandIds[index];
    var values = brandValues[index];
    var length = form.id.length;
    var printBraSizes = false;
    if (ids.length > length) {
        for(i=0;i<(ids.length - length);i++) {
            appendOptionLast(categorySelectId);
        }
    }else if (ids.length < length) {
        for(i=0;i<(length - ids.length);i++) {
            removeOptionLast(categorySelectId);
        }
    }
    for(i=1;i<ids.length;i++) {
	form.id[i].value = ids[i];
	form.id[i].text = values[i];
	if(ids[i] == '8')
	    printBraSizes = true;
    }
    removeBraSizeDropdown(form,printBraSizes);
}

function stylesDropdownAction(formName){
    var my_form = document.getElementById(formName);
    removeBraSizeDropdown(my_form,my_form.id[my_form.id.selectedIndex].value == 8);
}

function removeBraSizeDropdown(form,remove){
    if(form['alias_id']){
	if(remove){
	    form.alias_id.style.display = 'block';
	    updateBrasizeDropdown(form);
	} else {
	    form.alias_id.style.display = 'none';
	    form.alias_id.value='';
	}
    }
}

function updateBrasizeDropdown(form){
    makeRequest('homepage_brasize_dropdown.php?brand='+form['brand'].value+'&category='+form['id'].value,'womens-brasizes');
}

var carousel_in_progress = false;
function moveItemCarousel(carousel_type,step){
    if(carousel_in_progress === false){
	carousel_in_progress = true;
	var carousel_wrapper = $('carousel-wrapper-'+carousel_type);
	var total = carousel_wrapper.getWidth();
	var current = parseInt(carousel_wrapper.style.left+0);
	var parent = carousel_wrapper.up().getWidth();
	var max_left = total - parent;
	
	if(current + step + max_left < 0){
	    step = (max_left + current) * -1;
	} else if (current + step > 0) {
	    step = current * -1;
	}
	if(Math.abs(step) > 15 && max_left > 0){
	    new Effect.Move(carousel_wrapper, {x: step,
					       y:0,
					       mode:'relative',
					       duration: 0.5,
					       transition:Effect.Transitions.sinoidal,
					       afterFinish: function () {
						   var left = $('carousel-left-images');
						   var right = $('carousel-right-images');
						   if (step+current < -15){
						       left.style.cursor = 'pointer';
						   } else {
						       left.style.cursor = 'default';
						   }
						   if(step+current > (-1*max_left)+15){
						       right.style.cursor = 'pointer';
						   } else {
						       right.style.cursor = 'default';
						   }
						   carousel_in_progress = false;
					       }
					      });
	} else {
	    carousel_in_progress = false;
	}
    }
}
