// JavaScript Document

function init(page) {
	switch(page) {
		case 'index':
			var imgs = $$('div#cat_list a img');
			for (var i=0; i < imgs.length; i++) {
				var zoomImgSrc = imgs[i].src.replace("small","small_zoom");
				var zoomImg = new Image();
				zoomImg.src = zoomImgSrc;
				imgs[i].onmouseover = function() {
					var newsrc = this.src.replace("small","small_zoom");
					this.src = newsrc;
				}
				imgs[i].onmouseout = function() {
					var newsrc = this.src.replace("small_zoom","small");
					this.src = newsrc;
				}
			};
		break;
	}
}


function catlistMove(dir) {
	//
} 

function bringsub() {
	//
}

function checkout_openPage(page,curpage) {
	var form = $('form_checkout');
	if (curpage!=4) {
		var checkform = validateForm(form,curpage);
		if (!checkform) return;
	}
	
	form.act.value = "update";
	var params = $('form_checkout').serialize(true);
	
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/update_phpvar.php', 
		{
			method: 'get', 
			parameters: params,
			onSuccess: showResponse
		}
	)
	
	function showResponse(req) {
		var f = $$('.form_checkout_div');
		if (page==4) {
			var checkform = validateForm(form,1);
			var checkform2 = validateForm(form,2);
			var checkform3 = validateForm(form,3);
			if (!checkform || !checkform2 || !checkform3) {
				alert("Plase fill out the rest of the form before reviewing your order.");
				return;
			}
		}
		window.location.search = "p="+page;
	}
	
}



// paterns for validations;
var validPatterns = [];
validPatterns['none'] = /.+/;
validPatterns["email"] = /[\w\.-]+@[\w\.-]+/;
validPatterns['number'] = /\d+/;
validPatterns['string'] = /[\w\.-]+/;
validPatterns['ccexpdate'] = /\d{2}\/\d{2}/;

var errorMsgs = [];
errorMsgs[0] = "<span class='errormsg'>This field is required.</span>";
errorMsgs[1] = "<span class='errormsg'>The email is not valid.</span>";
errorMsgs[2] = "<span class='errormsg'>The number is not valid.</span>";
errorMsgs[3] = "<span class='errormsg'>Please type in a valid credit card number.</span>";
errorMsgs[4] = "<span class='errormsg'>Enter valid expiration date.</span>";

function validateForm(form,page) {
	var returnval = true;
	var required = [];
	required[1] = ['c_address[email]','c_address[phone]','c_address[fname]','c_address[lname]','c_address[street1]','c_address[city]','c_address[state]','c_address[zip]','c_address[country]'];
	required[2] = ['c_shipping'];
	required[3] = ['c_payment[cc_name]','c_payment[cc_type]','c_payment[cc_number]','c_payment[cc_expdate]'];
	for (var field in form) {
		if (in_array(field,required[page])) {
			Element.extend(form[field]);
			if (form[field].value.length > 0) {
				switch(field) {
					case "c_address[email]":
						if (!checkField(form[field],"email",1)) returnval = false;
						break;
					case "c_address[phone]":
						if (!checkField(form[field],"number",2)) returnval = false;
						break;
					case "c_payment[cc_number]":
						if (!checkField(form[field],"number",3)) returnval = false;
						break;
					case "c_payment[cc_expdate]":
						if (!checkField(form[field],"ccexpdate",4)) returnval = false;
						break;	
					case "c_shipping":
						if (!checkField(form[field],"none",4)) returnval = false;
						break;						
				}
			}else{
				if (!checkField(form[field],"none",0)) returnval = false;
			}
		}
	}
	return returnval;
}

function checkField(field,pattern,msgId) {
	var rtnval = true;
	var val = field.value;
	if (!val.match(validPatterns[pattern])) {
		if (!field.errormsg) {
			field.errormsg = new Insertion.After(field,errorMsgs[msgId]);
		}
		field.errorel = Element.next(field);
		field.onfocus = function() {
			field.errorel.remove();
			field.errormsg = false;
		}
		rtnval = false;
	}
	return rtnval;
}

function checkAllFileds(form) {
	Element.extend(form);
	
	var reqEls = ['first','last','email','phone','city','state','zip','street'];
	
	var check = true;
	for (var i=0; i < reqEls.length; i++) {
		if (form[reqEls[i]].value=="") check = false;
	}
	if (check) {
		form.submit();
	}else{
		$('msg').innerHTML = "Please make sure you fill out all fields below.";
	}
}



function in_array(needle,haystack) {
	for (var i=0; i < haystack.length; i++) {
		if (haystack[i]==needle) return true;
	};
	return false;
}

