function ctc() {
	if (!ctc.instances) ctc.instances = [];
	this.id = ctc.instances.length;
	ctc.instances[this.id] = this;
	
	var cid = this.id;
	$(document).ready(function(){
		$("#welcome").dialog({title:"The Critical Thinking Company",width:500,modal:true});	
		ctc.instances[cid].getSeries();
	});
	
	this.getProductData('07101');

	
}

ctc.prototype.getSeries = function() {
	var cid = this.id;
	$.ajax({
		url:"http://www.criticalthinking.com/php/data/series.php",
		success: function(d,m,a){
			$(d).find('series').each(function(i,e){
				$('#series_list').append( $("<option>").attr("value", $(e).find('id').text() ).text( decodeURIComponent($(e).find('title').text()) ) );
			});
		},
		failure: function(m){
			alert('Failure');
		}	
	});
}

ctc.prototype.getSeriesData = function(ser_id){
	$.ajax({
		url:"http://www.criticalthinking.com/php/data/series.php",
		data:"s=" + ser_id,
		success: function(d,m,a){
			$('#series_container #series_title').html($(d).find('title').text());
			$('#series_container #series_subtitle').html($(d).find('subtitle').text());
			$('#series_container #series_subject').html($(d).find('subject').text());
			$('#series_container #series_grade_start').html($(d).find('grade_start').text());
			$('#series_container #series_grade_end').html($(d).find('grade_end').text());
			$('#series_container #series_ratings').html($(d).find('ratings').text());
		},
		failure: function(m){
			alert('Failure');
		}	
	});
}

ctc.prototype.getProducts = function(ser_id){
	var cid = this.id;
	$.ajax({
		url:"http://www.criticalthinking.com/php/data/product.php",
		data:"s=" + ser_id,
		success: function(d,m,a){
			$('#products_list').empty();
			$(d).find('product').each(function(i,e){
				$('#products_list').append( $("<option>").attr("value", $(e).find('id').text() ).text( $(e).find('title').text() ) );
				if (i == 0 && $(e).find('title').text() != "") {ctc.instances[cid].getProductData($(e).find('id').text());}
			});
		},
		failure: function(m){
			alert('Failure');
		}	
	});
}

ctc.prototype.getProductData = function(prod_id){
	$.ajax({
		url:"http://www.criticalthinking.com/php/data/product.php",
		data:"i=" + prod_id,
		success: function(d,m,a){
			$('#product_container #product_title').html($(d).find('title').text());
			$('#product_container #product_subtitle').html($(d).find('subtitle').text());
			$('#product_container #product_isbn').html($(d).find('isbn').text());
			$('#product_container #product_grade_start').html($(d).find('grade_start').text());
			$('#product_container #product_grade_end').html($(d).find('grade_end').text());
			$('#product_container #product_page_count').html($(d).find('b_page_count').text());
			$('#product_container #product_author').html($(d).find('author').text());
			//alert('Ajax Success: ' + a.responseText);
		},
		failure: function(m){
			alert('Failure');
		}	
	});
}

function ct_validateForm(objForm) {
	if (!ct_validateEmail(objForm)) return false;
	return ct_validateRequired(objForm);
}

function ct_validateRequired(objForm){
	var ret = true;
	var fld = null;
	$('.required_field').each(function(i,e){
		fld = $(e).get(0);
		var ph = $(e).attr('placeholder');
		var tt = $(e).attr('value');
		if (tt == "" || tt == ph) {ret = false; return false;}
	});
	if (ret) {
		$('.dyn_required').each(function(i,e){
			fld = $(e).get(0);
			var tr = $('#' + $(e).attr('reqtrigger'));
			var tval = tr.val();
			var tph = tr.attr('placeholder');
			var ph = $(e).attr('placeholder');
			var tt = $(e).attr('value');
			if (tval != tph && ct_validateEmail(tr.get(0)) && (tt == "" || tt == ph)) {ret = false; return false;}
		});
	}
	if (!ret) {
		$('<div>').attr('id','ct_form_dialog').text('A required field has not been completed. Please make corrections and try again.').dialog({
				title:"Required Field Error",
				modal: true,
				close: function(){
					fld.value='';
					$(fld).removeClass('form_input_default');
				},
				buttons: {"Close":function(){$(this).dialog("close");}}
			});
		return false;

	}
	return true;
}

