﻿function style_html(d,e,c){var g,a;function f(){this.pos=0;this.token="";this.current_mode="CONTENT";this.tags={parent:"parent1",parentcount:1,parent1:""};this.tag_type="";this.token_text=this.last_token=this.last_text=this.token_type="";this.Utils={whitespace:"\n\r\t ".split(""),single_token:"br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed".split(","),extra_liners:"head,body,/html".split(","),in_array:function(c,b){for(var a=0;a<b.length;a++)if(c===b[a])return true;return false}};this.get_content=function(){var c="",a=[],b=false;while(this.input.charAt(this.pos)!=="<"){if(this.pos>=this.input.length)return a.length?a.join(""):["","TK_EOF"];c=this.input.charAt(this.pos);this.pos++;this.line_char_count++;if(this.Utils.in_array(c,this.Utils.whitespace)){if(a.length)b=true;this.line_char_count--;continue}else if(b){if(this.line_char_count>=this.max_char){a.push("\n");for(var d=0;d<this.indent_level;d++)a.push(this.indent_string);this.line_char_count=0}else{a.push(" ");this.line_char_count++}b=false}a.push(c)}return a.length?a.join(""):""};this.get_script=function(){var d="",a=[],c=new RegExp("</sc"+"ript"+">","igm");c.lastIndex=this.pos;var b=c.exec(this.input),e=b?b.index:this.input.length;while(this.pos<e){if(this.pos>=this.input.length)return a.length?a.join(""):["","TK_EOF"];d=this.input.charAt(this.pos);this.pos++;a.push(d)}return a.length?a.join(""):""};this.record_tag=function(a){if(this.tags[a+"count"]){this.tags[a+"count"]++;this.tags[a+this.tags[a+"count"]]=this.indent_level}else{this.tags[a+"count"]=1;this.tags[a+this.tags[a+"count"]]=this.indent_level}this.tags[a+this.tags[a+"count"]+"parent"]=this.tags.parent;this.tags.parent=a+this.tags[a+"count"]};this.retrieve_tag=function(a){if(this.tags[a+"count"]){var b=this.tags.parent;while(b){if(a+this.tags[a+"count"]===b)break;b=this.tags[b+"parent"]}if(b){this.indent_level=this.tags[a+this.tags[a+"count"]];this.tags.parent=this.tags[b+"parent"]}delete this.tags[a+this.tags[a+"count"]+"parent"];delete this.tags[a+this.tags[a+"count"]];if(this.tags[a+"count"]==1)delete this.tags[a+"count"];else this.tags[a+"count"]--}};this.get_tag=function(){var d="",a=[],e=false;do{if(this.pos>=this.input.length)return a.length?a.join(""):["","TK_EOF"];d=this.input.charAt(this.pos);this.pos++;this.line_char_count++;if(this.Utils.in_array(d,this.Utils.whitespace)){e=true;this.line_char_count--;continue}if(d==="'"||d==='"')if(!a[1]||a[1]!=="!"){d+=this.get_unformatted(d);e=true}if(d==="=")e=false;if(a.length&&a[a.length-1]!=="="&&d!==">"&&e){if(this.line_char_count>=this.max_char){this.print_newline(false,a);this.line_char_count=0}else{a.push(" ");this.line_char_count++}e=false}a.push(d)}while(d!==">");var c=a.join(""),f;if(c.indexOf(" ")!=-1)f=c.indexOf(" ");else f=c.indexOf(">");var b=c.substring(1,f).toLowerCase();if(c.charAt(c.length-2)==="/"||this.Utils.in_array(b,this.Utils.single_token))this.tag_type="SINGLE";else if(b==="script"){this.record_tag(b);this.tag_type="SCRIPT"}else if(b==="style"){this.record_tag(b);this.tag_type="STYLE"}else if(b.charAt(0)==="!")if(b.indexOf("[if")!=-1){if(c.indexOf("!IE")!=-1){var g=this.get_unformatted("-->",c);a.push(g)}this.tag_type="START"}else if(b.indexOf("[endif")!=-1){this.tag_type="END";this.unindent()}else if(b.indexOf("[cdata[")!=-1){var g=this.get_unformatted("]]>",c);a.push(g);this.tag_type="SINGLE"}else{var g=this.get_unformatted("-->",c);a.push(g);this.tag_type="SINGLE"}else{if(b.charAt(0)==="/"){this.retrieve_tag(b.substring(1));this.tag_type="END"}else{this.record_tag(b);this.tag_type="START"}if(this.Utils.in_array(b,this.Utils.extra_liners))this.print_newline(true,this.output)}return a.join("")};this.get_unformatted=function(d,e){if(e&&e.indexOf(d)!=-1)return "";var b="",a="",c=true;do{b=this.input.charAt(this.pos);this.pos++;if(this.Utils.in_array(b,this.Utils.whitespace)){if(!c){this.line_char_count--;continue}if(b==="\n"||b==="\r"){a+="\n";for(var f=0;f<this.indent_level;f++)a+=this.indent_string;c=false;this.line_char_count=0;continue}}a+=b;this.line_char_count++;c=true}while(a.indexOf(d)==-1);return a};this.get_token=function(){var a;if(this.last_token==="TK_TAG_SCRIPT"){var b=this.get_script();if(typeof b!=="string")return b;a=js_beautify(b,this.indent_size,this.indent_character,this.indent_level);return [a,"TK_CONTENT"]}if(this.current_mode==="CONTENT"){a=this.get_content();if(typeof a!=="string")return a;else return [a,"TK_CONTENT"]}if(this.current_mode==="TAG"){a=this.get_tag();if(typeof a!=="string")return a;else{var c="TK_TAG_"+this.tag_type;return [a,c]}}};this.printer=function(d,b,c,e){this.input=d||"";this.output=[];this.indent_character=b||" ";this.indent_string="";this.indent_size=c||2;this.indent_level=0;this.max_char=e||70;this.line_char_count=0;for(var a=0;a<this.indent_size;a++)this.indent_string+=this.indent_character;this.print_newline=function(c,a){this.line_char_count=0;if(!a||!a.length)return;if(!c)while(this.Utils.in_array(a[a.length-1],this.Utils.whitespace))a.pop();a.push("\n");for(var b=0;b<this.indent_level;b++)a.push(this.indent_string)};this.print_token=function(a){this.output.push(a)};this.indent=function(){this.indent_level++};this.unindent=function(){if(this.indent_level>0)this.indent_level--}};return this}a=new f;a.printer(d,c,e);while(true){var b=a.get_token();a.token_text=b[0];a.token_type=b[1];if(a.token_type==="TK_EOF")break;switch(a.token_type){case "TK_TAG_START":case "TK_TAG_SCRIPT":case "TK_TAG_STYLE":a.print_newline(false,a.output);a.print_token(a.token_text);a.indent();a.current_mode="CONTENT";break;case "TK_TAG_END":a.print_newline(true,a.output);a.print_token(a.token_text);a.current_mode="CONTENT";break;case "TK_TAG_SINGLE":a.print_newline(false,a.output);a.print_token(a.token_text);a.current_mode="CONTENT";break;case "TK_CONTENT":if(a.token_text!==""){a.print_newline(false,a.output);a.print_token(a.token_text)}a.current_mode="TAG"}a.last_token=a.token_type;a.last_text=a.token_text}return a.output.join("")}