function openPopUp(url,a,b) {
	var target = (arguments[3]) ? arguments[3] : "_blank";
	//window.name = "main"; 
	var w = window.open(url,target,"menubar=0,resizable=0,height="+b+",width="+a+", scrollbars = 1");
}


function insertCheckouVals() {
	var form = $('form_checkout');
	form.act.value = "get";
	var params = $('form_checkout').serialize(true);
	
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/update_phpvar.php', 
		{
			method: 'get', 
			parameters: params,
			onSuccess: showResponse
		}
	)
	
	function showResponse(req) {
		var rs = req.responseText;
		eval(rs);
		for (var i in scartinfo) {
			form[i].value = scartinfo[i];
			if (i=="c_payment[cc_name]" && scartinfo[i]=="") {
				form[i].value = scartinfo['c_address[fname]']+" "+scartinfo['c_address[lname]'];
			}
		}
	}
}

function selectall(el,check) {
	var inputs = document.getElementsByName(el);
	var chval = check.checked;
	for (var i=0; i < inputs.length; i++) {
		inputs[i].checked = chval;
	};
}

function emailWishlist() {
	form = $('form_wishlist');
	form.method = "get";
	form.action = "http://www.tarafinejewelry.com/shopping/mail.php";
	var selcheck = false;
	var selarr = document.getElementsByName('sel_items[]');
	for (var i=0; i < selarr.length; i++) {
		if (selarr[i].checked) {
			selcheck = true; 
		}
	}
	if (!selcheck) {
		alert("Plase select at least one item.");
		return;
	}
	openPopUp('mail.php?wishlist',370,450,"emailform");
	form.target = "emailform";
	form.submit();
}

function delWishlist() {
	form = $('form_wishlist');
	form.method = "post";
	form.action = "http://www.tarafinejewelry.com/shopping/wishlist.php";
	form.del.value = true;
	form.submit();
}

function buyWishlist() {
	form = $('form_wishlist');
	form.method = "get";
	form.action = "http://www.tarafinejewelry.com/shopping/shoppingcart.php";
	form.add = true;
	form.submit();
}

function search() {
	var searchval = $('searchbar').value;
	window.location.href = "http://www.tarafinejewelry.com/shopping/search.php?val="+searchval;
}

function animatePurchase() {
	var btn = $('btn_purchase');
	if (!btn) return;
	
	var bgval = 255;
	var change = -4;
	setInterval(function() {
		btn.style.backgroundColor = "rgb("+bgval+","+bgval+","+bgval+")";
		btn.style.color = "rgb("+(255-bgval)+","+(255-bgval)+","+(255-bgval)+")";
		bgval += change;
		if (bgval <= 0 || bgval >= 255) change = -change;
	},20)
}

function closewin() {
	window.close();
}

function toggleEmailPass() {
	var d = $('emailpass');
	d.style.display = (d.style.display!="block") ? "block" : "none"; 
}



function sendEmailPass() {
	var email = document.form_emailpass.email.value;
	var vars = "type=5&email="+email;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/sendmail.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: function(req) {	
				var rs = req.responseText;
				$('msg').innerHTML = rs;
			}
		}
	)
}

function checkOfferCode(type) {
	var code = $('offer_code').value;
	var params = (type=="reg") ? "c="+code : "c="+code+"&sweeps";
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/checkOfferCode.php',
		{
			method: 'get', 
			parameters: params,
			onSuccess: function(req) {
				var rs = req.responseText;
				eval(rs);
			}
		}
	)	
}

function useCoupon() {
	var code = $('couponcode').value;
	var checked = false;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/checkOfferCode.php',
		{
			method: 'get', 
			parameters: "c="+code+"&chkoutpage",
			onSuccess: function(req) {
				var rs = req.responseText;
				eval(rs);
 			}
		}
	)	
}

//---------------------------------------------------------//
// /////////////// admin functions /////////////////////// //
//---------------------------------------------------------//

var items;
var currentEditItm;
var cssrules = new Array();

function initAdmin() {
	var itms = [];
	var _tb = $('admin_table');
	var alltrs = $$('.tr_item');
	alltrs = $A(alltrs);
	alltrs.each(function(tr){
		tr.clicked = false;
		tr.onmouseover = function() {
			if (!this.clicked) {
				this.addClassName("over");
			}
		}
		tr.onmouseout = function() {
			this.removeClassName("over");
		}
		itms.push(tr);		
	})

	items = itms;
	var topmsg = $('top_msg');
	if (topmsg) {
		topmsg.innerHTML = "Ready to use.";
		topmsg.className = "greenbg";
	}
}

//General

function loadPage() {
	var nav = $('subnav');
	destination = nav.options[nav.selectedIndex].value;
	if (destination) location.href = destination;
}


function clear(d) {
	d.value = "";
}