function ct_validateEmail(objFormField) {
	if (objFormField.tagName == "FORM") {
		var ret = true;
		$('.required_email').each(function(i,e){
			var pt = $(e).attr('placeholder');
			var tt = $(e).attr('value');
			if (pt == "" || pt == tt) {return true;} 
			if (!ct_validateEmail($(e).get(0))) {ret = false; return false;}
		});
		return ret;
	}
	var empattern = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	var ret = objFormField.value.match(empattern);
	if (!ret) {
		$('<div>').attr('id','ct_form_dialog').text('The email address provided is not in a valid format. Please make corrections and try again.').dialog({
				title:"Email Validation Error",
				modal: true,
				close: function(){
					objFormField.value='';
				},
				buttons: {"Close":function(){$(this).dialog("close");}}
			});
		return false;
	}
	return true;
}

function imageLoaded(img) {
    // Gecko-based browsers act like NS4 in that they report this incorrectly: they always return true.
    if (!img.complete) { return false; }
    // However, they do have two very useful properties: naturalWidth and naturalHeight. 
    if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) { return false; }
    // No other way of checking: assume it's ok.
    return true;
}

var nav_content_timer;
function openNavContent(strFileName,strItemName,intResultNum) {
	$.ajax({
		url:"/php/data/"+strFileName+".php",
		success: function(data,s,a){
			window.clearTimeout(nav_content_timer);
			$.ajax({
				url:"/templates/default.navigation." + strFileName + ".html",
				success:function(td,ts,ta){
					var templateText = ta.responseText;
					$("#nav_content_panel").show().mouseover(function(){window.clearTimeout(nav_content_timer);}).mouseout(function(){closeNavContent(strFileName);}).html(templateText);
					$(data).find(strItemName).each(function(i,e){
						var ptitle = $(e).find('title').text();
						var pmodel_id = $(e).find('model_id').text();
						$("#nav_con_rollover_list").append($('<li>').append($('<a>').attr('href','/getProductDetails.do?code=p&id=' + pmodel_id.substr(0,5) ).text(ptitle)));
						if ($("#nav_con_s2_image").attr("src").indexOf("loading.gif") != -1) {
							$("#nav_con_s2_image").removeAttr("width").attr("src","/html/products/"+pmodel_id.substr(0,3)+"/"+pmodel_id.substr(0,5)+".gif");
							$("#nav_con_s2_title").text(ptitle);
						}
						if (i+1 >= intResultNum) {return false;} 
					});
					getNavContentTopSellersBySubject('g');	
				}	
			});
		},
		failure: function(m){alert(m);}	
	});	
}

function closeNavContent(strFileName){
	nav_content_timer = window.setTimeout('$("#nav_content_panel").unbind("mouseover").unbind("mouseout").hide();',500);
}

function openProductNavContent(){
	window.clearTimeout(nav_content_timer);
	$.ajax({
		url:"/templates/default.navigation.products.html",
		success:function(td,ts,ta){
			var templateText = ta.responseText;
			$("#nav_content_panel").show().mouseover(function(){window.clearTimeout(nav_content_timer);}).mouseout(function(){closeNavContent('products');}).html(templateText);
			/*$(data).find(strItemName).each(function(i,e){
				var ptitle = $(e).find('title').text();
				var pmodel_id = $(e).find('model_id').text();
				$("#nav_con_rollover_list").append($('<li>').append($('<a>').attr('href','/getProductDetails.do?code=p&id=' + pmodel_id.substr(0,5) ).text(ptitle)));
				if ($("#nav_con_s2_image").attr("src").indexOf("loading.gif") != -1) {
					$("#nav_con_s2_image").removeAttr("width").attr("src","/html/products/"+pmodel_id.substr(0,3)+"/"+pmodel_id.substr(0,5)+".gif");
					$("#nav_con_s2_title").text(ptitle);
				}
				if (i+1 >= intResultNum) {return false;} 
			});*/
			//getNavContentTopSellersBySubject('g');	
		}	
	});
}

