// GLOBAL JAVASCRIPT FUNCTIONS

// GENERAL PAGE LAYOUT FUNCTIONS
function show_sendphoto() {
	url = "http://fashrate.com/ax/footer/";
	make_request(url, 'footer_sendphoto_message', false, false);
	$("#footer_sendphoto_underlay").fadeIn("fast");
	$("#footer_sendphoto_underlay").fadeTo("fast", 0.77);
	$("#footer_sendphoto_message").fadeIn("fast");
}

function hide_sendphoto() {
	$("#footer_sendphoto_underlay").fadeOut();
	$("#footer_sendphoto_message").fadeOut();
}

// BROWSER FUNCTIONS
function browser_type() {
	var browser=navigator.userAgent.toLowerCase();
	if (browser.indexOf("opera") != -1) { return 'OP'; }
	else if (browser.indexOf("firefox") != -1) { return 'FF'; }
	else if (browser.indexOf("safari") != -1) { return 'SF'; }
	else if (browser.indexOf("msie") != -1) { return 'IE'; }
	else if (browser.indexOf("netscape") != -1) { return 'NS'; }
	else if (browser.indexOf("mozilla/5.0") != -1) { return 'MZ'; }
	else { return 'NA'; }	
}

// TEXT FUNCTIONS
function URLencode(sStr) {
	return escape(sStr)
		.replace(/\+/g, '%2B')
		.replace(/\"/g,'%22')
		.replace(/\'/g, '%27');
}

function countTAC(areaName,counter,limit,show_display) {
	if (areaName.value.length>limit) {
		areaName.value=areaName.value.substring(0,limit);
	}
	else {
		if (show_display) {
			document.getElementById(counter).innerHTML = (limit - areaName.value.length) + " Characters Remaining";
		}
	}
}

function filterHTML(text) {
	h=text;
	h=h.replace(/<\/?(SPAN|A|P|EM|NOBR|TABLE|TB|TR|TD|TH|COL|XML|SHAPE|FONT|DEL|SCRIPT|INS|DIR)[^>]*>/gi, "");
	h=h.replace(/<(TABLE|TD|TH|COL)(.*)(WIDTH|HEIGHT)=["'0-9A-Z]*/gi, "<$1$2"); //no fixed size tables (%OK) [^A-Za-z>]
	h=h.replace(/<([^>]+)>\s*<\/\1>/gi, ""); //empty tag
	
	text = h;
	if ( typeof( text ) != "string" )
		text = text.toString() ;

	text = text.replace(
		/&/g, "&amp;").replace(
		/"/g, "&quot;").replace(
		/</g, "&lt;").replace(
		/>/g, "&gt;") ;
	
	return text;
}

// KEY TRAP FUNCTIONS
// YOU NEED TO ADD THE FOLLOWING LINES TO THE JAVASCRIPT FILE THAT USES THESE FUNCTIONS
// REPLACE trap_local_function('1','2','3') with FUNCTION USED WHEN KEY IS PRESSED
// document.onkeydown = trap_key;
// var trap_function_var = function() { trap_local_function('1','2','3'); }
// var trap_key_value = 13;

function trap_call_function() {
	if ( trap_function_var == null ) {
	} else {
		trap_function_var();
	}
}

function trap_key(evt) {
	if ( evt == null ) {evt = event;}
	if (typeof trap_key_value == 'undefined') {
	} else {
		if ( testKeyCode( evt, trap_key_value ) ) { cancelKeyEvent( evt ); trap_call_function();return false; }
	}
}

function testKeyCode( evt, intKeyCode ) {
	if ( window.createPopup ) { return evt.keyCode == intKeyCode; } else { return evt.which == intKeyCode; }
}

function cancelKeyEvent( evt ) { 
	if ( window.createPopup ) {evt.keyCode = 0; } else { evt.preventDefault(); }
}

// SEARCH FUNCTIONS
function header_search_form_submit() {
	if (document.getElementsByName("header_search_form_query")[0].value != "") {
		url = "http://fashrate.com/search/fresh/fashion/" + URLencode(document.getElementsByName("header_search_form_query")[0].value);
		self.location = url;
	}
}

// EFFECTS FUNCTIONS
function effects_opacity(id_dest, opacity_ie) {
	var objToFade = document.getElementById(id_dest);
	if(typeof objToFade.style.opacity == "string") {
		objToFade.style.opacity = (opacity_ie/100);
	} else {
		document.getElementById(id_dest).filters.alpha.opacity = opacity_ie;
	}
}

function effects_displayon(id_dest) {
	document.getElementById(id_dest).style.display = 'inline';
}

function effects_displayoff(id_dest) {
	document.getElementById(id_dest).style.display = 'none';
}

function effects_ditherout(id_dest,fade_speed) {
	var o_ie = 100;
	var o_int = 1;
	for (var x = 0; x < 20; x++) {
		o_ie -= 5;
		time_val = fade_speed * o_int;
		time_func = "effects_opacity('" + id_dest + "'," + o_ie + ")";
		setTimeout(time_func,time_val);
		o_int += 1;
	}
	time_func = "effects_displayoff('" + id_dest + "')";
	time_val = fade_speed * o_int;
	setTimeout(time_func,time_val);
}

function effects_fadeout(id_dest, fade_pause,fade_speed) {
	effects_opacity(id_dest,100);
	time_func = "effects_ditherout('" + id_dest + "', " + fade_speed + ")";
	setTimeout(time_func,fade_pause);		
}

function effects_ditherin(id_dest,fade_speed) {
	var o_ie = 0;
	var o_int = 1;
	time_func = "effects_displayon('" + id_dest + "')";
	time_val = fade_speed * o_int;
	setTimeout(time_func,time_val);
	
	for (var x = 0; x < 20; x++) {
		o_ie += 5;
		time_val = fade_speed * o_int;
		time_func = "effects_opacity('" + id_dest + "'," + o_ie + ")";
		setTimeout(time_func,time_val);
		o_int += 1;
	}
}

function effects_fadein(id_dest, fade_pause,fade_speed) {
	effects_opacity(id_dest,100);
	time_func = "effects_ditherin('" + id_dest + "', " + fade_speed + ")";
	setTimeout(time_func,fade_pause);		
}

// AJAX FUNCTIONS

function make_request(url, id_dest, concat_html, show_loading) {
	var http_request = false;

	// This block of code selects between different browsers
	if (window.XMLHttpRequest) { // Mozilla, Safari, Opera...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) { // IE
		try { // try working with new M/s XMLHTTP object vs. old
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) { // IE didn't with new XMLHTTP object
			try { // try working with older M/S MXLHTTP object
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {} // error, nothing worked
		}
	}	
	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = function() { show_contents(http_request, id_dest, concat_html); };

	// FIX FOR IE7 AJAX CACHE BUG
	var d = new Date();
	var time = d.getTime();
	if (url.indexOf("?")!=-1) { 
		var url_new = url + '&ajf=' + time;
	} else {
		var url_new = url + '?ajf=' + time;
	}	

	http_request.open('GET', url_new, true);
	http_request.send(null);
}

function show_contents(http_request, id_dest, concat_html, show_loading) {
	if (http_request.readyState < 4) {
		if (concat_html) {
		} else {
			if (show_loading) {
				document.getElementById(id_dest).innerHTML = "Loading ...";
			}
		}
	}
	else if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (concat_html) {
				document.getElementById(id_dest).innerHTML += http_request.responseText;
			} else {
				document.getElementById(id_dest).innerHTML = http_request.responseText;
			}
		}
		else {
			alert('There was a problem with the request.');
		}
	}
}