function searchElm(val) {
	val = new RegExp(val,"i");
	for (var i=0; i<items.length; i++) {
		items[i].innerHTML.match(val) 
			? items[i].style.display = "" 
			: items[i].style.display = "none";
	};
}


function toggleCheck(el) {
	el.value = (el.value=='1') ? '0' : '1';
}


function cancelEdit(id) {
	var itm = $('tr_itmedit_'+id);
	itm.style.display = "none";
	var itmedit = $('tr_item_'+id);
	itmedit.style.display = "";		

	currentEditItm = null;
}

function admin_add() {
	var form = $('admin_form_add');
	var vars = $('admin_form_add').serialize(true);
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/add.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: function(req) {
				window.location.reload();	
				//var rs = req.responseText;
				//$('top_msg').innerHTML = rs;
			}
		}
	)
}

function admin_openAddForm(type) {
	//if (currentEditItm) cancelEdit(currentEditItm);  to resolve
	
	var url;
	switch(type) {
		case "cat": url = 'http://www.tarafinejewelry.com/shopping/admin/modules/temp_add_cat.php'; break;
		case "prd": url = 'http://www.tarafinejewelry.com/shopping/admin/modules/temp_add_prd.php'; break;
		case "spe": url = 'http://www.tarafinejewelry.com/shopping/admin/modules/temp_add_spe.php'; break;
	}
	
	
	var table = $('admin_table');
	var html;
	
	var a = new Ajax.Request(
		url,{
			method: 'get',
		    onSuccess: function(req) {
				html = req.responseText;
				var i = new Insertion.Before(table,html);
			}
		}
	)
	
}

function cancelAdd (id) {
	var el = $(id);
	el.remove();
}

function report(msg) {
	var m = msg;
	var d = $('top_msg');
	if (m.indexOf("-error-") != -1) {
		m = m.replace("-error-",""); 
		d.className = "redbg";
	}else{
		d.className = "greenbg";
	}
	d.innerHTML = m;
}


// products administration
function editPrdItem(prdid) {
	
	var itm = $('tr_item_'+prdid);
	itm.style.display = "none";
	var itmedit = $('tr_itmedit_'+prdid);
	itmedit.style.display = "";
	
	if (currentEditItm) {
		var _itm = $('tr_item_'+currentEditItm)
		_itm.style.display = "";
		var _itmedit = $('tr_itmedit_'+currentEditItm)
		_itmedit.style.display = "none";
	}
	currentEditItm = prdid;
	
	$('admin_table_wrap').scrollTop = itmedit.offsetTop;
}

function admin_updatePrd(id) {
	var form = $('admin_form_updatePrd'+id);
	var vars = $('admin_form_updatePrd'+id).serialize(true);
	if (!vars['prd_sale_status']) vars['prd_sale_status'] = 0;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/update.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		var rs = req.responseText;
		$('top_msg').innerHTML = rs;
		
		cancelEdit(form.prd_id.value);
		
		for (var i in vars) {
			
			st = (i=="prd_categories[]") ? "prd_categories_"+id : i+"_"+id;
			
			if(i=="prd_price" || i=="prd_retail") {
				vars[i] = "$"+parseInt(vars[i]).toFixed(2);
			}
			if(i=="prd_sale_status") {
				var val = (vars[i]==1) ? "Active" : "Not Active";
				vars[i] = val;
			}			
			
			var d = $(st);
			if (d) {
				d.innerHTML = vars[i];
			}
		}
	}
}


function admin_deletePrd(id) {
	var k = confirm("Are your sure you want to delete product with ID "+id+"?");
	if (!k) return;
	var vars = "prd_id="+id;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/delete.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		report(req.responseText);

		$("tr_item_"+id).remove();
		$("tr_itmedit_"+id).remove();
	}		
}

/// orders administration
function toggleOrdList(id) {
	if (currentEditItm && (currentEditItm!=id)) {
		var _itm = $("tr_item_"+currentEditItm); 
		var _itmedit = $('tr_itmedit_'+currentEditItm)
		
		_itm.removeClassName("selected");
		_itm.clicked = false;
		_itmedit.style.display = "none";
	}
	currentEditItm = id;
		
	var itm = $("tr_item_"+id);	
	var itmedit = $('tr_itmedit_'+id);
	
	if (itmedit.style.display != "") {
		itm.addClassName("selected");
		itm.clicked = true;
		itmedit.style.display = "";
	}else{		
		itm.removeClassName("selected");
		itm.clicked = false;
		itmedit.style.display = "none";
	}
	//$('admin_table_wrap').scrollTop = itmedit.offsetTop;
}

