if (typeof WeddingWire==="undefined"||!WeddingWire) {var WeddingWire={};}

WeddingWire.headLoc=document.getElementsByTagName("head").item(0);
WeddingWire.staticSite="http://static.weddingwire.com/static/3.4.6";

WeddingWire.getDaySeed=function() {
	var myDate=new Date();
	return myDate.getDate();
};

WeddingWire.getHourSeed=function() {
	var myDate=new Date();
	return myDate.getHours();
};

WeddingWire.getTrimmedString=function(string,length) {
	if(string===undefined){return"&nbsp;";}
	if(string.length<=length){return string;}
	return string.substr(0,string.lastIndexOf(" ",length-3))+"...";
};

WeddingWire.createRoundedDiv=function(borderColor,backgroundColor,topBorder,bottomBorder,body) {
	var borderString="background:"+backgroundColor+"; border-left:1px solid "+borderColor+"; border-right:1px solid "+borderColor+"; vertical-align: top;";
	var output="<div>";
	if(topBorder){
		output+='<b class="ww-roundedBorderTop"><b class="ww-roundedBorder1" style="background:'+borderColor+';"></b><b class="ww-roundedBorder2" style="'+borderString+'"></b><b class="ww-roundedBorder3" style="'+borderString+'"></b><b class="ww-roundedBorder4" style="'+borderString+'"></b></b>';
	}
	output+="<div style=' display:block; border:0 solid "+borderColor+"; border-width:0 1px;'>";
	output+=body;output+="</div>";
	if(bottomBorder){output+='<b class="ww-roundedBorderBottom"><b class="ww-roundedBorder4" style="'+borderString+'"></b><b class="ww-roundedBorder3" style="'+borderString+'"></b><b class="ww-roundedBorder2" style="'+borderString+'"></b><b class="ww-roundedBorder1" style="background:'+borderColor+';"></b></b>';
	}
	output+="</div>";
return output;
};

WeddingWire.addWidgetCSS=function() {
	//var style=document.createElement("link");
	//style.setAttribute("rel","stylesheet");
	//style.setAttribute("href",WeddingWire.staticSite+"/css/wireWidgets.css");
	//style.setAttribute("id","ww-widgets-css");
	//if(document.getElementById(style.id)===null){WeddingWire.headLoc.appendChild(style);}
};

WeddingWire.addWidgetCSS();
WeddingWire.RandomNumberGenerator=function(seed) {
	this.seed=seed;
	this.A=48271;
	this.M=2147483647;
	this.Q=this.M/this.A;
	this.R=this.M%this.A;
	this.oneOverM=1/this.M;
	this.next=function(looping) {
		if(looping===undefined){looping=1;}
		looping+=2;
		for(var i=0;i<looping;i++) {
			var hi=this.seed/this.Q;
			var lo=this.seed%this.Q;
			var test=this.A*lo-this.R*hi;
			if(test>0){this.seed=test;}else{this.seed=test+this.M;}
		}
		return(this.seed*this.oneOverM);
	};
	return this;
};

WeddingWire.getAvgVendorScore=function(vendor) {
	var score=parseFloat(vendor.average_review_score);
	if(parseInt(score,10)==score){score+=".0";}
	return score;
};

WeddingWire.getReviewScore=function(review){
	var score=parseFloat(review["professional_score"]);
	score+=parseFloat(review["service_score"]);
	score+=parseFloat(review["value_score"]);
	score+=parseFloat(review["flexibility_score"]);
	score+=parseFloat(review["response_score"]);
	return score/5;
};

WeddingWire.getReviewStars=function(score){
	score=parseFloat(score);
	var res=0;
	var w_copy=score*10;
	var mod=parseInt(w_copy)%5;
	if(mod>(5/2)){res=w_copy+(5-mod);}else{res=w_copy-mod;}
	if(res==0){res="00";}
	return(WeddingWire.staticSite+"/images/stars/"+res+"_stars.gif");
};

WeddingWire.getSmallReviewStars=function(score){
	score=parseFloat(score);var res=0;var w_copy=score*10;
	var mod=parseInt(w_copy,10)%5;
	if(mod>(5/2)){res=w_copy+(5-mod);}else{res=w_copy-mod;}
	if(res===0){res="00";}
	return(WeddingWire.staticSite+"/images/search/reviewstars/"+res+"_stars.gif");
};

