//http request procedures starts
var http_request = false;
var container;

//xmlhttprequest initializing method
function createXMLHttpRequest( ) {
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	try { return new XMLHttpRequest( ); } catch(e) {}
	alert("XMLHttpRequest not supported");
	return null;
}

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

function toggleHideShow(id) {
	if (document.getElementById(id).className == 'block')
	{
		toggleHide(id);
	} else {
		toggleShow(id);
	}
}

function toggleHide(id)
{
		document.getElementById(id).className = 'none';
}
function toggleShow(id)
{
		document.getElementById(id).className = 'block';
}
function submitThemeSuggestion(url, obj, contentId) {
	container = contentId; //store container id globally
	var spinObject = document.getElementById('spin');
	spinObject.style.display = 'block';
	document.getElementById('theme_form_button').style.display = 'none';
	//automatically submit all input value of select form
	var poststr = createQuery(obj);
	preRequest(url, poststr);
}

//sends post data using ajax
function preRequest(url, parameters) {
	http_request = new createXMLHttpRequest();
	http_request.open("POST", url, true);
	http_request.onreadystatechange = getResponse;
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

//retrieve server response
function getResponse() {
	if (http_request.readyState == 4 ) {
		if (http_request.status == 200) {
			result = http_request.responseText; 
			setTimeout('updateText("'+result+'")', 1000);
		} else {
			alert('There was a problem with the request.');
		}
	}
}

function updateText(text)
{
	var spinObject = document.getElementById('spin');
	spinObject.style.display = 'none';
	if (text != 'Thank you for your submission.')
	{
		alert(text);
		document.getElementById('theme_form_button').style.display = 'block';
	} else {
		document.getElementById(container).innerHTML = '<div class="resultText">' +  text + '</div>';    
		setTimeout('toggleFaqFade("theme_suggest")', 3000);
	}
}

function toggleTextField(textFieldObject, action)
{
		if (action == 'over')
		{
			textFieldObject.className = 'textFieldOver';
			if (textFieldObject.value == 'Ex. Photography Card') textFieldObject.value = '';
		} else {
			textFieldObject.className = 'textField';
			if (textFieldObject.value == '') textFieldObject.value = 'Ex. Photography Card';
		}
}

function toggleFaqFade(objectId) {
	var anim_hide = new YAHOO.util.Anim(objectId, {opacity: { from: 1, to: 0 }}, 1, YAHOO.util.Easing.easeNone);
	anim_hide.animate();
	anim_hide.onComplete.subscribe(hideFade);
}

function hideFade()
{
	var elementObject = document.getElementById('theme_suggest');
	elementObject.style.display = 'none';
}

//post request
function submitAjaxForm(url, obj, contentId) {
	container = contentId; //store container id globally
	//automatically submit all input value of select form
	var poststr = createQuery(obj);
	makePOSTRequest(url, poststr);
}

//get request
function fetchGet(url, parameter, contentId) {
	container = contentId; //store container id globally
	makeGETRequest(url, parameter);
}

//sends post data using ajax
function makePOSTRequest(url, parameters) {
	http_request = new createXMLHttpRequest();
	http_request.open("POST", url, true);
	http_request.onreadystatechange = serverResponse;
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

//sends get using ajax
function makeGETRequest(url, parameters) {
	url = url + '?sid=' + Math.random() + '&' + parameters;
	http_request = new createXMLHttpRequest();
	http_request.open("GET", url, true);
	http_request.onreadystatechange = serverResponse;
	http_request.send(null);
}

//retrieve server response
function serverResponse() {
	if (http_request.readyState == 4 ) {
		if (http_request.status == 200) {
			if (result.search('<!-- REDIRECT -->') != -1)  {
				location.href="index.php";
			}
			result = http_request.responseText;
			//updateDisplay(result);
			$('dimBackground').className = 'normalBackground';
			$(container).innerHTML = result;            
		} else {
			alert('There was a problem with the request.');
		}
	}

}

// form query automation
// handles: input, textarea, select, and radio inputs
function createQuery(form) {
	var elements = form.elements;
	var pairs = new Array();
	var include = true;
	for (var i = 0; i < elements.length; i++) {	
		if ((name = elements[i].name) && (value = elements[i].value)) {
			include = true;
			//checkbox handling
			if (elements[i].type == 'checkbox' && elements[i].checked == false) {
				value = 'off';
			//radio button handling
			} else if (elements[i].type == 'radio') {
				//remove uncheck radio values
				if(elements[i].checked != true) {
					include = false;
				}
			}
			//include specified post values
			if (include) {
				pairs.push(name + "=" + encodeURIComponent(value));
			}
		}
	}	
	return pairs.join("&");
}
//http request procedures ends

function validateContactSingle(elementObject, msgContainer) {
	if (elementObject.value == '' || elementObject.value == ' ') {
		$(msgContainer).className = 'errorOn';
		return false;
	} else {
		$(msgContainer).className = 'errorOff';
	}
	return true;
}

function validateContact(formObject) {
	var errorFree = true;
	if (formObject.first_name.value == '' || formObject.first_name.value == ' ') {
		$('error_fname').className = 'errorOn';
		errorFree = false;
	}
	if (formObject.last_name.value == '' || formObject.last_name.value == ' ') {
		$('error_lname').className = 'errorOn';
		errorFree = false;
	}
	if (formObject.phone.value == '' || formObject.phone.value == ' ') {
		$('error_phone').className = 'errorOn';
		errorFree = false;
	}
	if (formObject.email.value == '' || formObject.email.value == ' ') {
		$('error_email').className = 'errorOn';
		errorFree = false;
	}
	if (errorFree) {		
		dimBackground(true,'Sending data to Jukeboxprint personal....');
	}
	return errorFree;
}

function checkForm(formObject) {
	for (var i=0; i<formObject.elements.length; i++) {
		if (formObject.elements[i].value.length < 1) {
			document.getElementById('submission_error').innerHTML = 'Please fill in all fields!';
			return false;
		}
	}
	return true;
}

function triggerRating(ratingContainer, value, inputId) {
	var inputObject = document.getElementById(inputId);
	var inputStorage = document.getElementById(inputId + '_point');
	var ratingObject = document.getElementById(ratingContainer);
	if (ratingObject && inputObject) {
		var objectLength = ratingObject.childNodes.length;
		for (var i=0; i<objectLength; i++) {
			if (ratingObject.childNodes[i].tagName == 'IMG') {
				if (i < value * 2) {
					var source = ratingObject.childNodes[i].src;
					source = source.replace('empty_star', "full_star", 'gi');
				} else {
					var source = ratingObject.childNodes[i].src;
					source = source.replace('full_star', "empty_star", 'gi');
				}
				ratingObject.childNodes[i].src = source;
				
			}
		}
		inputObject.innerHTML = value;
		inputStorage.value = value;
	}
}

function init() {
	// Instantiate a Panel from script
	YAHOO.review.container.reviewPanel = new YAHOO.widget.Panel("write_review", { width:"430px", visible:false, constraintoviewport:true } );
	YAHOO.review.container.reviewPanel.setHeader("Write a review for this template");
	YAHOO.review.container.reviewPanel.registerDragDrop();
	YAHOO.review.container.reviewPanel.render();
}

function showCommentPanel(templateID) {
	var templateObject = document.getElementById('templateID');
	if (!templateObject) return;
	
	templateObject.value = templateID;
	
	displayPanel();
}

function displayPanel() {
	positionPanel();
	YAHOO.review.container.reviewPanel.show();
}

function positionPanel() {
	
	var review_panel_region = YAHOO.util.Dom.getRegion('write_review');
	var centerX = YAHOO.util.Dom.getDocumentScrollLeft() + YAHOO.util.Dom.getViewportWidth()/2;
	var centerY = YAHOO.util.Dom.getDocumentScrollTop() + YAHOO.util.Dom.getViewportHeight()/2;
	var panelWidth = review_panel_region.right - review_panel_region.left;
	var panelHeight = review_panel_region.bottom - review_panel_region.top;

	if (centerX - panelWidth/2 > 0) {
		centerX -= panelWidth/2;
	}
	if (centerY - panelHeight/2 > 0) {
		centerY -= panelHeight/2;
	}
	
	YAHOO.util.Dom.setX("container", centerX);
	YAHOO.util.Dom.setY("container", centerY);
	
}

function validateInput(formObject) {
	var errorFree = true;
	
	for (var i=0; i<formObject.elements.length; i++) {
			
		if (formObject.elements[i].value == 'Please select')
		{
			alert("Please make sure coating field is filled in correctly!");
			//errorFree = false;
			return false;
		}
		if (formObject.elements[i].alt != '' && formObject.elements[i].name != 'comments') {
			var validInput = validField(formObject.elements[i].value, formObject.elements[i].alt);
			if (!validInput) {
				alert("Please make sure "+ formObject.elements[i].name +" field is filled in correctly!");
				//errorFree = false;
				return false;
			}
			if (formObject.elements[i].type == 'checkbox') {
					if (!formObject.elements[i].checked) {
							alert("Please make sure "+ formObject.elements[i].name +" field is checked!");
							return false;
					}
			}
		}
	}
	if (!errorFree) {
		//alert("Please make sure the required fields marked with * are filled in correctly!");
	}
	return errorFree;
}

function validField(str, type) {
	var name_regex  = /^([a-zA-Z '-]+)$/;
	var email_regex  = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/ ;
	var phone_regex  = /(\+)?([-\._\(\) ]?[\d]{3,20}[-\._\(\) ]?){2,10}/;
	var num_regex  = /[\d]{1,5}/;
	var length_check = false;
	switch (type) {
		case 'name': myregexp = new RegExp(name_regex); break;
		case 'email': myregexp = new RegExp(email_regex); break;
		case 'phone': myregexp = new RegExp(phone_regex); break;
		case 'number': myregexp = new RegExp(num_regex); break;
		default: length_check = true;
	}
	if (length_check) {
		if (str.length >= 3) {
			return true;
		} else {
			return false;
		}
	}
	if (str.match(myregexp)) {
		return true;
	} else {
		return false;
	}
}

function generalValidate(formObject) {
	if (typeof formObject == 'string') {
		formObject = document.getElemenyById(formObject);
	}
	for(var i=0; i<formObject.elements.length; i++) {
		var validInput = true;
		if (formObject.elements[i].value == 'Please select')
		{
				alert("Invalid field: coating, please correct!");
				return false;
		}
		if (formObject.elements[i].alt && formObject.elements[i].alt != undefined && formObject.elements[i].alt.length > 2) {
			
			var validInput = validField(formObject.elements[i].value, formObject.elements[i].alt);
			//valid checkbox
			if (formObject.elements[i].type == 'checkbox') {
					if (formObject.elements[i].checked) 
						validInput = true;
					else 
						validInput = false;
			}
			if (!validInput) {
				if (formObject.elements[i].label != undefined) {
					alert("Invalid field: " + formObject.elements[i].label + ", please correct!");
				} else {
					alert("Invalid field: " + formObject.elements[i].name + ", please correct!");
				}
				formObject.elements[i].className = formObject.elements[i].className + 'Error';

				return false;
			}
		}
	}
	return true;
}

function swapSearchInput(object) {
	if (object.value == 'city') {
		document.getElementById('sField').className = 'divShow';
		document.getElementById('sOption').className = 'divHide';
		document.getElementById('serviceOptionText').disabled = true;
		document.getElementById('cityOptionText').disabled = false;
	} else {
		document.getElementById('sField').className = 'divHide';
		document.getElementById('sOption').className = 'divShow';
		document.getElementById('serviceOptionText').disabled = false;
		document.getElementById('cityOptionText').disabled = true;
	}
}

function textLimit(textArea) {
	var limit = 250;
	var wordCount = limit - textArea.value.length;
	document.getElementById('wordCount').innerHTML = 'Word Count: ' + wordCount;
	if (wordCount <= 1) {
		textArea.value = textArea.value.substring(0, 250);
	}
}

function reloadImg(objectId) {
	document.getElementById(objectId).src = 'captcha.php?id=' + Math.random();
}