function admin_updateOrd(id) {
	var form = $('admin_form_updateOrd'+id);
	var vars = $('admin_form_updateOrd'+id).serialize(true);
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/update.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		if (arguments[1]) return;
		 
		report(req.responseText);
		toggleOrdList(id);
		
		var field = $("ord_status_"+id);
		field.innerHTML = vars['ord_status'];
	}
}

function admin_deleteOrd(id) {
	var k = confirm("Are your sure you want to delete order "+id+"?");
	if (!k) return;
	var vars = "ord_id="+id;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/delete.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		report(req.responseText);
		currentEditItm = null;
		$("tr_item_"+id).remove();
		$("tr_itmedit_"+id).remove();
	}
}

function admin_sendEmail(type,id) {
	var form = $('admin_form_updateOrd'+id);
	var vars = {};
	
	if (form.ord_tracking_num.value == "" || form.ord_status.value != "shipped") {
		report("-error-Please make sure you have entered a tracking number and set the order status to 'shipped' before sending a Shipping Confirmation to the customer.");
		return;
	}
	
	vars['type'] = type;
	vars['ord_id'] = id;
	vars['ord_tracking_num'] = form.ord_tracking_num.value;
	vars['customMsg'] = (arguments[2]) ? arguments[2] : "";
	
	vars = $H(vars);
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/sendmail.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		report(req.responseText);
		var sentspan = $('field_confsend'+id);
		if (req.responseText.indexOf('error')==-1) sentspan.innerHTML = "--Sent--";
	}
}


// categories administration
function editCatItem(id) {
	
	var itm = $('tr_item_'+id);
	itm.style.display = "none";
	var itmedit = $('tr_itmedit_'+id);
	itmedit.style.display = "";
	
	if (currentEditItm) {
		var _itm = $('tr_item_'+currentEditItm)
		_itm.style.display = "";
		var _itmedit = $('tr_itmedit_'+currentEditItm)
		_itmedit.style.display = "none";
	}
	currentEditItm = id;
	
	$('admin_table_wrap').scrollTop = itmedit.offsetTop;
}

function admin_updateCat(id) {
	var form = $('admin_form_updateCat'+id);
	var vars = $('admin_form_updateCat'+id).serialize(true);
	if (!vars['cat_status']) vars['cat_status'] = 0;
	
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/update.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	
	function showResponse(req) {
		report(req.responseText);
		
		cancelEdit(form.cat_id.value);
		
		for (var i in vars) {
			
			st = i+"_"+id;
			
			if (i=="cat_status") {
				var val = (vars[i]==1) ? "Active" : "Not Active";
				vars[i] = val;
			}
				
			var d = $(st);
			if (d) {
				d.innerHTML = vars[i];
			}
		}
	}
}

function admin_deleteCat(id) {
	var k = confirm("Are your sure you want to delete category with ID "+id+"? All references of this category in products will be erased.");
	if (!k) return;
	var vars = "cat_id="+id;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/delete.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		report(req.responseText);
		
		$("tr_item_"+id).remove();
		$("tr_itmedit_"+id).remove();
	}
}

// specials administration
function editspeItem(id) {
	
	var itm = $('tr_item_'+id);
	itm.style.display = "none";
	var itmedit = $('tr_itmedit_'+id);
	itmedit.style.display = "";
	
	if (currentEditItm) {
		var _itm = $('tr_item_'+currentEditItm)
		_itm.style.display = "";
		var _itmedit = $('tr_itmedit_'+currentEditItm)
		_itmedit.style.display = "none";
	}
	currentEditItm = id;
	
	$('admin_table_wrap').scrollTop = itmedit.offsetTop;
}

function admin_updatespe(id) {
	var form = $('admin_form_updatespe'+id);
	var vars = $('admin_form_updatespe'+id).serialize(true);
	if (!vars['spe_status']) vars['spe_status'] = 0;
	
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/update.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	
	function showResponse(req) {
		report(req.responseText);
		
		cancelEdit(form.spe_id.value);
		
		for (var i in vars) {
			
			st = i+"_"+id;
			
			if (i=="spe_status") {
				var val = (vars[i]==1) ? "Active" : "Not Active";
				vars[i] = val;
			}
				
			var d = $(st);
			if (d) {
				d.innerHTML = vars[i];
			}
		}
	}
}

function admin_deletespe(id) {
	var k = confirm("Are your sure you want to delete special with ID "+id+"?");
	if (!k) return;
	var vars = "spe_id="+id;
	var a = new Ajax.Request(
		'http://www.tarafinejewelry.com/shopping/admin/delete.php',
		{
			method: 'get', 
			parameters: vars,
			onSuccess: showResponse
		}
	)
	function showResponse(req) {
		report(req.responseText);
		
		$("tr_item_"+id).remove();
		$("tr_itmedit_"+id).remove();
	}
}




////// MM scripts

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