WeddingWire.getVendorPhone=function(vendor){
	var phone="";
	if(vendor.locations.length!==0){phone=vendor.locations[0].phone_primary;}
	if(phone===null||phone===undefined||phone==="") {
		phone="(No Phone Number)";
	} else {
		var postphone="";
		for(var i=0;i<phone.length;i++) {
			if(i==3||i==6){postphone+="-";postphone+=phone.charAt(i);}else{postphone+=phone.charAt(i);}
		}
		phone=postphone;
	}
	return phone;
};

WeddingWire.ensureInit=function(func){func();};

WeddingWire.getReviewWidget=function(vendor){var str="";str+='<div class="ww-reviews-header-box">';str+='	<div class="ww-reviews-header-box-left">';str+='		<div class="ww-header1">Read Our Reviews</div>';str+='		<div class="ww-header2">from past clients</div>';str+="	</div>";str+='	<div class="ww-reviews-header-box-right" style="vertical-align: top; background-image:url(\''+WeddingWire.getReviewStars(vendor["average_review_score"])+"');\">";
str+='		<a target="_new" href="'+vendor["storefront_reviews_url"]+'">'+vendor["review_count"]+" reviews</a>";str+="	</div>";str+='	<!--<div class="ww-clear">&nbsp;</div>-->';str+="</div>";str+='<div class="ww-reviews-box">';
if(vendor["reviews"][0]!==undefined){str+=WeddingWire.getReviewDiv(vendor["reviews"][0],1,vendor["storefront_reviews_url"]);
}if(vendor["reviews"][1]!==undefined){str+=WeddingWire.getReviewDiv(vendor["reviews"][1],2,vendor["storefront_reviews_url"]);}if(vendor["reviews"][2]!==undefined){str+=WeddingWire.getReviewDiv(vendor["reviews"][2],3,vendor["storefront_reviews_url"]);}str+='<div class="ww-reviews-footer">';
str+='<div class="ww-reviews-footer-text">Read all <a target="_new" href="'+vendor["storefront_reviews_url"]+'">'+vendor["review_count"]+" Reviews</a> at</div>";
str+='<div class="ww-reviews-footer-img"><a target="_new" href="http://www.weddingwire.com"><img style="border:0pt none;" alt="Weddings, Wedding Cakes,  Wedding Planning, Wedding Checklists, Free Wedding Websites, Wedding Dresses, Wedding Ideas & more" src="'+WeddingWire.staticSite+'/images/logo/WWlogo-130x30.gif"/></a></div>';
str+="</div>";str+="</div>";return str;};

WeddingWire.createReview=function(args) {
	WeddingWire.reviewWidgetId=args.id;
	var fullUrl="http://www.weddingwire.com/api/v2/GetVendorDetails?partnerkey=163r5mm3&vendor_id="+args.vendorId+"&reviews=yes&reviews_page_size=10&reviews_page=1&callback=WeddingWire.writeReviewsCallback";
	var script=document.createElement("script");
	script.setAttribute("type","text/javascript");
	script.setAttribute("src",fullUrl+"&noCacheIE="+(new Date()).getTime());
	WeddingWire.headLoc.appendChild(script);
};

WeddingWire.writeReviewsCallback=function(vendor) {
	var div=document.getElementById(WeddingWire.reviewWidgetId);
	div.className="ww-reset ww-reviews-widget";
	div.innerHTML=WeddingWire.getReviewWidget(vendor);
};

WeddingWire.getReviewDiv=function(review,id,reviews_url) {
	var avg_score=WeddingWire.getReviewScore(review);
	if (parseInt(avg_score)==avg_score){avg_score+=".0";}
	var more="";
	if (WeddingWire.getTrimmedString(review["reviewer_comments"],140)!=review["reviewer_comments"]) {
		more='<a target="_new" href="'+reviews_url+'">read full review</a>';
	}
	var str='<div class="ww-review-box-outer" style="vertical-align: top;">';
	str+='<div id="review'+id+'" class="ww-review-box">';
	str+='<b class="ww-btop"><b></b></b><div class="ww-review-content">';
	str+='<div class="ww-review-score-box" style="background-image:url(\''+WeddingWire.getReviewStars(avg_score)+"');\">"+avg_score+"/5.0</div>";
	str+='<div class="ww-review-comment-box">'+WeddingWire.getTrimmedString(review["reviewer_comments"],140)+" "+more+"</div>";
	str+='</div><b class="ww-bbot"><b></b></b>';
	str+="</div>";
	str+="</div>";
	return str;
};