function getNavContentTopSellersBySubject(subject){

	$.ajax({
		url:'/php/data/top_sellers.php',
		data:'subject=' + subject,
		success:function(data,s,a){
			var subjects = [];
			subjects['g'] = "Critical Thinking";
			subjects['m'] = "Math";
			subjects['l'] = "Language Arts";
			subjects['s'] = "Science";
			subjects['h'] = "History";
			$("#nav_con_s2_image").attr("src","/images/shared/loading.gif")
			$("#nav_con_s4_link_list").empty();
			$("#nav_con_dynamic_subject").text(subjects[subject]);
			$(data).find('top_seller').each(function(i,e){
				var ptitle = $(e).find('title').text();
				var pmodel_id = $(e).find('model_id').text();
				$("#nav_con_s4_link_list").append($('<li>').append($('<a>').attr('href','/getProductDetails.do?code=p&id=' + pmodel_id.substr(0,5) ).text(ptitle)));
				if ($("#nav_con_s2_image") && $("#nav_con_s2_image").attr("src").indexOf("loading.gif") != -1) {
					$("#nav_con_s2_image").removeAttr("width").attr("src","/html/products/"+pmodel_id.substr(0,3)+"/"+pmodel_id.substr(0,5)+".gif").width(60);
					$("#nav_con_s2_title").text(ptitle);
				}
				if (i == 4) return false; 
			});
		}
	});
}

function show_license_info(catalog,str_lname){
	$.ajax({
		url:"/templates/"+(catalog=='c'?"classroom":"parent")+"."+str_lname+".html",
		success:function(d,s,a){
			$("#license_dialog").remove();
			$("<div>").attr("id","license_dialog").html(d).dialog({
				title: "The Critical Thinking Company&trade; Software License Agreement( "+str_lname.replace("_"," ").toUpperCase()+" )",
				modal: true,
				resizable: false,
				draggable: false,
				width: 800,
				height: 600				
			});
		},
		error:function(m,a){
			alert(m);
		}
	});
}

function show_contents_samples(catalog,strModelId) {
	var strProdId = strModelId.substr(0,5);
	var strSeriesId = strModelId.substr(0,3);	
	var toc = "/jsp/catalog/product_toc_page.jsp?productId="+strProdId;
	
	var samples = "/jsp/catalog/product_content_samples.jsp?series=" + strSeriesId + "&id=" + strProdId + "&model=" + strModelId + "&code=" + catalog;
	$.ajax({
		url:samples,
		success:function(d,s,a){
			$("#sample_dialog").remove();
			$("<div>").attr("id","sample_dialog").html(a.responseText).dialog({
				title: "The Critical Thinking Co.&trade;",
				modal: true,
				resizable: false,
				draggable: false,
				width: 800,
				height: 660,
				open:function(){scroll_samples(strProdId,1);}
			});
		}	
	});
}

function scroll_samples(product,num) {
	var series = product.substr(0,3);
	$("#sample_dialog").dialog("option","height","auto").dialog("option","position","top");
	$("#table_of_contents").hide();
	$("#sample_image").attr("src","/html/products/"+series+"/"+product+"_s" + num + ".gif");
	$("#sample_images").show();
}

function show_contents(){
	$("#sample_dialog").dialog("option","height",660).dialog("option","position","center");
	$("#sample_images").hide();
	$("#table_of_contents").show();
}

